c_src: update
[nit.git] / c_src / parser_nodes._sep.c
index ebb6042..db33da6 100644 (file)
@@ -12,14 +12,12 @@ val_t parser_nodes___ANode___location(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:29 */
   fra.me.REG[0] = ATTR_parser_nodes___ANode____location(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:29 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Cast failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 29);
-    nit_exit(1);
+    nit_abort("Cast failed", NULL, LOCATE_parser_nodes, 29);
   }
   goto label1;
   label1: while(0);
@@ -71,13 +69,12 @@ void parser_nodes___EOF___noinit(val_t p0, int* init_table){
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 305;
+  fra.me.line = 311;
   fra.me.meth = LOCATE_parser_nodes___EOF___noinit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:305 */
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
   return;
@@ -89,1355 +86,717 @@ void parser_nodes___AError___noinit(val_t p0, int* init_table){
   if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 309;
+  fra.me.line = 315;
   fra.me.meth = LOCATE_parser_nodes___AError___noinit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:309 */
+  /* ./parser//parser_nodes.nit:315 */
   CALL_parser_nodes___EOF___noinit(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
   return;
 }
-val_t parser_nodes___AModule___n_packagedecl(val_t p0){
+val_t parser_nodes___AModule___n_moduledecl(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 314;
-  fra.me.meth = LOCATE_parser_nodes___AModule___n_packagedecl;
+  fra.me.line = 320;
+  fra.me.meth = LOCATE_parser_nodes___AModule___n_moduledecl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[0] = ATTR_parser_nodes___AModule____n_packagedecl(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:314 */
+  /* ./parser//parser_nodes.nit:320 */
+  fra.me.REG[0] = ATTR_parser_nodes___AModule____n_moduledecl(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AModule___n_packagedecl__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 314;
-  fra.me.meth = LOCATE_parser_nodes___AModule___n_packagedecl__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:314 */
-  ATTR_parser_nodes___AModule____n_packagedecl(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AModule___n_imports(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 315;
+  fra.me.line = 321;
   fra.me.meth = LOCATE_parser_nodes___AModule___n_imports;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:321 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:315 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_imports");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 315);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser_nodes, 321);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AModule___n_imports__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 315;
-  fra.me.meth = LOCATE_parser_nodes___AModule___n_imports__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:315 */
-  ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AModule___n_classdefs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 316;
+  fra.me.line = 322;
   fra.me.meth = LOCATE_parser_nodes___AModule___n_classdefs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:322 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:316 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_classdefs");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 316);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser_nodes, 322);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AModule___n_classdefs__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 316;
-  fra.me.meth = LOCATE_parser_nodes___AModule___n_classdefs__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:316 */
-  ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t parser_nodes___APackagedecl___n_doc(val_t p0){
+val_t parser_nodes___AModuledecl___n_doc(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 320;
-  fra.me.meth = LOCATE_parser_nodes___APackagedecl___n_doc;
+  fra.me.line = 326;
+  fra.me.meth = LOCATE_parser_nodes___AModuledecl___n_doc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[0] = ATTR_parser_nodes___APackagedecl____n_doc(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:320 */
+  /* ./parser//parser_nodes.nit:326 */
+  fra.me.REG[0] = ATTR_parser_nodes___AModuledecl____n_doc(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___APackagedecl___n_doc__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 320;
-  fra.me.meth = LOCATE_parser_nodes___APackagedecl___n_doc__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:320 */
-  ATTR_parser_nodes___APackagedecl____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t parser_nodes___APackagedecl___n_kwpackage(val_t p0){
+val_t parser_nodes___AModuledecl___n_kwmodule(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 321;
-  fra.me.meth = LOCATE_parser_nodes___APackagedecl___n_kwpackage;
+  fra.me.line = 327;
+  fra.me.meth = LOCATE_parser_nodes___AModuledecl___n_kwmodule;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___APackagedecl____n_kwpackage(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:321 */
+  /* ./parser//parser_nodes.nit:327 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwpackage");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 321);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_parser_nodes, 327);
   }
-  fra.me.REG[0] = ATTR_parser_nodes___APackagedecl____n_kwpackage(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___APackagedecl___n_kwpackage__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 321;
-  fra.me.meth = LOCATE_parser_nodes___APackagedecl___n_kwpackage__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:321 */
-  ATTR_parser_nodes___APackagedecl____n_kwpackage(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t parser_nodes___APackagedecl___n_id(val_t p0){
+val_t parser_nodes___AModuledecl___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 322;
-  fra.me.meth = LOCATE_parser_nodes___APackagedecl___n_id;
+  fra.me.line = 328;
+  fra.me.meth = LOCATE_parser_nodes___AModuledecl___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___APackagedecl____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:322 */
+  /* ./parser//parser_nodes.nit:328 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModuledecl____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 322);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 328);
   }
-  fra.me.REG[0] = ATTR_parser_nodes___APackagedecl____n_id(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_parser_nodes___AModuledecl____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___APackagedecl___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 322;
-  fra.me.meth = LOCATE_parser_nodes___APackagedecl___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:322 */
-  ATTR_parser_nodes___APackagedecl____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStdImport___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 327;
+  fra.me.line = 333;
   fra.me.meth = LOCATE_parser_nodes___AStdImport___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:333 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:327 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_visibility");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 327);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_nodes, 333);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStdImport____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStdImport___n_visibility__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 327;
-  fra.me.meth = LOCATE_parser_nodes___AStdImport___n_visibility__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:327 */
-  ATTR_parser_nodes___AStdImport____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStdImport___n_kwimport(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 328;
+  fra.me.line = 334;
   fra.me.meth = LOCATE_parser_nodes___AStdImport___n_kwimport;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:334 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:328 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwimport");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 328);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser_nodes, 334);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStdImport___n_kwimport__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 328;
-  fra.me.meth = LOCATE_parser_nodes___AStdImport___n_kwimport__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:328 */
-  ATTR_parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStdImport___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 329;
+  fra.me.line = 335;
   fra.me.meth = LOCATE_parser_nodes___AStdImport___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:335 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:329 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 329);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 335);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStdImport____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStdImport___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 329;
-  fra.me.meth = LOCATE_parser_nodes___AStdImport___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:329 */
-  ATTR_parser_nodes___AStdImport____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ANoImport___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 333;
+  fra.me.line = 339;
   fra.me.meth = LOCATE_parser_nodes___ANoImport___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:339 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:333 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_visibility");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 333);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_nodes, 339);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ANoImport____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ANoImport___n_visibility__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 333;
-  fra.me.meth = LOCATE_parser_nodes___ANoImport___n_visibility__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:333 */
-  ATTR_parser_nodes___ANoImport____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ANoImport___n_kwimport(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 334;
+  fra.me.line = 340;
   fra.me.meth = LOCATE_parser_nodes___ANoImport___n_kwimport;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:340 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:334 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwimport");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 334);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser_nodes, 340);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ANoImport___n_kwimport__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 334;
-  fra.me.meth = LOCATE_parser_nodes___ANoImport___n_kwimport__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:334 */
-  ATTR_parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ANoImport___n_kwend(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 335;
+  fra.me.line = 341;
   fra.me.meth = LOCATE_parser_nodes___ANoImport___n_kwend;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:341 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_kwend(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:335 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwend");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 335);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser_nodes, 341);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ANoImport____n_kwend(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ANoImport___n_kwend__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 335;
-  fra.me.meth = LOCATE_parser_nodes___ANoImport___n_kwend__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:335 */
-  ATTR_parser_nodes___ANoImport____n_kwend(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___APrivateVisibility___n_kwprivate(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 343;
+  fra.me.line = 349;
   fra.me.meth = LOCATE_parser_nodes___APrivateVisibility___n_kwprivate;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:349 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:343 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwprivate");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 343);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwprivate", LOCATE_parser_nodes, 349);
   }
   fra.me.REG[0] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___APrivateVisibility___n_kwprivate__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 343;
-  fra.me.meth = LOCATE_parser_nodes___APrivateVisibility___n_kwprivate__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:343 */
-  ATTR_parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AProtectedVisibility___n_kwprotected(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 347;
+  fra.me.line = 353;
   fra.me.meth = LOCATE_parser_nodes___AProtectedVisibility___n_kwprotected;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:353 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:347 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwprotected");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 347);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwprotected", LOCATE_parser_nodes, 353);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AProtectedVisibility___n_kwprotected__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 347;
-  fra.me.meth = LOCATE_parser_nodes___AProtectedVisibility___n_kwprotected__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:347 */
-  ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AIntrudeVisibility___n_kwintrude(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 351;
+  fra.me.line = 357;
   fra.me.meth = LOCATE_parser_nodes___AIntrudeVisibility___n_kwintrude;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:357 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:351 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwintrude");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 351);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_parser_nodes, 357);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIntrudeVisibility___n_kwintrude__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 351;
-  fra.me.meth = LOCATE_parser_nodes___AIntrudeVisibility___n_kwintrude__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:351 */
-  ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStdClassdef___n_doc(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 356;
+  fra.me.line = 362;
   fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_doc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:362 */
   fra.me.REG[0] = ATTR_parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:356 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStdClassdef___n_doc__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 356;
-  fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_doc__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:356 */
-  ATTR_parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStdClassdef___n_kwredef(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 357;
+  fra.me.line = 363;
   fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_kwredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:363 */
   fra.me.REG[0] = ATTR_parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:357 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStdClassdef___n_kwredef__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 357;
-  fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_kwredef__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:357 */
-  ATTR_parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStdClassdef___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 358;
+  fra.me.line = 364;
   fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:364 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:358 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_visibility");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 358);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_nodes, 364);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStdClassdef___n_visibility__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 358;
-  fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_visibility__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:358 */
-  ATTR_parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStdClassdef___n_classkind(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 359;
+  fra.me.line = 365;
   fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_classkind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:365 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:359 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_classkind");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 359);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_classkind", LOCATE_parser_nodes, 365);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStdClassdef___n_classkind__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 359;
-  fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_classkind__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:359 */
-  ATTR_parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStdClassdef___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 360;
+  fra.me.line = 366;
   fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:366 */
   fra.me.REG[0] = ATTR_parser_nodes___AStdClassdef____n_id(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:360 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStdClassdef___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 360;
-  fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:360 */
-  ATTR_parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStdClassdef___n_formaldefs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 361;
+  fra.me.line = 367;
   fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_formaldefs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:367 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:361 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_formaldefs");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 361);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser_nodes, 367);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStdClassdef___n_formaldefs__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 361;
-  fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_formaldefs__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:361 */
-  ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStdClassdef___n_superclasses(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 362;
+  fra.me.line = 368;
   fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_superclasses;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:368 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:362 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_superclasses");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 362);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser_nodes, 368);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStdClassdef___n_superclasses__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 362;
-  fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_superclasses__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:362 */
-  ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStdClassdef___n_propdefs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 363;
+  fra.me.line = 369;
   fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_propdefs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:369 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:363 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_propdefs");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 363);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_nodes, 369);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStdClassdef___n_propdefs__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 363;
-  fra.me.meth = LOCATE_parser_nodes___AStdClassdef___n_propdefs__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:363 */
-  ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ATopClassdef___n_propdefs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 367;
+  fra.me.line = 373;
   fra.me.meth = LOCATE_parser_nodes___ATopClassdef___n_propdefs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:373 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:367 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_propdefs");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 367);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_nodes, 373);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ATopClassdef___n_propdefs__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 367;
-  fra.me.meth = LOCATE_parser_nodes___ATopClassdef___n_propdefs__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:367 */
-  ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AMainClassdef___n_propdefs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 371;
+  fra.me.line = 377;
   fra.me.meth = LOCATE_parser_nodes___AMainClassdef___n_propdefs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:377 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:371 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_propdefs");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 371);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_nodes, 377);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AMainClassdef___n_propdefs__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 371;
-  fra.me.meth = LOCATE_parser_nodes___AMainClassdef___n_propdefs__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:371 */
-  ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AConcreteClasskind___n_kwclass(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 376;
+  fra.me.line = 382;
   fra.me.meth = LOCATE_parser_nodes___AConcreteClasskind___n_kwclass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:382 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:376 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwclass");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 376);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser_nodes, 382);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AConcreteClasskind___n_kwclass__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 376;
-  fra.me.meth = LOCATE_parser_nodes___AConcreteClasskind___n_kwclass__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:376 */
-  ATTR_parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAbstractClasskind___n_kwabstract(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 380;
+  fra.me.line = 386;
   fra.me.meth = LOCATE_parser_nodes___AAbstractClasskind___n_kwabstract;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:386 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:380 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwabstract");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 380);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_parser_nodes, 386);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAbstractClasskind___n_kwabstract__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 380;
-  fra.me.meth = LOCATE_parser_nodes___AAbstractClasskind___n_kwabstract__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:380 */
-  ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAbstractClasskind___n_kwclass(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 381;
+  fra.me.line = 387;
   fra.me.meth = LOCATE_parser_nodes___AAbstractClasskind___n_kwclass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:387 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:381 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwclass");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 381);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser_nodes, 387);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAbstractClasskind___n_kwclass__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 381;
-  fra.me.meth = LOCATE_parser_nodes___AAbstractClasskind___n_kwclass__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:381 */
-  ATTR_parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AInterfaceClasskind___n_kwinterface(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 385;
+  fra.me.line = 391;
   fra.me.meth = LOCATE_parser_nodes___AInterfaceClasskind___n_kwinterface;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:391 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:385 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwinterface");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 385);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_parser_nodes, 391);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AInterfaceClasskind___n_kwinterface__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 385;
-  fra.me.meth = LOCATE_parser_nodes___AInterfaceClasskind___n_kwinterface__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:385 */
-  ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AUniversalClasskind___n_kwuniversal(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 389;
+  fra.me.line = 395;
   fra.me.meth = LOCATE_parser_nodes___AUniversalClasskind___n_kwuniversal;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:395 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:389 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwuniversal");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 389);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwuniversal", LOCATE_parser_nodes, 395);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AUniversalClasskind___n_kwuniversal__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 389;
-  fra.me.meth = LOCATE_parser_nodes___AUniversalClasskind___n_kwuniversal__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:389 */
-  ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AFormaldef___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 393;
+  fra.me.line = 399;
   fra.me.meth = LOCATE_parser_nodes___AFormaldef___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:399 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AFormaldef____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:393 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 393);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 399);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AFormaldef____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AFormaldef___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 393;
-  fra.me.meth = LOCATE_parser_nodes___AFormaldef___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:393 */
-  ATTR_parser_nodes___AFormaldef____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AFormaldef___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 394;
+  fra.me.line = 400;
   fra.me.meth = LOCATE_parser_nodes___AFormaldef___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:400 */
   fra.me.REG[0] = ATTR_parser_nodes___AFormaldef____n_type(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:394 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AFormaldef___n_type__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 394;
-  fra.me.meth = LOCATE_parser_nodes___AFormaldef___n_type__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:394 */
-  ATTR_parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ASuperclass___n_kwspecial(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 398;
+  fra.me.line = 404;
   fra.me.meth = LOCATE_parser_nodes___ASuperclass___n_kwspecial;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:398 */
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwspecial");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 398);
-    nit_exit(1);
-  }
+  /* ./parser//parser_nodes.nit:404 */
   fra.me.REG[0] = ATTR_parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASuperclass___n_kwspecial__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___ASuperclass___n_kwsuper(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 398;
-  fra.me.meth = LOCATE_parser_nodes___ASuperclass___n_kwspecial__eq;
+  fra.me.line = 405;
+  fra.me.meth = LOCATE_parser_nodes___ASuperclass___n_kwsuper;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:398 */
-  ATTR_parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:405 */
+  fra.me.REG[0] = ATTR_parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
 val_t parser_nodes___ASuperclass___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1445,1685 +804,961 @@ val_t parser_nodes___ASuperclass___n_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 399;
+  fra.me.line = 406;
   fra.me.meth = LOCATE_parser_nodes___ASuperclass___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:406 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperclass____n_type(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:399 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_type");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 399);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_nodes, 406);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ASuperclass____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASuperclass___n_type__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 399;
-  fra.me.meth = LOCATE_parser_nodes___ASuperclass___n_type__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:399 */
-  ATTR_parser_nodes___ASuperclass____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___APropdef___n_doc(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 402;
+  fra.me.line = 409;
   fra.me.meth = LOCATE_parser_nodes___APropdef___n_doc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:409 */
   fra.me.REG[0] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:402 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___APropdef___n_doc__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 402;
-  fra.me.meth = LOCATE_parser_nodes___APropdef___n_doc__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:402 */
-  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAttrPropdef___n_kwredef(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 406;
+  fra.me.line = 413;
   fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_kwredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:413 */
   fra.me.REG[0] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:406 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAttrPropdef___n_kwredef__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 406;
-  fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_kwredef__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:406 */
-  ATTR_parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAttrPropdef___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 407;
+  fra.me.line = 414;
   fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:414 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:407 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_visibility");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 407);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_nodes, 414);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAttrPropdef___n_visibility__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 407;
-  fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_visibility__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:407 */
-  ATTR_parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAttrPropdef___n_kwvar(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 408;
+  fra.me.line = 415;
   fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_kwvar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:415 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:408 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwvar");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 408);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser_nodes, 415);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAttrPropdef___n_kwvar__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 408;
-  fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_kwvar__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:408 */
-  ATTR_parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAttrPropdef___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 409;
+  fra.me.line = 416;
   fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrPropdef____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:409 */
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 409);
-    nit_exit(1);
-  }
+  /* ./parser//parser_nodes.nit:416 */
   fra.me.REG[0] = ATTR_parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAttrPropdef___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___AAttrPropdef___n_id2(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 409;
-  fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_id__eq;
+  fra.me.line = 417;
+  fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_id2;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:409 */
-  ATTR_parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:417 */
+  fra.me.REG[0] = ATTR_parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
 val_t parser_nodes___AAttrPropdef___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 410;
+  fra.me.line = 418;
   fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:418 */
   fra.me.REG[0] = ATTR_parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:410 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAttrPropdef___n_type__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 410;
-  fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_type__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:410 */
-  ATTR_parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAttrPropdef___n_readable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 411;
+  fra.me.line = 419;
   fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_readable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:419 */
   fra.me.REG[0] = ATTR_parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:411 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAttrPropdef___n_readable__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 411;
-  fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_readable__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:411 */
-  ATTR_parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAttrPropdef___n_writable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 412;
+  fra.me.line = 420;
   fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_writable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:420 */
   fra.me.REG[0] = ATTR_parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:412 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAttrPropdef___n_writable__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 412;
-  fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_writable__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:412 */
-  ATTR_parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAttrPropdef___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 413;
+  fra.me.line = 421;
   fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:421 */
   fra.me.REG[0] = ATTR_parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:413 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAttrPropdef___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 413;
-  fra.me.meth = LOCATE_parser_nodes___AAttrPropdef___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:413 */
-  ATTR_parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AMethPropdef___n_kwredef(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 417;
+  fra.me.line = 425;
   fra.me.meth = LOCATE_parser_nodes___AMethPropdef___n_kwredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:425 */
   fra.me.REG[0] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:417 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AMethPropdef___n_kwredef__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 417;
-  fra.me.meth = LOCATE_parser_nodes___AMethPropdef___n_kwredef__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:417 */
-  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AMethPropdef___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 418;
+  fra.me.line = 426;
   fra.me.meth = LOCATE_parser_nodes___AMethPropdef___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:426 */
   fra.me.REG[0] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:418 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AMethPropdef___n_visibility__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 418;
-  fra.me.meth = LOCATE_parser_nodes___AMethPropdef___n_visibility__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:418 */
-  ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AMethPropdef___n_methid(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 419;
+  fra.me.line = 427;
   fra.me.meth = LOCATE_parser_nodes___AMethPropdef___n_methid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:427 */
   fra.me.REG[0] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:419 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AMethPropdef___n_methid__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 419;
-  fra.me.meth = LOCATE_parser_nodes___AMethPropdef___n_methid__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:419 */
-  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AMethPropdef___n_signature(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 420;
+  fra.me.line = 428;
   fra.me.meth = LOCATE_parser_nodes___AMethPropdef___n_signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:428 */
   fra.me.REG[0] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:420 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AMethPropdef___n_signature__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 420;
-  fra.me.meth = LOCATE_parser_nodes___AMethPropdef___n_signature__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:420 */
-  ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ADeferredMethPropdef___n_kwmeth(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 424;
+  fra.me.line = 432;
   fra.me.meth = LOCATE_parser_nodes___ADeferredMethPropdef___n_kwmeth;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:432 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:424 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwmeth");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 424);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser_nodes, 432);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ADeferredMethPropdef___n_kwmeth__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 424;
-  fra.me.meth = LOCATE_parser_nodes___ADeferredMethPropdef___n_kwmeth__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:424 */
-  ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AInternMethPropdef___n_kwmeth(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 428;
+  fra.me.line = 436;
   fra.me.meth = LOCATE_parser_nodes___AInternMethPropdef___n_kwmeth;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:436 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:428 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwmeth");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 428);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser_nodes, 436);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AInternMethPropdef___n_kwmeth__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___AExternMethPropdef___n_kwmeth(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 428;
-  fra.me.meth = LOCATE_parser_nodes___AInternMethPropdef___n_kwmeth__eq;
+  fra.me.line = 440;
+  fra.me.meth = LOCATE_parser_nodes___AExternMethPropdef___n_kwmeth;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:428 */
-  ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t parser_nodes___AExternMethPropdef___n_kwmeth(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 432;
-  fra.me.meth = LOCATE_parser_nodes___AExternMethPropdef___n_kwmeth;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:440 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:432 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwmeth");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 432);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser_nodes, 440);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AExternMethPropdef___n_kwmeth__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 432;
-  fra.me.meth = LOCATE_parser_nodes___AExternMethPropdef___n_kwmeth__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:432 */
-  ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AExternMethPropdef___n_extern(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 433;
+  fra.me.line = 441;
   fra.me.meth = LOCATE_parser_nodes___AExternMethPropdef___n_extern;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:441 */
   fra.me.REG[0] = ATTR_parser_nodes___AExternMethPropdef____n_extern(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:433 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AExternMethPropdef___n_extern__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 433;
-  fra.me.meth = LOCATE_parser_nodes___AExternMethPropdef___n_extern__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:433 */
-  ATTR_parser_nodes___AExternMethPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AConcreteMethPropdef___n_kwmeth(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 437;
+  fra.me.line = 445;
   fra.me.meth = LOCATE_parser_nodes___AConcreteMethPropdef___n_kwmeth;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:445 */
   fra.me.REG[0] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:437 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AConcreteMethPropdef___n_kwmeth__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 437;
-  fra.me.meth = LOCATE_parser_nodes___AConcreteMethPropdef___n_kwmeth__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:437 */
-  ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AConcreteMethPropdef___n_block(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 438;
+  fra.me.line = 446;
   fra.me.meth = LOCATE_parser_nodes___AConcreteMethPropdef___n_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:446 */
   fra.me.REG[0] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:438 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AConcreteMethPropdef___n_block__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 438;
-  fra.me.meth = LOCATE_parser_nodes___AConcreteMethPropdef___n_block__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:438 */
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AConcreteInitPropdef___n_kwinit(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 442;
+  fra.me.line = 450;
   fra.me.meth = LOCATE_parser_nodes___AConcreteInitPropdef___n_kwinit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:450 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:442 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwinit");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 442);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser_nodes, 450);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AConcreteInitPropdef___n_kwinit__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 442;
-  fra.me.meth = LOCATE_parser_nodes___AConcreteInitPropdef___n_kwinit__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:442 */
-  ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ATypePropdef___n_kwredef(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 449;
+  fra.me.line = 457;
   fra.me.meth = LOCATE_parser_nodes___ATypePropdef___n_kwredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:457 */
   fra.me.REG[0] = ATTR_parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:449 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ATypePropdef___n_kwredef__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 449;
-  fra.me.meth = LOCATE_parser_nodes___ATypePropdef___n_kwredef__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:449 */
-  ATTR_parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ATypePropdef___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 450;
+  fra.me.line = 458;
   fra.me.meth = LOCATE_parser_nodes___ATypePropdef___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:458 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:450 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_visibility");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 450);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_nodes, 458);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ATypePropdef___n_visibility__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 450;
-  fra.me.meth = LOCATE_parser_nodes___ATypePropdef___n_visibility__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:450 */
-  ATTR_parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ATypePropdef___n_kwtype(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 451;
+  fra.me.line = 459;
   fra.me.meth = LOCATE_parser_nodes___ATypePropdef___n_kwtype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:459 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:451 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwtype");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 451);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser_nodes, 459);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ATypePropdef___n_kwtype__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 451;
-  fra.me.meth = LOCATE_parser_nodes___ATypePropdef___n_kwtype__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:451 */
-  ATTR_parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ATypePropdef___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 452;
+  fra.me.line = 460;
   fra.me.meth = LOCATE_parser_nodes___ATypePropdef___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:460 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:452 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 452);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 460);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ATypePropdef____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ATypePropdef___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 452;
-  fra.me.meth = LOCATE_parser_nodes___ATypePropdef___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:452 */
-  ATTR_parser_nodes___ATypePropdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ATypePropdef___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 453;
+  fra.me.line = 461;
   fra.me.meth = LOCATE_parser_nodes___ATypePropdef___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:461 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_type(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:453 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_type");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 453);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_nodes, 461);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ATypePropdef____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ATypePropdef___n_type__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___AAble___n_visibility(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 453;
-  fra.me.meth = LOCATE_parser_nodes___ATypePropdef___n_type__eq;
+  fra.me.line = 464;
+  fra.me.meth = LOCATE_parser_nodes___AAble___n_visibility;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:453 */
-  ATTR_parser_nodes___ATypePropdef____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:464 */
+  fra.me.REG[0] = ATTR_parser_nodes___AAble____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
 val_t parser_nodes___AAble___n_kwredef(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 456;
+  fra.me.line = 465;
   fra.me.meth = LOCATE_parser_nodes___AAble___n_kwredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:465 */
   fra.me.REG[0] = ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:456 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAble___n_kwredef__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 456;
-  fra.me.meth = LOCATE_parser_nodes___AAble___n_kwredef__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:456 */
-  ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AReadAble___n_kwreadable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 460;
+  fra.me.line = 469;
   fra.me.meth = LOCATE_parser_nodes___AReadAble___n_kwreadable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:469 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:460 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwreadable");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 460);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_parser_nodes, 469);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AReadAble___n_kwreadable__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 460;
-  fra.me.meth = LOCATE_parser_nodes___AReadAble___n_kwreadable__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:460 */
-  ATTR_parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AWriteAble___n_kwwritable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 464;
+  fra.me.line = 473;
   fra.me.meth = LOCATE_parser_nodes___AWriteAble___n_kwwritable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:473 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:464 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwwritable");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 464);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_parser_nodes, 473);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AWriteAble___n_kwwritable__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 464;
-  fra.me.meth = LOCATE_parser_nodes___AWriteAble___n_kwwritable__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:464 */
-  ATTR_parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AIdMethid___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 469;
+  fra.me.line = 478;
   fra.me.meth = LOCATE_parser_nodes___AIdMethid___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:478 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AIdMethid____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:469 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 469);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 478);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AIdMethid____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIdMethid___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 469;
-  fra.me.meth = LOCATE_parser_nodes___AIdMethid___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:469 */
-  ATTR_parser_nodes___AIdMethid____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___APlusMethid___n_plus(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 473;
+  fra.me.line = 482;
   fra.me.meth = LOCATE_parser_nodes___APlusMethid___n_plus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:482 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___APlusMethid____n_plus(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:473 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_plus");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 473);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_plus", LOCATE_parser_nodes, 482);
   }
   fra.me.REG[0] = ATTR_parser_nodes___APlusMethid____n_plus(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___APlusMethid___n_plus__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 473;
-  fra.me.meth = LOCATE_parser_nodes___APlusMethid___n_plus__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:473 */
-  ATTR_parser_nodes___APlusMethid____n_plus(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AMinusMethid___n_minus(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 477;
+  fra.me.line = 486;
   fra.me.meth = LOCATE_parser_nodes___AMinusMethid___n_minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:486 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AMinusMethid____n_minus(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:477 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_minus");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 477);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser_nodes, 486);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AMinusMethid___n_minus__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 477;
-  fra.me.meth = LOCATE_parser_nodes___AMinusMethid___n_minus__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:477 */
-  ATTR_parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStarMethid___n_star(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 481;
+  fra.me.line = 490;
   fra.me.meth = LOCATE_parser_nodes___AStarMethid___n_star;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:490 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStarMethid____n_star(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:481 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_star");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 481);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_parser_nodes, 490);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStarMethid____n_star(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStarMethid___n_star__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___ASlashMethid___n_slash(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 481;
-  fra.me.meth = LOCATE_parser_nodes___AStarMethid___n_star__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:481 */
-  ATTR_parser_nodes___AStarMethid____n_star(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t parser_nodes___ASlashMethid___n_slash(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 485;
-  fra.me.meth = LOCATE_parser_nodes___ASlashMethid___n_slash;
+  fra.me.line = 494;
+  fra.me.meth = LOCATE_parser_nodes___ASlashMethid___n_slash;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:494 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ASlashMethid____n_slash(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:485 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_slash");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 485);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_parser_nodes, 494);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASlashMethid___n_slash__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 485;
-  fra.me.meth = LOCATE_parser_nodes___ASlashMethid___n_slash__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:485 */
-  ATTR_parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___APercentMethid___n_percent(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 489;
+  fra.me.line = 498;
   fra.me.meth = LOCATE_parser_nodes___APercentMethid___n_percent;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:498 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___APercentMethid____n_percent(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:489 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_percent");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 489);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_parser_nodes, 498);
   }
   fra.me.REG[0] = ATTR_parser_nodes___APercentMethid____n_percent(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___APercentMethid___n_percent__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 489;
-  fra.me.meth = LOCATE_parser_nodes___APercentMethid___n_percent__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:489 */
-  ATTR_parser_nodes___APercentMethid____n_percent(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AEqMethid___n_eq(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 493;
+  fra.me.line = 502;
   fra.me.meth = LOCATE_parser_nodes___AEqMethid___n_eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:502 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AEqMethid____n_eq(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:493 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_eq");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 493);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_parser_nodes, 502);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AEqMethid____n_eq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AEqMethid___n_eq__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 493;
-  fra.me.meth = LOCATE_parser_nodes___AEqMethid___n_eq__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:493 */
-  ATTR_parser_nodes___AEqMethid____n_eq(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ANeMethid___n_ne(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 497;
+  fra.me.line = 506;
   fra.me.meth = LOCATE_parser_nodes___ANeMethid___n_ne;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:506 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ANeMethid____n_ne(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:497 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_ne");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 497);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_parser_nodes, 506);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ANeMethid____n_ne(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ANeMethid___n_ne__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 497;
-  fra.me.meth = LOCATE_parser_nodes___ANeMethid___n_ne__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:497 */
-  ATTR_parser_nodes___ANeMethid____n_ne(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ALeMethid___n_le(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 501;
+  fra.me.line = 510;
   fra.me.meth = LOCATE_parser_nodes___ALeMethid___n_le;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:510 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ALeMethid____n_le(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:501 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_le");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 501);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_parser_nodes, 510);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ALeMethid____n_le(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ALeMethid___n_le__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 501;
-  fra.me.meth = LOCATE_parser_nodes___ALeMethid___n_le__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:501 */
-  ATTR_parser_nodes___ALeMethid____n_le(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AGeMethid___n_ge(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 505;
+  fra.me.line = 514;
   fra.me.meth = LOCATE_parser_nodes___AGeMethid___n_ge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:514 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AGeMethid____n_ge(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:505 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_ge");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 505);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_parser_nodes, 514);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AGeMethid____n_ge(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AGeMethid___n_ge__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 505;
-  fra.me.meth = LOCATE_parser_nodes___AGeMethid___n_ge__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:505 */
-  ATTR_parser_nodes___AGeMethid____n_ge(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ALtMethid___n_lt(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 509;
+  fra.me.line = 518;
   fra.me.meth = LOCATE_parser_nodes___ALtMethid___n_lt;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:518 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ALtMethid____n_lt(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:509 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_lt");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 509);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_lt", LOCATE_parser_nodes, 518);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ALtMethid____n_lt(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ALtMethid___n_lt__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___AGtMethid___n_gt(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 509;
-  fra.me.meth = LOCATE_parser_nodes___ALtMethid___n_lt__eq;
+  fra.me.line = 522;
+  fra.me.meth = LOCATE_parser_nodes___AGtMethid___n_gt;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:509 */
-  ATTR_parser_nodes___ALtMethid____n_lt(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:522 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_parser_nodes, 522);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
-val_t parser_nodes___AGtMethid___n_gt(val_t p0){
+val_t parser_nodes___ALlMethid___n_ll(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 513;
-  fra.me.meth = LOCATE_parser_nodes___AGtMethid___n_gt;
+  fra.me.line = 526;
+  fra.me.meth = LOCATE_parser_nodes___ALlMethid___n_ll;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:513 */
+  /* ./parser//parser_nodes.nit:526 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALlMethid____n_ll(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_gt");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 513);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_parser_nodes, 526);
   }
-  fra.me.REG[0] = ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_parser_nodes___ALlMethid____n_ll(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AGtMethid___n_gt__eq(val_t p0, val_t p1){
+void parser_nodes___ALlMethid___n_ll__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 513;
-  fra.me.meth = LOCATE_parser_nodes___AGtMethid___n_gt__eq;
+  fra.me.line = 526;
+  fra.me.meth = LOCATE_parser_nodes___ALlMethid___n_ll__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:513 */
-  ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:526 */
+  ATTR_parser_nodes___ALlMethid____n_ll(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
-val_t parser_nodes___ABraMethid___n_obra(val_t p0){
+val_t parser_nodes___AGgMethid___n_gg(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 517;
-  fra.me.meth = LOCATE_parser_nodes___ABraMethid___n_obra;
+  fra.me.line = 530;
+  fra.me.meth = LOCATE_parser_nodes___AGgMethid___n_gg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:517 */
+  /* ./parser//parser_nodes.nit:530 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AGgMethid____n_gg(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_obra");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 517);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_parser_nodes, 530);
   }
-  fra.me.REG[0] = ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_parser_nodes___AGgMethid____n_gg(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ABraMethid___n_obra__eq(val_t p0, val_t p1){
+void parser_nodes___AGgMethid___n_gg__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 517;
-  fra.me.meth = LOCATE_parser_nodes___ABraMethid___n_obra__eq;
+  fra.me.line = 530;
+  fra.me.meth = LOCATE_parser_nodes___AGgMethid___n_gg__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:517 */
-  ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:530 */
+  ATTR_parser_nodes___AGgMethid____n_gg(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
-val_t parser_nodes___ABraMethid___n_cbra(val_t p0){
+val_t parser_nodes___ABraMethid___n_obra(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 518;
-  fra.me.meth = LOCATE_parser_nodes___ABraMethid___n_cbra;
+  fra.me.line = 534;
+  fra.me.meth = LOCATE_parser_nodes___ABraMethid___n_obra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:518 */
+  /* ./parser//parser_nodes.nit:534 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_cbra");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 518);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser_nodes, 534);
   }
-  fra.me.REG[0] = ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ABraMethid___n_cbra__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___ABraMethid___n_cbra(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 518;
-  fra.me.meth = LOCATE_parser_nodes___ABraMethid___n_cbra__eq;
+  fra.me.line = 535;
+  fra.me.meth = LOCATE_parser_nodes___ABraMethid___n_cbra;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:518 */
-  ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:535 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser_nodes, 535);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
 val_t parser_nodes___AStarshipMethid___n_starship(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3131,1703 +1766,859 @@ val_t parser_nodes___AStarshipMethid___n_starship(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 522;
+  fra.me.line = 539;
   fra.me.meth = LOCATE_parser_nodes___AStarshipMethid___n_starship;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:539 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:522 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_starship");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 522);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_parser_nodes, 539);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStarshipMethid___n_starship__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 522;
-  fra.me.meth = LOCATE_parser_nodes___AStarshipMethid___n_starship__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:522 */
-  ATTR_parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAssignMethid___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 526;
+  fra.me.line = 543;
   fra.me.meth = LOCATE_parser_nodes___AAssignMethid___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:543 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignMethid____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:526 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 526);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 543);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAssignMethid____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAssignMethid___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 526;
-  fra.me.meth = LOCATE_parser_nodes___AAssignMethid___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:526 */
-  ATTR_parser_nodes___AAssignMethid____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAssignMethid___n_assign(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 527;
+  fra.me.line = 544;
   fra.me.meth = LOCATE_parser_nodes___AAssignMethid___n_assign;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:544 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:527 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_assign");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 527);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_nodes, 544);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAssignMethid___n_assign__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 527;
-  fra.me.meth = LOCATE_parser_nodes___AAssignMethid___n_assign__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:527 */
-  ATTR_parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ABraassignMethid___n_obra(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 531;
+  fra.me.line = 548;
   fra.me.meth = LOCATE_parser_nodes___ABraassignMethid___n_obra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:548 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:531 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_obra");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 531);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser_nodes, 548);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ABraassignMethid___n_obra__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 531;
-  fra.me.meth = LOCATE_parser_nodes___ABraassignMethid___n_obra__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:531 */
-  ATTR_parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ABraassignMethid___n_cbra(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 532;
+  fra.me.line = 549;
   fra.me.meth = LOCATE_parser_nodes___ABraassignMethid___n_cbra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:549 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:532 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_cbra");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 532);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser_nodes, 549);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ABraassignMethid___n_cbra__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 532;
-  fra.me.meth = LOCATE_parser_nodes___ABraassignMethid___n_cbra__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:532 */
-  ATTR_parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ABraassignMethid___n_assign(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 533;
+  fra.me.line = 550;
   fra.me.meth = LOCATE_parser_nodes___ABraassignMethid___n_assign;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:550 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:533 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_assign");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 533);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_nodes, 550);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ABraassignMethid___n_assign__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 533;
-  fra.me.meth = LOCATE_parser_nodes___ABraassignMethid___n_assign__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:533 */
-  ATTR_parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ASignature___n_params(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 537;
+  fra.me.line = 554;
   fra.me.meth = LOCATE_parser_nodes___ASignature___n_params;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:554 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:537 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_params");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 537);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser_nodes, 554);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASignature___n_params__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___ASignature___n_type(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 537;
-  fra.me.meth = LOCATE_parser_nodes___ASignature___n_params__eq;
+  fra.me.line = 555;
+  fra.me.meth = LOCATE_parser_nodes___ASignature___n_type;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:537 */
-  ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t parser_nodes___ASignature___n_type(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 538;
-  fra.me.meth = LOCATE_parser_nodes___ASignature___n_type;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:555 */
   fra.me.REG[0] = ATTR_parser_nodes___ASignature____n_type(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:538 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASignature___n_type__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 538;
-  fra.me.meth = LOCATE_parser_nodes___ASignature___n_type__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:538 */
-  ATTR_parser_nodes___ASignature____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ASignature___n_closure_decls(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 539;
+  fra.me.line = 556;
   fra.me.meth = LOCATE_parser_nodes___ASignature___n_closure_decls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:556 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:539 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_closure_decls");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 539);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser_nodes, 556);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASignature___n_closure_decls__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 539;
-  fra.me.meth = LOCATE_parser_nodes___ASignature___n_closure_decls__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:539 */
-  ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AParam___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 543;
+  fra.me.line = 560;
   fra.me.meth = LOCATE_parser_nodes___AParam___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:560 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AParam____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:543 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 543);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 560);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AParam____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AParam___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 543;
-  fra.me.meth = LOCATE_parser_nodes___AParam___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:543 */
-  ATTR_parser_nodes___AParam____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AParam___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 544;
+  fra.me.line = 561;
   fra.me.meth = LOCATE_parser_nodes___AParam___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:561 */
   fra.me.REG[0] = ATTR_parser_nodes___AParam____n_type(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:544 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AParam___n_type__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 544;
-  fra.me.meth = LOCATE_parser_nodes___AParam___n_type__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:544 */
-  ATTR_parser_nodes___AParam____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AParam___n_dotdotdot(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 545;
+  fra.me.line = 562;
   fra.me.meth = LOCATE_parser_nodes___AParam___n_dotdotdot;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:562 */
   fra.me.REG[0] = ATTR_parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:545 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AParam___n_dotdotdot__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 545;
-  fra.me.meth = LOCATE_parser_nodes___AParam___n_dotdotdot__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:545 */
-  ATTR_parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureDecl___n_kwbreak(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 549;
+  fra.me.line = 566;
   fra.me.meth = LOCATE_parser_nodes___AClosureDecl___n_kwbreak;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:566 */
   fra.me.REG[0] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:549 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureDecl___n_kwbreak__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 549;
-  fra.me.meth = LOCATE_parser_nodes___AClosureDecl___n_kwbreak__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:549 */
-  ATTR_parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureDecl___n_bang(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 550;
+  fra.me.line = 567;
   fra.me.meth = LOCATE_parser_nodes___AClosureDecl___n_bang;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:567 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_bang(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:550 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_bang");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 550);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser_nodes, 567);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureDecl___n_bang__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 550;
-  fra.me.meth = LOCATE_parser_nodes___AClosureDecl___n_bang__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:550 */
-  ATTR_parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureDecl___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 551;
+  fra.me.line = 568;
   fra.me.meth = LOCATE_parser_nodes___AClosureDecl___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:568 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:551 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 551);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 568);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AClosureDecl____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureDecl___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 551;
-  fra.me.meth = LOCATE_parser_nodes___AClosureDecl___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:551 */
-  ATTR_parser_nodes___AClosureDecl____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureDecl___n_signature(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 552;
+  fra.me.line = 569;
   fra.me.meth = LOCATE_parser_nodes___AClosureDecl___n_signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:569 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_signature(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:552 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_signature");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 552);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_signature", LOCATE_parser_nodes, 569);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureDecl___n_signature__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 552;
-  fra.me.meth = LOCATE_parser_nodes___AClosureDecl___n_signature__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:552 */
-  ATTR_parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureDecl___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 553;
+  fra.me.line = 570;
   fra.me.meth = LOCATE_parser_nodes___AClosureDecl___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:570 */
   fra.me.REG[0] = ATTR_parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:553 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureDecl___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 553;
-  fra.me.meth = LOCATE_parser_nodes___AClosureDecl___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:553 */
-  ATTR_parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AType___n_kwnullable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 557;
+  fra.me.line = 574;
   fra.me.meth = LOCATE_parser_nodes___AType___n_kwnullable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:574 */
   fra.me.REG[0] = ATTR_parser_nodes___AType____n_kwnullable(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:557 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AType___n_kwnullable__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 557;
-  fra.me.meth = LOCATE_parser_nodes___AType___n_kwnullable__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:557 */
-  ATTR_parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AType___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 558;
+  fra.me.line = 575;
   fra.me.meth = LOCATE_parser_nodes___AType___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:575 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AType____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:558 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 558);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 575);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AType____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AType___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 558;
-  fra.me.meth = LOCATE_parser_nodes___AType___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:558 */
-  ATTR_parser_nodes___AType____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AType___n_types(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 559;
+  fra.me.line = 576;
   fra.me.meth = LOCATE_parser_nodes___AType___n_types;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:576 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:559 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_types");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 559);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser_nodes, 576);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AType____n_types(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AType___n_types__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 559;
-  fra.me.meth = LOCATE_parser_nodes___AType___n_types__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:559 */
-  ATTR_parser_nodes___AType____n_types(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ALabel___n_kwlabel(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 563;
+  fra.me.line = 580;
   fra.me.meth = LOCATE_parser_nodes___ALabel___n_kwlabel;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:580 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ALabel____n_kwlabel(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:563 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwlabel");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 563);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwlabel", LOCATE_parser_nodes, 580);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ALabel___n_kwlabel__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 563;
-  fra.me.meth = LOCATE_parser_nodes___ALabel___n_kwlabel__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:563 */
-  ATTR_parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ALabel___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 564;
+  fra.me.line = 581;
   fra.me.meth = LOCATE_parser_nodes___ALabel___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:581 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ALabel____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:564 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 564);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 581);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ALabel____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ALabel___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 564;
-  fra.me.meth = LOCATE_parser_nodes___ALabel___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:564 */
-  ATTR_parser_nodes___ALabel____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ABlockExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 569;
+  fra.me.line = 586;
   fra.me.meth = LOCATE_parser_nodes___ABlockExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:586 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:569 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 569);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 586);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ABlockExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___AVardeclExpr___n_kwvar(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 569;
-  fra.me.meth = LOCATE_parser_nodes___ABlockExpr___n_expr__eq;
+  fra.me.line = 590;
+  fra.me.meth = LOCATE_parser_nodes___AVardeclExpr___n_kwvar;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:569 */
-  ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t parser_nodes___AVardeclExpr___n_kwvar(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 573;
-  fra.me.meth = LOCATE_parser_nodes___AVardeclExpr___n_kwvar;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:590 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:573 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwvar");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 573);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser_nodes, 590);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AVardeclExpr___n_kwvar__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 573;
-  fra.me.meth = LOCATE_parser_nodes___AVardeclExpr___n_kwvar__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:573 */
-  ATTR_parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AVardeclExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 574;
+  fra.me.line = 591;
   fra.me.meth = LOCATE_parser_nodes___AVardeclExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:591 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AVardeclExpr____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:574 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 574);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 591);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AVardeclExpr___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 574;
-  fra.me.meth = LOCATE_parser_nodes___AVardeclExpr___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:574 */
-  ATTR_parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AVardeclExpr___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 575;
+  fra.me.line = 592;
   fra.me.meth = LOCATE_parser_nodes___AVardeclExpr___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:592 */
   fra.me.REG[0] = ATTR_parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:575 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AVardeclExpr___n_type__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 575;
-  fra.me.meth = LOCATE_parser_nodes___AVardeclExpr___n_type__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:575 */
-  ATTR_parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AVardeclExpr___n_assign(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 576;
+  fra.me.line = 593;
   fra.me.meth = LOCATE_parser_nodes___AVardeclExpr___n_assign;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:593 */
   fra.me.REG[0] = ATTR_parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:576 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AVardeclExpr___n_assign__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 576;
-  fra.me.meth = LOCATE_parser_nodes___AVardeclExpr___n_assign__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:576 */
-  ATTR_parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AVardeclExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 577;
+  fra.me.line = 594;
   fra.me.meth = LOCATE_parser_nodes___AVardeclExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:594 */
   fra.me.REG[0] = ATTR_parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:577 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AVardeclExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 577;
-  fra.me.meth = LOCATE_parser_nodes___AVardeclExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:577 */
-  ATTR_parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AReturnExpr___n_kwreturn(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 581;
+  fra.me.line = 598;
   fra.me.meth = LOCATE_parser_nodes___AReturnExpr___n_kwreturn;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:598 */
   fra.me.REG[0] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:581 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AReturnExpr___n_kwreturn__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 581;
-  fra.me.meth = LOCATE_parser_nodes___AReturnExpr___n_kwreturn__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:581 */
-  ATTR_parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AReturnExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 582;
+  fra.me.line = 599;
   fra.me.meth = LOCATE_parser_nodes___AReturnExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:599 */
   fra.me.REG[0] = ATTR_parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:582 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AReturnExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 582;
-  fra.me.meth = LOCATE_parser_nodes___AReturnExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:582 */
-  ATTR_parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ALabelable___n_label(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 586;
+  fra.me.line = 603;
   fra.me.meth = LOCATE_parser_nodes___ALabelable___n_label;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:603 */
   fra.me.REG[0] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:586 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ALabelable___n_label__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 586;
-  fra.me.meth = LOCATE_parser_nodes___ALabelable___n_label__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:586 */
-  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ABreakExpr___n_kwbreak(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 591;
+  fra.me.line = 608;
   fra.me.meth = LOCATE_parser_nodes___ABreakExpr___n_kwbreak;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:608 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:591 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwbreak");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 591);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser_nodes, 608);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ABreakExpr___n_kwbreak__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 591;
-  fra.me.meth = LOCATE_parser_nodes___ABreakExpr___n_kwbreak__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:591 */
-  ATTR_parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ABreakExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 592;
+  fra.me.line = 609;
   fra.me.meth = LOCATE_parser_nodes___ABreakExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:609 */
   fra.me.REG[0] = ATTR_parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:592 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ABreakExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 592;
-  fra.me.meth = LOCATE_parser_nodes___ABreakExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:592 */
-  ATTR_parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAbortExpr___n_kwabort(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 596;
+  fra.me.line = 613;
   fra.me.meth = LOCATE_parser_nodes___AAbortExpr___n_kwabort;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:613 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:596 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwabort");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 596);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwabort", LOCATE_parser_nodes, 613);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAbortExpr___n_kwabort__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 596;
-  fra.me.meth = LOCATE_parser_nodes___AAbortExpr___n_kwabort__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:596 */
-  ATTR_parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AContinueExpr___n_kwcontinue(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 601;
+  fra.me.line = 618;
   fra.me.meth = LOCATE_parser_nodes___AContinueExpr___n_kwcontinue;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:618 */
   fra.me.REG[0] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:601 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AContinueExpr___n_kwcontinue__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 601;
-  fra.me.meth = LOCATE_parser_nodes___AContinueExpr___n_kwcontinue__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:601 */
-  ATTR_parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AContinueExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 602;
+  fra.me.line = 619;
   fra.me.meth = LOCATE_parser_nodes___AContinueExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:619 */
   fra.me.REG[0] = ATTR_parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:602 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AContinueExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 602;
-  fra.me.meth = LOCATE_parser_nodes___AContinueExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:602 */
-  ATTR_parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ADoExpr___n_kwdo(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 607;
+  fra.me.line = 624;
   fra.me.meth = LOCATE_parser_nodes___ADoExpr___n_kwdo;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:624 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:607 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwdo");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 607);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser_nodes, 624);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ADoExpr___n_kwdo__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 607;
-  fra.me.meth = LOCATE_parser_nodes___ADoExpr___n_kwdo__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:607 */
-  ATTR_parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ADoExpr___n_block(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 608;
+  fra.me.line = 625;
   fra.me.meth = LOCATE_parser_nodes___ADoExpr___n_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:625 */
   fra.me.REG[0] = ATTR_parser_nodes___ADoExpr____n_block(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:608 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ADoExpr___n_block__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 608;
-  fra.me.meth = LOCATE_parser_nodes___ADoExpr___n_block__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:608 */
-  ATTR_parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AIfExpr___n_kwif(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 612;
+  fra.me.line = 629;
   fra.me.meth = LOCATE_parser_nodes___AIfExpr___n_kwif;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:629 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AIfExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:612 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwif");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 612);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser_nodes, 629);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIfExpr___n_kwif__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 612;
-  fra.me.meth = LOCATE_parser_nodes___AIfExpr___n_kwif__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:612 */
-  ATTR_parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AIfExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 613;
+  fra.me.line = 630;
   fra.me.meth = LOCATE_parser_nodes___AIfExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:630 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AIfExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:613 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 613);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 630);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AIfExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIfExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 613;
-  fra.me.meth = LOCATE_parser_nodes___AIfExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:613 */
-  ATTR_parser_nodes___AIfExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AIfExpr___n_then(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 614;
+  fra.me.line = 631;
   fra.me.meth = LOCATE_parser_nodes___AIfExpr___n_then;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:631 */
   fra.me.REG[0] = ATTR_parser_nodes___AIfExpr____n_then(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:614 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIfExpr___n_then__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 614;
-  fra.me.meth = LOCATE_parser_nodes___AIfExpr___n_then__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:614 */
-  ATTR_parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AIfExpr___n_else(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 615;
+  fra.me.line = 632;
   fra.me.meth = LOCATE_parser_nodes___AIfExpr___n_else;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:632 */
   fra.me.REG[0] = ATTR_parser_nodes___AIfExpr____n_else(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:615 */
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-void parser_nodes___AIfExpr___n_else__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 615;
-  fra.me.meth = LOCATE_parser_nodes___AIfExpr___n_else__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:615 */
-  ATTR_parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t parser_nodes___AIfexprExpr___n_kwif(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 619;
-  fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_kwif;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:619 */
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwif");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 619);
-    nit_exit(1);
-  }
-  fra.me.REG[0] = ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-void parser_nodes___AIfexprExpr___n_kwif__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 619;
-  fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_kwif__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:619 */
-  ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
-val_t parser_nodes___AIfexprExpr___n_expr(val_t p0){
+val_t parser_nodes___AIfexprExpr___n_kwif(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 620;
-  fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_expr;
+  fra.me.line = 636;
+  fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_kwif;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:620 */
+  /* ./parser//parser_nodes.nit:636 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 620);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser_nodes, 636);
   }
-  fra.me.REG[0] = ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIfexprExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___AIfexprExpr___n_expr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 620;
-  fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_expr__eq;
+  fra.me.line = 637;
+  fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_expr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:620 */
-  ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:637 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 637);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
 val_t parser_nodes___AIfexprExpr___n_kwthen(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4835,1303 +2626,717 @@ val_t parser_nodes___AIfexprExpr___n_kwthen(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 621;
+  fra.me.line = 638;
   fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_kwthen;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:638 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:621 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwthen");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 621);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwthen", LOCATE_parser_nodes, 638);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIfexprExpr___n_kwthen__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 621;
-  fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_kwthen__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:621 */
-  ATTR_parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AIfexprExpr___n_then(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 622;
+  fra.me.line = 639;
   fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_then;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:639 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_then(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:622 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_then");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 622);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_then", LOCATE_parser_nodes, 639);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIfexprExpr___n_then__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 622;
-  fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_then__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:622 */
-  ATTR_parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AIfexprExpr___n_kwelse(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 623;
+  fra.me.line = 640;
   fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_kwelse;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:640 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:623 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwelse");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 623);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwelse", LOCATE_parser_nodes, 640);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIfexprExpr___n_kwelse__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 623;
-  fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_kwelse__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:623 */
-  ATTR_parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AIfexprExpr___n_else(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 624;
+  fra.me.line = 641;
   fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_else;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:641 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_else(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:624 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_else");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 624);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_else", LOCATE_parser_nodes, 641);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIfexprExpr___n_else__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 624;
-  fra.me.meth = LOCATE_parser_nodes___AIfexprExpr___n_else__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:624 */
-  ATTR_parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AWhileExpr___n_kwwhile(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 629;
+  fra.me.line = 646;
   fra.me.meth = LOCATE_parser_nodes___AWhileExpr___n_kwwhile;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:646 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:629 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwwhile");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 629);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwwhile", LOCATE_parser_nodes, 646);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AWhileExpr___n_kwwhile__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 629;
-  fra.me.meth = LOCATE_parser_nodes___AWhileExpr___n_kwwhile__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:629 */
-  ATTR_parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AWhileExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 630;
+  fra.me.line = 647;
   fra.me.meth = LOCATE_parser_nodes___AWhileExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:647 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:630 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 630);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 647);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AWhileExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 630;
-  fra.me.meth = LOCATE_parser_nodes___AWhileExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:630 */
-  ATTR_parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AWhileExpr___n_kwdo(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 631;
+  fra.me.line = 648;
   fra.me.meth = LOCATE_parser_nodes___AWhileExpr___n_kwdo;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:648 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:631 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwdo");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 631);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser_nodes, 648);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AWhileExpr___n_kwdo__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 631;
-  fra.me.meth = LOCATE_parser_nodes___AWhileExpr___n_kwdo__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:631 */
-  ATTR_parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AWhileExpr___n_block(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 632;
+  fra.me.line = 649;
   fra.me.meth = LOCATE_parser_nodes___AWhileExpr___n_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:649 */
   fra.me.REG[0] = ATTR_parser_nodes___AWhileExpr____n_block(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:632 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AWhileExpr___n_block__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 632;
-  fra.me.meth = LOCATE_parser_nodes___AWhileExpr___n_block__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:632 */
-  ATTR_parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ALoopExpr___n_kwloop(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 637;
+  fra.me.line = 654;
   fra.me.meth = LOCATE_parser_nodes___ALoopExpr___n_kwloop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:654 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:637 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwloop");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 637);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwloop", LOCATE_parser_nodes, 654);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ALoopExpr___n_kwloop__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 637;
-  fra.me.meth = LOCATE_parser_nodes___ALoopExpr___n_kwloop__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:637 */
-  ATTR_parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ALoopExpr___n_block(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 638;
+  fra.me.line = 655;
   fra.me.meth = LOCATE_parser_nodes___ALoopExpr___n_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:655 */
   fra.me.REG[0] = ATTR_parser_nodes___ALoopExpr____n_block(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:638 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ALoopExpr___n_block__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 638;
-  fra.me.meth = LOCATE_parser_nodes___ALoopExpr___n_block__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:638 */
-  ATTR_parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AForExpr___n_kwfor(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 643;
+  fra.me.line = 660;
   fra.me.meth = LOCATE_parser_nodes___AForExpr___n_kwfor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:660 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_kwfor(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:643 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwfor");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 643);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwfor", LOCATE_parser_nodes, 660);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AForExpr___n_kwfor__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 643;
-  fra.me.meth = LOCATE_parser_nodes___AForExpr___n_kwfor__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:643 */
-  ATTR_parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AForExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 644;
+  fra.me.line = 661;
   fra.me.meth = LOCATE_parser_nodes___AForExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:661 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:644 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 644);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 661);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AForExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AForExpr___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 644;
-  fra.me.meth = LOCATE_parser_nodes___AForExpr___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:644 */
-  ATTR_parser_nodes___AForExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AForExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 645;
+  fra.me.line = 662;
   fra.me.meth = LOCATE_parser_nodes___AForExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:662 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:645 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 645);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 662);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AForExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AForExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 645;
-  fra.me.meth = LOCATE_parser_nodes___AForExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:645 */
-  ATTR_parser_nodes___AForExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AForExpr___n_kwdo(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 646;
+  fra.me.line = 663;
   fra.me.meth = LOCATE_parser_nodes___AForExpr___n_kwdo;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:663 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:646 */
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwdo");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 646);
-    nit_exit(1);
-  }
-  fra.me.REG[0] = ATTR_parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-void parser_nodes___AForExpr___n_kwdo__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 646;
-  fra.me.meth = LOCATE_parser_nodes___AForExpr___n_kwdo__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:646 */
-  ATTR_parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser_nodes, 663);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
 val_t parser_nodes___AForExpr___n_block(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 647;
+  fra.me.line = 664;
   fra.me.meth = LOCATE_parser_nodes___AForExpr___n_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:664 */
   fra.me.REG[0] = ATTR_parser_nodes___AForExpr____n_block(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:647 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AForExpr___n_block__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 647;
-  fra.me.meth = LOCATE_parser_nodes___AForExpr___n_block__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:647 */
-  ATTR_parser_nodes___AForExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAssertExpr___n_kwassert(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 651;
+  fra.me.line = 668;
   fra.me.meth = LOCATE_parser_nodes___AAssertExpr___n_kwassert;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:668 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:651 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwassert");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 651);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwassert", LOCATE_parser_nodes, 668);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAssertExpr___n_kwassert__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 651;
-  fra.me.meth = LOCATE_parser_nodes___AAssertExpr___n_kwassert__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:651 */
-  ATTR_parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAssertExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 652;
+  fra.me.line = 669;
   fra.me.meth = LOCATE_parser_nodes___AAssertExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:669 */
   fra.me.REG[0] = ATTR_parser_nodes___AAssertExpr____n_id(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:652 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAssertExpr___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 652;
-  fra.me.meth = LOCATE_parser_nodes___AAssertExpr___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:652 */
-  ATTR_parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAssertExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 653;
+  fra.me.line = 670;
   fra.me.meth = LOCATE_parser_nodes___AAssertExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:670 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAssertExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:653 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 653);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 670);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAssertExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 653;
-  fra.me.meth = LOCATE_parser_nodes___AAssertExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:653 */
-  ATTR_parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAssertExpr___n_else(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 654;
+  fra.me.line = 671;
   fra.me.meth = LOCATE_parser_nodes___AAssertExpr___n_else;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:671 */
   fra.me.REG[0] = ATTR_parser_nodes___AAssertExpr____n_else(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:654 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAssertExpr___n_else__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 654;
-  fra.me.meth = LOCATE_parser_nodes___AAssertExpr___n_else__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:654 */
-  ATTR_parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAssignFormExpr___n_assign(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 658;
+  fra.me.line = 675;
   fra.me.meth = LOCATE_parser_nodes___AAssignFormExpr___n_assign;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:675 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:658 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_assign");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 658);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_nodes, 675);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAssignFormExpr___n_assign__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 658;
-  fra.me.meth = LOCATE_parser_nodes___AAssignFormExpr___n_assign__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:658 */
-  ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAssignFormExpr___n_value(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 659;
+  fra.me.line = 676;
   fra.me.meth = LOCATE_parser_nodes___AAssignFormExpr___n_value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:676 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:659 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_value");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 659);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_nodes, 676);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAssignFormExpr___n_value__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 659;
-  fra.me.meth = LOCATE_parser_nodes___AAssignFormExpr___n_value__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:659 */
-  ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AReassignFormExpr___n_assign_op(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 663;
+  fra.me.line = 680;
   fra.me.meth = LOCATE_parser_nodes___AReassignFormExpr___n_assign_op;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:680 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:663 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_assign_op");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 663);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser_nodes, 680);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AReassignFormExpr___n_assign_op__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 663;
-  fra.me.meth = LOCATE_parser_nodes___AReassignFormExpr___n_assign_op__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:663 */
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AReassignFormExpr___n_value(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 664;
+  fra.me.line = 681;
   fra.me.meth = LOCATE_parser_nodes___AReassignFormExpr___n_value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:681 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:664 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_value");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 664);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_nodes, 681);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AReassignFormExpr___n_value__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 664;
-  fra.me.meth = LOCATE_parser_nodes___AReassignFormExpr___n_value__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:664 */
-  ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AOnceExpr___n_kwonce(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 668;
+  fra.me.line = 685;
   fra.me.meth = LOCATE_parser_nodes___AOnceExpr___n_kwonce;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:685 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:668 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwonce");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 668);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwonce", LOCATE_parser_nodes, 685);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AOnceExpr___n_kwonce__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 668;
-  fra.me.meth = LOCATE_parser_nodes___AOnceExpr___n_kwonce__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:668 */
-  ATTR_parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ASendExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 672;
+  fra.me.line = 689;
   fra.me.meth = LOCATE_parser_nodes___ASendExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:689 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:672 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 672);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 689);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASendExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 672;
-  fra.me.meth = LOCATE_parser_nodes___ASendExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:672 */
-  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ASendExpr___n_closure_defs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 673;
+  fra.me.line = 690;
   fra.me.meth = LOCATE_parser_nodes___ASendExpr___n_closure_defs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:673 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_closure_defs");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 673);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_nodes, 690);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASendExpr___n_closure_defs__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 673;
-  fra.me.meth = LOCATE_parser_nodes___ASendExpr___n_closure_defs__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:673 */
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ABinopExpr___n_expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 677;
+  fra.me.line = 694;
   fra.me.meth = LOCATE_parser_nodes___ABinopExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:694 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:677 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr2");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 677);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_nodes, 694);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ABinopExpr___n_expr2__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 677;
-  fra.me.meth = LOCATE_parser_nodes___ABinopExpr___n_expr2__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:677 */
-  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AOrExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 684;
+  fra.me.line = 701;
   fra.me.meth = LOCATE_parser_nodes___AOrExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:701 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AOrExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:684 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 684);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 701);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AOrExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AOrExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 684;
-  fra.me.meth = LOCATE_parser_nodes___AOrExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:684 */
-  ATTR_parser_nodes___AOrExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AOrExpr___n_expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 685;
+  fra.me.line = 702;
   fra.me.meth = LOCATE_parser_nodes___AOrExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:702 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AOrExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:685 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr2");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 685);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_nodes, 702);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AOrExpr___n_expr2__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 685;
-  fra.me.meth = LOCATE_parser_nodes___AOrExpr___n_expr2__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:685 */
-  ATTR_parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAndExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 689;
+  fra.me.line = 706;
   fra.me.meth = LOCATE_parser_nodes___AAndExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:706 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAndExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:689 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 689);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 706);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAndExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAndExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 689;
-  fra.me.meth = LOCATE_parser_nodes___AAndExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:689 */
-  ATTR_parser_nodes___AAndExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAndExpr___n_expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 690;
+  fra.me.line = 707;
   fra.me.meth = LOCATE_parser_nodes___AAndExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:707 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAndExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:690 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr2");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 690);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_nodes, 707);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAndExpr___n_expr2__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___AOrElseExpr___n_expr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 690;
-  fra.me.meth = LOCATE_parser_nodes___AAndExpr___n_expr2__eq;
+  fra.me.line = 711;
+  fra.me.meth = LOCATE_parser_nodes___AOrElseExpr___n_expr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:690 */
-  ATTR_parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:711 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 711);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
-val_t parser_nodes___ANotExpr___n_kwnot(val_t p0){
+val_t parser_nodes___AOrElseExpr___n_expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 694;
-  fra.me.meth = LOCATE_parser_nodes___ANotExpr___n_kwnot;
+  fra.me.line = 712;
+  fra.me.meth = LOCATE_parser_nodes___AOrElseExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:694 */
+  /* ./parser//parser_nodes.nit:712 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwnot");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 694);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_nodes, 712);
   }
-  fra.me.REG[0] = ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ANotExpr___n_kwnot__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___ANotExpr___n_kwnot(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 694;
-  fra.me.meth = LOCATE_parser_nodes___ANotExpr___n_kwnot__eq;
+  fra.me.line = 716;
+  fra.me.meth = LOCATE_parser_nodes___ANotExpr___n_kwnot;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:694 */
-  ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:716 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser_nodes, 716);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
 val_t parser_nodes___ANotExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6139,613 +3344,317 @@ val_t parser_nodes___ANotExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 695;
+  fra.me.line = 717;
   fra.me.meth = LOCATE_parser_nodes___ANotExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:717 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ANotExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:695 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 695);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 717);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ANotExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ANotExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 695;
-  fra.me.meth = LOCATE_parser_nodes___ANotExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:695 */
-  ATTR_parser_nodes___ANotExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AEeExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 702;
+  fra.me.line = 724;
   fra.me.meth = LOCATE_parser_nodes___AEeExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:724 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AEeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:702 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 702);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 724);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AEeExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AEeExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 702;
-  fra.me.meth = LOCATE_parser_nodes___AEeExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:702 */
-  ATTR_parser_nodes___AEeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AEeExpr___n_expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 703;
+  fra.me.line = 725;
   fra.me.meth = LOCATE_parser_nodes___AEeExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:725 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AEeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:703 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr2");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 703);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_nodes, 725);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AEeExpr___n_expr2__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 703;
-  fra.me.meth = LOCATE_parser_nodes___AEeExpr___n_expr2__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:703 */
-  ATTR_parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AIsaExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 722;
+  fra.me.line = 750;
   fra.me.meth = LOCATE_parser_nodes___AIsaExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:750 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AIsaExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:722 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 722);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 750);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIsaExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 722;
-  fra.me.meth = LOCATE_parser_nodes___AIsaExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:722 */
-  ATTR_parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AIsaExpr___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 723;
+  fra.me.line = 751;
   fra.me.meth = LOCATE_parser_nodes___AIsaExpr___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:751 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AIsaExpr____n_type(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:723 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_type");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 723);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_nodes, 751);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AIsaExpr____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIsaExpr___n_type__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 723;
-  fra.me.meth = LOCATE_parser_nodes___AIsaExpr___n_type__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:723 */
-  ATTR_parser_nodes___AIsaExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AUminusExpr___n_minus(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 745;
+  fra.me.line = 773;
   fra.me.meth = LOCATE_parser_nodes___AUminusExpr___n_minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:773 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AUminusExpr____n_minus(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:745 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_minus");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 745);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser_nodes, 773);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AUminusExpr___n_minus__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 745;
-  fra.me.meth = LOCATE_parser_nodes___AUminusExpr___n_minus__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:745 */
-  ATTR_parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ANewExpr___n_kwnew(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 749;
+  fra.me.line = 777;
   fra.me.meth = LOCATE_parser_nodes___ANewExpr___n_kwnew;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:777 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:749 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwnew");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 749);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser_nodes, 777);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ANewExpr___n_kwnew__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 749;
-  fra.me.meth = LOCATE_parser_nodes___ANewExpr___n_kwnew__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:749 */
-  ATTR_parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ANewExpr___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 750;
+  fra.me.line = 778;
   fra.me.meth = LOCATE_parser_nodes___ANewExpr___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:778 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_type(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:750 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_type");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 750);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_nodes, 778);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ANewExpr____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ANewExpr___n_type__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 750;
-  fra.me.meth = LOCATE_parser_nodes___ANewExpr___n_type__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:750 */
-  ATTR_parser_nodes___ANewExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ANewExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 751;
+  fra.me.line = 779;
   fra.me.meth = LOCATE_parser_nodes___ANewExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:779 */
   fra.me.REG[0] = ATTR_parser_nodes___ANewExpr____n_id(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:751 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ANewExpr___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 751;
-  fra.me.meth = LOCATE_parser_nodes___ANewExpr___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:751 */
-  ATTR_parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ANewExpr___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 752;
+  fra.me.line = 780;
   fra.me.meth = LOCATE_parser_nodes___ANewExpr___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:780 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:752 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_args");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 752);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_nodes, 780);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ANewExpr___n_args__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 752;
-  fra.me.meth = LOCATE_parser_nodes___ANewExpr___n_args__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:752 */
-  ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAttrFormExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 756;
+  fra.me.line = 784;
   fra.me.meth = LOCATE_parser_nodes___AAttrFormExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:784 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:756 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 756);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 784);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAttrFormExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 756;
-  fra.me.meth = LOCATE_parser_nodes___AAttrFormExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:756 */
-  ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAttrFormExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 757;
+  fra.me.line = 785;
   fra.me.meth = LOCATE_parser_nodes___AAttrFormExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:785 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:757 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 757);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 785);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAttrFormExpr___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 757;
-  fra.me.meth = LOCATE_parser_nodes___AAttrFormExpr___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:757 */
-  ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ACallFormExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 768;
+  fra.me.line = 796;
   fra.me.meth = LOCATE_parser_nodes___ACallFormExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:796 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:768 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 768);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 796);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ACallFormExpr___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 768;
-  fra.me.meth = LOCATE_parser_nodes___ACallFormExpr___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:768 */
-  ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ACallFormExpr___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 769;
+  fra.me.line = 797;
   fra.me.meth = LOCATE_parser_nodes___ACallFormExpr___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:797 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:769 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_args");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 769);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_nodes, 797);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ACallFormExpr___n_args__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 769;
-  fra.me.meth = LOCATE_parser_nodes___ACallFormExpr___n_args__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:769 */
-  ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ASuperExpr___n_qualified(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 790;
-  fra.me.meth = LOCATE_parser_nodes___ASuperExpr___n_qualified;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[0] = ATTR_parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:790 */
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-void parser_nodes___ASuperExpr___n_qualified__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 790;
-  fra.me.meth = LOCATE_parser_nodes___ASuperExpr___n_qualified__eq;
+  fra.me.line = 818;
+  fra.me.meth = LOCATE_parser_nodes___ASuperExpr___n_qualified;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:790 */
-  ATTR_parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:818 */
+  fra.me.REG[0] = ATTR_parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
 val_t parser_nodes___ASuperExpr___n_kwsuper(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6753,705 +3662,367 @@ val_t parser_nodes___ASuperExpr___n_kwsuper(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 791;
+  fra.me.line = 819;
   fra.me.meth = LOCATE_parser_nodes___ASuperExpr___n_kwsuper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:819 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:791 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwsuper");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 791);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser_nodes, 819);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASuperExpr___n_kwsuper__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 791;
-  fra.me.meth = LOCATE_parser_nodes___ASuperExpr___n_kwsuper__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:791 */
-  ATTR_parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ASuperExpr___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 792;
+  fra.me.line = 820;
   fra.me.meth = LOCATE_parser_nodes___ASuperExpr___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:820 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:792 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_args");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 792);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_nodes, 820);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASuperExpr___n_args__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 792;
-  fra.me.meth = LOCATE_parser_nodes___ASuperExpr___n_args__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:792 */
-  ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AInitExpr___n_kwinit(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 796;
+  fra.me.line = 824;
   fra.me.meth = LOCATE_parser_nodes___AInitExpr___n_kwinit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:824 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:796 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwinit");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 796);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser_nodes, 824);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AInitExpr___n_kwinit__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 796;
-  fra.me.meth = LOCATE_parser_nodes___AInitExpr___n_kwinit__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:796 */
-  ATTR_parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AInitExpr___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 797;
+  fra.me.line = 825;
   fra.me.meth = LOCATE_parser_nodes___AInitExpr___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:825 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:797 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_args");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 797);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_nodes, 825);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AInitExpr___n_args__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 797;
-  fra.me.meth = LOCATE_parser_nodes___AInitExpr___n_args__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:797 */
-  ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ABraFormExpr___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 801;
+  fra.me.line = 829;
   fra.me.meth = LOCATE_parser_nodes___ABraFormExpr___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:829 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:801 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_args");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 801);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_nodes, 829);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ABraFormExpr___n_args__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 801;
-  fra.me.meth = LOCATE_parser_nodes___ABraFormExpr___n_args__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:801 */
-  ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AVarFormExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 812;
+  fra.me.line = 840;
   fra.me.meth = LOCATE_parser_nodes___AVarFormExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:840 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:812 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 812);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 840);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AVarFormExpr___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 812;
-  fra.me.meth = LOCATE_parser_nodes___AVarFormExpr___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:812 */
-  ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureCallExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 820;
+  fra.me.line = 848;
   fra.me.meth = LOCATE_parser_nodes___AClosureCallExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:848 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:820 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 820);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 848);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureCallExpr___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 820;
-  fra.me.meth = LOCATE_parser_nodes___AClosureCallExpr___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:820 */
-  ATTR_parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureCallExpr___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 821;
+  fra.me.line = 849;
   fra.me.meth = LOCATE_parser_nodes___AClosureCallExpr___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:849 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:821 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_args");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 821);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_nodes, 849);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureCallExpr___n_args__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 821;
-  fra.me.meth = LOCATE_parser_nodes___AClosureCallExpr___n_args__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:821 */
-  ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureCallExpr___n_closure_defs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 822;
+  fra.me.line = 850;
   fra.me.meth = LOCATE_parser_nodes___AClosureCallExpr___n_closure_defs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:850 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:822 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_closure_defs");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 822);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_nodes, 850);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureCallExpr___n_closure_defs__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 822;
-  fra.me.meth = LOCATE_parser_nodes___AClosureCallExpr___n_closure_defs__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:822 */
-  ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ARangeExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 837;
+  fra.me.line = 865;
   fra.me.meth = LOCATE_parser_nodes___ARangeExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:865 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:837 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 837);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 865);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ARangeExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 837;
-  fra.me.meth = LOCATE_parser_nodes___ARangeExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:837 */
-  ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ARangeExpr___n_expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 838;
+  fra.me.line = 866;
   fra.me.meth = LOCATE_parser_nodes___ARangeExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:866 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:838 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr2");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 838);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_nodes, 866);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ARangeExpr___n_expr2__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 838;
-  fra.me.meth = LOCATE_parser_nodes___ARangeExpr___n_expr2__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:838 */
-  ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AArrayExpr___n_exprs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 848;
+  fra.me.line = 876;
   fra.me.meth = LOCATE_parser_nodes___AArrayExpr___n_exprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:876 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:848 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_exprs");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 848);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_nodes, 876);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AArrayExpr___n_exprs__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 848;
-  fra.me.meth = LOCATE_parser_nodes___AArrayExpr___n_exprs__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:848 */
-  ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ASelfExpr___n_kwself(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 852;
+  fra.me.line = 880;
   fra.me.meth = LOCATE_parser_nodes___ASelfExpr___n_kwself;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:880 */
   fra.me.REG[0] = ATTR_parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:852 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASelfExpr___n_kwself__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 852;
-  fra.me.meth = LOCATE_parser_nodes___ASelfExpr___n_kwself__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:852 */
-  ATTR_parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ATrueExpr___n_kwtrue(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 859;
+  fra.me.line = 887;
   fra.me.meth = LOCATE_parser_nodes___ATrueExpr___n_kwtrue;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:887 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:859 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwtrue");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 859);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwtrue", LOCATE_parser_nodes, 887);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ATrueExpr___n_kwtrue__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 859;
-  fra.me.meth = LOCATE_parser_nodes___ATrueExpr___n_kwtrue__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:859 */
-  ATTR_parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AFalseExpr___n_kwfalse(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 863;
+  fra.me.line = 891;
   fra.me.meth = LOCATE_parser_nodes___AFalseExpr___n_kwfalse;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:891 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:863 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwfalse");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 863);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwfalse", LOCATE_parser_nodes, 891);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AFalseExpr___n_kwfalse__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 863;
-  fra.me.meth = LOCATE_parser_nodes___AFalseExpr___n_kwfalse__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:863 */
-  ATTR_parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ANullExpr___n_kwnull(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 867;
-  fra.me.meth = LOCATE_parser_nodes___ANullExpr___n_kwnull;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:867 */
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwnull");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 867);
-    nit_exit(1);
-  }
-  fra.me.REG[0] = ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-void parser_nodes___ANullExpr___n_kwnull__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 867;
-  fra.me.meth = LOCATE_parser_nodes___ANullExpr___n_kwnull__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:867 */
-  ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t parser_nodes___AIntExpr___n_number(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 871;
-  fra.me.meth = LOCATE_parser_nodes___AIntExpr___n_number;
+  fra.me.line = 895;
+  fra.me.meth = LOCATE_parser_nodes___ANullExpr___n_kwnull;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:871 */
+  /* ./parser//parser_nodes.nit:895 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_number");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 871);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser_nodes, 895);
   }
-  fra.me.REG[0] = ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIntExpr___n_number__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___AIntExpr___n_number(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 871;
-  fra.me.meth = LOCATE_parser_nodes___AIntExpr___n_number__eq;
+  fra.me.line = 899;
+  fra.me.meth = LOCATE_parser_nodes___AIntExpr___n_number;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:871 */
-  ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:899 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_number", LOCATE_parser_nodes, 899);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
 val_t parser_nodes___AFloatExpr___n_float(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -7459,671 +4030,351 @@ val_t parser_nodes___AFloatExpr___n_float(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 875;
+  fra.me.line = 903;
   fra.me.meth = LOCATE_parser_nodes___AFloatExpr___n_float;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:903 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AFloatExpr____n_float(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:875 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_float");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 875);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_parser_nodes, 903);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AFloatExpr____n_float(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AFloatExpr___n_float__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 875;
-  fra.me.meth = LOCATE_parser_nodes___AFloatExpr___n_float__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:875 */
-  ATTR_parser_nodes___AFloatExpr____n_float(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ACharExpr___n_char(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 879;
+  fra.me.line = 907;
   fra.me.meth = LOCATE_parser_nodes___ACharExpr___n_char;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:907 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ACharExpr____n_char(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:879 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_char");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 879);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_parser_nodes, 907);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ACharExpr____n_char(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ACharExpr___n_char__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 879;
-  fra.me.meth = LOCATE_parser_nodes___ACharExpr___n_char__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:879 */
-  ATTR_parser_nodes___ACharExpr____n_char(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStringExpr___n_string(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 886;
+  fra.me.line = 914;
   fra.me.meth = LOCATE_parser_nodes___AStringExpr___n_string;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:914 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:886 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_string");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 886);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_nodes, 914);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStringExpr____n_string(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStringExpr___n_string__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 886;
-  fra.me.meth = LOCATE_parser_nodes___AStringExpr___n_string__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:886 */
-  ATTR_parser_nodes___AStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AStartStringExpr___n_string(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 890;
+  fra.me.line = 918;
   fra.me.meth = LOCATE_parser_nodes___AStartStringExpr___n_string;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:918 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AStartStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:890 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_string");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 890);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_nodes, 918);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AStartStringExpr____n_string(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AStartStringExpr___n_string__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 890;
-  fra.me.meth = LOCATE_parser_nodes___AStartStringExpr___n_string__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:890 */
-  ATTR_parser_nodes___AStartStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AMidStringExpr___n_string(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 894;
+  fra.me.line = 922;
   fra.me.meth = LOCATE_parser_nodes___AMidStringExpr___n_string;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:922 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AMidStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:894 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_string");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 894);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_nodes, 922);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AMidStringExpr____n_string(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AMidStringExpr___n_string__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 894;
-  fra.me.meth = LOCATE_parser_nodes___AMidStringExpr___n_string__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:894 */
-  ATTR_parser_nodes___AMidStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AEndStringExpr___n_string(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 898;
+  fra.me.line = 926;
   fra.me.meth = LOCATE_parser_nodes___AEndStringExpr___n_string;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:926 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AEndStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:898 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_string");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 898);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_nodes, 926);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AEndStringExpr____n_string(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AEndStringExpr___n_string__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 898;
-  fra.me.meth = LOCATE_parser_nodes___AEndStringExpr___n_string__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:898 */
-  ATTR_parser_nodes___AEndStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ASuperstringExpr___n_exprs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 902;
+  fra.me.line = 930;
   fra.me.meth = LOCATE_parser_nodes___ASuperstringExpr___n_exprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:930 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:902 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_exprs");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 902);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_nodes, 930);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASuperstringExpr___n_exprs__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 902;
-  fra.me.meth = LOCATE_parser_nodes___ASuperstringExpr___n_exprs__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:902 */
-  ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AProxyExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 909;
+  fra.me.line = 937;
   fra.me.meth = LOCATE_parser_nodes___AProxyExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:937 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:909 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 909);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 937);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AProxyExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 909;
-  fra.me.meth = LOCATE_parser_nodes___AProxyExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:909 */
-  ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAsCastExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 913;
+  fra.me.line = 941;
   fra.me.meth = LOCATE_parser_nodes___AAsCastExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:941 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:913 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 913);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 941);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAsCastExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 913;
-  fra.me.meth = LOCATE_parser_nodes___AAsCastExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:913 */
-  ATTR_parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAsCastExpr___n_kwas(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 914;
+  fra.me.line = 942;
   fra.me.meth = LOCATE_parser_nodes___AAsCastExpr___n_kwas;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:942 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:914 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwas");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 914);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser_nodes, 942);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAsCastExpr___n_kwas__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 914;
-  fra.me.meth = LOCATE_parser_nodes___AAsCastExpr___n_kwas__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:914 */
-  ATTR_parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAsCastExpr___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 915;
+  fra.me.line = 943;
   fra.me.meth = LOCATE_parser_nodes___AAsCastExpr___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:943 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_type(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:915 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_type");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 915);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_nodes, 943);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAsCastExpr___n_type__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 915;
-  fra.me.meth = LOCATE_parser_nodes___AAsCastExpr___n_type__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:915 */
-  ATTR_parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAsNotnullExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 919;
+  fra.me.line = 947;
   fra.me.meth = LOCATE_parser_nodes___AAsNotnullExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:947 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:919 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_expr");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 919);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_nodes, 947);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAsNotnullExpr___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 919;
-  fra.me.meth = LOCATE_parser_nodes___AAsNotnullExpr___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:919 */
-  ATTR_parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAsNotnullExpr___n_kwas(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 920;
+  fra.me.line = 948;
   fra.me.meth = LOCATE_parser_nodes___AAsNotnullExpr___n_kwas;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:948 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:920 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwas");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 920);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser_nodes, 948);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAsNotnullExpr___n_kwas__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 920;
-  fra.me.meth = LOCATE_parser_nodes___AAsNotnullExpr___n_kwas__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:920 */
-  ATTR_parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAsNotnullExpr___n_kwnot(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 921;
+  fra.me.line = 949;
   fra.me.meth = LOCATE_parser_nodes___AAsNotnullExpr___n_kwnot;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:949 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:921 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwnot");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 921);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser_nodes, 949);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AAsNotnullExpr___n_kwnot__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 921;
-  fra.me.meth = LOCATE_parser_nodes___AAsNotnullExpr___n_kwnot__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:921 */
-  ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AAsNotnullExpr___n_kwnull(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 922;
-  fra.me.meth = LOCATE_parser_nodes___AAsNotnullExpr___n_kwnull;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:922 */
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwnull");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 922);
-    nit_exit(1);
-  }
-  fra.me.REG[0] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-void parser_nodes___AAsNotnullExpr___n_kwnull__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 922;
-  fra.me.meth = LOCATE_parser_nodes___AAsNotnullExpr___n_kwnull__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:922 */
-  ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t parser_nodes___AIssetAttrExpr___n_kwisset(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 926;
-  fra.me.meth = LOCATE_parser_nodes___AIssetAttrExpr___n_kwisset;
+  fra.me.line = 950;
+  fra.me.meth = LOCATE_parser_nodes___AAsNotnullExpr___n_kwnull;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:926 */
+  /* ./parser//parser_nodes.nit:950 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwisset");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 926);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser_nodes, 950);
   }
-  fra.me.REG[0] = ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AIssetAttrExpr___n_kwisset__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t parser_nodes___AIssetAttrExpr___n_kwisset(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 926;
-  fra.me.meth = LOCATE_parser_nodes___AIssetAttrExpr___n_kwisset__eq;
+  fra.me.line = 954;
+  fra.me.meth = LOCATE_parser_nodes___AIssetAttrExpr___n_kwisset;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:926 */
-  ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:954 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwisset", LOCATE_parser_nodes, 954);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
 val_t parser_nodes___APlusAssignOp___n_pluseq(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -8131,553 +4382,281 @@ val_t parser_nodes___APlusAssignOp___n_pluseq(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 931;
+  fra.me.line = 959;
   fra.me.meth = LOCATE_parser_nodes___APlusAssignOp___n_pluseq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:959 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:931 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_pluseq");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 931);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_pluseq", LOCATE_parser_nodes, 959);
   }
   fra.me.REG[0] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___APlusAssignOp___n_pluseq__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 931;
-  fra.me.meth = LOCATE_parser_nodes___APlusAssignOp___n_pluseq__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:931 */
-  ATTR_parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AMinusAssignOp___n_minuseq(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 935;
+  fra.me.line = 963;
   fra.me.meth = LOCATE_parser_nodes___AMinusAssignOp___n_minuseq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:963 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:935 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_minuseq");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 935);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_parser_nodes, 963);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AMinusAssignOp___n_minuseq__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 935;
-  fra.me.meth = LOCATE_parser_nodes___AMinusAssignOp___n_minuseq__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:935 */
-  ATTR_parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureDef___n_bang(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 939;
+  fra.me.line = 967;
   fra.me.meth = LOCATE_parser_nodes___AClosureDef___n_bang;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:967 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_bang(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:939 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_bang");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 939);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser_nodes, 967);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AClosureDef____n_bang(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureDef___n_bang__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 939;
-  fra.me.meth = LOCATE_parser_nodes___AClosureDef___n_bang__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:939 */
-  ATTR_parser_nodes___AClosureDef____n_bang(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureDef___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 940;
+  fra.me.line = 968;
   fra.me.meth = LOCATE_parser_nodes___AClosureDef___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:968 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:940 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 940);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 968);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AClosureDef____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureDef___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 940;
-  fra.me.meth = LOCATE_parser_nodes___AClosureDef___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:940 */
-  ATTR_parser_nodes___AClosureDef____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureDef___n_ids(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 941;
+  fra.me.line = 969;
   fra.me.meth = LOCATE_parser_nodes___AClosureDef___n_ids;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:969 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:941 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_ids");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 941);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser_nodes, 969);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureDef___n_ids__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 941;
-  fra.me.meth = LOCATE_parser_nodes___AClosureDef___n_ids__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:941 */
-  ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureDef___n_kwdo(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 942;
+  fra.me.line = 970;
   fra.me.meth = LOCATE_parser_nodes___AClosureDef___n_kwdo;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:970 */
   fra.me.REG[0] = ATTR_parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:942 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureDef___n_kwdo__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 942;
-  fra.me.meth = LOCATE_parser_nodes___AClosureDef___n_kwdo__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:942 */
-  ATTR_parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AClosureDef___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 943;
+  fra.me.line = 971;
   fra.me.meth = LOCATE_parser_nodes___AClosureDef___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:971 */
   fra.me.REG[0] = ATTR_parser_nodes___AClosureDef____n_expr(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:943 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AClosureDef___n_expr__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 943;
-  fra.me.meth = LOCATE_parser_nodes___AClosureDef___n_expr__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:943 */
-  ATTR_parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ASimpleClosureId___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 950;
+  fra.me.line = 978;
   fra.me.meth = LOCATE_parser_nodes___ASimpleClosureId___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:978 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:950 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 950);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 978);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ASimpleClosureId___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 950;
-  fra.me.meth = LOCATE_parser_nodes___ASimpleClosureId___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:950 */
-  ATTR_parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ABreakClosureId___n_kwbreak(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 954;
+  fra.me.line = 982;
   fra.me.meth = LOCATE_parser_nodes___ABreakClosureId___n_kwbreak;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:982 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:954 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_kwbreak");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 954);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser_nodes, 982);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ABreakClosureId___n_kwbreak__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 954;
-  fra.me.meth = LOCATE_parser_nodes___ABreakClosureId___n_kwbreak__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:954 */
-  ATTR_parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AQualified___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 958;
+  fra.me.line = 986;
   fra.me.meth = LOCATE_parser_nodes___AQualified___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:986 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:958 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_id");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 958);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_nodes, 986);
   }
   fra.me.REG[0] = ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AQualified___n_id__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 958;
-  fra.me.meth = LOCATE_parser_nodes___AQualified___n_id__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:958 */
-  ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___AQualified___n_classid(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 959;
+  fra.me.line = 987;
   fra.me.meth = LOCATE_parser_nodes___AQualified___n_classid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:987 */
   fra.me.REG[0] = ATTR_parser_nodes___AQualified____n_classid(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:959 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___AQualified___n_classid__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 959;
-  fra.me.meth = LOCATE_parser_nodes___AQualified___n_classid__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:959 */
-  ATTR_parser_nodes___AQualified____n_classid(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___ADoc___n_comment(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 963;
+  fra.me.line = 991;
   fra.me.meth = LOCATE_parser_nodes___ADoc___n_comment;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:991 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:963 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_comment");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 963);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser_nodes, 991);
   }
   fra.me.REG[0] = ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___ADoc___n_comment__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 963;
-  fra.me.meth = LOCATE_parser_nodes___ADoc___n_comment__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:963 */
-  ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___Start___n_base(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 968;
+  fra.me.line = 996;
   fra.me.meth = LOCATE_parser_nodes___Start___n_base;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:996 */
   fra.me.REG[0] = ATTR_parser_nodes___Start____n_base(fra.me.REG[0]);
-  /* ./parser//parser_nodes.nit:968 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___Start___n_base__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 968;
-  fra.me.meth = LOCATE_parser_nodes___Start___n_base__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:968 */
-  ATTR_parser_nodes___Start____n_base(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
 val_t parser_nodes___Start___n_eof(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 969;
+  fra.me.line = 997;
   fra.me.meth = LOCATE_parser_nodes___Start___n_eof;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:997 */
   REGB0 = TAG_Bool(ATTR_parser_nodes___Start____n_eof(fra.me.REG[0])!=NIT_NULL);
-  /* ./parser//parser_nodes.nit:969 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_n_eof");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_parser_nodes, 969);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_n_eof", LOCATE_parser_nodes, 997);
   }
   fra.me.REG[0] = ATTR_parser_nodes___Start____n_eof(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void parser_nodes___Start___n_eof__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser_nodes;
-  fra.me.line = 969;
-  fra.me.meth = LOCATE_parser_nodes___Start___n_eof__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./parser//parser_nodes.nit:969 */
-  ATTR_parser_nodes___Start____n_eof(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}