update NOTICE
[nit.git] / c_src / parser_prod.sep.1.c
index 3d2a5f0..2a96a4b 100644 (file)
@@ -1,13 +1,4 @@
 #include "parser_prod.sep.0.h"
-/* method parser_prod#AModule#empty_init for (self: AModule) */
-void parser_prod__AModule__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AModule#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AModule__empty_init(val* self) {
-parser_prod__AModule__empty_init(self);
-RET_LABEL:;
-}
 /* method parser_prod#AModule#init_amodule for (self: AModule, nullable AModuledecl, Collection[Object], Collection[Object], Collection[Object]) */
 void parser_prod__AModule__init_amodule(val* self, val* p0, val* p1, val* p2, val* p3) {
 val* var_n_moduledecl /* var n_moduledecl: nullable AModuledecl */;
@@ -16,35 +7,21 @@ val* var_n_extern_code_blocks /* var n_extern_code_blocks: Collection[Object] */
 val* var_n_classdefs /* var n_classdefs: Collection[Object] */;
 val* var /* : null */;
 short int var1 /* : Bool */;
-val* var2 /* : Iterator[nullable Object] */;
-short int var3 /* : Bool */;
-val* var4 /* : nullable Object */;
-val* var_n /* var n: Object */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
 short int var5 /* : Bool */;
-int cltype;
-int idtype;
-val* var6 /* : ANodes[AImport] */;
-val* var7 /* : Iterator[nullable Object] */;
-short int var8 /* : Bool */;
-val* var9 /* : nullable Object */;
-val* var_n10 /* var n: Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
-val* var14 /* : ANodes[AExternCodeBlock] */;
-val* var16 /* : Iterator[nullable Object] */;
-short int var17 /* : Bool */;
-val* var18 /* : nullable Object */;
-val* var_n19 /* var n: Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
-val* var23 /* : ANodes[AClassdef] */;
+short int var6 /* : Bool */;
+val* var8 /* : ANodes[AImport] */;
+val* var10 /* : ANodes[AImport] */;
+val* var11 /* : ANodes[AExternCodeBlock] */;
+val* var13 /* : ANodes[AExternCodeBlock] */;
+val* var14 /* : ANodes[AClassdef] */;
+val* var16 /* : ANodes[AClassdef] */;
 var_n_moduledecl = p0;
 var_n_imports = p1;
 var_n_extern_code_blocks = p2;
 var_n_classdefs = p3;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AModule__empty_init]))(self) /* empty_init on <self:AModule>*/;
 self->attrs[COLOR_parser_nodes__AModule___n_moduledecl].val = var_n_moduledecl; /* _n_moduledecl on <self:AModule> */
 var = NULL;
 if (var_n_moduledecl == NULL) {
@@ -52,108 +29,79 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_moduledecl,var) on <var_n_moduledecl:nullable AModuledecl> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_n_moduledecl->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_moduledecl, var_other) /* == on <var_n_moduledecl:nullable AModuledecl(AModuledecl)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_n_moduledecl->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_moduledecl, self) /* parent= on <var_n_moduledecl:nullable AModuledecl(AModuledecl)>*/;
-} else {
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_moduledecl,self) on <var_n_moduledecl:nullable AModuledecl(AModuledecl)> */
+var_n_moduledecl->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_moduledecl:nullable AModuledecl(AModuledecl)> */
+RET_LABEL7:(void)0;
+}
 }
-var2 = ((val* (*)(val*))(var_n_imports->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_n_imports) /* iterator on <var_n_imports:Collection[Object]>*/;
-for(;;) {
-var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
-if(!var3) break;
-var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
-var_n = var4;
-/* <var_n:Object> isa AImport */
-cltype = type_parser_nodes__AImport.color;
-idtype = type_parser_nodes__AImport.id;
-if(cltype >= var_n->type->table_size) {
-var5 = 0;
 } else {
-var5 = var_n->type->type_table[cltype] == idtype;
 }
-if (!var5) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 25);
+{
+{ /* Inline parser_nodes#AModule#n_imports (self) on <self:AModule> */
+var10 = self->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on <self:AModule> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_imports");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 857);
 show_backtrace(1);
 }
-var6 = self->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on <self:AModule> */
-if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_imports");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 26);
-show_backtrace(1);
+var8 = var10;
+RET_LABEL9:(void)0;
 }
-((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var6, var_n) /* add on <var6:ANodes[AImport]>*/;
-((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n, self) /* parent= on <var_n:Object(AImport)>*/;
-CONTINUE_label: (void)0;
-((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
 }
-BREAK_label: (void)0;
-var7 = ((val* (*)(val*))(var_n_extern_code_blocks->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_n_extern_code_blocks) /* iterator on <var_n_extern_code_blocks:Collection[Object]>*/;
-for(;;) {
-var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
-if(!var8) break;
-var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
-var_n10 = var9;
-/* <var_n10:Object> isa AExternCodeBlock */
-cltype12 = type_parser_nodes__AExternCodeBlock.color;
-idtype13 = type_parser_nodes__AExternCodeBlock.id;
-if(cltype12 >= var_n10->type->table_size) {
-var11 = 0;
-} else {
-var11 = var_n10->type->type_table[cltype12] == idtype13;
+{
+parser_nodes__ANodes__unsafe_add_all(var8, var_n_imports); /* Direct call parser_nodes#ANodes#unsafe_add_all on <var8:ANodes[AImport]>*/
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 30);
+{
+{ /* Inline parser_nodes#AModule#n_extern_code_blocks (self) on <self:AModule> */
+var13 = self->attrs[COLOR_parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <self:AModule> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 858);
 show_backtrace(1);
 }
-var14 = self->attrs[COLOR_parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <self:AModule> */
-if (var14 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 31);
-show_backtrace(1);
+var11 = var13;
+RET_LABEL12:(void)0;
 }
-((void (*)(val*, val*))(var14->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var14, var_n10) /* add on <var14:ANodes[AExternCodeBlock]>*/;
-((void (*)(val*, val*))(var_n10->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n10, self) /* parent= on <var_n10:Object(AExternCodeBlock)>*/;
-CONTINUE_label15: (void)0;
-((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
 }
-BREAK_label15: (void)0;
-var16 = ((val* (*)(val*))(var_n_classdefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_n_classdefs) /* iterator on <var_n_classdefs:Collection[Object]>*/;
-for(;;) {
-var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var16) /* is_ok on <var16:Iterator[nullable Object]>*/;
-if(!var17) break;
-var18 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__item]))(var16) /* item on <var16:Iterator[nullable Object]>*/;
-var_n19 = var18;
-/* <var_n19:Object> isa AClassdef */
-cltype21 = type_parser_nodes__AClassdef.color;
-idtype22 = type_parser_nodes__AClassdef.id;
-if(cltype21 >= var_n19->type->table_size) {
-var20 = 0;
-} else {
-var20 = var_n19->type->type_table[cltype21] == idtype22;
+{
+parser_nodes__ANodes__unsafe_add_all(var11, var_n_extern_code_blocks); /* Direct call parser_nodes#ANodes#unsafe_add_all on <var11:ANodes[AExternCodeBlock]>*/
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 35);
+{
+{ /* Inline parser_nodes#AModule#n_classdefs (self) on <self:AModule> */
+var16 = self->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <self:AModule> */
+if (unlikely(var16 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 859);
 show_backtrace(1);
 }
-var23 = self->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <self:AModule> */
-if (var23 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_classdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 36);
-show_backtrace(1);
+var14 = var16;
+RET_LABEL15:(void)0;
+}
 }
-((void (*)(val*, val*))(var23->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var23, var_n19) /* add on <var23:ANodes[AClassdef]>*/;
-((void (*)(val*, val*))(var_n19->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n19, self) /* parent= on <var_n19:Object(AClassdef)>*/;
-CONTINUE_label24: (void)0;
-((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on <var16:Iterator[nullable Object]>*/;
+{
+parser_nodes__ANodes__unsafe_add_all(var14, var_n_classdefs); /* Direct call parser_nodes#ANodes#unsafe_add_all on <var14:ANodes[AClassdef]>*/
 }
-BREAK_label24: (void)0;
 RET_LABEL:;
 }
 /* method parser_prod#AModule#init_amodule for (self: Object, nullable AModuledecl, Collection[Object], Collection[Object], Collection[Object]) */
 void VIRTUAL_parser_prod__AModule__init_amodule(val* self, val* p0, val* p1, val* p2, val* p3) {
-parser_prod__AModule__init_amodule(self, p0, p1, p2, p3);
+parser_prod__AModule__init_amodule(self, p0, p1, p2, p3); /* Direct call parser_prod#AModule#init_amodule on <self:Object(AModule)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AModule#replace_child for (self: AModule, ANode, nullable ANode) */
@@ -162,334 +110,132 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : nullable AModuledecl */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : null */;
-val* var6 /* : Range[Int] */;
-long var7 /* : Int */;
+const char* var_class_name;
 val* var8 /* : ANodes[AImport] */;
-long var9 /* : Int */;
-val* var10 /* : Discrete */;
-val* var11 /* : Discrete */;
-val* var12 /* : Iterator[nullable Object] */;
-short int var13 /* : Bool */;
-val* var14 /* : nullable Object */;
-long var_i /* var i: Int */;
-long var15 /* : Int */;
-val* var16 /* : ANodes[AImport] */;
-val* var17 /* : nullable Object */;
-short int var18 /* : Bool */;
-val* var19 /* : null */;
-short int var20 /* : Bool */;
-short int var21 /* : Bool */;
-int cltype22;
-int idtype23;
-val* var24 /* : ANodes[AImport] */;
-val* var25 /* : ANodes[AImport] */;
-val* var26 /* : Range[Int] */;
-long var27 /* : Int */;
-val* var28 /* : ANodes[AExternCodeBlock] */;
-long var29 /* : Int */;
-val* var30 /* : Discrete */;
-val* var31 /* : Discrete */;
-val* var32 /* : Iterator[nullable Object] */;
-short int var33 /* : Bool */;
-val* var34 /* : nullable Object */;
-long var_i35 /* var i: Int */;
-long var36 /* : Int */;
-val* var37 /* : ANodes[AExternCodeBlock] */;
-val* var38 /* : nullable Object */;
-short int var39 /* : Bool */;
-val* var40 /* : null */;
-short int var41 /* : Bool */;
-short int var42 /* : Bool */;
-int cltype43;
-int idtype44;
-val* var45 /* : ANodes[AExternCodeBlock] */;
-val* var46 /* : ANodes[AExternCodeBlock] */;
-val* var48 /* : Range[Int] */;
-long var49 /* : Int */;
-val* var50 /* : ANodes[AClassdef] */;
-long var51 /* : Int */;
-val* var52 /* : Discrete */;
-val* var53 /* : Discrete */;
-val* var54 /* : Iterator[nullable Object] */;
-short int var55 /* : Bool */;
-val* var56 /* : nullable Object */;
-long var_i57 /* var i: Int */;
-long var58 /* : Int */;
-val* var59 /* : ANodes[AClassdef] */;
-val* var60 /* : nullable Object */;
-short int var61 /* : Bool */;
-val* var62 /* : null */;
-short int var63 /* : Bool */;
-short int var64 /* : Bool */;
-int cltype65;
-int idtype66;
-val* var67 /* : ANodes[AClassdef] */;
-val* var68 /* : ANodes[AClassdef] */;
+val* var10 /* : ANodes[AImport] */;
+short int var11 /* : Bool */;
+val* var12 /* : ANodes[AExternCodeBlock] */;
+val* var14 /* : ANodes[AExternCodeBlock] */;
+short int var15 /* : Bool */;
+val* var16 /* : ANodes[AClassdef] */;
+val* var18 /* : ANodes[AClassdef] */;
+short int var19 /* : Bool */;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AModule___n_moduledecl].val; /* _n_moduledecl on <self:AModule> */
 if (var == NULL) {
 var1 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:nullable AModuledecl>*/;
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:nullable AModuledecl> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable AModuledecl(AModuledecl)> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AModuledecl */
-cltype = type_parser_nodes__AModuledecl.color;
-idtype = type_parser_nodes__AModuledecl.id;
-if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 46);
-show_backtrace(1);
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
-self->attrs[COLOR_parser_nodes__AModule___n_moduledecl].val = var_new_child; /* _n_moduledecl on <self:AModule> */
-} else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__AModule___n_moduledecl].val = var5; /* _n_moduledecl on <self:AModule> */
+var1 = var2;
 }
-goto RET_LABEL;
+if (var1){
+/* <var_new_child:nullable ANode> isa nullable AModuledecl */
+cltype = type_nullable_parser_nodes__AModuledecl.color;
+idtype = type_nullable_parser_nodes__AModuledecl.id;
+if(var_new_child == NULL) {
+var7 = 1;
 } else {
-}
-var6 = NEW_range__Range(&type_range__Rangekernel__Int);
+if(cltype >= var_new_child->type->table_size) {
 var7 = 0;
-var8 = self->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on <self:AModule> */
-if (var8 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_imports");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 53);
-show_backtrace(1);
-}
-var9 = ((long (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__length]))(var8) /* length on <var8:ANodes[AImport]>*/;
-var10 = BOX_kernel__Int(var7); /* autobox from Int to Discrete */
-var11 = BOX_kernel__Int(var9); /* autobox from Int to Discrete */
-((void (*)(val*, val*, val*))(var6->class->vft[COLOR_range__Range__without_last]))(var6, var10, var11) /* without_last on <var6:Range[Int]>*/;
-var12 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Range[Int]>*/;
-for(;;) {
-var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
-if(!var13) break;
-var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
-var15 = ((struct instance_kernel__Int*)var14)->value; /* autounbox from nullable Object to Int */;
-var_i = var15;
-var16 = self->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on <self:AModule> */
-if (var16 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_imports");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 54);
-show_backtrace(1);
-}
-var17 = ((val* (*)(val*, long))(var16->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var16, var_i) /* [] on <var16:ANodes[AImport]>*/;
-var18 = ((short int (*)(val*, val*))(var17->class->vft[COLOR_kernel__Object___61d_61d]))(var17, var_old_child) /* == on <var17:nullable Object(AImport)>*/;
-if (var18){
-var19 = NULL;
-if (var_new_child == NULL) {
-var20 = 0; /* is null */
-} else {
-var20 = 1; /* arg is null and recv is not */
-}
-if (var20){
-/* <var_new_child:nullable ANode(ANode)> isa AImport */
-cltype22 = type_parser_nodes__AImport.color;
-idtype23 = type_parser_nodes__AImport.id;
-if(cltype22 >= var_new_child->type->table_size) {
-var21 = 0;
 } else {
-var21 = var_new_child->type->type_table[cltype22] == idtype23;
-}
-if (!var21) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 56);
-show_backtrace(1);
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-var24 = self->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on <self:AModule> */
-if (var24 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_imports");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 57);
-show_backtrace(1);
 }
-((void (*)(val*, long, val*))(var24->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var24, var_i, var_new_child) /* []= on <var24:ANodes[AImport]>*/;
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(AImport)>*/;
-} else {
-var25 = self->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on <self:AModule> */
-if (var25 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_imports");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 60);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AModuledecl", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 27);
 show_backtrace(1);
 }
-((void (*)(val*, long))(var25->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var25, var_i) /* remove_at on <var25:ANodes[AImport]>*/;
+{
+parser_prod__AModule__n_moduledecl_61d(self, var_new_child); /* Direct call parser_prod#AModule#n_moduledecl= on <self:AModule>*/
 }
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label: (void)0;
-((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
-}
-BREAK_label: (void)0;
-var26 = NEW_range__Range(&type_range__Rangekernel__Int);
-var27 = 0;
-var28 = self->attrs[COLOR_parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <self:AModule> */
-if (var28 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 65);
-show_backtrace(1);
-}
-var29 = ((long (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__length]))(var28) /* length on <var28:ANodes[AExternCodeBlock]>*/;
-var30 = BOX_kernel__Int(var27); /* autobox from Int to Discrete */
-var31 = BOX_kernel__Int(var29); /* autobox from Int to Discrete */
-((void (*)(val*, val*, val*))(var26->class->vft[COLOR_range__Range__without_last]))(var26, var30, var31) /* without_last on <var26:Range[Int]>*/;
-var32 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_collection__Collection__iterator]))(var26) /* iterator on <var26:Range[Int]>*/;
-for(;;) {
-var33 = ((short int (*)(val*))(var32->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var32) /* is_ok on <var32:Iterator[nullable Object]>*/;
-if(!var33) break;
-var34 = ((val* (*)(val*))(var32->class->vft[COLOR_abstract_collection__Iterator__item]))(var32) /* item on <var32:Iterator[nullable Object]>*/;
-var36 = ((struct instance_kernel__Int*)var34)->value; /* autounbox from nullable Object to Int */;
-var_i35 = var36;
-var37 = self->attrs[COLOR_parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <self:AModule> */
-if (var37 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 66);
-show_backtrace(1);
-}
-var38 = ((val* (*)(val*, long))(var37->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var37, var_i35) /* [] on <var37:ANodes[AExternCodeBlock]>*/;
-var39 = ((short int (*)(val*, val*))(var38->class->vft[COLOR_kernel__Object___61d_61d]))(var38, var_old_child) /* == on <var38:nullable Object(AExternCodeBlock)>*/;
-if (var39){
-var40 = NULL;
-if (var_new_child == NULL) {
-var41 = 0; /* is null */
-} else {
-var41 = 1; /* arg is null and recv is not */
-}
-if (var41){
-/* <var_new_child:nullable ANode(ANode)> isa AExternCodeBlock */
-cltype43 = type_parser_nodes__AExternCodeBlock.color;
-idtype44 = type_parser_nodes__AExternCodeBlock.id;
-if(cltype43 >= var_new_child->type->table_size) {
-var42 = 0;
-} else {
-var42 = var_new_child->type->type_table[cltype43] == idtype44;
-}
-if (!var42) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 68);
+{
+{ /* Inline parser_nodes#AModule#n_imports (self) on <self:AModule> */
+var10 = self->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on <self:AModule> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_imports");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 857);
 show_backtrace(1);
 }
-var45 = self->attrs[COLOR_parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <self:AModule> */
-if (var45 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 69);
-show_backtrace(1);
+var8 = var10;
+RET_LABEL9:(void)0;
 }
-((void (*)(val*, long, val*))(var45->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var45, var_i35, var_new_child) /* []= on <var45:ANodes[AExternCodeBlock]>*/;
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(AExternCodeBlock)>*/;
-} else {
-var46 = self->attrs[COLOR_parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <self:AModule> */
-if (var46 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 72);
-show_backtrace(1);
 }
-((void (*)(val*, long))(var46->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var46, var_i35) /* remove_at on <var46:ANodes[AExternCodeBlock]>*/;
+{
+var11 = parser_nodes__ANodes__replace_child(var8, var_old_child, var_new_child);
 }
+if (var11){
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label47: (void)0;
-((void (*)(val*))(var32->class->vft[COLOR_abstract_collection__Iterator__next]))(var32) /* next on <var32:Iterator[nullable Object]>*/;
-}
-BREAK_label47: (void)0;
-var48 = NEW_range__Range(&type_range__Rangekernel__Int);
-var49 = 0;
-var50 = self->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <self:AModule> */
-if (var50 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_classdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 77);
+{
+{ /* Inline parser_nodes#AModule#n_extern_code_blocks (self) on <self:AModule> */
+var14 = self->attrs[COLOR_parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <self:AModule> */
+if (unlikely(var14 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 858);
 show_backtrace(1);
 }
-var51 = ((long (*)(val*))(var50->class->vft[COLOR_abstract_collection__Collection__length]))(var50) /* length on <var50:ANodes[AClassdef]>*/;
-var52 = BOX_kernel__Int(var49); /* autobox from Int to Discrete */
-var53 = BOX_kernel__Int(var51); /* autobox from Int to Discrete */
-((void (*)(val*, val*, val*))(var48->class->vft[COLOR_range__Range__without_last]))(var48, var52, var53) /* without_last on <var48:Range[Int]>*/;
-var54 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_collection__Collection__iterator]))(var48) /* iterator on <var48:Range[Int]>*/;
-for(;;) {
-var55 = ((short int (*)(val*))(var54->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var54) /* is_ok on <var54:Iterator[nullable Object]>*/;
-if(!var55) break;
-var56 = ((val* (*)(val*))(var54->class->vft[COLOR_abstract_collection__Iterator__item]))(var54) /* item on <var54:Iterator[nullable Object]>*/;
-var58 = ((struct instance_kernel__Int*)var56)->value; /* autounbox from nullable Object to Int */;
-var_i57 = var58;
-var59 = self->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <self:AModule> */
-if (var59 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_classdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 78);
-show_backtrace(1);
+var12 = var14;
+RET_LABEL13:(void)0;
 }
-var60 = ((val* (*)(val*, long))(var59->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var59, var_i57) /* [] on <var59:ANodes[AClassdef]>*/;
-var61 = ((short int (*)(val*, val*))(var60->class->vft[COLOR_kernel__Object___61d_61d]))(var60, var_old_child) /* == on <var60:nullable Object(AClassdef)>*/;
-if (var61){
-var62 = NULL;
-if (var_new_child == NULL) {
-var63 = 0; /* is null */
-} else {
-var63 = 1; /* arg is null and recv is not */
 }
-if (var63){
-/* <var_new_child:nullable ANode(ANode)> isa AClassdef */
-cltype65 = type_parser_nodes__AClassdef.color;
-idtype66 = type_parser_nodes__AClassdef.id;
-if(cltype65 >= var_new_child->type->table_size) {
-var64 = 0;
+{
+var15 = parser_nodes__ANodes__replace_child(var12, var_old_child, var_new_child);
+}
+if (var15){
+goto RET_LABEL;
 } else {
-var64 = var_new_child->type->type_table[cltype65] == idtype66;
 }
-if (!var64) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 80);
+{
+{ /* Inline parser_nodes#AModule#n_classdefs (self) on <self:AModule> */
+var18 = self->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <self:AModule> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 859);
 show_backtrace(1);
 }
-var67 = self->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <self:AModule> */
-if (var67 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_classdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 81);
-show_backtrace(1);
+var16 = var18;
+RET_LABEL17:(void)0;
 }
-((void (*)(val*, long, val*))(var67->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var67, var_i57, var_new_child) /* []= on <var67:ANodes[AClassdef]>*/;
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(AClassdef)>*/;
-} else {
-var68 = self->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <self:AModule> */
-if (var68 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_classdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 84);
-show_backtrace(1);
 }
-((void (*)(val*, long))(var68->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var68, var_i57) /* remove_at on <var68:ANodes[AClassdef]>*/;
+{
+var19 = parser_nodes__ANodes__replace_child(var16, var_old_child, var_new_child);
 }
+if (var19){
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label69: (void)0;
-((void (*)(val*))(var54->class->vft[COLOR_abstract_collection__Iterator__next]))(var54) /* next on <var54:Iterator[nullable Object]>*/;
-}
-BREAK_label69: (void)0;
 RET_LABEL:;
 }
 /* method parser_prod#AModule#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AModule__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AModule__replace_child(self, p0, p1);
+parser_prod__AModule__replace_child(self, p0, p1); /* Direct call parser_prod#AModule#replace_child on <self:Object(AModule)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AModule#n_moduledecl= for (self: AModule, nullable AModuledecl) */
@@ -497,6 +243,11 @@ void parser_prod__AModule__n_moduledecl_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AModuledecl */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AModule___n_moduledecl].val = var_node; /* _n_moduledecl on <self:AModule> */
 var = NULL;
@@ -505,139 +256,136 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AModuledecl> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AModuledecl(AModuledecl)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AModuledecl(AModuledecl)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AModuledecl(AModuledecl)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AModuledecl(AModuledecl)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AModule#n_moduledecl= for (self: Object, nullable AModuledecl) */
 void VIRTUAL_parser_prod__AModule__n_moduledecl_61d(val* self, val* p0) {
-parser_prod__AModule__n_moduledecl_61d(self, p0);
+parser_prod__AModule__n_moduledecl_61d(self, p0); /* Direct call parser_prod#AModule#n_moduledecl= on <self:Object(AModule)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AModule#visit_all for (self: AModule, Visitor) */
 void parser_prod__AModule__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
 val* var /* : nullable AModuledecl */;
-val* var1 /* : null */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable AModuledecl */;
-val* var4 /* : ANodes[AImport] */;
-val* var5 /* : Iterator[nullable Object] */;
-short int var6 /* : Bool */;
-val* var7 /* : nullable Object */;
-val* var_n /* var n: AImport */;
-val* var8 /* : ANodes[AExternCodeBlock] */;
-val* var9 /* : Iterator[nullable Object] */;
-short int var10 /* : Bool */;
-val* var11 /* : nullable Object */;
-val* var_n12 /* var n: AExternCodeBlock */;
-val* var14 /* : ANodes[AClassdef] */;
-val* var15 /* : Iterator[nullable Object] */;
-short int var16 /* : Bool */;
-val* var17 /* : nullable Object */;
-val* var_n18 /* var n: AClassdef */;
+val* var1 /* : ANodes[AImport] */;
+val* var3 /* : ANodes[AImport] */;
+val* var4 /* : ANodes[AExternCodeBlock] */;
+val* var6 /* : ANodes[AExternCodeBlock] */;
+val* var7 /* : ANodes[AClassdef] */;
+val* var9 /* : ANodes[AClassdef] */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AModule___n_moduledecl].val; /* _n_moduledecl on <self:AModule> */
-var1 = NULL;
-if (var == NULL) {
-var2 = 0; /* is null */
-} else {
-var2 = 1; /* arg is null and recv is not */
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var2){
-var3 = self->attrs[COLOR_parser_nodes__AModule___n_moduledecl].val; /* _n_moduledecl on <self:AModule> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 103);
+{
+{ /* Inline parser_nodes#AModule#n_imports (self) on <self:AModule> */
+var3 = self->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on <self:AModule> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_imports");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 857);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-var4 = self->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on <self:AModule> */
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_imports");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 105);
-show_backtrace(1);
 }
-var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:ANodes[AImport]>*/;
-for(;;) {
-var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
-if(!var6) break;
-var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
-var_n = var7;
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_n) /* enter_visit on <var_v:Visitor>*/;
-CONTINUE_label: (void)0;
-((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
+{
+parser_nodes__ANodes__visit_all(var1, var_v); /* Direct call parser_nodes#ANodes#visit_all on <var1:ANodes[AImport]>*/
 }
-BREAK_label: (void)0;
-var8 = self->attrs[COLOR_parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <self:AModule> */
-if (var8 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 108);
+{
+{ /* Inline parser_nodes#AModule#n_extern_code_blocks (self) on <self:AModule> */
+var6 = self->attrs[COLOR_parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <self:AModule> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 858);
 show_backtrace(1);
 }
-var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:ANodes[AExternCodeBlock]>*/;
-for(;;) {
-var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
-if(!var10) break;
-var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
-var_n12 = var11;
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_n12) /* enter_visit on <var_v:Visitor>*/;
-CONTINUE_label13: (void)0;
-((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
+var4 = var6;
+RET_LABEL5:(void)0;
 }
-BREAK_label13: (void)0;
-var14 = self->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <self:AModule> */
-if (var14 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_classdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 111);
+}
+{
+parser_nodes__ANodes__visit_all(var4, var_v); /* Direct call parser_nodes#ANodes#visit_all on <var4:ANodes[AExternCodeBlock]>*/
+}
+{
+{ /* Inline parser_nodes#AModule#n_classdefs (self) on <self:AModule> */
+var9 = self->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <self:AModule> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 859);
 show_backtrace(1);
 }
-var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Collection__iterator]))(var14) /* iterator on <var14:ANodes[AClassdef]>*/;
-for(;;) {
-var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
-if(!var16) break;
-var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
-var_n18 = var17;
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_n18) /* enter_visit on <var_v:Visitor>*/;
-CONTINUE_label19: (void)0;
-((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
+var7 = var9;
+RET_LABEL8:(void)0;
 }
-BREAK_label19: (void)0;
-RET_LABEL:;
 }
-/* method parser_prod#AModule#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AModule__visit_all(val* self, val* p0) {
-parser_prod__AModule__visit_all(self, p0);
-RET_LABEL:;
+{
+parser_nodes__ANodes__visit_all(var7, var_v); /* Direct call parser_nodes#ANodes#visit_all on <var7:ANodes[AClassdef]>*/
 }
-/* method parser_prod#AModuledecl#empty_init for (self: AModuledecl) */
-void parser_prod__AModuledecl__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AModuledecl#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AModuledecl__empty_init(val* self) {
-parser_prod__AModuledecl__empty_init(self);
+/* method parser_prod#AModule#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AModule__visit_all(val* self, val* p0) {
+parser_prod__AModule__visit_all(self, p0); /* Direct call parser_prod#AModule#visit_all on <self:Object(AModule)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AModuledecl#init_amoduledecl for (self: AModuledecl, nullable ADoc, nullable TKwmodule, nullable AModuleName, nullable AAnnotations) */
-void parser_prod__AModuledecl__init_amoduledecl(val* self, val* p0, val* p1, val* p2, val* p3) {
+/* method parser_prod#AModuledecl#init_amoduledecl for (self: AModuledecl, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmodule, nullable AModuleName, nullable AAnnotations) */
+void parser_prod__AModuledecl__init_amoduledecl(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5) {
 val* var_n_doc /* var n_doc: nullable ADoc */;
+val* var_n_kwredef /* var n_kwredef: nullable TKwredef */;
+val* var_n_visibility /* var n_visibility: nullable AVisibility */;
 val* var_n_kwmodule /* var n_kwmodule: nullable TKwmodule */;
 val* var_n_name /* var n_name: nullable AModuleName */;
 val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
 val* var /* : null */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+val* var8 /* : null */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+val* var19 /* : null */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
+short int var25 /* : Bool */;
 var_n_doc = p0;
-var_n_kwmodule = p1;
-var_n_name = p2;
-var_n_annotations = p3;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AModuledecl__empty_init]))(self) /* empty_init on <self:AModuledecl>*/;
+var_n_kwredef = p1;
+var_n_visibility = p2;
+var_n_kwmodule = p3;
+var_n_name = p4;
+var_n_annotations = p5;
 self->attrs[COLOR_parser_nodes__AModuledecl___n_doc].val = var_n_doc; /* _n_doc on <self:AModuledecl> */
 var = NULL;
 if (var_n_doc == NULL) {
@@ -645,52 +393,157 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_doc,var) on <var_n_doc:nullable ADoc> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_n_doc->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_doc, var_other) /* == on <var_n_doc:nullable ADoc(ADoc)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_n_doc->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_doc, self) /* parent= on <var_n_doc:nullable ADoc(ADoc)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_doc,self) on <var_n_doc:nullable ADoc(ADoc)> */
+var_n_doc->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_doc:nullable ADoc(ADoc)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
-if (var_n_kwmodule == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 131);
+self->attrs[COLOR_parser_nodes__AModuledecl___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AModuledecl> */
+var8 = NULL;
+if (var_n_kwredef == NULL) {
+var9 = 0; /* is null */
+} else {
+var9 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_kwredef,var8) on <var_n_kwredef:nullable TKwredef> */
+var_other = var8;
+{
+var13 = ((short int (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwredef, var_other) /* == on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
+var12 = var13;
+}
+var14 = !var12;
+var10 = var14;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
+}
+if (var9){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwredef,self) on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+var_n_kwredef->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+RET_LABEL15:(void)0;
+}
+}
+} else {
+}
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 64);
+show_backtrace(1);
+}
+self->attrs[COLOR_parser_nodes__AModuledecl___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AModuledecl> */
+if (var_n_visibility == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 65);
+show_backtrace(1);
+} else {
+{ /* Inline parser_nodes#ANode#parent= (var_n_visibility,self) on <var_n_visibility:nullable AVisibility> */
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_visibility->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_visibility:nullable AVisibility> */
+RET_LABEL16:(void)0;
+}
+}
+if (unlikely(var_n_kwmodule == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 66);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AModuledecl___n_kwmodule].val = var_n_kwmodule; /* _n_kwmodule on <self:AModuledecl> */
 if (var_n_kwmodule == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 132);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 67);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwmodule->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwmodule, self) /* parent= on <var_n_kwmodule:nullable TKwmodule>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwmodule,self) on <var_n_kwmodule:nullable TKwmodule> */
+if (unlikely(var_n_kwmodule == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_name == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 133);
+var_n_kwmodule->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwmodule:nullable TKwmodule> */
+RET_LABEL17:(void)0;
+}
+}
+if (unlikely(var_n_name == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 68);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AModuledecl___n_name].val = var_n_name; /* _n_name on <self:AModuledecl> */
 if (var_n_name == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 134);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 69);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_name->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_name, self) /* parent= on <var_n_name:nullable AModuleName>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_name,self) on <var_n_name:nullable AModuleName> */
+if (unlikely(var_n_name == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_name->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_name:nullable AModuleName> */
+RET_LABEL18:(void)0;
+}
 }
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:AModuledecl> */
-var2 = NULL;
+var19 = NULL;
 if (var_n_annotations == NULL) {
-var3 = 0; /* is null */
+var20 = 0; /* is null */
 } else {
-var3 = 1; /* arg is null and recv is not */
+var20 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_annotations,var19) on <var_n_annotations:nullable AAnnotations> */
+var_other = var19;
+{
+var24 = ((short int (*)(val*, val*))(var_n_annotations->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_annotations, var_other) /* == on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
+var23 = var24;
+}
+var25 = !var23;
+var21 = var25;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
+}
+var20 = var21;
+}
+if (var20){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_annotations,self) on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+var_n_annotations->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+RET_LABEL26:(void)0;
+}
 }
-if (var3){
-((void (*)(val*, val*))(var_n_annotations->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_annotations, self) /* parent= on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AModuledecl#init_amoduledecl for (self: Object, nullable ADoc, nullable TKwmodule, nullable AModuleName, nullable AAnnotations) */
-void VIRTUAL_parser_prod__AModuledecl__init_amoduledecl(val* self, val* p0, val* p1, val* p2, val* p3) {
-parser_prod__AModuledecl__init_amoduledecl(self, p0, p1, p2, p3);
+/* method parser_prod#AModuledecl#init_amoduledecl for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmodule, nullable AModuleName, nullable AAnnotations) */
+void VIRTUAL_parser_prod__AModuledecl__init_amoduledecl(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5) {
+parser_prod__AModuledecl__init_amoduledecl(self, p0, p1, p2, p3, p4, p5); /* Direct call parser_prod#AModuledecl#init_amoduledecl on <self:Object(AModuledecl)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#replace_child for (self: AModuledecl, ANode, nullable ANode) */
@@ -699,180 +552,336 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : nullable ADoc */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : null */;
-val* var6 /* : TKwmodule */;
-short int var7 /* : Bool */;
-val* var8 /* : null */;
+const char* var_class_name;
+val* var8 /* : nullable TKwredef */;
 short int var9 /* : Bool */;
 short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var13 /* : AModuleName */;
+short int var12 /* : Bool */;
 short int var14 /* : Bool */;
-val* var15 /* : null */;
-short int var16 /* : Bool */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
-val* var20 /* : nullable AAnnotations */;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
+val* var19 /* : AVisibility */;
+short int var20 /* : Bool */;
 short int var21 /* : Bool */;
-val* var22 /* : null */;
 short int var23 /* : Bool */;
-short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
-val* var27 /* : null */;
+short int var25 /* : Bool */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+const char* var_class_name29;
+val* var30 /* : TKwmodule */;
+short int var31 /* : Bool */;
+short int var32 /* : Bool */;
+short int var34 /* : Bool */;
+short int var36 /* : Bool */;
+short int var37 /* : Bool */;
+int cltype38;
+int idtype39;
+const char* var_class_name40;
+val* var41 /* : AModuleName */;
+short int var42 /* : Bool */;
+short int var43 /* : Bool */;
+short int var45 /* : Bool */;
+short int var47 /* : Bool */;
+short int var48 /* : Bool */;
+int cltype49;
+int idtype50;
+const char* var_class_name51;
+val* var52 /* : nullable AAnnotations */;
+short int var53 /* : Bool */;
+short int var54 /* : Bool */;
+short int var56 /* : Bool */;
+short int var58 /* : Bool */;
+short int var59 /* : Bool */;
+int cltype60;
+int idtype61;
+const char* var_class_name62;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AModuledecl___n_doc].val; /* _n_doc on <self:AModuledecl> */
 if (var == NULL) {
 var1 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:nullable ADoc>*/;
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:nullable ADoc> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable ADoc(ADoc)> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
 }
 if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
+/* <var_new_child:nullable ANode> isa nullable ADoc */
+cltype = type_nullable_parser_nodes__ADoc.color;
+idtype = type_nullable_parser_nodes__ADoc.id;
+if(var_new_child == NULL) {
+var7 = 1;
 } else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ADoc */
-cltype = type_parser_nodes__ADoc.color;
-idtype = type_parser_nodes__ADoc.id;
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
+}
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 146);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ADoc", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 77);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AModuledecl___n_doc].val = var_new_child; /* _n_doc on <self:AModuledecl> */
-} else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__AModuledecl___n_doc].val = var5; /* _n_doc on <self:AModuledecl> */
+{
+parser_prod__AModuledecl__n_doc_61d(self, var_new_child); /* Direct call parser_prod#AModuledecl#n_doc= on <self:AModuledecl>*/
 }
 goto RET_LABEL;
 } else {
 }
-var6 = self->attrs[COLOR_parser_nodes__AModuledecl___n_kwmodule].val; /* _n_kwmodule on <self:AModuledecl> */
-if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwmodule");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 153);
-show_backtrace(1);
-}
-var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:TKwmodule>*/;
-if (var7){
-var8 = NULL;
-if (var_new_child == NULL) {
-var9 = 0; /* is null */
+var8 = self->attrs[COLOR_parser_nodes__AModuledecl___n_kwredef].val; /* _n_kwredef on <self:AModuledecl> */
+if (var8 == NULL) {
+var9 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var9 = 1; /* arg is null and recv is not */
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:nullable TKwredef> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:nullable TKwredef(TKwredef)> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+}
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
 }
 if (var9){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwmodule */
-cltype11 = type_parser_nodes__TKwmodule.color;
-idtype12 = type_parser_nodes__TKwmodule.id;
-if(cltype11 >= var_new_child->type->table_size) {
-var10 = 0;
+/* <var_new_child:nullable ANode> isa nullable TKwredef */
+cltype16 = type_nullable_parser_nodes__TKwredef.color;
+idtype17 = type_nullable_parser_nodes__TKwredef.id;
+if(var_new_child == NULL) {
+var15 = 1;
 } else {
-var10 = var_new_child->type->type_table[cltype11] == idtype12;
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
+} else {
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 156);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AModuledecl___n_kwmodule].val = var_new_child; /* _n_kwmodule on <self:AModuledecl> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 159);
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TKwredef", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 81);
 show_backtrace(1);
 }
+{
+parser_prod__AModuledecl__n_kwredef_61d(self, var_new_child); /* Direct call parser_prod#AModuledecl#n_kwredef= on <self:AModuledecl>*/
+}
 goto RET_LABEL;
 } else {
 }
-var13 = self->attrs[COLOR_parser_nodes__AModuledecl___n_name].val; /* _n_name on <self:AModuledecl> */
-if (var13 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_name");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 163);
+var19 = self->attrs[COLOR_parser_nodes__AModuledecl___n_visibility].val; /* _n_visibility on <self:AModuledecl> */
+if (unlikely(var19 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 84);
 show_backtrace(1);
 }
-var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_kernel__Object___61d_61d]))(var13, var_old_child) /* == on <var13:AModuleName>*/;
-if (var14){
-var15 = NULL;
-if (var_new_child == NULL) {
-var16 = 0; /* is null */
-} else {
-var16 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var19,var_old_child) on <var19:AVisibility> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var19,var_other) on <var19:AVisibility> */
+var25 = var19 == var_other;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
-if (var16){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AModuleName */
-cltype18 = type_parser_nodes__AModuleName.color;
-idtype19 = type_parser_nodes__AModuleName.id;
-if(cltype18 >= var_new_child->type->table_size) {
-var17 = 0;
-} else {
-var17 = var_new_child->type->type_table[cltype18] == idtype19;
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 166);
-show_backtrace(1);
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
 }
-self->attrs[COLOR_parser_nodes__AModuledecl___n_name].val = var_new_child; /* _n_name on <self:AModuledecl> */
+var20 = var21;
+}
+if (var20){
+/* <var_new_child:nullable ANode> isa AVisibility */
+cltype27 = type_parser_nodes__AVisibility.color;
+idtype28 = type_parser_nodes__AVisibility.id;
+if(var_new_child == NULL) {
+var26 = 0;
+} else {
+if(cltype27 >= var_new_child->type->table_size) {
+var26 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 169);
+var26 = var_new_child->type->type_table[cltype27] == idtype28;
+}
+}
+if (unlikely(!var26)) {
+var_class_name29 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AVisibility", var_class_name29);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 85);
 show_backtrace(1);
 }
+{
+parser_prod__AModuledecl__n_visibility_61d(self, var_new_child); /* Direct call parser_prod#AModuledecl#n_visibility= on <self:AModuledecl>*/
+}
 goto RET_LABEL;
 } else {
 }
-var20 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AModuledecl> */
-if (var20 == NULL) {
-var21 = 0; /* <var_old_child:ANode> cannot be null */
+var30 = self->attrs[COLOR_parser_nodes__AModuledecl___n_kwmodule].val; /* _n_kwmodule on <self:AModuledecl> */
+if (unlikely(var30 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwmodule");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 88);
+show_backtrace(1);
+}
+{
+{ /* Inline kernel#Object#== (var30,var_old_child) on <var30:TKwmodule> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var30,var_other) on <var30:TKwmodule> */
+var36 = var30 == var_other;
+var34 = var36;
+goto RET_LABEL35;
+RET_LABEL35:(void)0;
+}
+}
+var32 = var34;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
+}
+var31 = var32;
+}
+if (var31){
+/* <var_new_child:nullable ANode> isa TKwmodule */
+cltype38 = type_parser_nodes__TKwmodule.color;
+idtype39 = type_parser_nodes__TKwmodule.id;
+if(var_new_child == NULL) {
+var37 = 0;
+} else {
+if(cltype38 >= var_new_child->type->table_size) {
+var37 = 0;
 } else {
-var21 = ((short int (*)(val*, val*))(var20->class->vft[COLOR_kernel__Object___61d_61d]))(var20, var_old_child) /* == on <var20:nullable AAnnotations>*/;
+var37 = var_new_child->type->type_table[cltype38] == idtype39;
 }
-if (var21){
-var22 = NULL;
-if (var_new_child == NULL) {
-var23 = 0; /* is null */
+}
+if (unlikely(!var37)) {
+var_class_name40 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwmodule", var_class_name40);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 89);
+show_backtrace(1);
+}
+{
+parser_prod__AModuledecl__n_kwmodule_61d(self, var_new_child); /* Direct call parser_prod#AModuledecl#n_kwmodule= on <self:AModuledecl>*/
+}
+goto RET_LABEL;
 } else {
-var23 = 1; /* arg is null and recv is not */
 }
-if (var23){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AAnnotations */
-cltype25 = type_parser_nodes__AAnnotations.color;
-idtype26 = type_parser_nodes__AAnnotations.id;
-if(cltype25 >= var_new_child->type->table_size) {
-var24 = 0;
+var41 = self->attrs[COLOR_parser_nodes__AModuledecl___n_name].val; /* _n_name on <self:AModuledecl> */
+if (unlikely(var41 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 92);
+show_backtrace(1);
+}
+{
+{ /* Inline kernel#Object#== (var41,var_old_child) on <var41:AModuleName> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var41,var_other) on <var41:AModuleName> */
+var47 = var41 == var_other;
+var45 = var47;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
+}
+}
+var43 = var45;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
+}
+var42 = var43;
+}
+if (var42){
+/* <var_new_child:nullable ANode> isa AModuleName */
+cltype49 = type_parser_nodes__AModuleName.color;
+idtype50 = type_parser_nodes__AModuleName.id;
+if(var_new_child == NULL) {
+var48 = 0;
+} else {
+if(cltype49 >= var_new_child->type->table_size) {
+var48 = 0;
 } else {
-var24 = var_new_child->type->type_table[cltype25] == idtype26;
+var48 = var_new_child->type->type_table[cltype49] == idtype50;
+}
 }
-if (!var24) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 176);
+if (unlikely(!var48)) {
+var_class_name51 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AModuleName", var_class_name51);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 93);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:AModuledecl> */
+{
+parser_prod__AModuledecl__n_name_61d(self, var_new_child); /* Direct call parser_prod#AModuledecl#n_name= on <self:AModuledecl>*/
+}
+goto RET_LABEL;
+} else {
+}
+var52 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AModuledecl> */
+if (var52 == NULL) {
+var53 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var27 = NULL;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var27; /* _n_annotations on <self:AModuledecl> */
+{ /* Inline kernel#Object#== (var52,var_old_child) on <var52:nullable AAnnotations> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var52,var_other) on <var52:nullable AAnnotations(AAnnotations)> */
+var58 = var52 == var_other;
+var56 = var58;
+goto RET_LABEL57;
+RET_LABEL57:(void)0;
+}
+}
+var54 = var56;
+goto RET_LABEL55;
+RET_LABEL55:(void)0;
+}
+var53 = var54;
+}
+if (var53){
+/* <var_new_child:nullable ANode> isa nullable AAnnotations */
+cltype60 = type_nullable_parser_nodes__AAnnotations.color;
+idtype61 = type_nullable_parser_nodes__AAnnotations.id;
+if(var_new_child == NULL) {
+var59 = 1;
+} else {
+if(cltype60 >= var_new_child->type->table_size) {
+var59 = 0;
+} else {
+var59 = var_new_child->type->type_table[cltype60] == idtype61;
+}
+}
+if (unlikely(!var59)) {
+var_class_name62 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AAnnotations", var_class_name62);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 97);
+show_backtrace(1);
+}
+{
+parser_prod__AModuledecl__n_annotations_61d(self, var_new_child); /* Direct call parser_prod#AModuledecl#n_annotations= on <self:AModuledecl>*/
 }
 goto RET_LABEL;
 } else {
@@ -881,7 +890,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AModuledecl__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AModuledecl__replace_child(self, p0, p1);
+parser_prod__AModuledecl__replace_child(self, p0, p1); /* Direct call parser_prod#AModuledecl#replace_child on <self:Object(AModuledecl)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#n_doc= for (self: AModuledecl, nullable ADoc) */
@@ -889,6 +898,11 @@ void parser_prod__AModuledecl__n_doc_61d(val* self, val* p0) {
 val* var_node /* var node: nullable ADoc */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AModuledecl___n_doc].val = var_node; /* _n_doc on <self:AModuledecl> */
 var = NULL;
@@ -897,15 +911,100 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable ADoc> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable ADoc(ADoc)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ADoc(ADoc)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable ADoc(ADoc)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable ADoc(ADoc)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#n_doc= for (self: Object, nullable ADoc) */
 void VIRTUAL_parser_prod__AModuledecl__n_doc_61d(val* self, val* p0) {
-parser_prod__AModuledecl__n_doc_61d(self, p0);
+parser_prod__AModuledecl__n_doc_61d(self, p0); /* Direct call parser_prod#AModuledecl#n_doc= on <self:Object(AModuledecl)>*/
+RET_LABEL:;
+}
+/* method parser_prod#AModuledecl#n_kwredef= for (self: AModuledecl, nullable TKwredef) */
+void parser_prod__AModuledecl__n_kwredef_61d(val* self, val* p0) {
+val* var_node /* var node: nullable TKwredef */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AModuledecl___n_kwredef].val = var_node; /* _n_kwredef on <self:AModuledecl> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
+} else {
+var1 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TKwredef> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TKwredef(TKwredef)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TKwredef(TKwredef)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TKwredef(TKwredef)> */
+RET_LABEL7:(void)0;
+}
+}
+} else {
+}
+RET_LABEL:;
+}
+/* method parser_prod#AModuledecl#n_kwredef= for (self: Object, nullable TKwredef) */
+void VIRTUAL_parser_prod__AModuledecl__n_kwredef_61d(val* self, val* p0) {
+parser_prod__AModuledecl__n_kwredef_61d(self, p0); /* Direct call parser_prod#AModuledecl#n_kwredef= on <self:Object(AModuledecl)>*/
+RET_LABEL:;
+}
+/* method parser_prod#AModuledecl#n_visibility= for (self: AModuledecl, AVisibility) */
+void parser_prod__AModuledecl__n_visibility_61d(val* self, val* p0) {
+val* var_node /* var node: AVisibility */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AModuledecl___n_visibility].val = var_node; /* _n_visibility on <self:AModuledecl> */
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:AVisibility> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:AVisibility> */
+RET_LABEL1:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method parser_prod#AModuledecl#n_visibility= for (self: Object, AVisibility) */
+void VIRTUAL_parser_prod__AModuledecl__n_visibility_61d(val* self, val* p0) {
+parser_prod__AModuledecl__n_visibility_61d(self, p0); /* Direct call parser_prod#AModuledecl#n_visibility= on <self:Object(AModuledecl)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#n_kwmodule= for (self: AModuledecl, TKwmodule) */
@@ -913,12 +1012,17 @@ void parser_prod__AModuledecl__n_kwmodule_61d(val* self, val* p0) {
 val* var_node /* var node: TKwmodule */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AModuledecl___n_kwmodule].val = var_node; /* _n_kwmodule on <self:AModuledecl> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwmodule>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwmodule> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwmodule> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#n_kwmodule= for (self: Object, TKwmodule) */
 void VIRTUAL_parser_prod__AModuledecl__n_kwmodule_61d(val* self, val* p0) {
-parser_prod__AModuledecl__n_kwmodule_61d(self, p0);
+parser_prod__AModuledecl__n_kwmodule_61d(self, p0); /* Direct call parser_prod#AModuledecl#n_kwmodule= on <self:Object(AModuledecl)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#n_name= for (self: AModuledecl, AModuleName) */
@@ -926,12 +1030,17 @@ void parser_prod__AModuledecl__n_name_61d(val* self, val* p0) {
 val* var_node /* var node: AModuleName */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AModuledecl___n_name].val = var_node; /* _n_name on <self:AModuledecl> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AModuleName>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:AModuleName> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:AModuleName> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#n_name= for (self: Object, AModuleName) */
 void VIRTUAL_parser_prod__AModuledecl__n_name_61d(val* self, val* p0) {
-parser_prod__AModuledecl__n_name_61d(self, p0);
+parser_prod__AModuledecl__n_name_61d(self, p0); /* Direct call parser_prod#AModuledecl#n_name= on <self:Object(AModuledecl)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#n_annotations= for (self: AModuledecl, nullable AAnnotations) */
@@ -939,6 +1048,11 @@ void parser_prod__AModuledecl__n_annotations_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AAnnotations */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:AModuledecl> */
 var = NULL;
@@ -947,93 +1061,90 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AAnnotations> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AAnnotations(AAnnotations)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AAnnotations(AAnnotations)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AAnnotations(AAnnotations)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AAnnotations(AAnnotations)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#n_annotations= for (self: Object, nullable AAnnotations) */
 void VIRTUAL_parser_prod__AModuledecl__n_annotations_61d(val* self, val* p0) {
-parser_prod__AModuledecl__n_annotations_61d(self, p0);
+parser_prod__AModuledecl__n_annotations_61d(self, p0); /* Direct call parser_prod#AModuledecl#n_annotations= on <self:Object(AModuledecl)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#visit_all for (self: AModuledecl, Visitor) */
 void parser_prod__AModuledecl__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
 val* var /* : nullable ADoc */;
-val* var1 /* : null */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable ADoc */;
-val* var4 /* : TKwmodule */;
-val* var5 /* : AModuleName */;
-val* var6 /* : nullable AAnnotations */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
-val* var9 /* : nullable AAnnotations */;
+val* var1 /* : nullable TKwredef */;
+val* var2 /* : AVisibility */;
+val* var3 /* : TKwmodule */;
+val* var4 /* : AModuleName */;
+val* var5 /* : nullable AAnnotations */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AModuledecl___n_doc].val; /* _n_doc on <self:AModuledecl> */
-var1 = NULL;
-if (var == NULL) {
-var2 = 0; /* is null */
-} else {
-var2 = 1; /* arg is null and recv is not */
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var2){
-var3 = self->attrs[COLOR_parser_nodes__AModuledecl___n_doc].val; /* _n_doc on <self:AModuledecl> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 214);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var1 = self->attrs[COLOR_parser_nodes__AModuledecl___n_kwredef].val; /* _n_kwredef on <self:AModuledecl> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-var4 = self->attrs[COLOR_parser_nodes__AModuledecl___n_kwmodule].val; /* _n_kwmodule on <self:AModuledecl> */
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwmodule");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 216);
+var2 = self->attrs[COLOR_parser_nodes__AModuledecl___n_visibility].val; /* _n_visibility on <self:AModuledecl> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 138);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var4) /* enter_visit on <var_v:Visitor>*/;
-var5 = self->attrs[COLOR_parser_nodes__AModuledecl___n_name].val; /* _n_name on <self:AModuledecl> */
-if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_name");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 217);
+{
+parser_nodes__Visitor__enter_visit(var_v, var2); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
+var3 = self->attrs[COLOR_parser_nodes__AModuledecl___n_kwmodule].val; /* _n_kwmodule on <self:AModuledecl> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwmodule");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 139);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var5) /* enter_visit on <var_v:Visitor>*/;
-var6 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AModuledecl> */
-var7 = NULL;
-if (var6 == NULL) {
-var8 = 0; /* is null */
-} else {
-var8 = 1; /* arg is null and recv is not */
+{
+parser_nodes__Visitor__enter_visit(var_v, var3); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var8){
-var9 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AModuledecl> */
-if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 219);
+var4 = self->attrs[COLOR_parser_nodes__AModuledecl___n_name].val; /* _n_name on <self:AModuledecl> */
+if (unlikely(var4 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 140);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var9) /* enter_visit on <var_v:Visitor>*/;
-} else {
+{
+parser_nodes__Visitor__enter_visit(var_v, var4); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
+var5 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AModuledecl> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var5); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
 RET_LABEL:;
 }
 /* method parser_prod#AModuledecl#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AModuledecl__visit_all(val* self, val* p0) {
-parser_prod__AModuledecl__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AStdImport#empty_init for (self: AStdImport) */
-void parser_prod__AStdImport__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AStdImport#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AStdImport__empty_init(val* self) {
-parser_prod__AStdImport__empty_init(self);
+parser_prod__AModuledecl__visit_all(self, p0); /* Direct call parser_prod#AModuledecl#visit_all on <self:Object(AModuledecl)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#init_astdimport for (self: AStdImport, nullable AVisibility, nullable TKwimport, nullable AModuleName, nullable AAnnotations) */
@@ -1043,67 +1154,114 @@ val* var_n_kwimport /* var n_kwimport: nullable TKwimport */;
 val* var_n_name /* var n_name: nullable AModuleName */;
 val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
 val* var /* : null */;
-short int var1 /* : Bool */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
+short int var9 /* : Bool */;
 var_n_visibility = p0;
 var_n_kwimport = p1;
 var_n_name = p2;
 var_n_annotations = p3;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AStdImport__empty_init]))(self) /* empty_init on <self:AStdImport>*/;
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 234);
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 152);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AStdImport___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AStdImport> */
 if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 235);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 153);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_visibility->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_visibility, self) /* parent= on <var_n_visibility:nullable AVisibility>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_visibility,self) on <var_n_visibility:nullable AVisibility> */
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_kwimport == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 236);
+var_n_visibility->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_visibility:nullable AVisibility> */
+RET_LABEL1:(void)0;
+}
+}
+if (unlikely(var_n_kwimport == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 154);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AStdImport___n_kwimport].val = var_n_kwimport; /* _n_kwimport on <self:AStdImport> */
 if (var_n_kwimport == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 237);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 155);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwimport->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwimport, self) /* parent= on <var_n_kwimport:nullable TKwimport>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwimport,self) on <var_n_kwimport:nullable TKwimport> */
+if (unlikely(var_n_kwimport == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_name == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 238);
+var_n_kwimport->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwimport:nullable TKwimport> */
+RET_LABEL2:(void)0;
+}
+}
+if (unlikely(var_n_name == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 156);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AStdImport___n_name].val = var_n_name; /* _n_name on <self:AStdImport> */
 if (var_n_name == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 239);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 157);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_name->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_name, self) /* parent= on <var_n_name:nullable AModuleName>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_name,self) on <var_n_name:nullable AModuleName> */
+if (unlikely(var_n_name == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_name->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_name:nullable AModuleName> */
+RET_LABEL3:(void)0;
+}
 }
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:AStdImport> */
 var = NULL;
 if (var_n_annotations == NULL) {
-var1 = 0; /* is null */
+var4 = 0; /* is null */
 } else {
-var1 = 1; /* arg is null and recv is not */
+var4 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_annotations,var) on <var_n_annotations:nullable AAnnotations> */
+var_other = var;
+{
+var8 = ((short int (*)(val*, val*))(var_n_annotations->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_annotations, var_other) /* == on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
+var7 = var8;
+}
+var9 = !var7;
+var5 = var9;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+var4 = var5;
+}
+if (var4){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_annotations,self) on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+var_n_annotations->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+RET_LABEL10:(void)0;
+}
 }
-if (var1){
-((void (*)(val*, val*))(var_n_annotations->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_annotations, self) /* parent= on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#init_astdimport for (self: Object, nullable AVisibility, nullable TKwimport, nullable AModuleName, nullable AAnnotations) */
 void VIRTUAL_parser_prod__AStdImport__init_astdimport(val* self, val* p0, val* p1, val* p2, val* p3) {
-parser_prod__AStdImport__init_astdimport(self, p0, p1, p2, p3);
+parser_prod__AStdImport__init_astdimport(self, p0, p1, p2, p3); /* Direct call parser_prod#AStdImport#init_astdimport on <self:Object(AStdImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#replace_child for (self: AStdImport, ANode, nullable ANode) */
@@ -1112,181 +1270,228 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : AVisibility */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : TKwimport */;
-short int var6 /* : Bool */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
+const char* var_class_name;
+val* var8 /* : TKwimport */;
 short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
-val* var12 /* : AModuleName */;
-short int var13 /* : Bool */;
-val* var14 /* : null */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
 short int var15 /* : Bool */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
-val* var19 /* : nullable AAnnotations */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
+val* var19 /* : AModuleName */;
 short int var20 /* : Bool */;
-val* var21 /* : null */;
-short int var22 /* : Bool */;
+short int var21 /* : Bool */;
 short int var23 /* : Bool */;
-int cltype24;
-int idtype25;
-val* var26 /* : null */;
+short int var25 /* : Bool */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+const char* var_class_name29;
+val* var30 /* : nullable AAnnotations */;
+short int var31 /* : Bool */;
+short int var32 /* : Bool */;
+short int var34 /* : Bool */;
+short int var36 /* : Bool */;
+short int var37 /* : Bool */;
+int cltype38;
+int idtype39;
+const char* var_class_name40;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AStdImport___n_visibility].val; /* _n_visibility on <self:AStdImport> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_visibility");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 248);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 164);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:AVisibility>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:AVisibility> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:AVisibility> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AVisibility */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa AVisibility */
 cltype = type_parser_nodes__AVisibility.color;
 idtype = type_parser_nodes__AVisibility.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 251);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AStdImport___n_visibility].val = var_new_child; /* _n_visibility on <self:AStdImport> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 254);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AVisibility", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 165);
 show_backtrace(1);
 }
+{
+parser_prod__AStdImport__n_visibility_61d(self, var_new_child); /* Direct call parser_prod#AStdImport#n_visibility= on <self:AStdImport>*/
+}
 goto RET_LABEL;
 } else {
 }
-var5 = self->attrs[COLOR_parser_nodes__AStdImport___n_kwimport].val; /* _n_kwimport on <self:AStdImport> */
-if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwimport");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 258);
+var8 = self->attrs[COLOR_parser_nodes__AStdImport___n_kwimport].val; /* _n_kwimport on <self:AStdImport> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwimport");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 168);
 show_backtrace(1);
 }
-var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:TKwimport>*/;
-if (var6){
-var7 = NULL;
-if (var_new_child == NULL) {
-var8 = 0; /* is null */
-} else {
-var8 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:TKwimport> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:TKwimport> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (var8){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwimport */
-cltype10 = type_parser_nodes__TKwimport.color;
-idtype11 = type_parser_nodes__TKwimport.id;
-if(cltype10 >= var_new_child->type->table_size) {
-var9 = 0;
-} else {
-var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 261);
-show_backtrace(1);
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
 }
-self->attrs[COLOR_parser_nodes__AStdImport___n_kwimport].val = var_new_child; /* _n_kwimport on <self:AStdImport> */
+var9 = var10;
+}
+if (var9){
+/* <var_new_child:nullable ANode> isa TKwimport */
+cltype16 = type_parser_nodes__TKwimport.color;
+idtype17 = type_parser_nodes__TKwimport.id;
+if(var_new_child == NULL) {
+var15 = 0;
+} else {
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 264);
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
+}
+}
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwimport", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 169);
 show_backtrace(1);
 }
+{
+parser_prod__AStdImport__n_kwimport_61d(self, var_new_child); /* Direct call parser_prod#AStdImport#n_kwimport= on <self:AStdImport>*/
+}
 goto RET_LABEL;
 } else {
 }
-var12 = self->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on <self:AStdImport> */
-if (var12 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_name");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 268);
+var19 = self->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on <self:AStdImport> */
+if (unlikely(var19 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 172);
 show_backtrace(1);
 }
-var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var_old_child) /* == on <var12:AModuleName>*/;
-if (var13){
-var14 = NULL;
-if (var_new_child == NULL) {
-var15 = 0; /* is null */
-} else {
-var15 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var19,var_old_child) on <var19:AModuleName> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var19,var_other) on <var19:AModuleName> */
+var25 = var19 == var_other;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
-if (var15){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AModuleName */
-cltype17 = type_parser_nodes__AModuleName.color;
-idtype18 = type_parser_nodes__AModuleName.id;
-if(cltype17 >= var_new_child->type->table_size) {
-var16 = 0;
-} else {
-var16 = var_new_child->type->type_table[cltype17] == idtype18;
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 271);
-show_backtrace(1);
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
 }
-self->attrs[COLOR_parser_nodes__AStdImport___n_name].val = var_new_child; /* _n_name on <self:AStdImport> */
+var20 = var21;
+}
+if (var20){
+/* <var_new_child:nullable ANode> isa AModuleName */
+cltype27 = type_parser_nodes__AModuleName.color;
+idtype28 = type_parser_nodes__AModuleName.id;
+if(var_new_child == NULL) {
+var26 = 0;
+} else {
+if(cltype27 >= var_new_child->type->table_size) {
+var26 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 274);
+var26 = var_new_child->type->type_table[cltype27] == idtype28;
+}
+}
+if (unlikely(!var26)) {
+var_class_name29 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AModuleName", var_class_name29);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 173);
 show_backtrace(1);
 }
+{
+parser_prod__AStdImport__n_name_61d(self, var_new_child); /* Direct call parser_prod#AStdImport#n_name= on <self:AStdImport>*/
+}
 goto RET_LABEL;
 } else {
 }
-var19 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AStdImport> */
-if (var19 == NULL) {
-var20 = 0; /* <var_old_child:ANode> cannot be null */
+var30 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AStdImport> */
+if (var30 == NULL) {
+var31 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var20 = ((short int (*)(val*, val*))(var19->class->vft[COLOR_kernel__Object___61d_61d]))(var19, var_old_child) /* == on <var19:nullable AAnnotations>*/;
+{ /* Inline kernel#Object#== (var30,var_old_child) on <var30:nullable AAnnotations> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var30,var_other) on <var30:nullable AAnnotations(AAnnotations)> */
+var36 = var30 == var_other;
+var34 = var36;
+goto RET_LABEL35;
+RET_LABEL35:(void)0;
 }
-if (var20){
-var21 = NULL;
-if (var_new_child == NULL) {
-var22 = 0; /* is null */
-} else {
-var22 = 1; /* arg is null and recv is not */
 }
-if (var22){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AAnnotations */
-cltype24 = type_parser_nodes__AAnnotations.color;
-idtype25 = type_parser_nodes__AAnnotations.id;
-if(cltype24 >= var_new_child->type->table_size) {
-var23 = 0;
+var32 = var34;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
+}
+var31 = var32;
+}
+if (var31){
+/* <var_new_child:nullable ANode> isa nullable AAnnotations */
+cltype38 = type_nullable_parser_nodes__AAnnotations.color;
+idtype39 = type_nullable_parser_nodes__AAnnotations.id;
+if(var_new_child == NULL) {
+var37 = 1;
 } else {
-var23 = var_new_child->type->type_table[cltype24] == idtype25;
+if(cltype38 >= var_new_child->type->table_size) {
+var37 = 0;
+} else {
+var37 = var_new_child->type->type_table[cltype38] == idtype39;
 }
-if (!var23) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 281);
+}
+if (unlikely(!var37)) {
+var_class_name40 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AAnnotations", var_class_name40);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 177);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:AStdImport> */
-} else {
-var26 = NULL;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var26; /* _n_annotations on <self:AStdImport> */
+{
+parser_prod__AStdImport__n_annotations_61d(self, var_new_child); /* Direct call parser_prod#AStdImport#n_annotations= on <self:AStdImport>*/
 }
 goto RET_LABEL;
 } else {
@@ -1295,7 +1500,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AStdImport#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AStdImport__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AStdImport__replace_child(self, p0, p1);
+parser_prod__AStdImport__replace_child(self, p0, p1); /* Direct call parser_prod#AStdImport#replace_child on <self:Object(AStdImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#n_visibility= for (self: AStdImport, AVisibility) */
@@ -1303,12 +1508,17 @@ void parser_prod__AStdImport__n_visibility_61d(val* self, val* p0) {
 val* var_node /* var node: AVisibility */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AStdImport___n_visibility].val = var_node; /* _n_visibility on <self:AStdImport> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AVisibility>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:AVisibility> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:AVisibility> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#n_visibility= for (self: Object, AVisibility) */
 void VIRTUAL_parser_prod__AStdImport__n_visibility_61d(val* self, val* p0) {
-parser_prod__AStdImport__n_visibility_61d(self, p0);
+parser_prod__AStdImport__n_visibility_61d(self, p0); /* Direct call parser_prod#AStdImport#n_visibility= on <self:Object(AStdImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#n_kwimport= for (self: AStdImport, TKwimport) */
@@ -1316,12 +1526,17 @@ void parser_prod__AStdImport__n_kwimport_61d(val* self, val* p0) {
 val* var_node /* var node: TKwimport */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AStdImport___n_kwimport].val = var_node; /* _n_kwimport on <self:AStdImport> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwimport>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwimport> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwimport> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#n_kwimport= for (self: Object, TKwimport) */
 void VIRTUAL_parser_prod__AStdImport__n_kwimport_61d(val* self, val* p0) {
-parser_prod__AStdImport__n_kwimport_61d(self, p0);
+parser_prod__AStdImport__n_kwimport_61d(self, p0); /* Direct call parser_prod#AStdImport#n_kwimport= on <self:Object(AStdImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#n_name= for (self: AStdImport, AModuleName) */
@@ -1329,12 +1544,17 @@ void parser_prod__AStdImport__n_name_61d(val* self, val* p0) {
 val* var_node /* var node: AModuleName */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AStdImport___n_name].val = var_node; /* _n_name on <self:AStdImport> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AModuleName>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:AModuleName> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:AModuleName> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#n_name= for (self: Object, AModuleName) */
 void VIRTUAL_parser_prod__AStdImport__n_name_61d(val* self, val* p0) {
-parser_prod__AStdImport__n_name_61d(self, p0);
+parser_prod__AStdImport__n_name_61d(self, p0); /* Direct call parser_prod#AStdImport#n_name= on <self:Object(AStdImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#n_annotations= for (self: AStdImport, nullable AAnnotations) */
@@ -1342,6 +1562,11 @@ void parser_prod__AStdImport__n_annotations_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AAnnotations */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:AStdImport> */
 var = NULL;
@@ -1350,15 +1575,34 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AAnnotations> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AAnnotations(AAnnotations)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AAnnotations(AAnnotations)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AAnnotations(AAnnotations)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AAnnotations(AAnnotations)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#n_annotations= for (self: Object, nullable AAnnotations) */
 void VIRTUAL_parser_prod__AStdImport__n_annotations_61d(val* self, val* p0) {
-parser_prod__AStdImport__n_annotations_61d(self, p0);
+parser_prod__AStdImport__n_annotations_61d(self, p0); /* Direct call parser_prod#AStdImport#n_annotations= on <self:Object(AStdImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#visit_all for (self: AStdImport, Visitor) */
@@ -1368,62 +1612,43 @@ val* var /* : AVisibility */;
 val* var1 /* : TKwimport */;
 val* var2 /* : AModuleName */;
 val* var3 /* : nullable AAnnotations */;
-val* var4 /* : null */;
-short int var5 /* : Bool */;
-val* var6 /* : nullable AAnnotations */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AStdImport___n_visibility].val; /* _n_visibility on <self:AStdImport> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_visibility");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 316);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 206);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 var1 = self->attrs[COLOR_parser_nodes__AStdImport___n_kwimport].val; /* _n_kwimport on <self:AStdImport> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwimport");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 317);
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwimport");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 207);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 var2 = self->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on <self:AStdImport> */
-if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_name");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 318);
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 208);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var2) /* enter_visit on <var_v:Visitor>*/;
-var3 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AStdImport> */
-var4 = NULL;
-if (var3 == NULL) {
-var5 = 0; /* is null */
-} else {
-var5 = 1; /* arg is null and recv is not */
-}
-if (var5){
-var6 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AStdImport> */
-if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 320);
-show_backtrace(1);
+{
+parser_nodes__Visitor__enter_visit(var_v, var2); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var6) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var3 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AStdImport> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var3); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
 RET_LABEL:;
 }
 /* method parser_prod#AStdImport#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AStdImport__visit_all(val* self, val* p0) {
-parser_prod__AStdImport__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ANoImport#empty_init for (self: ANoImport) */
-void parser_prod__ANoImport__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#ANoImport#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ANoImport__empty_init(val* self) {
-parser_prod__ANoImport__empty_init(self);
+parser_prod__AStdImport__visit_all(self, p0); /* Direct call parser_prod#AStdImport#visit_all on <self:Object(AStdImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ANoImport#init_anoimport for (self: ANoImport, nullable AVisibility, nullable TKwimport, nullable TKwend) */
@@ -1434,51 +1659,74 @@ val* var_n_kwend /* var n_kwend: nullable TKwend */;
 var_n_visibility = p0;
 var_n_kwimport = p1;
 var_n_kwend = p2;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ANoImport__empty_init]))(self) /* empty_init on <self:ANoImport>*/;
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 334);
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 219);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__ANoImport___n_visibility].val = var_n_visibility; /* _n_visibility on <self:ANoImport> */
 if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 335);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 220);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_visibility->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_visibility, self) /* parent= on <var_n_visibility:nullable AVisibility>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_visibility,self) on <var_n_visibility:nullable AVisibility> */
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_kwimport == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 336);
+var_n_visibility->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_visibility:nullable AVisibility> */
+RET_LABEL1:(void)0;
+}
+}
+if (unlikely(var_n_kwimport == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 221);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__ANoImport___n_kwimport].val = var_n_kwimport; /* _n_kwimport on <self:ANoImport> */
 if (var_n_kwimport == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 337);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 222);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwimport->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwimport, self) /* parent= on <var_n_kwimport:nullable TKwimport>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwimport,self) on <var_n_kwimport:nullable TKwimport> */
+if (unlikely(var_n_kwimport == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_kwend == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 338);
+var_n_kwimport->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwimport:nullable TKwimport> */
+RET_LABEL2:(void)0;
+}
+}
+if (unlikely(var_n_kwend == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 223);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__ANoImport___n_kwend].val = var_n_kwend; /* _n_kwend on <self:ANoImport> */
 if (var_n_kwend == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 339);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 224);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwend->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwend, self) /* parent= on <var_n_kwend:nullable TKwend>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwend,self) on <var_n_kwend:nullable TKwend> */
+if (unlikely(var_n_kwend == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_kwend->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwend:nullable TKwend> */
+RET_LABEL3:(void)0;
+}
 }
 RET_LABEL:;
 }
 /* method parser_prod#ANoImport#init_anoimport for (self: Object, nullable AVisibility, nullable TKwimport, nullable TKwend) */
 void VIRTUAL_parser_prod__ANoImport__init_anoimport(val* self, val* p0, val* p1, val* p2) {
-parser_prod__ANoImport__init_anoimport(self, p0, p1, p2);
+parser_prod__ANoImport__init_anoimport(self, p0, p1, p2); /* Direct call parser_prod#ANoImport#init_anoimport on <self:Object(ANoImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ANoImport#replace_child for (self: ANoImport, ANode, nullable ANode) */
@@ -1487,138 +1735,175 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : AVisibility */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : TKwimport */;
-short int var6 /* : Bool */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
+const char* var_class_name;
+val* var8 /* : TKwimport */;
 short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
-val* var12 /* : TKwend */;
-short int var13 /* : Bool */;
-val* var14 /* : null */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
 short int var15 /* : Bool */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
+val* var19 /* : TKwend */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
+short int var25 /* : Bool */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+const char* var_class_name29;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__ANoImport___n_visibility].val; /* _n_visibility on <self:ANoImport> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_visibility");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 344);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 229);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:AVisibility>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:AVisibility> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:AVisibility> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AVisibility */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa AVisibility */
 cltype = type_parser_nodes__AVisibility.color;
 idtype = type_parser_nodes__AVisibility.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 347);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__ANoImport___n_visibility].val = var_new_child; /* _n_visibility on <self:ANoImport> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 350);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AVisibility", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 230);
 show_backtrace(1);
 }
+{
+parser_prod__ANoImport__n_visibility_61d(self, var_new_child); /* Direct call parser_prod#ANoImport#n_visibility= on <self:ANoImport>*/
+}
 goto RET_LABEL;
 } else {
 }
-var5 = self->attrs[COLOR_parser_nodes__ANoImport___n_kwimport].val; /* _n_kwimport on <self:ANoImport> */
-if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwimport");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 354);
+var8 = self->attrs[COLOR_parser_nodes__ANoImport___n_kwimport].val; /* _n_kwimport on <self:ANoImport> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwimport");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 233);
 show_backtrace(1);
 }
-var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:TKwimport>*/;
-if (var6){
-var7 = NULL;
-if (var_new_child == NULL) {
-var8 = 0; /* is null */
-} else {
-var8 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:TKwimport> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:TKwimport> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (var8){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwimport */
-cltype10 = type_parser_nodes__TKwimport.color;
-idtype11 = type_parser_nodes__TKwimport.id;
-if(cltype10 >= var_new_child->type->table_size) {
-var9 = 0;
-} else {
-var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 357);
-show_backtrace(1);
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
 }
-self->attrs[COLOR_parser_nodes__ANoImport___n_kwimport].val = var_new_child; /* _n_kwimport on <self:ANoImport> */
+var9 = var10;
+}
+if (var9){
+/* <var_new_child:nullable ANode> isa TKwimport */
+cltype16 = type_parser_nodes__TKwimport.color;
+idtype17 = type_parser_nodes__TKwimport.id;
+if(var_new_child == NULL) {
+var15 = 0;
+} else {
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 360);
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
+}
+}
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwimport", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 234);
 show_backtrace(1);
 }
+{
+parser_prod__ANoImport__n_kwimport_61d(self, var_new_child); /* Direct call parser_prod#ANoImport#n_kwimport= on <self:ANoImport>*/
+}
 goto RET_LABEL;
 } else {
 }
-var12 = self->attrs[COLOR_parser_nodes__ANoImport___n_kwend].val; /* _n_kwend on <self:ANoImport> */
-if (var12 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwend");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 364);
+var19 = self->attrs[COLOR_parser_nodes__ANoImport___n_kwend].val; /* _n_kwend on <self:ANoImport> */
+if (unlikely(var19 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwend");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 237);
 show_backtrace(1);
 }
-var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var_old_child) /* == on <var12:TKwend>*/;
-if (var13){
-var14 = NULL;
-if (var_new_child == NULL) {
-var15 = 0; /* is null */
-} else {
-var15 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var19,var_old_child) on <var19:TKwend> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var19,var_other) on <var19:TKwend> */
+var25 = var19 == var_other;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
-if (var15){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwend */
-cltype17 = type_parser_nodes__TKwend.color;
-idtype18 = type_parser_nodes__TKwend.id;
-if(cltype17 >= var_new_child->type->table_size) {
-var16 = 0;
-} else {
-var16 = var_new_child->type->type_table[cltype17] == idtype18;
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 367);
-show_backtrace(1);
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
 }
-self->attrs[COLOR_parser_nodes__ANoImport___n_kwend].val = var_new_child; /* _n_kwend on <self:ANoImport> */
+var20 = var21;
+}
+if (var20){
+/* <var_new_child:nullable ANode> isa TKwend */
+cltype27 = type_parser_nodes__TKwend.color;
+idtype28 = type_parser_nodes__TKwend.id;
+if(var_new_child == NULL) {
+var26 = 0;
+} else {
+if(cltype27 >= var_new_child->type->table_size) {
+var26 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 370);
+var26 = var_new_child->type->type_table[cltype27] == idtype28;
+}
+}
+if (unlikely(!var26)) {
+var_class_name29 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwend", var_class_name29);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 238);
 show_backtrace(1);
 }
+{
+parser_prod__ANoImport__n_kwend_61d(self, var_new_child); /* Direct call parser_prod#ANoImport#n_kwend= on <self:ANoImport>*/
+}
 goto RET_LABEL;
 } else {
 }
@@ -1626,7 +1911,7 @@ RET_LABEL:;
 }
 /* method parser_prod#ANoImport#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__ANoImport__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ANoImport__replace_child(self, p0, p1);
+parser_prod__ANoImport__replace_child(self, p0, p1); /* Direct call parser_prod#ANoImport#replace_child on <self:Object(ANoImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ANoImport#n_visibility= for (self: ANoImport, AVisibility) */
@@ -1634,12 +1919,17 @@ void parser_prod__ANoImport__n_visibility_61d(val* self, val* p0) {
 val* var_node /* var node: AVisibility */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__ANoImport___n_visibility].val = var_node; /* _n_visibility on <self:ANoImport> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AVisibility>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:AVisibility> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:AVisibility> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#ANoImport#n_visibility= for (self: Object, AVisibility) */
 void VIRTUAL_parser_prod__ANoImport__n_visibility_61d(val* self, val* p0) {
-parser_prod__ANoImport__n_visibility_61d(self, p0);
+parser_prod__ANoImport__n_visibility_61d(self, p0); /* Direct call parser_prod#ANoImport#n_visibility= on <self:Object(ANoImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ANoImport#n_kwimport= for (self: ANoImport, TKwimport) */
@@ -1647,12 +1937,17 @@ void parser_prod__ANoImport__n_kwimport_61d(val* self, val* p0) {
 val* var_node /* var node: TKwimport */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__ANoImport___n_kwimport].val = var_node; /* _n_kwimport on <self:ANoImport> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwimport>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwimport> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwimport> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#ANoImport#n_kwimport= for (self: Object, TKwimport) */
 void VIRTUAL_parser_prod__ANoImport__n_kwimport_61d(val* self, val* p0) {
-parser_prod__ANoImport__n_kwimport_61d(self, p0);
+parser_prod__ANoImport__n_kwimport_61d(self, p0); /* Direct call parser_prod#ANoImport#n_kwimport= on <self:Object(ANoImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ANoImport#n_kwend= for (self: ANoImport, TKwend) */
@@ -1660,12 +1955,17 @@ void parser_prod__ANoImport__n_kwend_61d(val* self, val* p0) {
 val* var_node /* var node: TKwend */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__ANoImport___n_kwend].val = var_node; /* _n_kwend on <self:ANoImport> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwend>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwend> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwend> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#ANoImport#n_kwend= for (self: Object, TKwend) */
 void VIRTUAL_parser_prod__ANoImport__n_kwend_61d(val* self, val* p0) {
-parser_prod__ANoImport__n_kwend_61d(self, p0);
+parser_prod__ANoImport__n_kwend_61d(self, p0); /* Direct call parser_prod#ANoImport#n_kwend= on <self:Object(ANoImport)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ANoImport#visit_all for (self: ANoImport, Visitor) */
@@ -1676,108 +1976,249 @@ val* var1 /* : TKwimport */;
 val* var2 /* : TKwend */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__ANoImport___n_visibility].val; /* _n_visibility on <self:ANoImport> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_visibility");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 395);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 262);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 var1 = self->attrs[COLOR_parser_nodes__ANoImport___n_kwimport].val; /* _n_kwimport on <self:ANoImport> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwimport");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 396);
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwimport");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 263);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 var2 = self->attrs[COLOR_parser_nodes__ANoImport___n_kwend].val; /* _n_kwend on <self:ANoImport> */
-if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwend");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 397);
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwend");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 264);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var2) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var2); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#ANoImport#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__ANoImport__visit_all(val* self, val* p0) {
-parser_prod__ANoImport__visit_all(self, p0);
+parser_prod__ANoImport__visit_all(self, p0); /* Direct call parser_prod#ANoImport#visit_all on <self:Object(ANoImport)>*/
 RET_LABEL:;
 }
-/* method parser_prod#APublicVisibility#empty_init for (self: APublicVisibility) */
-void parser_prod__APublicVisibility__empty_init(val* self) {
-RET_LABEL:;
+/* method parser_prod#APublicVisibility#init_apublicvisibility for (self: APublicVisibility, nullable TKwpublic) */
+void parser_prod__APublicVisibility__init_apublicvisibility(val* self, val* p0) {
+val* var_n_kwpublic /* var n_kwpublic: nullable TKwpublic */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+var_n_kwpublic = p0;
+self->attrs[COLOR_parser_nodes__APublicVisibility___n_kwpublic].val = var_n_kwpublic; /* _n_kwpublic on <self:APublicVisibility> */
+var = NULL;
+if (var_n_kwpublic == NULL) {
+var1 = 0; /* is null */
+} else {
+var1 = 1; /* arg is null and recv is not */
 }
-/* method parser_prod#APublicVisibility#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__APublicVisibility__empty_init(val* self) {
-parser_prod__APublicVisibility__empty_init(self);
-RET_LABEL:;
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_kwpublic,var) on <var_n_kwpublic:nullable TKwpublic> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_n_kwpublic->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwpublic, var_other) /* == on <var_n_kwpublic:nullable TKwpublic(TKwpublic)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwpublic,self) on <var_n_kwpublic:nullable TKwpublic(TKwpublic)> */
+var_n_kwpublic->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwpublic:nullable TKwpublic(TKwpublic)> */
+RET_LABEL7:(void)0;
+}
+}
+} else {
 }
-/* method parser_prod#APublicVisibility#init_apublicvisibility for (self: APublicVisibility) */
-void parser_prod__APublicVisibility__init_apublicvisibility(val* self) {
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__APublicVisibility__empty_init]))(self) /* empty_init on <self:APublicVisibility>*/;
 RET_LABEL:;
 }
-/* method parser_prod#APublicVisibility#init_apublicvisibility for (self: Object) */
-void VIRTUAL_parser_prod__APublicVisibility__init_apublicvisibility(val* self) {
-parser_prod__APublicVisibility__init_apublicvisibility(self);
+/* method parser_prod#APublicVisibility#init_apublicvisibility for (self: Object, nullable TKwpublic) */
+void VIRTUAL_parser_prod__APublicVisibility__init_apublicvisibility(val* self, val* p0) {
+parser_prod__APublicVisibility__init_apublicvisibility(self, p0); /* Direct call parser_prod#APublicVisibility#init_apublicvisibility on <self:Object(APublicVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#APublicVisibility#replace_child for (self: APublicVisibility, ANode, nullable ANode) */
 void parser_prod__APublicVisibility__replace_child(val* self, val* p0, val* p1) {
 val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
+val* var /* : nullable TKwpublic */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
 var_old_child = p0;
 var_new_child = p1;
+var = self->attrs[COLOR_parser_nodes__APublicVisibility___n_kwpublic].val; /* _n_kwpublic on <self:APublicVisibility> */
+if (var == NULL) {
+var1 = 0; /* <var_old_child:ANode> cannot be null */
+} else {
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:nullable TKwpublic> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable TKwpublic(TKwpublic)> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa nullable TKwpublic */
+cltype = type_nullable_parser_nodes__TKwpublic.color;
+idtype = type_nullable_parser_nodes__TKwpublic.id;
+if(var_new_child == NULL) {
+var7 = 1;
+} else {
+if(cltype >= var_new_child->type->table_size) {
+var7 = 0;
+} else {
+var7 = var_new_child->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TKwpublic", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 279);
+show_backtrace(1);
+}
+{
+parser_prod__APublicVisibility__n_kwpublic_61d(self, var_new_child); /* Direct call parser_prod#APublicVisibility#n_kwpublic= on <self:APublicVisibility>*/
+}
+goto RET_LABEL;
+} else {
+}
 RET_LABEL:;
 }
 /* method parser_prod#APublicVisibility#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__APublicVisibility__replace_child(val* self, val* p0, val* p1) {
-parser_prod__APublicVisibility__replace_child(self, p0, p1);
+parser_prod__APublicVisibility__replace_child(self, p0, p1); /* Direct call parser_prod#APublicVisibility#replace_child on <self:Object(APublicVisibility)>*/
+RET_LABEL:;
+}
+/* method parser_prod#APublicVisibility#n_kwpublic= for (self: APublicVisibility, nullable TKwpublic) */
+void parser_prod__APublicVisibility__n_kwpublic_61d(val* self, val* p0) {
+val* var_node /* var node: nullable TKwpublic */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__APublicVisibility___n_kwpublic].val = var_node; /* _n_kwpublic on <self:APublicVisibility> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
+} else {
+var1 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TKwpublic> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TKwpublic(TKwpublic)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TKwpublic(TKwpublic)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TKwpublic(TKwpublic)> */
+RET_LABEL7:(void)0;
+}
+}
+} else {
+}
+RET_LABEL:;
+}
+/* method parser_prod#APublicVisibility#n_kwpublic= for (self: Object, nullable TKwpublic) */
+void VIRTUAL_parser_prod__APublicVisibility__n_kwpublic_61d(val* self, val* p0) {
+parser_prod__APublicVisibility__n_kwpublic_61d(self, p0); /* Direct call parser_prod#APublicVisibility#n_kwpublic= on <self:Object(APublicVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#APublicVisibility#visit_all for (self: APublicVisibility, Visitor) */
 void parser_prod__APublicVisibility__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
+val* var /* : nullable TKwpublic */;
 var_v = p0;
+var = self->attrs[COLOR_parser_nodes__APublicVisibility___n_kwpublic].val; /* _n_kwpublic on <self:APublicVisibility> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#APublicVisibility#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__APublicVisibility__visit_all(val* self, val* p0) {
-parser_prod__APublicVisibility__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#APrivateVisibility#empty_init for (self: APrivateVisibility) */
-void parser_prod__APrivateVisibility__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#APrivateVisibility#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__APrivateVisibility__empty_init(val* self) {
-parser_prod__APrivateVisibility__empty_init(self);
+parser_prod__APublicVisibility__visit_all(self, p0); /* Direct call parser_prod#APublicVisibility#visit_all on <self:Object(APublicVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#APrivateVisibility#init_aprivatevisibility for (self: APrivateVisibility, nullable TKwprivate) */
 void parser_prod__APrivateVisibility__init_aprivatevisibility(val* self, val* p0) {
 val* var_n_kwprivate /* var n_kwprivate: nullable TKwprivate */;
 var_n_kwprivate = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__APrivateVisibility__empty_init]))(self) /* empty_init on <self:APrivateVisibility>*/;
-if (var_n_kwprivate == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 426);
+if (unlikely(var_n_kwprivate == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 301);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__APrivateVisibility___n_kwprivate].val = var_n_kwprivate; /* _n_kwprivate on <self:APrivateVisibility> */
 if (var_n_kwprivate == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 427);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 302);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwprivate->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwprivate, self) /* parent= on <var_n_kwprivate:nullable TKwprivate>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwprivate,self) on <var_n_kwprivate:nullable TKwprivate> */
+if (unlikely(var_n_kwprivate == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_kwprivate->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwprivate:nullable TKwprivate> */
+RET_LABEL1:(void)0;
+}
 }
 RET_LABEL:;
 }
 /* method parser_prod#APrivateVisibility#init_aprivatevisibility for (self: Object, nullable TKwprivate) */
 void VIRTUAL_parser_prod__APrivateVisibility__init_aprivatevisibility(val* self, val* p0) {
-parser_prod__APrivateVisibility__init_aprivatevisibility(self, p0);
+parser_prod__APrivateVisibility__init_aprivatevisibility(self, p0); /* Direct call parser_prod#APrivateVisibility#init_aprivatevisibility on <self:Object(APrivateVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#APrivateVisibility#replace_child for (self: APrivateVisibility, ANode, nullable ANode) */
@@ -1786,48 +2227,61 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : TKwprivate */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__APrivateVisibility___n_kwprivate].val; /* _n_kwprivate on <self:APrivateVisibility> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwprivate");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 432);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwprivate");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 307);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwprivate>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:TKwprivate> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:TKwprivate> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwprivate */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa TKwprivate */
 cltype = type_parser_nodes__TKwprivate.color;
 idtype = type_parser_nodes__TKwprivate.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 435);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__APrivateVisibility___n_kwprivate].val = var_new_child; /* _n_kwprivate on <self:APrivateVisibility> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 438);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwprivate", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 308);
 show_backtrace(1);
 }
+{
+parser_prod__APrivateVisibility__n_kwprivate_61d(self, var_new_child); /* Direct call parser_prod#APrivateVisibility#n_kwprivate= on <self:APrivateVisibility>*/
+}
 goto RET_LABEL;
 } else {
 }
@@ -1835,7 +2289,7 @@ RET_LABEL:;
 }
 /* method parser_prod#APrivateVisibility#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__APrivateVisibility__replace_child(val* self, val* p0, val* p1) {
-parser_prod__APrivateVisibility__replace_child(self, p0, p1);
+parser_prod__APrivateVisibility__replace_child(self, p0, p1); /* Direct call parser_prod#APrivateVisibility#replace_child on <self:Object(APrivateVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#APrivateVisibility#n_kwprivate= for (self: APrivateVisibility, TKwprivate) */
@@ -1843,12 +2297,17 @@ void parser_prod__APrivateVisibility__n_kwprivate_61d(val* self, val* p0) {
 val* var_node /* var node: TKwprivate */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__APrivateVisibility___n_kwprivate].val = var_node; /* _n_kwprivate on <self:APrivateVisibility> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwprivate>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwprivate> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwprivate> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#APrivateVisibility#n_kwprivate= for (self: Object, TKwprivate) */
 void VIRTUAL_parser_prod__APrivateVisibility__n_kwprivate_61d(val* self, val* p0) {
-parser_prod__APrivateVisibility__n_kwprivate_61d(self, p0);
+parser_prod__APrivateVisibility__n_kwprivate_61d(self, p0); /* Direct call parser_prod#APrivateVisibility#n_kwprivate= on <self:Object(APrivateVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#APrivateVisibility#visit_all for (self: APrivateVisibility, Visitor) */
@@ -1857,51 +2316,51 @@ val* var_v /* var v: Visitor */;
 val* var /* : TKwprivate */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__APrivateVisibility___n_kwprivate].val; /* _n_kwprivate on <self:APrivateVisibility> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwprivate");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 453);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwprivate");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 322);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#APrivateVisibility#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__APrivateVisibility__visit_all(val* self, val* p0) {
-parser_prod__APrivateVisibility__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AProtectedVisibility#empty_init for (self: AProtectedVisibility) */
-void parser_prod__AProtectedVisibility__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AProtectedVisibility#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AProtectedVisibility__empty_init(val* self) {
-parser_prod__AProtectedVisibility__empty_init(self);
+parser_prod__APrivateVisibility__visit_all(self, p0); /* Direct call parser_prod#APrivateVisibility#visit_all on <self:Object(APrivateVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AProtectedVisibility#init_aprotectedvisibility for (self: AProtectedVisibility, nullable TKwprotected) */
 void parser_prod__AProtectedVisibility__init_aprotectedvisibility(val* self, val* p0) {
 val* var_n_kwprotected /* var n_kwprotected: nullable TKwprotected */;
 var_n_kwprotected = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AProtectedVisibility__empty_init]))(self) /* empty_init on <self:AProtectedVisibility>*/;
-if (var_n_kwprotected == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 464);
+if (unlikely(var_n_kwprotected == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 330);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AProtectedVisibility___n_kwprotected].val = var_n_kwprotected; /* _n_kwprotected on <self:AProtectedVisibility> */
 if (var_n_kwprotected == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 465);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 331);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwprotected->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwprotected, self) /* parent= on <var_n_kwprotected:nullable TKwprotected>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwprotected,self) on <var_n_kwprotected:nullable TKwprotected> */
+if (unlikely(var_n_kwprotected == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_kwprotected->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwprotected:nullable TKwprotected> */
+RET_LABEL1:(void)0;
+}
 }
 RET_LABEL:;
 }
 /* method parser_prod#AProtectedVisibility#init_aprotectedvisibility for (self: Object, nullable TKwprotected) */
 void VIRTUAL_parser_prod__AProtectedVisibility__init_aprotectedvisibility(val* self, val* p0) {
-parser_prod__AProtectedVisibility__init_aprotectedvisibility(self, p0);
+parser_prod__AProtectedVisibility__init_aprotectedvisibility(self, p0); /* Direct call parser_prod#AProtectedVisibility#init_aprotectedvisibility on <self:Object(AProtectedVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AProtectedVisibility#replace_child for (self: AProtectedVisibility, ANode, nullable ANode) */
@@ -1910,48 +2369,61 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : TKwprotected */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AProtectedVisibility___n_kwprotected].val; /* _n_kwprotected on <self:AProtectedVisibility> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwprotected");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 470);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwprotected");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 336);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwprotected>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:TKwprotected> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:TKwprotected> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwprotected */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa TKwprotected */
 cltype = type_parser_nodes__TKwprotected.color;
 idtype = type_parser_nodes__TKwprotected.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 473);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AProtectedVisibility___n_kwprotected].val = var_new_child; /* _n_kwprotected on <self:AProtectedVisibility> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 476);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwprotected", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 337);
 show_backtrace(1);
 }
+{
+parser_prod__AProtectedVisibility__n_kwprotected_61d(self, var_new_child); /* Direct call parser_prod#AProtectedVisibility#n_kwprotected= on <self:AProtectedVisibility>*/
+}
 goto RET_LABEL;
 } else {
 }
@@ -1959,7 +2431,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AProtectedVisibility#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AProtectedVisibility__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AProtectedVisibility__replace_child(self, p0, p1);
+parser_prod__AProtectedVisibility__replace_child(self, p0, p1); /* Direct call parser_prod#AProtectedVisibility#replace_child on <self:Object(AProtectedVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AProtectedVisibility#n_kwprotected= for (self: AProtectedVisibility, TKwprotected) */
@@ -1967,12 +2439,17 @@ void parser_prod__AProtectedVisibility__n_kwprotected_61d(val* self, val* p0) {
 val* var_node /* var node: TKwprotected */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AProtectedVisibility___n_kwprotected].val = var_node; /* _n_kwprotected on <self:AProtectedVisibility> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwprotected>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwprotected> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwprotected> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AProtectedVisibility#n_kwprotected= for (self: Object, TKwprotected) */
 void VIRTUAL_parser_prod__AProtectedVisibility__n_kwprotected_61d(val* self, val* p0) {
-parser_prod__AProtectedVisibility__n_kwprotected_61d(self, p0);
+parser_prod__AProtectedVisibility__n_kwprotected_61d(self, p0); /* Direct call parser_prod#AProtectedVisibility#n_kwprotected= on <self:Object(AProtectedVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AProtectedVisibility#visit_all for (self: AProtectedVisibility, Visitor) */
@@ -1981,51 +2458,51 @@ val* var_v /* var v: Visitor */;
 val* var /* : TKwprotected */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AProtectedVisibility___n_kwprotected].val; /* _n_kwprotected on <self:AProtectedVisibility> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwprotected");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 491);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwprotected");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 351);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#AProtectedVisibility#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AProtectedVisibility__visit_all(val* self, val* p0) {
-parser_prod__AProtectedVisibility__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AIntrudeVisibility#empty_init for (self: AIntrudeVisibility) */
-void parser_prod__AIntrudeVisibility__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AIntrudeVisibility#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AIntrudeVisibility__empty_init(val* self) {
-parser_prod__AIntrudeVisibility__empty_init(self);
+parser_prod__AProtectedVisibility__visit_all(self, p0); /* Direct call parser_prod#AProtectedVisibility#visit_all on <self:Object(AProtectedVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AIntrudeVisibility#init_aintrudevisibility for (self: AIntrudeVisibility, nullable TKwintrude) */
 void parser_prod__AIntrudeVisibility__init_aintrudevisibility(val* self, val* p0) {
 val* var_n_kwintrude /* var n_kwintrude: nullable TKwintrude */;
 var_n_kwintrude = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AIntrudeVisibility__empty_init]))(self) /* empty_init on <self:AIntrudeVisibility>*/;
-if (var_n_kwintrude == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 502);
+if (unlikely(var_n_kwintrude == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 359);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AIntrudeVisibility___n_kwintrude].val = var_n_kwintrude; /* _n_kwintrude on <self:AIntrudeVisibility> */
 if (var_n_kwintrude == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 503);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 360);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwintrude->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwintrude, self) /* parent= on <var_n_kwintrude:nullable TKwintrude>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwintrude,self) on <var_n_kwintrude:nullable TKwintrude> */
+if (unlikely(var_n_kwintrude == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_kwintrude->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwintrude:nullable TKwintrude> */
+RET_LABEL1:(void)0;
+}
 }
 RET_LABEL:;
 }
 /* method parser_prod#AIntrudeVisibility#init_aintrudevisibility for (self: Object, nullable TKwintrude) */
 void VIRTUAL_parser_prod__AIntrudeVisibility__init_aintrudevisibility(val* self, val* p0) {
-parser_prod__AIntrudeVisibility__init_aintrudevisibility(self, p0);
+parser_prod__AIntrudeVisibility__init_aintrudevisibility(self, p0); /* Direct call parser_prod#AIntrudeVisibility#init_aintrudevisibility on <self:Object(AIntrudeVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AIntrudeVisibility#replace_child for (self: AIntrudeVisibility, ANode, nullable ANode) */
@@ -2034,48 +2511,61 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : TKwintrude */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AIntrudeVisibility___n_kwintrude].val; /* _n_kwintrude on <self:AIntrudeVisibility> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwintrude");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 508);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwintrude");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 365);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwintrude>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:TKwintrude> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:TKwintrude> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwintrude */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa TKwintrude */
 cltype = type_parser_nodes__TKwintrude.color;
 idtype = type_parser_nodes__TKwintrude.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 511);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AIntrudeVisibility___n_kwintrude].val = var_new_child; /* _n_kwintrude on <self:AIntrudeVisibility> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 514);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwintrude", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 366);
 show_backtrace(1);
 }
+{
+parser_prod__AIntrudeVisibility__n_kwintrude_61d(self, var_new_child); /* Direct call parser_prod#AIntrudeVisibility#n_kwintrude= on <self:AIntrudeVisibility>*/
+}
 goto RET_LABEL;
 } else {
 }
@@ -2083,7 +2573,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AIntrudeVisibility#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AIntrudeVisibility__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AIntrudeVisibility__replace_child(self, p0, p1);
+parser_prod__AIntrudeVisibility__replace_child(self, p0, p1); /* Direct call parser_prod#AIntrudeVisibility#replace_child on <self:Object(AIntrudeVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AIntrudeVisibility#n_kwintrude= for (self: AIntrudeVisibility, TKwintrude) */
@@ -2091,12 +2581,17 @@ void parser_prod__AIntrudeVisibility__n_kwintrude_61d(val* self, val* p0) {
 val* var_node /* var node: TKwintrude */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AIntrudeVisibility___n_kwintrude].val = var_node; /* _n_kwintrude on <self:AIntrudeVisibility> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwintrude>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwintrude> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwintrude> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AIntrudeVisibility#n_kwintrude= for (self: Object, TKwintrude) */
 void VIRTUAL_parser_prod__AIntrudeVisibility__n_kwintrude_61d(val* self, val* p0) {
-parser_prod__AIntrudeVisibility__n_kwintrude_61d(self, p0);
+parser_prod__AIntrudeVisibility__n_kwintrude_61d(self, p0); /* Direct call parser_prod#AIntrudeVisibility#n_kwintrude= on <self:Object(AIntrudeVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AIntrudeVisibility#visit_all for (self: AIntrudeVisibility, Visitor) */
@@ -2105,26 +2600,19 @@ val* var_v /* var v: Visitor */;
 val* var /* : TKwintrude */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AIntrudeVisibility___n_kwintrude].val; /* _n_kwintrude on <self:AIntrudeVisibility> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwintrude");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 529);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwintrude");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 380);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#AIntrudeVisibility#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AIntrudeVisibility__visit_all(val* self, val* p0) {
-parser_prod__AIntrudeVisibility__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AStdClassdef#empty_init for (self: AStdClassdef) */
-void parser_prod__AStdClassdef__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AStdClassdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AStdClassdef__empty_init(val* self) {
-parser_prod__AStdClassdef__empty_init(self);
+parser_prod__AIntrudeVisibility__visit_all(self, p0); /* Direct call parser_prod#AIntrudeVisibility#visit_all on <self:Object(AIntrudeVisibility)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#init_astdclassdef for (self: AStdClassdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable AClasskind, nullable TClassid, Collection[Object], nullable AAnnotations, nullable AExternCodeBlock, Collection[Object], Collection[Object], nullable TKwend) */
@@ -2142,38 +2630,41 @@ val* var_n_propdefs /* var n_propdefs: Collection[Object] */;
 val* var_n_kwend /* var n_kwend: nullable TKwend */;
 val* var /* : null */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-val* var4 /* : null */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
 short int var5 /* : Bool */;
-val* var6 /* : Iterator[nullable Object] */;
-short int var7 /* : Bool */;
-val* var8 /* : nullable Object */;
-val* var_n /* var n: Object */;
+short int var6 /* : Bool */;
+val* var8 /* : null */;
 short int var9 /* : Bool */;
-int cltype;
-int idtype;
-val* var10 /* : ANodes[AFormaldef] */;
-val* var11 /* : null */;
+short int var10 /* : Bool */;
 short int var12 /* : Bool */;
-val* var13 /* : null */;
+short int var13 /* : Bool */;
 short int var14 /* : Bool */;
-val* var15 /* : Iterator[nullable Object] */;
-short int var16 /* : Bool */;
-val* var17 /* : nullable Object */;
-val* var_n18 /* var n: Object */;
+val* var18 /* : null */;
 short int var19 /* : Bool */;
-int cltype20;
-int idtype21;
-val* var22 /* : ANodes[ASuperclass] */;
-val* var24 /* : Iterator[nullable Object] */;
-short int var25 /* : Bool */;
-val* var26 /* : nullable Object */;
-val* var_n27 /* var n: Object */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-val* var31 /* : ANodes[APropdef] */;
+short int var20 /* : Bool */;
+short int var22 /* : Bool */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
+val* var26 /* : ANodes[AFormaldef] */;
+val* var28 /* : ANodes[AFormaldef] */;
+val* var29 /* : null */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
+short int var33 /* : Bool */;
+short int var34 /* : Bool */;
+short int var35 /* : Bool */;
+val* var37 /* : null */;
+short int var38 /* : Bool */;
+short int var39 /* : Bool */;
+short int var41 /* : Bool */;
+short int var42 /* : Bool */;
+short int var43 /* : Bool */;
+val* var45 /* : ANodes[ASuperclass] */;
+val* var47 /* : ANodes[ASuperclass] */;
+val* var48 /* : ANodes[APropdef] */;
+val* var50 /* : ANodes[APropdef] */;
 var_n_doc = p0;
 var_n_kwredef = p1;
 var_n_visibility = p2;
@@ -2185,7 +2676,6 @@ var_n_extern_code_block = p7;
 var_n_superclasses = p8;
 var_n_propdefs = p9;
 var_n_kwend = p10;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AStdClassdef__empty_init]))(self) /* empty_init on <self:AStdClassdef>*/;
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_doc].val = var_n_doc; /* _n_doc on <self:AStdClassdef> */
 var = NULL;
 if (var_n_doc == NULL) {
@@ -2193,191 +2683,262 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_doc,var) on <var_n_doc:nullable ADoc> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_n_doc->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_doc, var_other) /* == on <var_n_doc:nullable ADoc(ADoc)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_n_doc->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_doc, self) /* parent= on <var_n_doc:nullable ADoc(ADoc)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_doc,self) on <var_n_doc:nullable ADoc(ADoc)> */
+var_n_doc->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_doc:nullable ADoc(ADoc)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AStdClassdef> */
-var2 = NULL;
+var8 = NULL;
 if (var_n_kwredef == NULL) {
-var3 = 0; /* is null */
+var9 = 0; /* is null */
 } else {
-var3 = 1; /* arg is null and recv is not */
+var9 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_kwredef,var8) on <var_n_kwredef:nullable TKwredef> */
+var_other = var8;
+{
+var13 = ((short int (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwredef, var_other) /* == on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
+var12 = var13;
+}
+var14 = !var12;
+var10 = var14;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
+}
+if (var9){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwredef,self) on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+var_n_kwredef->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+RET_LABEL15:(void)0;
+}
 }
-if (var3){
-((void (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwredef, self) /* parent= on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
 } else {
 }
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 558);
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 402);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AStdClassdef> */
 if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 559);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 403);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_visibility->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_visibility, self) /* parent= on <var_n_visibility:nullable AVisibility>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_visibility,self) on <var_n_visibility:nullable AVisibility> */
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_classkind == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 560);
+var_n_visibility->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_visibility:nullable AVisibility> */
+RET_LABEL16:(void)0;
+}
+}
+if (unlikely(var_n_classkind == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 404);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_classkind].val = var_n_classkind; /* _n_classkind on <self:AStdClassdef> */
 if (var_n_classkind == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 561);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 405);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_classkind->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_classkind, self) /* parent= on <var_n_classkind:nullable AClasskind>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_classkind,self) on <var_n_classkind:nullable AClasskind> */
+if (unlikely(var_n_classkind == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_classkind->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_classkind:nullable AClasskind> */
+RET_LABEL17:(void)0;
+}
 }
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_id].val = var_n_id; /* _n_id on <self:AStdClassdef> */
-var4 = NULL;
+var18 = NULL;
 if (var_n_id == NULL) {
-var5 = 0; /* is null */
+var19 = 0; /* is null */
 } else {
-var5 = 1; /* arg is null and recv is not */
+var19 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_id,var18) on <var_n_id:nullable TClassid> */
+var_other = var18;
+{
+var23 = ((short int (*)(val*, val*))(var_n_id->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_id, var_other) /* == on <var_n_id:nullable TClassid(TClassid)>*/;
+var22 = var23;
+}
+var24 = !var22;
+var20 = var24;
+goto RET_LABEL21;
+RET_LABEL21:(void)0;
+}
+var19 = var20;
+}
+if (var19){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_id,self) on <var_n_id:nullable TClassid(TClassid)> */
+var_n_id->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_id:nullable TClassid(TClassid)> */
+RET_LABEL25:(void)0;
 }
-if (var5){
-((void (*)(val*, val*))(var_n_id->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_id, self) /* parent= on <var_n_id:nullable TClassid(TClassid)>*/;
-} else {
 }
-var6 = ((val* (*)(val*))(var_n_formaldefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_n_formaldefs) /* iterator on <var_n_formaldefs:Collection[Object]>*/;
-for(;;) {
-var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
-if(!var7) break;
-var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
-var_n = var8;
-/* <var_n:Object> isa AFormaldef */
-cltype = type_parser_nodes__AFormaldef.color;
-idtype = type_parser_nodes__AFormaldef.id;
-if(cltype >= var_n->type->table_size) {
-var9 = 0;
 } else {
-var9 = var_n->type->type_table[cltype] == idtype;
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 567);
+{
+{ /* Inline parser_nodes#AStdClassdef#n_formaldefs (self) on <self:AStdClassdef> */
+var28 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <self:AStdClassdef> */
+if (unlikely(var28 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_formaldefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 940);
 show_backtrace(1);
 }
-var10 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <self:AStdClassdef> */
-if (var10 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_formaldefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 568);
-show_backtrace(1);
+var26 = var28;
+RET_LABEL27:(void)0;
+}
 }
-((void (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var10, var_n) /* add on <var10:ANodes[AFormaldef]>*/;
-((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n, self) /* parent= on <var_n:Object(AFormaldef)>*/;
-CONTINUE_label: (void)0;
-((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
+{
+parser_nodes__ANodes__unsafe_add_all(var26, var_n_formaldefs); /* Direct call parser_nodes#ANodes#unsafe_add_all on <var26:ANodes[AFormaldef]>*/
 }
-BREAK_label: (void)0;
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:AStdClassdef> */
-var11 = NULL;
+var29 = NULL;
 if (var_n_annotations == NULL) {
-var12 = 0; /* is null */
+var30 = 0; /* is null */
 } else {
-var12 = 1; /* arg is null and recv is not */
+var30 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_annotations,var29) on <var_n_annotations:nullable AAnnotations> */
+var_other = var29;
+{
+var34 = ((short int (*)(val*, val*))(var_n_annotations->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_annotations, var_other) /* == on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
+var33 = var34;
+}
+var35 = !var33;
+var31 = var35;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
+}
+var30 = var31;
+}
+if (var30){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_annotations,self) on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+var_n_annotations->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+RET_LABEL36:(void)0;
+}
 }
-if (var12){
-((void (*)(val*, val*))(var_n_annotations->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_annotations, self) /* parent= on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
 } else {
 }
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_extern_code_block].val = var_n_extern_code_block; /* _n_extern_code_block on <self:AStdClassdef> */
-var13 = NULL;
+var37 = NULL;
 if (var_n_extern_code_block == NULL) {
-var14 = 0; /* is null */
+var38 = 0; /* is null */
 } else {
-var14 = 1; /* arg is null and recv is not */
+var38 = 1; /* arg is null and recv is not */
 }
-if (var14){
-((void (*)(val*, val*))(var_n_extern_code_block->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_extern_code_block, self) /* parent= on <var_n_extern_code_block:nullable AExternCodeBlock(AExternCodeBlock)>*/;
-} else {
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_extern_code_block,var37) on <var_n_extern_code_block:nullable AExternCodeBlock> */
+var_other = var37;
+{
+var42 = ((short int (*)(val*, val*))(var_n_extern_code_block->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_extern_code_block, var_other) /* == on <var_n_extern_code_block:nullable AExternCodeBlock(AExternCodeBlock)>*/;
+var41 = var42;
 }
-var15 = ((val* (*)(val*))(var_n_superclasses->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_n_superclasses) /* iterator on <var_n_superclasses:Collection[Object]>*/;
-for(;;) {
-var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
-if(!var16) break;
-var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
-var_n18 = var17;
-/* <var_n18:Object> isa ASuperclass */
-cltype20 = type_parser_nodes__ASuperclass.color;
-idtype21 = type_parser_nodes__ASuperclass.id;
-if(cltype20 >= var_n18->type->table_size) {
-var19 = 0;
-} else {
-var19 = var_n18->type->type_table[cltype20] == idtype21;
+var43 = !var41;
+var39 = var43;
+goto RET_LABEL40;
+RET_LABEL40:(void)0;
 }
-if (!var19) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 580);
-show_backtrace(1);
+var38 = var39;
 }
-var22 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <self:AStdClassdef> */
-if (var22 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_superclasses");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 581);
-show_backtrace(1);
+if (var38){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_extern_code_block,self) on <var_n_extern_code_block:nullable AExternCodeBlock(AExternCodeBlock)> */
+var_n_extern_code_block->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_extern_code_block:nullable AExternCodeBlock(AExternCodeBlock)> */
+RET_LABEL44:(void)0;
 }
-((void (*)(val*, val*))(var22->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var22, var_n18) /* add on <var22:ANodes[ASuperclass]>*/;
-((void (*)(val*, val*))(var_n18->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n18, self) /* parent= on <var_n18:Object(ASuperclass)>*/;
-CONTINUE_label23: (void)0;
-((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
 }
-BREAK_label23: (void)0;
-var24 = ((val* (*)(val*))(var_n_propdefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_n_propdefs) /* iterator on <var_n_propdefs:Collection[Object]>*/;
-for(;;) {
-var25 = ((short int (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var24) /* is_ok on <var24:Iterator[nullable Object]>*/;
-if(!var25) break;
-var26 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__item]))(var24) /* item on <var24:Iterator[nullable Object]>*/;
-var_n27 = var26;
-/* <var_n27:Object> isa APropdef */
-cltype29 = type_parser_nodes__APropdef.color;
-idtype30 = type_parser_nodes__APropdef.id;
-if(cltype29 >= var_n27->type->table_size) {
-var28 = 0;
 } else {
-var28 = var_n27->type->type_table[cltype29] == idtype30;
 }
-if (!var28) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 585);
+{
+{ /* Inline parser_nodes#AStdClassdef#n_superclasses (self) on <self:AStdClassdef> */
+var47 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <self:AStdClassdef> */
+if (unlikely(var47 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_superclasses");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 942);
 show_backtrace(1);
 }
-var31 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AStdClassdef> */
-if (var31 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 586);
+var45 = var47;
+RET_LABEL46:(void)0;
+}
+}
+{
+parser_nodes__ANodes__unsafe_add_all(var45, var_n_superclasses); /* Direct call parser_nodes#ANodes#unsafe_add_all on <var45:ANodes[ASuperclass]>*/
+}
+{
+{ /* Inline parser_nodes#AClassdef#n_propdefs (self) on <self:AStdClassdef> */
+var50 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AStdClassdef> */
+if (unlikely(var50 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var31->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var31, var_n27) /* add on <var31:ANodes[APropdef]>*/;
-((void (*)(val*, val*))(var_n27->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n27, self) /* parent= on <var_n27:Object(APropdef)>*/;
-CONTINUE_label32: (void)0;
-((void (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__next]))(var24) /* next on <var24:Iterator[nullable Object]>*/;
+var48 = var50;
+RET_LABEL49:(void)0;
 }
-BREAK_label32: (void)0;
-if (var_n_kwend == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 589);
+}
+{
+parser_nodes__ANodes__unsafe_add_all(var48, var_n_propdefs); /* Direct call parser_nodes#ANodes#unsafe_add_all on <var48:ANodes[APropdef]>*/
+}
+if (unlikely(var_n_kwend == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 415);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwend].val = var_n_kwend; /* _n_kwend on <self:AStdClassdef> */
 if (var_n_kwend == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 590);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 416);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwend->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwend, self) /* parent= on <var_n_kwend:nullable TKwend>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwend,self) on <var_n_kwend:nullable TKwend> */
+if (unlikely(var_n_kwend == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_kwend->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwend:nullable TKwend> */
+RET_LABEL51:(void)0;
+}
 }
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#init_astdclassdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable AClasskind, nullable TClassid, Collection[Object], nullable AAnnotations, nullable AExternCodeBlock, Collection[Object], Collection[Object], nullable TKwend) */
 void VIRTUAL_parser_prod__AStdClassdef__init_astdclassdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7, val* p8, val* p9, val* p10) {
-parser_prod__AStdClassdef__init_astdclassdef(self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
+parser_prod__AStdClassdef__init_astdclassdef(self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); /* Direct call parser_prod#AStdClassdef#init_astdclassdef on <self:Object(AStdClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#replace_child for (self: AStdClassdef, ANode, nullable ANode) */
@@ -2386,637 +2947,511 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : nullable ADoc */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : null */;
-val* var6 /* : nullable TKwredef */;
-short int var7 /* : Bool */;
-val* var8 /* : null */;
+const char* var_class_name;
+val* var8 /* : nullable TKwredef */;
 short int var9 /* : Bool */;
 short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var13 /* : null */;
-val* var14 /* : AVisibility */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
 short int var15 /* : Bool */;
-val* var16 /* : null */;
-short int var17 /* : Bool */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-val* var21 /* : AClasskind */;
-short int var22 /* : Bool */;
-val* var23 /* : null */;
-short int var24 /* : Bool */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
+val* var19 /* : AVisibility */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
 short int var25 /* : Bool */;
-int cltype26;
-int idtype27;
-val* var28 /* : nullable TClassid */;
-short int var29 /* : Bool */;
-val* var30 /* : null */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+const char* var_class_name29;
+val* var30 /* : AClasskind */;
 short int var31 /* : Bool */;
 short int var32 /* : Bool */;
-int cltype33;
-int idtype34;
-val* var35 /* : null */;
-val* var36 /* : Range[Int] */;
-long var37 /* : Int */;
-val* var38 /* : ANodes[AFormaldef] */;
-long var39 /* : Int */;
-val* var40 /* : Discrete */;
-val* var41 /* : Discrete */;
-val* var42 /* : Iterator[nullable Object] */;
+short int var34 /* : Bool */;
+short int var36 /* : Bool */;
+short int var37 /* : Bool */;
+int cltype38;
+int idtype39;
+const char* var_class_name40;
+val* var41 /* : nullable TClassid */;
+short int var42 /* : Bool */;
 short int var43 /* : Bool */;
-val* var44 /* : nullable Object */;
-long var_i /* var i: Int */;
-long var45 /* : Int */;
-val* var46 /* : ANodes[AFormaldef] */;
-val* var47 /* : nullable Object */;
+short int var45 /* : Bool */;
+short int var47 /* : Bool */;
 short int var48 /* : Bool */;
-val* var49 /* : null */;
-short int var50 /* : Bool */;
-short int var51 /* : Bool */;
-int cltype52;
-int idtype53;
+int cltype49;
+int idtype50;
+const char* var_class_name51;
+val* var52 /* : ANodes[AFormaldef] */;
 val* var54 /* : ANodes[AFormaldef] */;
-val* var55 /* : ANodes[AFormaldef] */;
+short int var55 /* : Bool */;
 val* var56 /* : nullable AAnnotations */;
 short int var57 /* : Bool */;
-val* var58 /* : null */;
-short int var59 /* : Bool */;
+short int var58 /* : Bool */;
 short int var60 /* : Bool */;
-int cltype61;
-int idtype62;
-val* var63 /* : null */;
-val* var64 /* : nullable AExternCodeBlock */;
-short int var65 /* : Bool */;
-val* var66 /* : null */;
-short int var67 /* : Bool */;
+short int var62 /* : Bool */;
+short int var63 /* : Bool */;
+int cltype64;
+int idtype65;
+const char* var_class_name66;
+val* var67 /* : nullable AExternCodeBlock */;
 short int var68 /* : Bool */;
-int cltype69;
-int idtype70;
-val* var71 /* : null */;
-val* var72 /* : Range[Int] */;
-long var73 /* : Int */;
-val* var74 /* : ANodes[ASuperclass] */;
-long var75 /* : Int */;
-val* var76 /* : Discrete */;
-val* var77 /* : Discrete */;
-val* var78 /* : Iterator[nullable Object] */;
-short int var79 /* : Bool */;
-val* var80 /* : nullable Object */;
-long var_i81 /* var i: Int */;
-long var82 /* : Int */;
-val* var83 /* : ANodes[ASuperclass] */;
-val* var84 /* : nullable Object */;
+short int var69 /* : Bool */;
+short int var71 /* : Bool */;
+short int var73 /* : Bool */;
+short int var74 /* : Bool */;
+int cltype75;
+int idtype76;
+const char* var_class_name77;
+val* var78 /* : ANodes[ASuperclass] */;
+val* var80 /* : ANodes[ASuperclass] */;
+short int var81 /* : Bool */;
+val* var82 /* : ANodes[APropdef] */;
+val* var84 /* : ANodes[APropdef] */;
 short int var85 /* : Bool */;
-val* var86 /* : null */;
+val* var86 /* : TKwend */;
 short int var87 /* : Bool */;
 short int var88 /* : Bool */;
-int cltype89;
-int idtype90;
-val* var91 /* : ANodes[ASuperclass] */;
-val* var92 /* : ANodes[ASuperclass] */;
-val* var94 /* : Range[Int] */;
-long var95 /* : Int */;
-val* var96 /* : ANodes[APropdef] */;
-long var97 /* : Int */;
-val* var98 /* : Discrete */;
-val* var99 /* : Discrete */;
-val* var100 /* : Iterator[nullable Object] */;
-short int var101 /* : Bool */;
-val* var102 /* : nullable Object */;
-long var_i103 /* var i: Int */;
-long var104 /* : Int */;
-val* var105 /* : ANodes[APropdef] */;
-val* var106 /* : nullable Object */;
-short int var107 /* : Bool */;
-val* var108 /* : null */;
-short int var109 /* : Bool */;
-short int var110 /* : Bool */;
-int cltype111;
-int idtype112;
-val* var113 /* : ANodes[APropdef] */;
-val* var114 /* : ANodes[APropdef] */;
-val* var116 /* : TKwend */;
-short int var117 /* : Bool */;
-val* var118 /* : null */;
-short int var119 /* : Bool */;
-short int var120 /* : Bool */;
-int cltype121;
-int idtype122;
+short int var90 /* : Bool */;
+short int var92 /* : Bool */;
+short int var93 /* : Bool */;
+int cltype94;
+int idtype95;
+const char* var_class_name96;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AStdClassdef___n_doc].val; /* _n_doc on <self:AStdClassdef> */
 if (var == NULL) {
 var1 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:nullable ADoc>*/;
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:nullable ADoc> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable ADoc(ADoc)> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
 }
 if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
+/* <var_new_child:nullable ANode> isa nullable ADoc */
+cltype = type_nullable_parser_nodes__ADoc.color;
+idtype = type_nullable_parser_nodes__ADoc.id;
+if(var_new_child == NULL) {
+var7 = 1;
 } else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ADoc */
-cltype = type_parser_nodes__ADoc.color;
-idtype = type_parser_nodes__ADoc.id;
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 598);
+}
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ADoc", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 422);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_doc].val = var_new_child; /* _n_doc on <self:AStdClassdef> */
-} else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_doc].val = var5; /* _n_doc on <self:AStdClassdef> */
+{
+parser_prod__AStdClassdef__n_doc_61d(self, var_new_child); /* Direct call parser_prod#AStdClassdef#n_doc= on <self:AStdClassdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var6 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwredef].val; /* _n_kwredef on <self:AStdClassdef> */
-if (var6 == NULL) {
-var7 = 0; /* <var_old_child:ANode> cannot be null */
+var8 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwredef].val; /* _n_kwredef on <self:AStdClassdef> */
+if (var8 == NULL) {
+var9 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:nullable TKwredef>*/;
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:nullable TKwredef> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:nullable TKwredef(TKwredef)> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (var7){
-var8 = NULL;
-if (var_new_child == NULL) {
-var9 = 0; /* is null */
-} else {
-var9 = 1; /* arg is null and recv is not */
+}
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
 }
 if (var9){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwredef */
-cltype11 = type_parser_nodes__TKwredef.color;
-idtype12 = type_parser_nodes__TKwredef.id;
-if(cltype11 >= var_new_child->type->table_size) {
-var10 = 0;
+/* <var_new_child:nullable ANode> isa nullable TKwredef */
+cltype16 = type_nullable_parser_nodes__TKwredef.color;
+idtype17 = type_nullable_parser_nodes__TKwredef.id;
+if(var_new_child == NULL) {
+var15 = 1;
+} else {
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
 } else {
-var10 = var_new_child->type->type_table[cltype11] == idtype12;
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
+}
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 608);
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TKwredef", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 426);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AStdClassdef> */
-} else {
-var13 = NULL;
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwredef].val = var13; /* _n_kwredef on <self:AStdClassdef> */
+{
+parser_prod__AStdClassdef__n_kwredef_61d(self, var_new_child); /* Direct call parser_prod#AStdClassdef#n_kwredef= on <self:AStdClassdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var14 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_visibility].val; /* _n_visibility on <self:AStdClassdef> */
-if (var14 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_visibility");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 615);
+var19 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_visibility].val; /* _n_visibility on <self:AStdClassdef> */
+if (unlikely(var19 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 429);
 show_backtrace(1);
 }
-var15 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var_old_child) /* == on <var14:AVisibility>*/;
-if (var15){
-var16 = NULL;
-if (var_new_child == NULL) {
-var17 = 0; /* is null */
-} else {
-var17 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var19,var_old_child) on <var19:AVisibility> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var19,var_other) on <var19:AVisibility> */
+var25 = var19 == var_other;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
-if (var17){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AVisibility */
-cltype19 = type_parser_nodes__AVisibility.color;
-idtype20 = type_parser_nodes__AVisibility.id;
-if(cltype19 >= var_new_child->type->table_size) {
-var18 = 0;
-} else {
-var18 = var_new_child->type->type_table[cltype19] == idtype20;
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 618);
-show_backtrace(1);
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
+}
+var20 = var21;
 }
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_visibility].val = var_new_child; /* _n_visibility on <self:AStdClassdef> */
+if (var20){
+/* <var_new_child:nullable ANode> isa AVisibility */
+cltype27 = type_parser_nodes__AVisibility.color;
+idtype28 = type_parser_nodes__AVisibility.id;
+if(var_new_child == NULL) {
+var26 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 621);
+if(cltype27 >= var_new_child->type->table_size) {
+var26 = 0;
+} else {
+var26 = var_new_child->type->type_table[cltype27] == idtype28;
+}
+}
+if (unlikely(!var26)) {
+var_class_name29 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AVisibility", var_class_name29);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 430);
 show_backtrace(1);
 }
+{
+parser_prod__AStdClassdef__n_visibility_61d(self, var_new_child); /* Direct call parser_prod#AStdClassdef#n_visibility= on <self:AStdClassdef>*/
+}
 goto RET_LABEL;
 } else {
 }
-var21 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_classkind].val; /* _n_classkind on <self:AStdClassdef> */
-if (var21 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_classkind");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 625);
+var30 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_classkind].val; /* _n_classkind on <self:AStdClassdef> */
+if (unlikely(var30 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classkind");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 433);
 show_backtrace(1);
 }
-var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_old_child) /* == on <var21:AClasskind>*/;
-if (var22){
-var23 = NULL;
-if (var_new_child == NULL) {
-var24 = 0; /* is null */
-} else {
-var24 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var30,var_old_child) on <var30:AClasskind> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var30,var_other) on <var30:AClasskind> */
+var36 = var30 == var_other;
+var34 = var36;
+goto RET_LABEL35;
+RET_LABEL35:(void)0;
 }
-if (var24){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AClasskind */
-cltype26 = type_parser_nodes__AClasskind.color;
-idtype27 = type_parser_nodes__AClasskind.id;
-if(cltype26 >= var_new_child->type->table_size) {
-var25 = 0;
-} else {
-var25 = var_new_child->type->type_table[cltype26] == idtype27;
 }
-if (!var25) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 628);
-show_backtrace(1);
+var32 = var34;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
 }
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_classkind].val = var_new_child; /* _n_classkind on <self:AStdClassdef> */
+var31 = var32;
+}
+if (var31){
+/* <var_new_child:nullable ANode> isa AClasskind */
+cltype38 = type_parser_nodes__AClasskind.color;
+idtype39 = type_parser_nodes__AClasskind.id;
+if(var_new_child == NULL) {
+var37 = 0;
+} else {
+if(cltype38 >= var_new_child->type->table_size) {
+var37 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 631);
+var37 = var_new_child->type->type_table[cltype38] == idtype39;
+}
+}
+if (unlikely(!var37)) {
+var_class_name40 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AClasskind", var_class_name40);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 434);
 show_backtrace(1);
 }
+{
+parser_prod__AStdClassdef__n_classkind_61d(self, var_new_child); /* Direct call parser_prod#AStdClassdef#n_classkind= on <self:AStdClassdef>*/
+}
 goto RET_LABEL;
 } else {
 }
-var28 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_id].val; /* _n_id on <self:AStdClassdef> */
-if (var28 == NULL) {
-var29 = 0; /* <var_old_child:ANode> cannot be null */
+var41 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_id].val; /* _n_id on <self:AStdClassdef> */
+if (var41 == NULL) {
+var42 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var29 = ((short int (*)(val*, val*))(var28->class->vft[COLOR_kernel__Object___61d_61d]))(var28, var_old_child) /* == on <var28:nullable TClassid>*/;
+{ /* Inline kernel#Object#== (var41,var_old_child) on <var41:nullable TClassid> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var41,var_other) on <var41:nullable TClassid(TClassid)> */
+var47 = var41 == var_other;
+var45 = var47;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
 }
-if (var29){
-var30 = NULL;
-if (var_new_child == NULL) {
-var31 = 0; /* is null */
-} else {
-var31 = 1; /* arg is null and recv is not */
 }
-if (var31){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TClassid */
-cltype33 = type_parser_nodes__TClassid.color;
-idtype34 = type_parser_nodes__TClassid.id;
-if(cltype33 >= var_new_child->type->table_size) {
-var32 = 0;
+var43 = var45;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
+}
+var42 = var43;
+}
+if (var42){
+/* <var_new_child:nullable ANode> isa nullable TClassid */
+cltype49 = type_nullable_parser_nodes__TClassid.color;
+idtype50 = type_nullable_parser_nodes__TClassid.id;
+if(var_new_child == NULL) {
+var48 = 1;
+} else {
+if(cltype49 >= var_new_child->type->table_size) {
+var48 = 0;
 } else {
-var32 = var_new_child->type->type_table[cltype33] == idtype34;
+var48 = var_new_child->type->type_table[cltype49] == idtype50;
 }
-if (!var32) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 638);
+}
+if (unlikely(!var48)) {
+var_class_name51 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TClassid", var_class_name51);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 438);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_id].val = var_new_child; /* _n_id on <self:AStdClassdef> */
-} else {
-var35 = NULL;
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_id].val = var35; /* _n_id on <self:AStdClassdef> */
+{
+parser_prod__AStdClassdef__n_id_61d(self, var_new_child); /* Direct call parser_prod#AStdClassdef#n_id= on <self:AStdClassdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var36 = NEW_range__Range(&type_range__Rangekernel__Int);
-var37 = 0;
-var38 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <self:AStdClassdef> */
-if (var38 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_formaldefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 645);
-show_backtrace(1);
-}
-var39 = ((long (*)(val*))(var38->class->vft[COLOR_abstract_collection__Collection__length]))(var38) /* length on <var38:ANodes[AFormaldef]>*/;
-var40 = BOX_kernel__Int(var37); /* autobox from Int to Discrete */
-var41 = BOX_kernel__Int(var39); /* autobox from Int to Discrete */
-((void (*)(val*, val*, val*))(var36->class->vft[COLOR_range__Range__without_last]))(var36, var40, var41) /* without_last on <var36:Range[Int]>*/;
-var42 = ((val* (*)(val*))(var36->class->vft[COLOR_abstract_collection__Collection__iterator]))(var36) /* iterator on <var36:Range[Int]>*/;
-for(;;) {
-var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
-if(!var43) break;
-var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
-var45 = ((struct instance_kernel__Int*)var44)->value; /* autounbox from nullable Object to Int */;
-var_i = var45;
-var46 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <self:AStdClassdef> */
-if (var46 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_formaldefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 646);
-show_backtrace(1);
-}
-var47 = ((val* (*)(val*, long))(var46->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var46, var_i) /* [] on <var46:ANodes[AFormaldef]>*/;
-var48 = ((short int (*)(val*, val*))(var47->class->vft[COLOR_kernel__Object___61d_61d]))(var47, var_old_child) /* == on <var47:nullable Object(AFormaldef)>*/;
-if (var48){
-var49 = NULL;
-if (var_new_child == NULL) {
-var50 = 0; /* is null */
-} else {
-var50 = 1; /* arg is null and recv is not */
-}
-if (var50){
-/* <var_new_child:nullable ANode(ANode)> isa AFormaldef */
-cltype52 = type_parser_nodes__AFormaldef.color;
-idtype53 = type_parser_nodes__AFormaldef.id;
-if(cltype52 >= var_new_child->type->table_size) {
-var51 = 0;
-} else {
-var51 = var_new_child->type->type_table[cltype52] == idtype53;
-}
-if (!var51) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 648);
-show_backtrace(1);
-}
+{
+{ /* Inline parser_nodes#AStdClassdef#n_formaldefs (self) on <self:AStdClassdef> */
 var54 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <self:AStdClassdef> */
-if (var54 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_formaldefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 649);
+if (unlikely(var54 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_formaldefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 940);
 show_backtrace(1);
 }
-((void (*)(val*, long, val*))(var54->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var54, var_i, var_new_child) /* []= on <var54:ANodes[AFormaldef]>*/;
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(AFormaldef)>*/;
-} else {
-var55 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <self:AStdClassdef> */
-if (var55 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_formaldefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 652);
-show_backtrace(1);
+var52 = var54;
+RET_LABEL53:(void)0;
 }
-((void (*)(val*, long))(var55->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var55, var_i) /* remove_at on <var55:ANodes[AFormaldef]>*/;
 }
+{
+var55 = parser_nodes__ANodes__replace_child(var52, var_old_child, var_new_child);
+}
+if (var55){
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label: (void)0;
-((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
-}
-BREAK_label: (void)0;
 var56 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AStdClassdef> */
 if (var56 == NULL) {
 var57 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var57 = ((short int (*)(val*, val*))(var56->class->vft[COLOR_kernel__Object___61d_61d]))(var56, var_old_child) /* == on <var56:nullable AAnnotations>*/;
-}
-if (var57){
-var58 = NULL;
-if (var_new_child == NULL) {
-var59 = 0; /* is null */
-} else {
-var59 = 1; /* arg is null and recv is not */
-}
-if (var59){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AAnnotations */
-cltype61 = type_parser_nodes__AAnnotations.color;
-idtype62 = type_parser_nodes__AAnnotations.id;
-if(cltype61 >= var_new_child->type->table_size) {
-var60 = 0;
-} else {
-var60 = var_new_child->type->type_table[cltype61] == idtype62;
+{ /* Inline kernel#Object#== (var56,var_old_child) on <var56:nullable AAnnotations> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var56,var_other) on <var56:nullable AAnnotations(AAnnotations)> */
+var62 = var56 == var_other;
+var60 = var62;
+goto RET_LABEL61;
+RET_LABEL61:(void)0;
 }
-if (!var60) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 660);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:AStdClassdef> */
-} else {
-var63 = NULL;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var63; /* _n_annotations on <self:AStdClassdef> */
+var58 = var60;
+goto RET_LABEL59;
+RET_LABEL59:(void)0;
 }
-goto RET_LABEL;
-} else {
+var57 = var58;
 }
-var64 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AStdClassdef> */
-if (var64 == NULL) {
-var65 = 0; /* <var_old_child:ANode> cannot be null */
+if (var57){
+/* <var_new_child:nullable ANode> isa nullable AAnnotations */
+cltype64 = type_nullable_parser_nodes__AAnnotations.color;
+idtype65 = type_nullable_parser_nodes__AAnnotations.id;
+if(var_new_child == NULL) {
+var63 = 1;
 } else {
-var65 = ((short int (*)(val*, val*))(var64->class->vft[COLOR_kernel__Object___61d_61d]))(var64, var_old_child) /* == on <var64:nullable AExternCodeBlock>*/;
-}
-if (var65){
-var66 = NULL;
-if (var_new_child == NULL) {
-var67 = 0; /* is null */
+if(cltype64 >= var_new_child->type->table_size) {
+var63 = 0;
 } else {
-var67 = 1; /* arg is null and recv is not */
+var63 = var_new_child->type->type_table[cltype64] == idtype65;
 }
-if (var67){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AExternCodeBlock */
-cltype69 = type_parser_nodes__AExternCodeBlock.color;
-idtype70 = type_parser_nodes__AExternCodeBlock.id;
-if(cltype69 >= var_new_child->type->table_size) {
-var68 = 0;
-} else {
-var68 = var_new_child->type->type_table[cltype69] == idtype70;
 }
-if (!var68) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 670);
+if (unlikely(!var63)) {
+var_class_name66 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AAnnotations", var_class_name66);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 443);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_extern_code_block].val = var_new_child; /* _n_extern_code_block on <self:AStdClassdef> */
-} else {
-var71 = NULL;
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_extern_code_block].val = var71; /* _n_extern_code_block on <self:AStdClassdef> */
+{
+parser_prod__AStdClassdef__n_annotations_61d(self, var_new_child); /* Direct call parser_prod#AStdClassdef#n_annotations= on <self:AStdClassdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var72 = NEW_range__Range(&type_range__Rangekernel__Int);
-var73 = 0;
-var74 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <self:AStdClassdef> */
-if (var74 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_superclasses");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 677);
-show_backtrace(1);
-}
-var75 = ((long (*)(val*))(var74->class->vft[COLOR_abstract_collection__Collection__length]))(var74) /* length on <var74:ANodes[ASuperclass]>*/;
-var76 = BOX_kernel__Int(var73); /* autobox from Int to Discrete */
-var77 = BOX_kernel__Int(var75); /* autobox from Int to Discrete */
-((void (*)(val*, val*, val*))(var72->class->vft[COLOR_range__Range__without_last]))(var72, var76, var77) /* without_last on <var72:Range[Int]>*/;
-var78 = ((val* (*)(val*))(var72->class->vft[COLOR_abstract_collection__Collection__iterator]))(var72) /* iterator on <var72:Range[Int]>*/;
-for(;;) {
-var79 = ((short int (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var78) /* is_ok on <var78:Iterator[nullable Object]>*/;
-if(!var79) break;
-var80 = ((val* (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__item]))(var78) /* item on <var78:Iterator[nullable Object]>*/;
-var82 = ((struct instance_kernel__Int*)var80)->value; /* autounbox from nullable Object to Int */;
-var_i81 = var82;
-var83 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <self:AStdClassdef> */
-if (var83 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_superclasses");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 678);
-show_backtrace(1);
-}
-var84 = ((val* (*)(val*, long))(var83->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var83, var_i81) /* [] on <var83:ANodes[ASuperclass]>*/;
-var85 = ((short int (*)(val*, val*))(var84->class->vft[COLOR_kernel__Object___61d_61d]))(var84, var_old_child) /* == on <var84:nullable Object(ASuperclass)>*/;
-if (var85){
-var86 = NULL;
-if (var_new_child == NULL) {
-var87 = 0; /* is null */
+var67 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AStdClassdef> */
+if (var67 == NULL) {
+var68 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var87 = 1; /* arg is null and recv is not */
+{ /* Inline kernel#Object#== (var67,var_old_child) on <var67:nullable AExternCodeBlock> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var67,var_other) on <var67:nullable AExternCodeBlock(AExternCodeBlock)> */
+var73 = var67 == var_other;
+var71 = var73;
+goto RET_LABEL72;
+RET_LABEL72:(void)0;
 }
-if (var87){
-/* <var_new_child:nullable ANode(ANode)> isa ASuperclass */
-cltype89 = type_parser_nodes__ASuperclass.color;
-idtype90 = type_parser_nodes__ASuperclass.id;
-if(cltype89 >= var_new_child->type->table_size) {
-var88 = 0;
-} else {
-var88 = var_new_child->type->type_table[cltype89] == idtype90;
 }
-if (!var88) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 680);
-show_backtrace(1);
+var69 = var71;
+goto RET_LABEL70;
+RET_LABEL70:(void)0;
 }
-var91 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <self:AStdClassdef> */
-if (var91 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_superclasses");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 681);
-show_backtrace(1);
+var68 = var69;
 }
-((void (*)(val*, long, val*))(var91->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var91, var_i81, var_new_child) /* []= on <var91:ANodes[ASuperclass]>*/;
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ASuperclass)>*/;
+if (var68){
+/* <var_new_child:nullable ANode> isa nullable AExternCodeBlock */
+cltype75 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype76 = type_nullable_parser_nodes__AExternCodeBlock.id;
+if(var_new_child == NULL) {
+var74 = 1;
+} else {
+if(cltype75 >= var_new_child->type->table_size) {
+var74 = 0;
 } else {
-var92 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <self:AStdClassdef> */
-if (var92 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_superclasses");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 684);
+var74 = var_new_child->type->type_table[cltype75] == idtype76;
+}
+}
+if (unlikely(!var74)) {
+var_class_name77 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AExternCodeBlock", var_class_name77);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 447);
 show_backtrace(1);
 }
-((void (*)(val*, long))(var92->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var92, var_i81) /* remove_at on <var92:ANodes[ASuperclass]>*/;
+{
+parser_prod__AStdClassdef__n_extern_code_block_61d(self, var_new_child); /* Direct call parser_prod#AStdClassdef#n_extern_code_block= on <self:AStdClassdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label93: (void)0;
-((void (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__next]))(var78) /* next on <var78:Iterator[nullable Object]>*/;
-}
-BREAK_label93: (void)0;
-var94 = NEW_range__Range(&type_range__Rangekernel__Int);
-var95 = 0;
-var96 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AStdClassdef> */
-if (var96 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 689);
+{
+{ /* Inline parser_nodes#AStdClassdef#n_superclasses (self) on <self:AStdClassdef> */
+var80 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <self:AStdClassdef> */
+if (unlikely(var80 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_superclasses");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 942);
 show_backtrace(1);
 }
-var97 = ((long (*)(val*))(var96->class->vft[COLOR_abstract_collection__Collection__length]))(var96) /* length on <var96:ANodes[APropdef]>*/;
-var98 = BOX_kernel__Int(var95); /* autobox from Int to Discrete */
-var99 = BOX_kernel__Int(var97); /* autobox from Int to Discrete */
-((void (*)(val*, val*, val*))(var94->class->vft[COLOR_range__Range__without_last]))(var94, var98, var99) /* without_last on <var94:Range[Int]>*/;
-var100 = ((val* (*)(val*))(var94->class->vft[COLOR_abstract_collection__Collection__iterator]))(var94) /* iterator on <var94:Range[Int]>*/;
-for(;;) {
-var101 = ((short int (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var100) /* is_ok on <var100:Iterator[nullable Object]>*/;
-if(!var101) break;
-var102 = ((val* (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__item]))(var100) /* item on <var100:Iterator[nullable Object]>*/;
-var104 = ((struct instance_kernel__Int*)var102)->value; /* autounbox from nullable Object to Int */;
-var_i103 = var104;
-var105 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AStdClassdef> */
-if (var105 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 690);
-show_backtrace(1);
+var78 = var80;
+RET_LABEL79:(void)0;
 }
-var106 = ((val* (*)(val*, long))(var105->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var105, var_i103) /* [] on <var105:ANodes[APropdef]>*/;
-var107 = ((short int (*)(val*, val*))(var106->class->vft[COLOR_kernel__Object___61d_61d]))(var106, var_old_child) /* == on <var106:nullable Object(APropdef)>*/;
-if (var107){
-var108 = NULL;
-if (var_new_child == NULL) {
-var109 = 0; /* is null */
-} else {
-var109 = 1; /* arg is null and recv is not */
 }
-if (var109){
-/* <var_new_child:nullable ANode(ANode)> isa APropdef */
-cltype111 = type_parser_nodes__APropdef.color;
-idtype112 = type_parser_nodes__APropdef.id;
-if(cltype111 >= var_new_child->type->table_size) {
-var110 = 0;
+{
+var81 = parser_nodes__ANodes__replace_child(var78, var_old_child, var_new_child);
+}
+if (var81){
+goto RET_LABEL;
 } else {
-var110 = var_new_child->type->type_table[cltype111] == idtype112;
 }
-if (!var110) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 692);
+{
+{ /* Inline parser_nodes#AClassdef#n_propdefs (self) on <self:AStdClassdef> */
+var84 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AStdClassdef> */
+if (unlikely(var84 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
 show_backtrace(1);
 }
-var113 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AStdClassdef> */
-if (var113 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 693);
-show_backtrace(1);
+var82 = var84;
+RET_LABEL83:(void)0;
 }
-((void (*)(val*, long, val*))(var113->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var113, var_i103, var_new_child) /* []= on <var113:ANodes[APropdef]>*/;
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(APropdef)>*/;
-} else {
-var114 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AStdClassdef> */
-if (var114 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 696);
-show_backtrace(1);
 }
-((void (*)(val*, long))(var114->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var114, var_i103) /* remove_at on <var114:ANodes[APropdef]>*/;
+{
+var85 = parser_nodes__ANodes__replace_child(var82, var_old_child, var_new_child);
 }
+if (var85){
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label115: (void)0;
-((void (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__next]))(var100) /* next on <var100:Iterator[nullable Object]>*/;
-}
-BREAK_label115: (void)0;
-var116 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwend].val; /* _n_kwend on <self:AStdClassdef> */
-if (var116 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwend");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 701);
+var86 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwend].val; /* _n_kwend on <self:AStdClassdef> */
+if (unlikely(var86 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwend");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 452);
 show_backtrace(1);
 }
-var117 = ((short int (*)(val*, val*))(var116->class->vft[COLOR_kernel__Object___61d_61d]))(var116, var_old_child) /* == on <var116:TKwend>*/;
-if (var117){
-var118 = NULL;
-if (var_new_child == NULL) {
-var119 = 0; /* is null */
-} else {
-var119 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var86,var_old_child) on <var86:TKwend> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var86,var_other) on <var86:TKwend> */
+var92 = var86 == var_other;
+var90 = var92;
+goto RET_LABEL91;
+RET_LABEL91:(void)0;
 }
-if (var119){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwend */
-cltype121 = type_parser_nodes__TKwend.color;
-idtype122 = type_parser_nodes__TKwend.id;
-if(cltype121 >= var_new_child->type->table_size) {
-var120 = 0;
-} else {
-var120 = var_new_child->type->type_table[cltype121] == idtype122;
 }
-if (!var120) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 704);
-show_backtrace(1);
+var88 = var90;
+goto RET_LABEL89;
+RET_LABEL89:(void)0;
+}
+var87 = var88;
 }
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwend].val = var_new_child; /* _n_kwend on <self:AStdClassdef> */
+if (var87){
+/* <var_new_child:nullable ANode> isa TKwend */
+cltype94 = type_parser_nodes__TKwend.color;
+idtype95 = type_parser_nodes__TKwend.id;
+if(var_new_child == NULL) {
+var93 = 0;
+} else {
+if(cltype94 >= var_new_child->type->table_size) {
+var93 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 707);
+var93 = var_new_child->type->type_table[cltype94] == idtype95;
+}
+}
+if (unlikely(!var93)) {
+var_class_name96 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwend", var_class_name96);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 453);
 show_backtrace(1);
 }
+{
+parser_prod__AStdClassdef__n_kwend_61d(self, var_new_child); /* Direct call parser_prod#AStdClassdef#n_kwend= on <self:AStdClassdef>*/
+}
 goto RET_LABEL;
 } else {
 }
@@ -3024,7 +3459,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AStdClassdef__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AStdClassdef__replace_child(self, p0, p1);
+parser_prod__AStdClassdef__replace_child(self, p0, p1); /* Direct call parser_prod#AStdClassdef#replace_child on <self:Object(AStdClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_doc= for (self: AStdClassdef, nullable ADoc) */
@@ -3032,6 +3467,11 @@ void parser_prod__AStdClassdef__n_doc_61d(val* self, val* p0) {
 val* var_node /* var node: nullable ADoc */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_doc].val = var_node; /* _n_doc on <self:AStdClassdef> */
 var = NULL;
@@ -3040,15 +3480,34 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable ADoc> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable ADoc(ADoc)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ADoc(ADoc)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable ADoc(ADoc)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable ADoc(ADoc)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_doc= for (self: Object, nullable ADoc) */
 void VIRTUAL_parser_prod__AStdClassdef__n_doc_61d(val* self, val* p0) {
-parser_prod__AStdClassdef__n_doc_61d(self, p0);
+parser_prod__AStdClassdef__n_doc_61d(self, p0); /* Direct call parser_prod#AStdClassdef#n_doc= on <self:Object(AStdClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_kwredef= for (self: AStdClassdef, nullable TKwredef) */
@@ -3056,23 +3515,47 @@ void parser_prod__AStdClassdef__n_kwredef_61d(val* self, val* p0) {
 val* var_node /* var node: nullable TKwredef */;
 val* var /* : null */;
 short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AStdClassdef> */
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AStdClassdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TKwredef> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TKwredef(TKwredef)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TKwredef(TKwredef)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TKwredef(TKwredef)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TKwredef(TKwredef)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_kwredef= for (self: Object, nullable TKwredef) */
 void VIRTUAL_parser_prod__AStdClassdef__n_kwredef_61d(val* self, val* p0) {
-parser_prod__AStdClassdef__n_kwredef_61d(self, p0);
+parser_prod__AStdClassdef__n_kwredef_61d(self, p0); /* Direct call parser_prod#AStdClassdef#n_kwredef= on <self:Object(AStdClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_visibility= for (self: AStdClassdef, AVisibility) */
@@ -3080,12 +3563,17 @@ void parser_prod__AStdClassdef__n_visibility_61d(val* self, val* p0) {
 val* var_node /* var node: AVisibility */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_visibility].val = var_node; /* _n_visibility on <self:AStdClassdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AVisibility>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:AVisibility> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:AVisibility> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_visibility= for (self: Object, AVisibility) */
 void VIRTUAL_parser_prod__AStdClassdef__n_visibility_61d(val* self, val* p0) {
-parser_prod__AStdClassdef__n_visibility_61d(self, p0);
+parser_prod__AStdClassdef__n_visibility_61d(self, p0); /* Direct call parser_prod#AStdClassdef#n_visibility= on <self:Object(AStdClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_classkind= for (self: AStdClassdef, AClasskind) */
@@ -3093,12 +3581,17 @@ void parser_prod__AStdClassdef__n_classkind_61d(val* self, val* p0) {
 val* var_node /* var node: AClasskind */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_classkind].val = var_node; /* _n_classkind on <self:AStdClassdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AClasskind>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:AClasskind> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:AClasskind> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_classkind= for (self: Object, AClasskind) */
 void VIRTUAL_parser_prod__AStdClassdef__n_classkind_61d(val* self, val* p0) {
-parser_prod__AStdClassdef__n_classkind_61d(self, p0);
+parser_prod__AStdClassdef__n_classkind_61d(self, p0); /* Direct call parser_prod#AStdClassdef#n_classkind= on <self:Object(AStdClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_id= for (self: AStdClassdef, nullable TClassid) */
@@ -3106,6 +3599,11 @@ void parser_prod__AStdClassdef__n_id_61d(val* self, val* p0) {
 val* var_node /* var node: nullable TClassid */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_id].val = var_node; /* _n_id on <self:AStdClassdef> */
 var = NULL;
@@ -3114,15 +3612,34 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TClassid> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TClassid(TClassid)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TClassid(TClassid)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TClassid(TClassid)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TClassid(TClassid)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_id= for (self: Object, nullable TClassid) */
 void VIRTUAL_parser_prod__AStdClassdef__n_id_61d(val* self, val* p0) {
-parser_prod__AStdClassdef__n_id_61d(self, p0);
+parser_prod__AStdClassdef__n_id_61d(self, p0); /* Direct call parser_prod#AStdClassdef#n_id= on <self:Object(AStdClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_annotations= for (self: AStdClassdef, nullable AAnnotations) */
@@ -3130,6 +3647,11 @@ void parser_prod__AStdClassdef__n_annotations_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AAnnotations */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:AStdClassdef> */
 var = NULL;
@@ -3138,15 +3660,34 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AAnnotations> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AAnnotations(AAnnotations)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AAnnotations(AAnnotations)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AAnnotations(AAnnotations)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AAnnotations(AAnnotations)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_annotations= for (self: Object, nullable AAnnotations) */
 void VIRTUAL_parser_prod__AStdClassdef__n_annotations_61d(val* self, val* p0) {
-parser_prod__AStdClassdef__n_annotations_61d(self, p0);
+parser_prod__AStdClassdef__n_annotations_61d(self, p0); /* Direct call parser_prod#AStdClassdef#n_annotations= on <self:Object(AStdClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_extern_code_block= for (self: AStdClassdef, nullable AExternCodeBlock) */
@@ -3154,6 +3695,11 @@ void parser_prod__AStdClassdef__n_extern_code_block_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AExternCodeBlock */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_extern_code_block].val = var_node; /* _n_extern_code_block on <self:AStdClassdef> */
 var = NULL;
@@ -3162,15 +3708,34 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AExternCodeBlock> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AExternCodeBlock(AExternCodeBlock)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AExternCodeBlock(AExternCodeBlock)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AExternCodeBlock(AExternCodeBlock)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AExternCodeBlock(AExternCodeBlock)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_extern_code_block= for (self: Object, nullable AExternCodeBlock) */
 void VIRTUAL_parser_prod__AStdClassdef__n_extern_code_block_61d(val* self, val* p0) {
-parser_prod__AStdClassdef__n_extern_code_block_61d(self, p0);
+parser_prod__AStdClassdef__n_extern_code_block_61d(self, p0); /* Direct call parser_prod#AStdClassdef#n_extern_code_block= on <self:Object(AStdClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_kwend= for (self: AStdClassdef, TKwend) */
@@ -3178,650 +3743,348 @@ void parser_prod__AStdClassdef__n_kwend_61d(val* self, val* p0) {
 val* var_node /* var node: TKwend */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwend].val = var_node; /* _n_kwend on <self:AStdClassdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwend>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwend> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwend> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#n_kwend= for (self: Object, TKwend) */
 void VIRTUAL_parser_prod__AStdClassdef__n_kwend_61d(val* self, val* p0) {
-parser_prod__AStdClassdef__n_kwend_61d(self, p0);
+parser_prod__AStdClassdef__n_kwend_61d(self, p0); /* Direct call parser_prod#AStdClassdef#n_kwend= on <self:Object(AStdClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#visit_all for (self: AStdClassdef, Visitor) */
 void parser_prod__AStdClassdef__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
 val* var /* : nullable ADoc */;
-val* var1 /* : null */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable ADoc */;
-val* var4 /* : nullable TKwredef */;
-val* var5 /* : null */;
-short int var6 /* : Bool */;
-val* var7 /* : nullable TKwredef */;
-val* var8 /* : AVisibility */;
-val* var9 /* : AClasskind */;
-val* var10 /* : nullable TClassid */;
-val* var11 /* : null */;
-short int var12 /* : Bool */;
-val* var13 /* : nullable TClassid */;
-val* var14 /* : ANodes[AFormaldef] */;
-val* var15 /* : Iterator[nullable Object] */;
-short int var16 /* : Bool */;
-val* var17 /* : nullable Object */;
-val* var_n /* var n: AFormaldef */;
-val* var18 /* : nullable AAnnotations */;
-val* var19 /* : null */;
-short int var20 /* : Bool */;
-val* var21 /* : nullable AAnnotations */;
-val* var22 /* : nullable AExternCodeBlock */;
-val* var23 /* : null */;
-short int var24 /* : Bool */;
-val* var25 /* : nullable AExternCodeBlock */;
-val* var26 /* : ANodes[ASuperclass] */;
-val* var27 /* : Iterator[nullable Object] */;
-short int var28 /* : Bool */;
-val* var29 /* : nullable Object */;
-val* var_n30 /* var n: ASuperclass */;
-val* var32 /* : ANodes[APropdef] */;
-val* var33 /* : Iterator[nullable Object] */;
-short int var34 /* : Bool */;
-val* var35 /* : nullable Object */;
-val* var_n36 /* var n: APropdef */;
-val* var38 /* : TKwend */;
+val* var1 /* : nullable TKwredef */;
+val* var2 /* : AVisibility */;
+val* var3 /* : AClasskind */;
+val* var4 /* : nullable TClassid */;
+val* var5 /* : ANodes[AFormaldef] */;
+val* var7 /* : ANodes[AFormaldef] */;
+val* var8 /* : nullable AAnnotations */;
+val* var9 /* : nullable AExternCodeBlock */;
+val* var10 /* : ANodes[ASuperclass] */;
+val* var12 /* : ANodes[ASuperclass] */;
+val* var13 /* : ANodes[APropdef] */;
+val* var15 /* : ANodes[APropdef] */;
+val* var16 /* : TKwend */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AStdClassdef___n_doc].val; /* _n_doc on <self:AStdClassdef> */
-var1 = NULL;
-if (var == NULL) {
-var2 = 0; /* is null */
-} else {
-var2 = 1; /* arg is null and recv is not */
-}
-if (var2){
-var3 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_doc].val; /* _n_doc on <self:AStdClassdef> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 768);
-show_backtrace(1);
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var4 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwredef].val; /* _n_kwredef on <self:AStdClassdef> */
-var5 = NULL;
-if (var4 == NULL) {
-var6 = 0; /* is null */
-} else {
-var6 = 1; /* arg is null and recv is not */
+var1 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwredef].val; /* _n_kwredef on <self:AStdClassdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var6){
-var7 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwredef].val; /* _n_kwredef on <self:AStdClassdef> */
-if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 771);
+var2 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_visibility].val; /* _n_visibility on <self:AStdClassdef> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 504);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
-} else {
+{
+parser_nodes__Visitor__enter_visit(var_v, var2); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-var8 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_visibility].val; /* _n_visibility on <self:AStdClassdef> */
-if (var8 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_visibility");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 773);
+var3 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_classkind].val; /* _n_classkind on <self:AStdClassdef> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classkind");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 505);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
-var9 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_classkind].val; /* _n_classkind on <self:AStdClassdef> */
-if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_classkind");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 774);
-show_backtrace(1);
+{
+parser_nodes__Visitor__enter_visit(var_v, var3); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var9) /* enter_visit on <var_v:Visitor>*/;
-var10 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_id].val; /* _n_id on <self:AStdClassdef> */
-var11 = NULL;
-if (var10 == NULL) {
-var12 = 0; /* is null */
-} else {
-var12 = 1; /* arg is null and recv is not */
+var4 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_id].val; /* _n_id on <self:AStdClassdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var4); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var12){
-var13 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_id].val; /* _n_id on <self:AStdClassdef> */
-if (var13 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 776);
+{
+{ /* Inline parser_nodes#AStdClassdef#n_formaldefs (self) on <self:AStdClassdef> */
+var7 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <self:AStdClassdef> */
+if (unlikely(var7 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_formaldefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 940);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var13) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var5 = var7;
+RET_LABEL6:(void)0;
 }
-var14 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <self:AStdClassdef> */
-if (var14 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_formaldefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 778);
-show_backtrace(1);
 }
-var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Collection__iterator]))(var14) /* iterator on <var14:ANodes[AFormaldef]>*/;
-for(;;) {
-var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
-if(!var16) break;
-var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
-var_n = var17;
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_n) /* enter_visit on <var_v:Visitor>*/;
-CONTINUE_label: (void)0;
-((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
+{
+parser_nodes__ANodes__visit_all(var5, var_v); /* Direct call parser_nodes#ANodes#visit_all on <var5:ANodes[AFormaldef]>*/
 }
-BREAK_label: (void)0;
-var18 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AStdClassdef> */
-var19 = NULL;
-if (var18 == NULL) {
-var20 = 0; /* is null */
-} else {
-var20 = 1; /* arg is null and recv is not */
+var8 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AStdClassdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var8); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var20){
-var21 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AStdClassdef> */
-if (var21 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 782);
-show_backtrace(1);
+var9 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AStdClassdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var9); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var21) /* enter_visit on <var_v:Visitor>*/;
-} else {
+{
+{ /* Inline parser_nodes#AStdClassdef#n_superclasses (self) on <self:AStdClassdef> */
+var12 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <self:AStdClassdef> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_superclasses");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 942);
+show_backtrace(1);
 }
-var22 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AStdClassdef> */
-var23 = NULL;
-if (var22 == NULL) {
-var24 = 0; /* is null */
-} else {
-var24 = 1; /* arg is null and recv is not */
+var10 = var12;
+RET_LABEL11:(void)0;
 }
-if (var24){
-var25 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AStdClassdef> */
-if (var25 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 785);
-show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var25) /* enter_visit on <var_v:Visitor>*/;
-} else {
+{
+parser_nodes__ANodes__visit_all(var10, var_v); /* Direct call parser_nodes#ANodes#visit_all on <var10:ANodes[ASuperclass]>*/
 }
-var26 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <self:AStdClassdef> */
-if (var26 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_superclasses");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 787);
+{
+{ /* Inline parser_nodes#AClassdef#n_propdefs (self) on <self:AStdClassdef> */
+var15 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AStdClassdef> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
 show_backtrace(1);
 }
-var27 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_collection__Collection__iterator]))(var26) /* iterator on <var26:ANodes[ASuperclass]>*/;
-for(;;) {
-var28 = ((short int (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var27) /* is_ok on <var27:Iterator[nullable Object]>*/;
-if(!var28) break;
-var29 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__item]))(var27) /* item on <var27:Iterator[nullable Object]>*/;
-var_n30 = var29;
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_n30) /* enter_visit on <var_v:Visitor>*/;
-CONTINUE_label31: (void)0;
-((void (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__next]))(var27) /* next on <var27:Iterator[nullable Object]>*/;
+var13 = var15;
+RET_LABEL14:(void)0;
 }
-BREAK_label31: (void)0;
-var32 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AStdClassdef> */
-if (var32 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 790);
-show_backtrace(1);
 }
-var33 = ((val* (*)(val*))(var32->class->vft[COLOR_abstract_collection__Collection__iterator]))(var32) /* iterator on <var32:ANodes[APropdef]>*/;
-for(;;) {
-var34 = ((short int (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var33) /* is_ok on <var33:Iterator[nullable Object]>*/;
-if(!var34) break;
-var35 = ((val* (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__item]))(var33) /* item on <var33:Iterator[nullable Object]>*/;
-var_n36 = var35;
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_n36) /* enter_visit on <var_v:Visitor>*/;
-CONTINUE_label37: (void)0;
-((void (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__next]))(var33) /* next on <var33:Iterator[nullable Object]>*/;
+{
+parser_nodes__ANodes__visit_all(var13, var_v); /* Direct call parser_nodes#ANodes#visit_all on <var13:ANodes[APropdef]>*/
 }
-BREAK_label37: (void)0;
-var38 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwend].val; /* _n_kwend on <self:AStdClassdef> */
-if (var38 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwend");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 793);
+var16 = self->attrs[COLOR_parser_nodes__AStdClassdef___n_kwend].val; /* _n_kwend on <self:AStdClassdef> */
+if (unlikely(var16 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwend");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 512);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var38) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var16); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#AStdClassdef#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AStdClassdef__visit_all(val* self, val* p0) {
-parser_prod__AStdClassdef__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ATopClassdef#empty_init for (self: ATopClassdef) */
-void parser_prod__ATopClassdef__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#ATopClassdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ATopClassdef__empty_init(val* self) {
-parser_prod__ATopClassdef__empty_init(self);
+parser_prod__AStdClassdef__visit_all(self, p0); /* Direct call parser_prod#AStdClassdef#visit_all on <self:Object(AStdClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ATopClassdef#init_atopclassdef for (self: ATopClassdef, Collection[Object]) */
 void parser_prod__ATopClassdef__init_atopclassdef(val* self, val* p0) {
 val* var_n_propdefs /* var n_propdefs: Collection[Object] */;
-val* var /* : Iterator[nullable Object] */;
-short int var1 /* : Bool */;
-val* var2 /* : nullable Object */;
-val* var_n /* var n: Object */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : ANodes[APropdef] */;
+val* var /* : ANodes[APropdef] */;
+val* var2 /* : ANodes[APropdef] */;
 var_n_propdefs = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ATopClassdef__empty_init]))(self) /* empty_init on <self:ATopClassdef>*/;
-var = ((val* (*)(val*))(var_n_propdefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_n_propdefs) /* iterator on <var_n_propdefs:Collection[Object]>*/;
-for(;;) {
-var1 = ((short int (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var) /* is_ok on <var:Iterator[nullable Object]>*/;
-if(!var1) break;
-var2 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__item]))(var) /* item on <var:Iterator[nullable Object]>*/;
-var_n = var2;
-/* <var_n:Object> isa APropdef */
-cltype = type_parser_nodes__APropdef.color;
-idtype = type_parser_nodes__APropdef.id;
-if(cltype >= var_n->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_n->type->type_table[cltype] == idtype;
-}
-if (!var3) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 805);
+{
+{ /* Inline parser_nodes#AClassdef#n_propdefs (self) on <self:ATopClassdef> */
+var2 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:ATopClassdef> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
 show_backtrace(1);
 }
-var4 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:ATopClassdef> */
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 806);
-show_backtrace(1);
+var = var2;
+RET_LABEL1:(void)0;
 }
-((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, var_n) /* add on <var4:ANodes[APropdef]>*/;
-((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n, self) /* parent= on <var_n:Object(APropdef)>*/;
-CONTINUE_label: (void)0;
-((void (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__next]))(var) /* next on <var:Iterator[nullable Object]>*/;
 }
-BREAK_label: (void)0;
+{
+parser_nodes__ANodes__unsafe_add_all(var, var_n_propdefs); /* Direct call parser_nodes#ANodes#unsafe_add_all on <var:ANodes[APropdef]>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#ATopClassdef#init_atopclassdef for (self: Object, Collection[Object]) */
 void VIRTUAL_parser_prod__ATopClassdef__init_atopclassdef(val* self, val* p0) {
-parser_prod__ATopClassdef__init_atopclassdef(self, p0);
+parser_prod__ATopClassdef__init_atopclassdef(self, p0); /* Direct call parser_prod#ATopClassdef#init_atopclassdef on <self:Object(ATopClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ATopClassdef#replace_child for (self: ATopClassdef, ANode, nullable ANode) */
 void parser_prod__ATopClassdef__replace_child(val* self, val* p0, val* p1) {
 val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
-val* var /* : Range[Int] */;
-long var1 /* : Int */;
+val* var /* : ANodes[APropdef] */;
 val* var2 /* : ANodes[APropdef] */;
-long var3 /* : Int */;
-val* var4 /* : Discrete */;
-val* var5 /* : Discrete */;
-val* var6 /* : Iterator[nullable Object] */;
-short int var7 /* : Bool */;
-val* var8 /* : nullable Object */;
-long var_i /* var i: Int */;
-long var9 /* : Int */;
-val* var10 /* : ANodes[APropdef] */;
-val* var11 /* : nullable Object */;
-short int var12 /* : Bool */;
-val* var13 /* : null */;
-short int var14 /* : Bool */;
-short int var15 /* : Bool */;
-int cltype;
-int idtype;
-val* var16 /* : ANodes[APropdef] */;
-val* var17 /* : ANodes[APropdef] */;
+short int var3 /* : Bool */;
 var_old_child = p0;
 var_new_child = p1;
-var = NEW_range__Range(&type_range__Rangekernel__Int);
-var1 = 0;
+{
+{ /* Inline parser_nodes#AClassdef#n_propdefs (self) on <self:ATopClassdef> */
 var2 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:ATopClassdef> */
-if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 813);
-show_backtrace(1);
-}
-var3 = ((long (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__length]))(var2) /* length on <var2:ANodes[APropdef]>*/;
-var4 = BOX_kernel__Int(var1); /* autobox from Int to Discrete */
-var5 = BOX_kernel__Int(var3); /* autobox from Int to Discrete */
-((void (*)(val*, val*, val*))(var->class->vft[COLOR_range__Range__without_last]))(var, var4, var5) /* without_last on <var:Range[Int]>*/;
-var6 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:Range[Int]>*/;
-for(;;) {
-var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
-if(!var7) break;
-var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
-var9 = ((struct instance_kernel__Int*)var8)->value; /* autounbox from nullable Object to Int */;
-var_i = var9;
-var10 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:ATopClassdef> */
-if (var10 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 814);
-show_backtrace(1);
-}
-var11 = ((val* (*)(val*, long))(var10->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var10, var_i) /* [] on <var10:ANodes[APropdef]>*/;
-var12 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___61d_61d]))(var11, var_old_child) /* == on <var11:nullable Object(APropdef)>*/;
-if (var12){
-var13 = NULL;
-if (var_new_child == NULL) {
-var14 = 0; /* is null */
-} else {
-var14 = 1; /* arg is null and recv is not */
-}
-if (var14){
-/* <var_new_child:nullable ANode(ANode)> isa APropdef */
-cltype = type_parser_nodes__APropdef.color;
-idtype = type_parser_nodes__APropdef.id;
-if(cltype >= var_new_child->type->table_size) {
-var15 = 0;
-} else {
-var15 = var_new_child->type->type_table[cltype] == idtype;
-}
-if (!var15) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 816);
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
 show_backtrace(1);
 }
-var16 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:ATopClassdef> */
-if (var16 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 817);
-show_backtrace(1);
+var = var2;
+RET_LABEL1:(void)0;
 }
-((void (*)(val*, long, val*))(var16->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var16, var_i, var_new_child) /* []= on <var16:ANodes[APropdef]>*/;
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(APropdef)>*/;
-} else {
-var17 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:ATopClassdef> */
-if (var17 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 820);
-show_backtrace(1);
 }
-((void (*)(val*, long))(var17->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var17, var_i) /* remove_at on <var17:ANodes[APropdef]>*/;
+{
+var3 = parser_nodes__ANodes__replace_child(var, var_old_child, var_new_child);
 }
+if (var3){
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label: (void)0;
-((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
-}
-BREAK_label: (void)0;
 RET_LABEL:;
 }
 /* method parser_prod#ATopClassdef#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__ATopClassdef__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ATopClassdef__replace_child(self, p0, p1);
+parser_prod__ATopClassdef__replace_child(self, p0, p1); /* Direct call parser_prod#ATopClassdef#replace_child on <self:Object(ATopClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ATopClassdef#visit_all for (self: ATopClassdef, Visitor) */
 void parser_prod__ATopClassdef__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
 val* var /* : ANodes[APropdef] */;
-val* var1 /* : Iterator[nullable Object] */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable Object */;
-val* var_n /* var n: APropdef */;
+val* var2 /* : ANodes[APropdef] */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:ATopClassdef> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 831);
+{
+{ /* Inline parser_nodes#AClassdef#n_propdefs (self) on <self:ATopClassdef> */
+var2 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:ATopClassdef> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
 show_backtrace(1);
 }
-var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:ANodes[APropdef]>*/;
-for(;;) {
-var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
-if(!var2) break;
-var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
-var_n = var3;
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_n) /* enter_visit on <var_v:Visitor>*/;
-CONTINUE_label: (void)0;
-((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
+var = var2;
+RET_LABEL1:(void)0;
 }
-BREAK_label: (void)0;
-RET_LABEL:;
 }
-/* method parser_prod#ATopClassdef#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__ATopClassdef__visit_all(val* self, val* p0) {
-parser_prod__ATopClassdef__visit_all(self, p0);
-RET_LABEL:;
+{
+parser_nodes__ANodes__visit_all(var, var_v); /* Direct call parser_nodes#ANodes#visit_all on <var:ANodes[APropdef]>*/
 }
-/* method parser_prod#AMainClassdef#empty_init for (self: AMainClassdef) */
-void parser_prod__AMainClassdef__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AMainClassdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AMainClassdef__empty_init(val* self) {
-parser_prod__AMainClassdef__empty_init(self);
+/* method parser_prod#ATopClassdef#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__ATopClassdef__visit_all(val* self, val* p0) {
+parser_prod__ATopClassdef__visit_all(self, p0); /* Direct call parser_prod#ATopClassdef#visit_all on <self:Object(ATopClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AMainClassdef#init_amainclassdef for (self: AMainClassdef, Collection[Object]) */
 void parser_prod__AMainClassdef__init_amainclassdef(val* self, val* p0) {
 val* var_n_propdefs /* var n_propdefs: Collection[Object] */;
-val* var /* : Iterator[nullable Object] */;
-short int var1 /* : Bool */;
-val* var2 /* : nullable Object */;
-val* var_n /* var n: Object */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : ANodes[APropdef] */;
+val* var /* : ANodes[APropdef] */;
+val* var2 /* : ANodes[APropdef] */;
 var_n_propdefs = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AMainClassdef__empty_init]))(self) /* empty_init on <self:AMainClassdef>*/;
-var = ((val* (*)(val*))(var_n_propdefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_n_propdefs) /* iterator on <var_n_propdefs:Collection[Object]>*/;
-for(;;) {
-var1 = ((short int (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var) /* is_ok on <var:Iterator[nullable Object]>*/;
-if(!var1) break;
-var2 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__item]))(var) /* item on <var:Iterator[nullable Object]>*/;
-var_n = var2;
-/* <var_n:Object> isa APropdef */
-cltype = type_parser_nodes__APropdef.color;
-idtype = type_parser_nodes__APropdef.id;
-if(cltype >= var_n->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_n->type->type_table[cltype] == idtype;
-}
-if (!var3) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 845);
+{
+{ /* Inline parser_nodes#AClassdef#n_propdefs (self) on <self:AMainClassdef> */
+var2 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AMainClassdef> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
 show_backtrace(1);
 }
-var4 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AMainClassdef> */
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 846);
-show_backtrace(1);
+var = var2;
+RET_LABEL1:(void)0;
 }
-((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, var_n) /* add on <var4:ANodes[APropdef]>*/;
-((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n, self) /* parent= on <var_n:Object(APropdef)>*/;
-CONTINUE_label: (void)0;
-((void (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__next]))(var) /* next on <var:Iterator[nullable Object]>*/;
 }
-BREAK_label: (void)0;
+{
+parser_nodes__ANodes__unsafe_add_all(var, var_n_propdefs); /* Direct call parser_nodes#ANodes#unsafe_add_all on <var:ANodes[APropdef]>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#AMainClassdef#init_amainclassdef for (self: Object, Collection[Object]) */
 void VIRTUAL_parser_prod__AMainClassdef__init_amainclassdef(val* self, val* p0) {
-parser_prod__AMainClassdef__init_amainclassdef(self, p0);
+parser_prod__AMainClassdef__init_amainclassdef(self, p0); /* Direct call parser_prod#AMainClassdef#init_amainclassdef on <self:Object(AMainClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AMainClassdef#replace_child for (self: AMainClassdef, ANode, nullable ANode) */
 void parser_prod__AMainClassdef__replace_child(val* self, val* p0, val* p1) {
 val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
-val* var /* : Range[Int] */;
-long var1 /* : Int */;
+val* var /* : ANodes[APropdef] */;
 val* var2 /* : ANodes[APropdef] */;
-long var3 /* : Int */;
-val* var4 /* : Discrete */;
-val* var5 /* : Discrete */;
-val* var6 /* : Iterator[nullable Object] */;
-short int var7 /* : Bool */;
-val* var8 /* : nullable Object */;
-long var_i /* var i: Int */;
-long var9 /* : Int */;
-val* var10 /* : ANodes[APropdef] */;
-val* var11 /* : nullable Object */;
-short int var12 /* : Bool */;
-val* var13 /* : null */;
-short int var14 /* : Bool */;
-short int var15 /* : Bool */;
-int cltype;
-int idtype;
-val* var16 /* : ANodes[APropdef] */;
-val* var17 /* : ANodes[APropdef] */;
+short int var3 /* : Bool */;
 var_old_child = p0;
 var_new_child = p1;
-var = NEW_range__Range(&type_range__Rangekernel__Int);
-var1 = 0;
+{
+{ /* Inline parser_nodes#AClassdef#n_propdefs (self) on <self:AMainClassdef> */
 var2 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AMainClassdef> */
-if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 853);
-show_backtrace(1);
-}
-var3 = ((long (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__length]))(var2) /* length on <var2:ANodes[APropdef]>*/;
-var4 = BOX_kernel__Int(var1); /* autobox from Int to Discrete */
-var5 = BOX_kernel__Int(var3); /* autobox from Int to Discrete */
-((void (*)(val*, val*, val*))(var->class->vft[COLOR_range__Range__without_last]))(var, var4, var5) /* without_last on <var:Range[Int]>*/;
-var6 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:Range[Int]>*/;
-for(;;) {
-var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
-if(!var7) break;
-var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
-var9 = ((struct instance_kernel__Int*)var8)->value; /* autounbox from nullable Object to Int */;
-var_i = var9;
-var10 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AMainClassdef> */
-if (var10 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 854);
-show_backtrace(1);
-}
-var11 = ((val* (*)(val*, long))(var10->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var10, var_i) /* [] on <var10:ANodes[APropdef]>*/;
-var12 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___61d_61d]))(var11, var_old_child) /* == on <var11:nullable Object(APropdef)>*/;
-if (var12){
-var13 = NULL;
-if (var_new_child == NULL) {
-var14 = 0; /* is null */
-} else {
-var14 = 1; /* arg is null and recv is not */
-}
-if (var14){
-/* <var_new_child:nullable ANode(ANode)> isa APropdef */
-cltype = type_parser_nodes__APropdef.color;
-idtype = type_parser_nodes__APropdef.id;
-if(cltype >= var_new_child->type->table_size) {
-var15 = 0;
-} else {
-var15 = var_new_child->type->type_table[cltype] == idtype;
-}
-if (!var15) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 856);
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
 show_backtrace(1);
 }
-var16 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AMainClassdef> */
-if (var16 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 857);
-show_backtrace(1);
+var = var2;
+RET_LABEL1:(void)0;
 }
-((void (*)(val*, long, val*))(var16->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var16, var_i, var_new_child) /* []= on <var16:ANodes[APropdef]>*/;
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(APropdef)>*/;
-} else {
-var17 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AMainClassdef> */
-if (var17 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 860);
-show_backtrace(1);
 }
-((void (*)(val*, long))(var17->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var17, var_i) /* remove_at on <var17:ANodes[APropdef]>*/;
+{
+var3 = parser_nodes__ANodes__replace_child(var, var_old_child, var_new_child);
 }
+if (var3){
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label: (void)0;
-((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
-}
-BREAK_label: (void)0;
 RET_LABEL:;
 }
 /* method parser_prod#AMainClassdef#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AMainClassdef__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AMainClassdef__replace_child(self, p0, p1);
+parser_prod__AMainClassdef__replace_child(self, p0, p1); /* Direct call parser_prod#AMainClassdef#replace_child on <self:Object(AMainClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AMainClassdef#visit_all for (self: AMainClassdef, Visitor) */
 void parser_prod__AMainClassdef__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
 val* var /* : ANodes[APropdef] */;
-val* var1 /* : Iterator[nullable Object] */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable Object */;
-val* var_n /* var n: APropdef */;
+val* var2 /* : ANodes[APropdef] */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AMainClassdef> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_propdefs");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 871);
+{
+{ /* Inline parser_nodes#AClassdef#n_propdefs (self) on <self:AMainClassdef> */
+var2 = self->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <self:AMainClassdef> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
 show_backtrace(1);
 }
-var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:ANodes[APropdef]>*/;
-for(;;) {
-var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
-if(!var2) break;
-var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
-var_n = var3;
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_n) /* enter_visit on <var_v:Visitor>*/;
-CONTINUE_label: (void)0;
-((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
+var = var2;
+RET_LABEL1:(void)0;
 }
-BREAK_label: (void)0;
-RET_LABEL:;
 }
-/* method parser_prod#AMainClassdef#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AMainClassdef__visit_all(val* self, val* p0) {
-parser_prod__AMainClassdef__visit_all(self, p0);
-RET_LABEL:;
+{
+parser_nodes__ANodes__visit_all(var, var_v); /* Direct call parser_nodes#ANodes#visit_all on <var:ANodes[APropdef]>*/
 }
-/* method parser_prod#AConcreteClasskind#empty_init for (self: AConcreteClasskind) */
-void parser_prod__AConcreteClasskind__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteClasskind#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AConcreteClasskind__empty_init(val* self) {
-parser_prod__AConcreteClasskind__empty_init(self);
+/* method parser_prod#AMainClassdef#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AMainClassdef__visit_all(val* self, val* p0) {
+parser_prod__AMainClassdef__visit_all(self, p0); /* Direct call parser_prod#AMainClassdef#visit_all on <self:Object(AMainClassdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AConcreteClasskind#init_aconcreteclasskind for (self: AConcreteClasskind, nullable TKwclass) */
 void parser_prod__AConcreteClasskind__init_aconcreteclasskind(val* self, val* p0) {
 val* var_n_kwclass /* var n_kwclass: nullable TKwclass */;
 var_n_kwclass = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AConcreteClasskind__empty_init]))(self) /* empty_init on <self:AConcreteClasskind>*/;
-if (var_n_kwclass == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 884);
+if (unlikely(var_n_kwclass == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 560);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AConcreteClasskind___n_kwclass].val = var_n_kwclass; /* _n_kwclass on <self:AConcreteClasskind> */
 if (var_n_kwclass == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 885);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 561);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwclass->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwclass, self) /* parent= on <var_n_kwclass:nullable TKwclass>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwclass,self) on <var_n_kwclass:nullable TKwclass> */
+if (unlikely(var_n_kwclass == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_kwclass->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwclass:nullable TKwclass> */
+RET_LABEL1:(void)0;
+}
 }
 RET_LABEL:;
 }
 /* method parser_prod#AConcreteClasskind#init_aconcreteclasskind for (self: Object, nullable TKwclass) */
 void VIRTUAL_parser_prod__AConcreteClasskind__init_aconcreteclasskind(val* self, val* p0) {
-parser_prod__AConcreteClasskind__init_aconcreteclasskind(self, p0);
+parser_prod__AConcreteClasskind__init_aconcreteclasskind(self, p0); /* Direct call parser_prod#AConcreteClasskind#init_aconcreteclasskind on <self:Object(AConcreteClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AConcreteClasskind#replace_child for (self: AConcreteClasskind, ANode, nullable ANode) */
@@ -3830,48 +4093,61 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : TKwclass */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AConcreteClasskind___n_kwclass].val; /* _n_kwclass on <self:AConcreteClasskind> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwclass");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 890);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwclass");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 566);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwclass>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:TKwclass> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:TKwclass> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwclass */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa TKwclass */
 cltype = type_parser_nodes__TKwclass.color;
 idtype = type_parser_nodes__TKwclass.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 893);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AConcreteClasskind___n_kwclass].val = var_new_child; /* _n_kwclass on <self:AConcreteClasskind> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 896);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwclass", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 567);
 show_backtrace(1);
 }
+{
+parser_prod__AConcreteClasskind__n_kwclass_61d(self, var_new_child); /* Direct call parser_prod#AConcreteClasskind#n_kwclass= on <self:AConcreteClasskind>*/
+}
 goto RET_LABEL;
 } else {
 }
@@ -3879,7 +4155,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AConcreteClasskind#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AConcreteClasskind__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AConcreteClasskind__replace_child(self, p0, p1);
+parser_prod__AConcreteClasskind__replace_child(self, p0, p1); /* Direct call parser_prod#AConcreteClasskind#replace_child on <self:Object(AConcreteClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AConcreteClasskind#n_kwclass= for (self: AConcreteClasskind, TKwclass) */
@@ -3887,12 +4163,17 @@ void parser_prod__AConcreteClasskind__n_kwclass_61d(val* self, val* p0) {
 val* var_node /* var node: TKwclass */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AConcreteClasskind___n_kwclass].val = var_node; /* _n_kwclass on <self:AConcreteClasskind> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwclass>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwclass> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwclass> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AConcreteClasskind#n_kwclass= for (self: Object, TKwclass) */
 void VIRTUAL_parser_prod__AConcreteClasskind__n_kwclass_61d(val* self, val* p0) {
-parser_prod__AConcreteClasskind__n_kwclass_61d(self, p0);
+parser_prod__AConcreteClasskind__n_kwclass_61d(self, p0); /* Direct call parser_prod#AConcreteClasskind#n_kwclass= on <self:Object(AConcreteClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AConcreteClasskind#visit_all for (self: AConcreteClasskind, Visitor) */
@@ -3901,26 +4182,19 @@ val* var_v /* var v: Visitor */;
 val* var /* : TKwclass */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AConcreteClasskind___n_kwclass].val; /* _n_kwclass on <self:AConcreteClasskind> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwclass");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 911);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwclass");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 581);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#AConcreteClasskind#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AConcreteClasskind__visit_all(val* self, val* p0) {
-parser_prod__AConcreteClasskind__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AAbstractClasskind#empty_init for (self: AAbstractClasskind) */
-void parser_prod__AAbstractClasskind__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AAbstractClasskind#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AAbstractClasskind__empty_init(val* self) {
-parser_prod__AAbstractClasskind__empty_init(self);
+parser_prod__AConcreteClasskind__visit_all(self, p0); /* Direct call parser_prod#AConcreteClasskind#visit_all on <self:Object(AConcreteClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AAbstractClasskind#init_aabstractclasskind for (self: AAbstractClasskind, nullable TKwabstract, nullable TKwclass) */
@@ -3929,38 +4203,53 @@ val* var_n_kwabstract /* var n_kwabstract: nullable TKwabstract */;
 val* var_n_kwclass /* var n_kwclass: nullable TKwclass */;
 var_n_kwabstract = p0;
 var_n_kwclass = p1;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AAbstractClasskind__empty_init]))(self) /* empty_init on <self:AAbstractClasskind>*/;
-if (var_n_kwabstract == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 923);
+if (unlikely(var_n_kwabstract == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 590);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AAbstractClasskind___n_kwabstract].val = var_n_kwabstract; /* _n_kwabstract on <self:AAbstractClasskind> */
 if (var_n_kwabstract == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 924);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 591);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwabstract->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwabstract, self) /* parent= on <var_n_kwabstract:nullable TKwabstract>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwabstract,self) on <var_n_kwabstract:nullable TKwabstract> */
+if (unlikely(var_n_kwabstract == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_kwclass == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 925);
+var_n_kwabstract->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwabstract:nullable TKwabstract> */
+RET_LABEL1:(void)0;
+}
+}
+if (unlikely(var_n_kwclass == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 592);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AAbstractClasskind___n_kwclass].val = var_n_kwclass; /* _n_kwclass on <self:AAbstractClasskind> */
 if (var_n_kwclass == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 926);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 593);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwclass->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwclass, self) /* parent= on <var_n_kwclass:nullable TKwclass>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwclass,self) on <var_n_kwclass:nullable TKwclass> */
+if (unlikely(var_n_kwclass == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_kwclass->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwclass:nullable TKwclass> */
+RET_LABEL2:(void)0;
+}
 }
 RET_LABEL:;
 }
 /* method parser_prod#AAbstractClasskind#init_aabstractclasskind for (self: Object, nullable TKwabstract, nullable TKwclass) */
 void VIRTUAL_parser_prod__AAbstractClasskind__init_aabstractclasskind(val* self, val* p0, val* p1) {
-parser_prod__AAbstractClasskind__init_aabstractclasskind(self, p0, p1);
+parser_prod__AAbstractClasskind__init_aabstractclasskind(self, p0, p1); /* Direct call parser_prod#AAbstractClasskind#init_aabstractclasskind on <self:Object(AAbstractClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AAbstractClasskind#replace_child for (self: AAbstractClasskind, ANode, nullable ANode) */
@@ -3969,93 +4258,118 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : TKwabstract */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : TKwclass */;
-short int var6 /* : Bool */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
+const char* var_class_name;
+val* var8 /* : TKwclass */;
 short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AAbstractClasskind___n_kwabstract].val; /* _n_kwabstract on <self:AAbstractClasskind> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwabstract");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 931);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwabstract");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 598);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwabstract>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:TKwabstract> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:TKwabstract> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwabstract */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa TKwabstract */
 cltype = type_parser_nodes__TKwabstract.color;
 idtype = type_parser_nodes__TKwabstract.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 934);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AAbstractClasskind___n_kwabstract].val = var_new_child; /* _n_kwabstract on <self:AAbstractClasskind> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 937);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwabstract", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 599);
 show_backtrace(1);
 }
+{
+parser_prod__AAbstractClasskind__n_kwabstract_61d(self, var_new_child); /* Direct call parser_prod#AAbstractClasskind#n_kwabstract= on <self:AAbstractClasskind>*/
+}
 goto RET_LABEL;
 } else {
 }
-var5 = self->attrs[COLOR_parser_nodes__AAbstractClasskind___n_kwclass].val; /* _n_kwclass on <self:AAbstractClasskind> */
-if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwclass");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 941);
+var8 = self->attrs[COLOR_parser_nodes__AAbstractClasskind___n_kwclass].val; /* _n_kwclass on <self:AAbstractClasskind> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwclass");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 602);
 show_backtrace(1);
 }
-var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:TKwclass>*/;
-if (var6){
-var7 = NULL;
-if (var_new_child == NULL) {
-var8 = 0; /* is null */
-} else {
-var8 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:TKwclass> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:TKwclass> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (var8){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwclass */
-cltype10 = type_parser_nodes__TKwclass.color;
-idtype11 = type_parser_nodes__TKwclass.id;
-if(cltype10 >= var_new_child->type->table_size) {
-var9 = 0;
-} else {
-var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 944);
-show_backtrace(1);
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
 }
-self->attrs[COLOR_parser_nodes__AAbstractClasskind___n_kwclass].val = var_new_child; /* _n_kwclass on <self:AAbstractClasskind> */
+if (var9){
+/* <var_new_child:nullable ANode> isa TKwclass */
+cltype16 = type_parser_nodes__TKwclass.color;
+idtype17 = type_parser_nodes__TKwclass.id;
+if(var_new_child == NULL) {
+var15 = 0;
+} else {
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 947);
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
+}
+}
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwclass", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 603);
 show_backtrace(1);
 }
+{
+parser_prod__AAbstractClasskind__n_kwclass_61d(self, var_new_child); /* Direct call parser_prod#AAbstractClasskind#n_kwclass= on <self:AAbstractClasskind>*/
+}
 goto RET_LABEL;
 } else {
 }
@@ -4063,7 +4377,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AAbstractClasskind#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AAbstractClasskind__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AAbstractClasskind__replace_child(self, p0, p1);
+parser_prod__AAbstractClasskind__replace_child(self, p0, p1); /* Direct call parser_prod#AAbstractClasskind#replace_child on <self:Object(AAbstractClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AAbstractClasskind#n_kwabstract= for (self: AAbstractClasskind, TKwabstract) */
@@ -4071,12 +4385,17 @@ void parser_prod__AAbstractClasskind__n_kwabstract_61d(val* self, val* p0) {
 val* var_node /* var node: TKwabstract */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AAbstractClasskind___n_kwabstract].val = var_node; /* _n_kwabstract on <self:AAbstractClasskind> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwabstract>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwabstract> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwabstract> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AAbstractClasskind#n_kwabstract= for (self: Object, TKwabstract) */
 void VIRTUAL_parser_prod__AAbstractClasskind__n_kwabstract_61d(val* self, val* p0) {
-parser_prod__AAbstractClasskind__n_kwabstract_61d(self, p0);
+parser_prod__AAbstractClasskind__n_kwabstract_61d(self, p0); /* Direct call parser_prod#AAbstractClasskind#n_kwabstract= on <self:Object(AAbstractClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AAbstractClasskind#n_kwclass= for (self: AAbstractClasskind, TKwclass) */
@@ -4084,12 +4403,17 @@ void parser_prod__AAbstractClasskind__n_kwclass_61d(val* self, val* p0) {
 val* var_node /* var node: TKwclass */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AAbstractClasskind___n_kwclass].val = var_node; /* _n_kwclass on <self:AAbstractClasskind> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwclass>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwclass> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwclass> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AAbstractClasskind#n_kwclass= for (self: Object, TKwclass) */
 void VIRTUAL_parser_prod__AAbstractClasskind__n_kwclass_61d(val* self, val* p0) {
-parser_prod__AAbstractClasskind__n_kwclass_61d(self, p0);
+parser_prod__AAbstractClasskind__n_kwclass_61d(self, p0); /* Direct call parser_prod#AAbstractClasskind#n_kwclass= on <self:Object(AAbstractClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AAbstractClasskind#visit_all for (self: AAbstractClasskind, Visitor) */
@@ -4099,58 +4423,60 @@ val* var /* : TKwabstract */;
 val* var1 /* : TKwclass */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AAbstractClasskind___n_kwabstract].val; /* _n_kwabstract on <self:AAbstractClasskind> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwabstract");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 967);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwabstract");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 622);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 var1 = self->attrs[COLOR_parser_nodes__AAbstractClasskind___n_kwclass].val; /* _n_kwclass on <self:AAbstractClasskind> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwclass");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 968);
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwclass");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 623);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#AAbstractClasskind#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AAbstractClasskind__visit_all(val* self, val* p0) {
-parser_prod__AAbstractClasskind__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AInterfaceClasskind#empty_init for (self: AInterfaceClasskind) */
-void parser_prod__AInterfaceClasskind__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AInterfaceClasskind#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AInterfaceClasskind__empty_init(val* self) {
-parser_prod__AInterfaceClasskind__empty_init(self);
+parser_prod__AAbstractClasskind__visit_all(self, p0); /* Direct call parser_prod#AAbstractClasskind#visit_all on <self:Object(AAbstractClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AInterfaceClasskind#init_ainterfaceclasskind for (self: AInterfaceClasskind, nullable TKwinterface) */
 void parser_prod__AInterfaceClasskind__init_ainterfaceclasskind(val* self, val* p0) {
 val* var_n_kwinterface /* var n_kwinterface: nullable TKwinterface */;
 var_n_kwinterface = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AInterfaceClasskind__empty_init]))(self) /* empty_init on <self:AInterfaceClasskind>*/;
-if (var_n_kwinterface == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 979);
+if (unlikely(var_n_kwinterface == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 631);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AInterfaceClasskind___n_kwinterface].val = var_n_kwinterface; /* _n_kwinterface on <self:AInterfaceClasskind> */
 if (var_n_kwinterface == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 980);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 632);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwinterface->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwinterface, self) /* parent= on <var_n_kwinterface:nullable TKwinterface>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwinterface,self) on <var_n_kwinterface:nullable TKwinterface> */
+if (unlikely(var_n_kwinterface == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_kwinterface->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwinterface:nullable TKwinterface> */
+RET_LABEL1:(void)0;
+}
 }
 RET_LABEL:;
 }
 /* method parser_prod#AInterfaceClasskind#init_ainterfaceclasskind for (self: Object, nullable TKwinterface) */
 void VIRTUAL_parser_prod__AInterfaceClasskind__init_ainterfaceclasskind(val* self, val* p0) {
-parser_prod__AInterfaceClasskind__init_ainterfaceclasskind(self, p0);
+parser_prod__AInterfaceClasskind__init_ainterfaceclasskind(self, p0); /* Direct call parser_prod#AInterfaceClasskind#init_ainterfaceclasskind on <self:Object(AInterfaceClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AInterfaceClasskind#replace_child for (self: AInterfaceClasskind, ANode, nullable ANode) */
@@ -4159,48 +4485,61 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : TKwinterface */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AInterfaceClasskind___n_kwinterface].val; /* _n_kwinterface on <self:AInterfaceClasskind> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwinterface");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 985);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwinterface");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 637);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwinterface>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:TKwinterface> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:TKwinterface> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwinterface */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa TKwinterface */
 cltype = type_parser_nodes__TKwinterface.color;
 idtype = type_parser_nodes__TKwinterface.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 988);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AInterfaceClasskind___n_kwinterface].val = var_new_child; /* _n_kwinterface on <self:AInterfaceClasskind> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 991);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwinterface", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 638);
 show_backtrace(1);
 }
+{
+parser_prod__AInterfaceClasskind__n_kwinterface_61d(self, var_new_child); /* Direct call parser_prod#AInterfaceClasskind#n_kwinterface= on <self:AInterfaceClasskind>*/
+}
 goto RET_LABEL;
 } else {
 }
@@ -4208,7 +4547,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AInterfaceClasskind#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AInterfaceClasskind__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AInterfaceClasskind__replace_child(self, p0, p1);
+parser_prod__AInterfaceClasskind__replace_child(self, p0, p1); /* Direct call parser_prod#AInterfaceClasskind#replace_child on <self:Object(AInterfaceClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AInterfaceClasskind#n_kwinterface= for (self: AInterfaceClasskind, TKwinterface) */
@@ -4216,12 +4555,17 @@ void parser_prod__AInterfaceClasskind__n_kwinterface_61d(val* self, val* p0) {
 val* var_node /* var node: TKwinterface */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AInterfaceClasskind___n_kwinterface].val = var_node; /* _n_kwinterface on <self:AInterfaceClasskind> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwinterface>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwinterface> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwinterface> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AInterfaceClasskind#n_kwinterface= for (self: Object, TKwinterface) */
 void VIRTUAL_parser_prod__AInterfaceClasskind__n_kwinterface_61d(val* self, val* p0) {
-parser_prod__AInterfaceClasskind__n_kwinterface_61d(self, p0);
+parser_prod__AInterfaceClasskind__n_kwinterface_61d(self, p0); /* Direct call parser_prod#AInterfaceClasskind#n_kwinterface= on <self:Object(AInterfaceClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AInterfaceClasskind#visit_all for (self: AInterfaceClasskind, Visitor) */
@@ -4230,51 +4574,51 @@ val* var_v /* var v: Visitor */;
 val* var /* : TKwinterface */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AInterfaceClasskind___n_kwinterface].val; /* _n_kwinterface on <self:AInterfaceClasskind> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwinterface");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1006);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwinterface");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 652);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#AInterfaceClasskind#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AInterfaceClasskind__visit_all(val* self, val* p0) {
-parser_prod__AInterfaceClasskind__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AEnumClasskind#empty_init for (self: AEnumClasskind) */
-void parser_prod__AEnumClasskind__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AEnumClasskind#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AEnumClasskind__empty_init(val* self) {
-parser_prod__AEnumClasskind__empty_init(self);
+parser_prod__AInterfaceClasskind__visit_all(self, p0); /* Direct call parser_prod#AInterfaceClasskind#visit_all on <self:Object(AInterfaceClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AEnumClasskind#init_aenumclasskind for (self: AEnumClasskind, nullable TKwenum) */
 void parser_prod__AEnumClasskind__init_aenumclasskind(val* self, val* p0) {
 val* var_n_kwenum /* var n_kwenum: nullable TKwenum */;
 var_n_kwenum = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AEnumClasskind__empty_init]))(self) /* empty_init on <self:AEnumClasskind>*/;
-if (var_n_kwenum == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1017);
+if (unlikely(var_n_kwenum == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 660);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AEnumClasskind___n_kwenum].val = var_n_kwenum; /* _n_kwenum on <self:AEnumClasskind> */
 if (var_n_kwenum == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1018);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 661);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwenum->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwenum, self) /* parent= on <var_n_kwenum:nullable TKwenum>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwenum,self) on <var_n_kwenum:nullable TKwenum> */
+if (unlikely(var_n_kwenum == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_kwenum->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwenum:nullable TKwenum> */
+RET_LABEL1:(void)0;
+}
 }
 RET_LABEL:;
 }
 /* method parser_prod#AEnumClasskind#init_aenumclasskind for (self: Object, nullable TKwenum) */
 void VIRTUAL_parser_prod__AEnumClasskind__init_aenumclasskind(val* self, val* p0) {
-parser_prod__AEnumClasskind__init_aenumclasskind(self, p0);
+parser_prod__AEnumClasskind__init_aenumclasskind(self, p0); /* Direct call parser_prod#AEnumClasskind#init_aenumclasskind on <self:Object(AEnumClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AEnumClasskind#replace_child for (self: AEnumClasskind, ANode, nullable ANode) */
@@ -4283,48 +4627,61 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : TKwenum */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AEnumClasskind___n_kwenum].val; /* _n_kwenum on <self:AEnumClasskind> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwenum");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1023);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwenum");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 666);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwenum>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:TKwenum> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:TKwenum> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwenum */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa TKwenum */
 cltype = type_parser_nodes__TKwenum.color;
 idtype = type_parser_nodes__TKwenum.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1026);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AEnumClasskind___n_kwenum].val = var_new_child; /* _n_kwenum on <self:AEnumClasskind> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1029);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwenum", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 667);
 show_backtrace(1);
 }
+{
+parser_prod__AEnumClasskind__n_kwenum_61d(self, var_new_child); /* Direct call parser_prod#AEnumClasskind#n_kwenum= on <self:AEnumClasskind>*/
+}
 goto RET_LABEL;
 } else {
 }
@@ -4332,7 +4689,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AEnumClasskind#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AEnumClasskind__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AEnumClasskind__replace_child(self, p0, p1);
+parser_prod__AEnumClasskind__replace_child(self, p0, p1); /* Direct call parser_prod#AEnumClasskind#replace_child on <self:Object(AEnumClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AEnumClasskind#n_kwenum= for (self: AEnumClasskind, TKwenum) */
@@ -4340,12 +4697,17 @@ void parser_prod__AEnumClasskind__n_kwenum_61d(val* self, val* p0) {
 val* var_node /* var node: TKwenum */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AEnumClasskind___n_kwenum].val = var_node; /* _n_kwenum on <self:AEnumClasskind> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwenum>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwenum> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwenum> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AEnumClasskind#n_kwenum= for (self: Object, TKwenum) */
 void VIRTUAL_parser_prod__AEnumClasskind__n_kwenum_61d(val* self, val* p0) {
-parser_prod__AEnumClasskind__n_kwenum_61d(self, p0);
+parser_prod__AEnumClasskind__n_kwenum_61d(self, p0); /* Direct call parser_prod#AEnumClasskind#n_kwenum= on <self:Object(AEnumClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AEnumClasskind#visit_all for (self: AEnumClasskind, Visitor) */
@@ -4354,26 +4716,19 @@ val* var_v /* var v: Visitor */;
 val* var /* : TKwenum */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AEnumClasskind___n_kwenum].val; /* _n_kwenum on <self:AEnumClasskind> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwenum");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1044);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwenum");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 681);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 RET_LABEL:;
 }
 /* method parser_prod#AEnumClasskind#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AEnumClasskind__visit_all(val* self, val* p0) {
-parser_prod__AEnumClasskind__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AExternClasskind#empty_init for (self: AExternClasskind) */
-void parser_prod__AExternClasskind__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AExternClasskind#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AExternClasskind__empty_init(val* self) {
-parser_prod__AExternClasskind__empty_init(self);
+parser_prod__AEnumClasskind__visit_all(self, p0); /* Direct call parser_prod#AEnumClasskind#visit_all on <self:Object(AEnumClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AExternClasskind#init_aexternclasskind for (self: AExternClasskind, nullable TKwextern, nullable TKwclass) */
@@ -4381,39 +4736,70 @@ void parser_prod__AExternClasskind__init_aexternclasskind(val* self, val* p0, va
 val* var_n_kwextern /* var n_kwextern: nullable TKwextern */;
 val* var_n_kwclass /* var n_kwclass: nullable TKwclass */;
 val* var /* : null */;
-short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 var_n_kwextern = p0;
 var_n_kwclass = p1;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AExternClasskind__empty_init]))(self) /* empty_init on <self:AExternClasskind>*/;
-if (var_n_kwextern == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1056);
+if (unlikely(var_n_kwextern == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 690);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwextern].val = var_n_kwextern; /* _n_kwextern on <self:AExternClasskind> */
 if (var_n_kwextern == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1057);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 691);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwextern->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwextern, self) /* parent= on <var_n_kwextern:nullable TKwextern>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwextern,self) on <var_n_kwextern:nullable TKwextern> */
+if (unlikely(var_n_kwextern == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_kwextern->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwextern:nullable TKwextern> */
+RET_LABEL1:(void)0;
+}
 }
 self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwclass].val = var_n_kwclass; /* _n_kwclass on <self:AExternClasskind> */
 var = NULL;
 if (var_n_kwclass == NULL) {
-var1 = 0; /* is null */
+var2 = 0; /* is null */
 } else {
-var1 = 1; /* arg is null and recv is not */
+var2 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_kwclass,var) on <var_n_kwclass:nullable TKwclass> */
+var_other = var;
+{
+var6 = ((short int (*)(val*, val*))(var_n_kwclass->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwclass, var_other) /* == on <var_n_kwclass:nullable TKwclass(TKwclass)>*/;
+var5 = var6;
+}
+var7 = !var5;
+var3 = var7;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
+}
+var2 = var3;
+}
+if (var2){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwclass,self) on <var_n_kwclass:nullable TKwclass(TKwclass)> */
+var_n_kwclass->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwclass:nullable TKwclass(TKwclass)> */
+RET_LABEL8:(void)0;
+}
 }
-if (var1){
-((void (*)(val*, val*))(var_n_kwclass->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwclass, self) /* parent= on <var_n_kwclass:nullable TKwclass(TKwclass)>*/;
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AExternClasskind#init_aexternclasskind for (self: Object, nullable TKwextern, nullable TKwclass) */
 void VIRTUAL_parser_prod__AExternClasskind__init_aexternclasskind(val* self, val* p0, val* p1) {
-parser_prod__AExternClasskind__init_aexternclasskind(self, p0, p1);
+parser_prod__AExternClasskind__init_aexternclasskind(self, p0, p1); /* Direct call parser_prod#AExternClasskind#init_aexternclasskind on <self:Object(AExternClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AExternClasskind#replace_child for (self: AExternClasskind, ANode, nullable ANode) */
@@ -4422,91 +4808,114 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : TKwextern */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : nullable TKwclass */;
-short int var6 /* : Bool */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
+const char* var_class_name;
+val* var8 /* : nullable TKwclass */;
 short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
-val* var12 /* : null */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwextern].val; /* _n_kwextern on <self:AExternClasskind> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwextern");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1066);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwextern");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 698);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwextern>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:TKwextern> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:TKwextern> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwextern */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa TKwextern */
 cltype = type_parser_nodes__TKwextern.color;
 idtype = type_parser_nodes__TKwextern.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1069);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwextern].val = var_new_child; /* _n_kwextern on <self:AExternClasskind> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1072);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwextern", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 699);
 show_backtrace(1);
 }
+{
+parser_prod__AExternClasskind__n_kwextern_61d(self, var_new_child); /* Direct call parser_prod#AExternClasskind#n_kwextern= on <self:AExternClasskind>*/
+}
 goto RET_LABEL;
 } else {
 }
-var5 = self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwclass].val; /* _n_kwclass on <self:AExternClasskind> */
-if (var5 == NULL) {
-var6 = 0; /* <var_old_child:ANode> cannot be null */
+var8 = self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwclass].val; /* _n_kwclass on <self:AExternClasskind> */
+if (var8 == NULL) {
+var9 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:nullable TKwclass>*/;
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:nullable TKwclass> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:nullable TKwclass(TKwclass)> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (var6){
-var7 = NULL;
-if (var_new_child == NULL) {
-var8 = 0; /* is null */
-} else {
-var8 = 1; /* arg is null and recv is not */
 }
-if (var8){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwclass */
-cltype10 = type_parser_nodes__TKwclass.color;
-idtype11 = type_parser_nodes__TKwclass.id;
-if(cltype10 >= var_new_child->type->table_size) {
-var9 = 0;
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
+}
+if (var9){
+/* <var_new_child:nullable ANode> isa nullable TKwclass */
+cltype16 = type_nullable_parser_nodes__TKwclass.color;
+idtype17 = type_nullable_parser_nodes__TKwclass.id;
+if(var_new_child == NULL) {
+var15 = 1;
+} else {
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
 } else {
-var9 = var_new_child->type->type_table[cltype10] == idtype11;
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1079);
+}
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TKwclass", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 703);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwclass].val = var_new_child; /* _n_kwclass on <self:AExternClasskind> */
-} else {
-var12 = NULL;
-self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwclass].val = var12; /* _n_kwclass on <self:AExternClasskind> */
+{
+parser_prod__AExternClasskind__n_kwclass_61d(self, var_new_child); /* Direct call parser_prod#AExternClasskind#n_kwclass= on <self:AExternClasskind>*/
 }
 goto RET_LABEL;
 } else {
@@ -4515,7 +4924,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AExternClasskind#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AExternClasskind__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AExternClasskind__replace_child(self, p0, p1);
+parser_prod__AExternClasskind__replace_child(self, p0, p1); /* Direct call parser_prod#AExternClasskind#replace_child on <self:Object(AExternClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AExternClasskind#n_kwextern= for (self: AExternClasskind, TKwextern) */
@@ -4523,12 +4932,17 @@ void parser_prod__AExternClasskind__n_kwextern_61d(val* self, val* p0) {
 val* var_node /* var node: TKwextern */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwextern].val = var_node; /* _n_kwextern on <self:AExternClasskind> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwextern>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwextern> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwextern> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AExternClasskind#n_kwextern= for (self: Object, TKwextern) */
 void VIRTUAL_parser_prod__AExternClasskind__n_kwextern_61d(val* self, val* p0) {
-parser_prod__AExternClasskind__n_kwextern_61d(self, p0);
+parser_prod__AExternClasskind__n_kwextern_61d(self, p0); /* Direct call parser_prod#AExternClasskind#n_kwextern= on <self:Object(AExternClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AExternClasskind#n_kwclass= for (self: AExternClasskind, nullable TKwclass) */
@@ -4536,6 +4950,11 @@ void parser_prod__AExternClasskind__n_kwclass_61d(val* self, val* p0) {
 val* var_node /* var node: nullable TKwclass */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwclass].val = var_node; /* _n_kwclass on <self:AExternClasskind> */
 var = NULL;
@@ -4544,15 +4963,34 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TKwclass> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TKwclass(TKwclass)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TKwclass(TKwclass)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TKwclass(TKwclass)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TKwclass(TKwclass)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AExternClasskind#n_kwclass= for (self: Object, nullable TKwclass) */
 void VIRTUAL_parser_prod__AExternClasskind__n_kwclass_61d(val* self, val* p0) {
-parser_prod__AExternClasskind__n_kwclass_61d(self, p0);
+parser_prod__AExternClasskind__n_kwclass_61d(self, p0); /* Direct call parser_prod#AExternClasskind#n_kwclass= on <self:Object(AExternClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AExternClasskind#visit_all for (self: AExternClasskind, Visitor) */
@@ -4560,48 +4998,25 @@ void parser_prod__AExternClasskind__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
 val* var /* : TKwextern */;
 val* var1 /* : nullable TKwclass */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-val* var4 /* : nullable TKwclass */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwextern].val; /* _n_kwextern on <self:AExternClasskind> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwextern");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1104);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwextern");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 722);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
-var1 = self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwclass].val; /* _n_kwclass on <self:AExternClasskind> */
-var2 = NULL;
-if (var1 == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-var4 = self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwclass].val; /* _n_kwclass on <self:AExternClasskind> */
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1106);
-show_backtrace(1);
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var4) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var1 = self->attrs[COLOR_parser_nodes__AExternClasskind___n_kwclass].val; /* _n_kwclass on <self:AExternClasskind> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
 RET_LABEL:;
 }
 /* method parser_prod#AExternClasskind#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AExternClasskind__visit_all(val* self, val* p0) {
-parser_prod__AExternClasskind__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AFormaldef#empty_init for (self: AFormaldef) */
-void parser_prod__AFormaldef__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AFormaldef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AFormaldef__empty_init(val* self) {
-parser_prod__AFormaldef__empty_init(self);
+parser_prod__AExternClasskind__visit_all(self, p0); /* Direct call parser_prod#AExternClasskind#visit_all on <self:Object(AExternClasskind)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#init_aformaldef for (self: AFormaldef, nullable TClassid, nullable AType, nullable AAnnotations) */
@@ -4610,53 +5025,107 @@ val* var_n_id /* var n_id: nullable TClassid */;
 val* var_n_type /* var n_type: nullable AType */;
 val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
 val* var /* : null */;
-short int var1 /* : Bool */;
-val* var2 /* : null */;
+short int var2 /* : Bool */;
 short int var3 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+val* var9 /* : null */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
 var_n_id = p0;
 var_n_type = p1;
 var_n_annotations = p2;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AFormaldef__empty_init]))(self) /* empty_init on <self:AFormaldef>*/;
-if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1120);
+if (unlikely(var_n_id == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 733);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AFormaldef___n_id].val = var_n_id; /* _n_id on <self:AFormaldef> */
 if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1121);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 734);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_id->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_id, self) /* parent= on <var_n_id:nullable TClassid>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_id,self) on <var_n_id:nullable TClassid> */
+if (unlikely(var_n_id == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_id->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_id:nullable TClassid> */
+RET_LABEL1:(void)0;
+}
 }
 self->attrs[COLOR_parser_nodes__AFormaldef___n_type].val = var_n_type; /* _n_type on <self:AFormaldef> */
 var = NULL;
 if (var_n_type == NULL) {
-var1 = 0; /* is null */
+var2 = 0; /* is null */
 } else {
-var1 = 1; /* arg is null and recv is not */
+var2 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_type,var) on <var_n_type:nullable AType> */
+var_other = var;
+{
+var6 = ((short int (*)(val*, val*))(var_n_type->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_type, var_other) /* == on <var_n_type:nullable AType(AType)>*/;
+var5 = var6;
+}
+var7 = !var5;
+var3 = var7;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
+}
+var2 = var3;
+}
+if (var2){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_type,self) on <var_n_type:nullable AType(AType)> */
+var_n_type->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_type:nullable AType(AType)> */
+RET_LABEL8:(void)0;
+}
 }
-if (var1){
-((void (*)(val*, val*))(var_n_type->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_type, self) /* parent= on <var_n_type:nullable AType(AType)>*/;
 } else {
 }
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:AFormaldef> */
-var2 = NULL;
+var9 = NULL;
 if (var_n_annotations == NULL) {
-var3 = 0; /* is null */
+var10 = 0; /* is null */
 } else {
-var3 = 1; /* arg is null and recv is not */
+var10 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_annotations,var9) on <var_n_annotations:nullable AAnnotations> */
+var_other = var9;
+{
+var14 = ((short int (*)(val*, val*))(var_n_annotations->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_annotations, var_other) /* == on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
+var13 = var14;
+}
+var15 = !var13;
+var11 = var15;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
+}
+var10 = var11;
+}
+if (var10){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_annotations,self) on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+var_n_annotations->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+RET_LABEL16:(void)0;
+}
 }
-if (var3){
-((void (*)(val*, val*))(var_n_annotations->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_annotations, self) /* parent= on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#init_aformaldef for (self: Object, nullable TClassid, nullable AType, nullable AAnnotations) */
 void VIRTUAL_parser_prod__AFormaldef__init_aformaldef(val* self, val* p0, val* p1, val* p2) {
-parser_prod__AFormaldef__init_aformaldef(self, p0, p1, p2);
+parser_prod__AFormaldef__init_aformaldef(self, p0, p1, p2); /* Direct call parser_prod#AFormaldef#init_aformaldef on <self:Object(AFormaldef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#replace_child for (self: AFormaldef, ANode, nullable ANode) */
@@ -4665,135 +5134,168 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : TClassid */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : nullable AType */;
-short int var6 /* : Bool */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
+const char* var_class_name;
+val* var8 /* : nullable AType */;
 short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
-val* var12 /* : null */;
-val* var13 /* : nullable AAnnotations */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
 short int var14 /* : Bool */;
-val* var15 /* : null */;
-short int var16 /* : Bool */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
-val* var20 /* : null */;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
+val* var19 /* : nullable AAnnotations */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
+short int var25 /* : Bool */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+const char* var_class_name29;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AFormaldef___n_id].val; /* _n_id on <self:AFormaldef> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1134);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 743);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TClassid>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:TClassid> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:TClassid> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TClassid */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa TClassid */
 cltype = type_parser_nodes__TClassid.color;
 idtype = type_parser_nodes__TClassid.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1137);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AFormaldef___n_id].val = var_new_child; /* _n_id on <self:AFormaldef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1140);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TClassid", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 744);
 show_backtrace(1);
 }
+{
+parser_prod__AFormaldef__n_id_61d(self, var_new_child); /* Direct call parser_prod#AFormaldef#n_id= on <self:AFormaldef>*/
+}
 goto RET_LABEL;
 } else {
 }
-var5 = self->attrs[COLOR_parser_nodes__AFormaldef___n_type].val; /* _n_type on <self:AFormaldef> */
-if (var5 == NULL) {
-var6 = 0; /* <var_old_child:ANode> cannot be null */
+var8 = self->attrs[COLOR_parser_nodes__AFormaldef___n_type].val; /* _n_type on <self:AFormaldef> */
+if (var8 == NULL) {
+var9 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:nullable AType>*/;
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:nullable AType> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:nullable AType(AType)> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (var6){
-var7 = NULL;
-if (var_new_child == NULL) {
-var8 = 0; /* is null */
-} else {
-var8 = 1; /* arg is null and recv is not */
 }
-if (var8){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AType */
-cltype10 = type_parser_nodes__AType.color;
-idtype11 = type_parser_nodes__AType.id;
-if(cltype10 >= var_new_child->type->table_size) {
-var9 = 0;
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
+}
+if (var9){
+/* <var_new_child:nullable ANode> isa nullable AType */
+cltype16 = type_nullable_parser_nodes__AType.color;
+idtype17 = type_nullable_parser_nodes__AType.id;
+if(var_new_child == NULL) {
+var15 = 1;
+} else {
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
 } else {
-var9 = var_new_child->type->type_table[cltype10] == idtype11;
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1147);
+}
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AType", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 748);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AFormaldef___n_type].val = var_new_child; /* _n_type on <self:AFormaldef> */
-} else {
-var12 = NULL;
-self->attrs[COLOR_parser_nodes__AFormaldef___n_type].val = var12; /* _n_type on <self:AFormaldef> */
+{
+parser_prod__AFormaldef__n_type_61d(self, var_new_child); /* Direct call parser_prod#AFormaldef#n_type= on <self:AFormaldef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var13 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AFormaldef> */
-if (var13 == NULL) {
-var14 = 0; /* <var_old_child:ANode> cannot be null */
+var19 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AFormaldef> */
+if (var19 == NULL) {
+var20 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_kernel__Object___61d_61d]))(var13, var_old_child) /* == on <var13:nullable AAnnotations>*/;
+{ /* Inline kernel#Object#== (var19,var_old_child) on <var19:nullable AAnnotations> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var19,var_other) on <var19:nullable AAnnotations(AAnnotations)> */
+var25 = var19 == var_other;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
-if (var14){
-var15 = NULL;
-if (var_new_child == NULL) {
-var16 = 0; /* is null */
-} else {
-var16 = 1; /* arg is null and recv is not */
 }
-if (var16){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AAnnotations */
-cltype18 = type_parser_nodes__AAnnotations.color;
-idtype19 = type_parser_nodes__AAnnotations.id;
-if(cltype18 >= var_new_child->type->table_size) {
-var17 = 0;
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
+}
+var20 = var21;
+}
+if (var20){
+/* <var_new_child:nullable ANode> isa nullable AAnnotations */
+cltype27 = type_nullable_parser_nodes__AAnnotations.color;
+idtype28 = type_nullable_parser_nodes__AAnnotations.id;
+if(var_new_child == NULL) {
+var26 = 1;
 } else {
-var17 = var_new_child->type->type_table[cltype18] == idtype19;
+if(cltype27 >= var_new_child->type->table_size) {
+var26 = 0;
+} else {
+var26 = var_new_child->type->type_table[cltype27] == idtype28;
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1157);
+}
+if (unlikely(!var26)) {
+var_class_name29 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AAnnotations", var_class_name29);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 752);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:AFormaldef> */
-} else {
-var20 = NULL;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var20; /* _n_annotations on <self:AFormaldef> */
+{
+parser_prod__AFormaldef__n_annotations_61d(self, var_new_child); /* Direct call parser_prod#AFormaldef#n_annotations= on <self:AFormaldef>*/
 }
 goto RET_LABEL;
 } else {
@@ -4802,7 +5304,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AFormaldef__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AFormaldef__replace_child(self, p0, p1);
+parser_prod__AFormaldef__replace_child(self, p0, p1); /* Direct call parser_prod#AFormaldef#replace_child on <self:Object(AFormaldef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#n_id= for (self: AFormaldef, TClassid) */
@@ -4810,12 +5312,17 @@ void parser_prod__AFormaldef__n_id_61d(val* self, val* p0) {
 val* var_node /* var node: TClassid */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AFormaldef___n_id].val = var_node; /* _n_id on <self:AFormaldef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TClassid>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TClassid> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TClassid> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#n_id= for (self: Object, TClassid) */
 void VIRTUAL_parser_prod__AFormaldef__n_id_61d(val* self, val* p0) {
-parser_prod__AFormaldef__n_id_61d(self, p0);
+parser_prod__AFormaldef__n_id_61d(self, p0); /* Direct call parser_prod#AFormaldef#n_id= on <self:Object(AFormaldef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#n_type= for (self: AFormaldef, nullable AType) */
@@ -4823,6 +5330,11 @@ void parser_prod__AFormaldef__n_type_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AType */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AFormaldef___n_type].val = var_node; /* _n_type on <self:AFormaldef> */
 var = NULL;
@@ -4831,15 +5343,34 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AType> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AType(AType)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AType(AType)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AType(AType)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AType(AType)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#n_type= for (self: Object, nullable AType) */
 void VIRTUAL_parser_prod__AFormaldef__n_type_61d(val* self, val* p0) {
-parser_prod__AFormaldef__n_type_61d(self, p0);
+parser_prod__AFormaldef__n_type_61d(self, p0); /* Direct call parser_prod#AFormaldef#n_type= on <self:Object(AFormaldef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#n_annotations= for (self: AFormaldef, nullable AAnnotations) */
@@ -4847,6 +5378,11 @@ void parser_prod__AFormaldef__n_annotations_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AAnnotations */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:AFormaldef> */
 var = NULL;
@@ -4855,15 +5391,34 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AAnnotations> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AAnnotations(AAnnotations)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AAnnotations(AAnnotations)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AAnnotations(AAnnotations)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AAnnotations(AAnnotations)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#n_annotations= for (self: Object, nullable AAnnotations) */
 void VIRTUAL_parser_prod__AFormaldef__n_annotations_61d(val* self, val* p0) {
-parser_prod__AFormaldef__n_annotations_61d(self, p0);
+parser_prod__AFormaldef__n_annotations_61d(self, p0); /* Direct call parser_prod#AFormaldef#n_annotations= on <self:Object(AFormaldef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#visit_all for (self: AFormaldef, Visitor) */
@@ -4871,69 +5426,30 @@ void parser_prod__AFormaldef__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
 val* var /* : TClassid */;
 val* var1 /* : nullable AType */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-val* var4 /* : nullable AType */;
-val* var5 /* : nullable AAnnotations */;
-val* var6 /* : null */;
-short int var7 /* : Bool */;
-val* var8 /* : nullable AAnnotations */;
+val* var2 /* : nullable AAnnotations */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AFormaldef___n_id].val; /* _n_id on <self:AFormaldef> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1189);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
-var1 = self->attrs[COLOR_parser_nodes__AFormaldef___n_type].val; /* _n_type on <self:AFormaldef> */
-var2 = NULL;
-if (var1 == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-var4 = self->attrs[COLOR_parser_nodes__AFormaldef___n_type].val; /* _n_type on <self:AFormaldef> */
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1191);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 776);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var4) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var5 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AFormaldef> */
-var6 = NULL;
-if (var5 == NULL) {
-var7 = 0; /* is null */
-} else {
-var7 = 1; /* arg is null and recv is not */
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var7){
-var8 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AFormaldef> */
-if (var8 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1194);
-show_backtrace(1);
+var1 = self->attrs[COLOR_parser_nodes__AFormaldef___n_type].val; /* _n_type on <self:AFormaldef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var2 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AFormaldef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var2); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
 RET_LABEL:;
 }
 /* method parser_prod#AFormaldef#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AFormaldef__visit_all(val* self, val* p0) {
-parser_prod__AFormaldef__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ASuperclass#empty_init for (self: ASuperclass) */
-void parser_prod__ASuperclass__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#ASuperclass#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ASuperclass__empty_init(val* self) {
-parser_prod__ASuperclass__empty_init(self);
+parser_prod__AFormaldef__visit_all(self, p0); /* Direct call parser_prod#AFormaldef#visit_all on <self:Object(AFormaldef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#init_asuperclass for (self: ASuperclass, nullable TKwsuper, nullable AType, nullable AAnnotations) */
@@ -4942,53 +5458,92 @@ val* var_n_kwsuper /* var n_kwsuper: nullable TKwsuper */;
 val* var_n_type /* var n_type: nullable AType */;
 val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
 val* var /* : null */;
-short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
 var_n_kwsuper = p0;
 var_n_type = p1;
 var_n_annotations = p2;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ASuperclass__empty_init]))(self) /* empty_init on <self:ASuperclass>*/;
-if (var_n_kwsuper == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1208);
+if (unlikely(var_n_kwsuper == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 788);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__ASuperclass___n_kwsuper].val = var_n_kwsuper; /* _n_kwsuper on <self:ASuperclass> */
 if (var_n_kwsuper == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1209);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 789);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwsuper->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwsuper, self) /* parent= on <var_n_kwsuper:nullable TKwsuper>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwsuper,self) on <var_n_kwsuper:nullable TKwsuper> */
+if (unlikely(var_n_kwsuper == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_type == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1210);
+var_n_kwsuper->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwsuper:nullable TKwsuper> */
+RET_LABEL1:(void)0;
+}
+}
+if (unlikely(var_n_type == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 790);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__ASuperclass___n_type].val = var_n_type; /* _n_type on <self:ASuperclass> */
 if (var_n_type == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1211);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 791);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_type->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_type, self) /* parent= on <var_n_type:nullable AType>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_type,self) on <var_n_type:nullable AType> */
+if (unlikely(var_n_type == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_type->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_type:nullable AType> */
+RET_LABEL2:(void)0;
+}
 }
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:ASuperclass> */
 var = NULL;
 if (var_n_annotations == NULL) {
-var1 = 0; /* is null */
+var3 = 0; /* is null */
 } else {
-var1 = 1; /* arg is null and recv is not */
+var3 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_annotations,var) on <var_n_annotations:nullable AAnnotations> */
+var_other = var;
+{
+var7 = ((short int (*)(val*, val*))(var_n_annotations->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_annotations, var_other) /* == on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
+var6 = var7;
+}
+var8 = !var6;
+var4 = var8;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+var3 = var4;
+}
+if (var3){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_annotations,self) on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+var_n_annotations->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+RET_LABEL9:(void)0;
+}
 }
-if (var1){
-((void (*)(val*, val*))(var_n_annotations->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_annotations, self) /* parent= on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#init_asuperclass for (self: Object, nullable TKwsuper, nullable AType, nullable AAnnotations) */
 void VIRTUAL_parser_prod__ASuperclass__init_asuperclass(val* self, val* p0, val* p1, val* p2) {
-parser_prod__ASuperclass__init_asuperclass(self, p0, p1, p2);
+parser_prod__ASuperclass__init_asuperclass(self, p0, p1, p2); /* Direct call parser_prod#ASuperclass#init_asuperclass on <self:Object(ASuperclass)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#replace_child for (self: ASuperclass, ANode, nullable ANode) */
@@ -4997,136 +5552,171 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : TKwsuper */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : AType */;
-short int var6 /* : Bool */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
+const char* var_class_name;
+val* var8 /* : AType */;
 short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
-val* var12 /* : nullable AAnnotations */;
-short int var13 /* : Bool */;
-val* var14 /* : null */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
 short int var15 /* : Bool */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
-val* var19 /* : null */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
+val* var19 /* : nullable AAnnotations */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
+short int var25 /* : Bool */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+const char* var_class_name29;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__ASuperclass___n_kwsuper].val; /* _n_kwsuper on <self:ASuperclass> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwsuper");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1220);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwsuper");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 798);
 show_backtrace(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwsuper>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:TKwsuper> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:TKwsuper> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwsuper */
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+/* <var_new_child:nullable ANode> isa TKwsuper */
 cltype = type_parser_nodes__TKwsuper.color;
 idtype = type_parser_nodes__TKwsuper.id;
+if(var_new_child == NULL) {
+var7 = 0;
+} else {
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1223);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__ASuperclass___n_kwsuper].val = var_new_child; /* _n_kwsuper on <self:ASuperclass> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1226);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwsuper", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 799);
 show_backtrace(1);
 }
+{
+parser_prod__ASuperclass__n_kwsuper_61d(self, var_new_child); /* Direct call parser_prod#ASuperclass#n_kwsuper= on <self:ASuperclass>*/
+}
 goto RET_LABEL;
 } else {
 }
-var5 = self->attrs[COLOR_parser_nodes__ASuperclass___n_type].val; /* _n_type on <self:ASuperclass> */
-if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_type");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1230);
+var8 = self->attrs[COLOR_parser_nodes__ASuperclass___n_type].val; /* _n_type on <self:ASuperclass> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 802);
 show_backtrace(1);
 }
-var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:AType>*/;
-if (var6){
-var7 = NULL;
-if (var_new_child == NULL) {
-var8 = 0; /* is null */
-} else {
-var8 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:AType> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:AType> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (var8){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AType */
-cltype10 = type_parser_nodes__AType.color;
-idtype11 = type_parser_nodes__AType.id;
-if(cltype10 >= var_new_child->type->table_size) {
-var9 = 0;
-} else {
-var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1233);
-show_backtrace(1);
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
 }
-self->attrs[COLOR_parser_nodes__ASuperclass___n_type].val = var_new_child; /* _n_type on <self:ASuperclass> */
+var9 = var10;
+}
+if (var9){
+/* <var_new_child:nullable ANode> isa AType */
+cltype16 = type_parser_nodes__AType.color;
+idtype17 = type_parser_nodes__AType.id;
+if(var_new_child == NULL) {
+var15 = 0;
+} else {
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1236);
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
+}
+}
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AType", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 803);
 show_backtrace(1);
 }
+{
+parser_prod__ASuperclass__n_type_61d(self, var_new_child); /* Direct call parser_prod#ASuperclass#n_type= on <self:ASuperclass>*/
+}
 goto RET_LABEL;
 } else {
 }
-var12 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ASuperclass> */
-if (var12 == NULL) {
-var13 = 0; /* <var_old_child:ANode> cannot be null */
+var19 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ASuperclass> */
+if (var19 == NULL) {
+var20 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var_old_child) /* == on <var12:nullable AAnnotations>*/;
+{ /* Inline kernel#Object#== (var19,var_old_child) on <var19:nullable AAnnotations> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var19,var_other) on <var19:nullable AAnnotations(AAnnotations)> */
+var25 = var19 == var_other;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
-if (var13){
-var14 = NULL;
-if (var_new_child == NULL) {
-var15 = 0; /* is null */
-} else {
-var15 = 1; /* arg is null and recv is not */
 }
-if (var15){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AAnnotations */
-cltype17 = type_parser_nodes__AAnnotations.color;
-idtype18 = type_parser_nodes__AAnnotations.id;
-if(cltype17 >= var_new_child->type->table_size) {
-var16 = 0;
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
+}
+var20 = var21;
+}
+if (var20){
+/* <var_new_child:nullable ANode> isa nullable AAnnotations */
+cltype27 = type_nullable_parser_nodes__AAnnotations.color;
+idtype28 = type_nullable_parser_nodes__AAnnotations.id;
+if(var_new_child == NULL) {
+var26 = 1;
+} else {
+if(cltype27 >= var_new_child->type->table_size) {
+var26 = 0;
 } else {
-var16 = var_new_child->type->type_table[cltype17] == idtype18;
+var26 = var_new_child->type->type_table[cltype27] == idtype28;
+}
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1243);
+if (unlikely(!var26)) {
+var_class_name29 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AAnnotations", var_class_name29);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 807);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:ASuperclass> */
-} else {
-var19 = NULL;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var19; /* _n_annotations on <self:ASuperclass> */
+{
+parser_prod__ASuperclass__n_annotations_61d(self, var_new_child); /* Direct call parser_prod#ASuperclass#n_annotations= on <self:ASuperclass>*/
 }
 goto RET_LABEL;
 } else {
@@ -5135,7 +5725,7 @@ RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__ASuperclass__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ASuperclass__replace_child(self, p0, p1);
+parser_prod__ASuperclass__replace_child(self, p0, p1); /* Direct call parser_prod#ASuperclass#replace_child on <self:Object(ASuperclass)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#n_kwsuper= for (self: ASuperclass, TKwsuper) */
@@ -5143,12 +5733,17 @@ void parser_prod__ASuperclass__n_kwsuper_61d(val* self, val* p0) {
 val* var_node /* var node: TKwsuper */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__ASuperclass___n_kwsuper].val = var_node; /* _n_kwsuper on <self:ASuperclass> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwsuper>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwsuper> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwsuper> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#n_kwsuper= for (self: Object, TKwsuper) */
 void VIRTUAL_parser_prod__ASuperclass__n_kwsuper_61d(val* self, val* p0) {
-parser_prod__ASuperclass__n_kwsuper_61d(self, p0);
+parser_prod__ASuperclass__n_kwsuper_61d(self, p0); /* Direct call parser_prod#ASuperclass#n_kwsuper= on <self:Object(ASuperclass)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#n_type= for (self: ASuperclass, AType) */
@@ -5156,12 +5751,17 @@ void parser_prod__ASuperclass__n_type_61d(val* self, val* p0) {
 val* var_node /* var node: AType */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__ASuperclass___n_type].val = var_node; /* _n_type on <self:ASuperclass> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AType>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:AType> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:AType> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#n_type= for (self: Object, AType) */
 void VIRTUAL_parser_prod__ASuperclass__n_type_61d(val* self, val* p0) {
-parser_prod__ASuperclass__n_type_61d(self, p0);
+parser_prod__ASuperclass__n_type_61d(self, p0); /* Direct call parser_prod#ASuperclass#n_type= on <self:Object(ASuperclass)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#n_annotations= for (self: ASuperclass, nullable AAnnotations) */
@@ -5169,6 +5769,11 @@ void parser_prod__ASuperclass__n_annotations_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AAnnotations */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:ASuperclass> */
 var = NULL;
@@ -5177,15 +5782,34 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AAnnotations> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AAnnotations(AAnnotations)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AAnnotations(AAnnotations)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AAnnotations(AAnnotations)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AAnnotations(AAnnotations)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#n_annotations= for (self: Object, nullable AAnnotations) */
 void VIRTUAL_parser_prod__ASuperclass__n_annotations_61d(val* self, val* p0) {
-parser_prod__ASuperclass__n_annotations_61d(self, p0);
+parser_prod__ASuperclass__n_annotations_61d(self, p0); /* Direct call parser_prod#ASuperclass#n_annotations= on <self:Object(ASuperclass)>*/
 RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#visit_all for (self: ASuperclass, Visitor) */
@@ -5194,100 +5818,93 @@ val* var_v /* var v: Visitor */;
 val* var /* : TKwsuper */;
 val* var1 /* : AType */;
 val* var2 /* : nullable AAnnotations */;
-val* var3 /* : null */;
-short int var4 /* : Bool */;
-val* var5 /* : nullable AAnnotations */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__ASuperclass___n_kwsuper].val; /* _n_kwsuper on <self:ASuperclass> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwsuper");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1273);
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwsuper");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 831);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
 var1 = self->attrs[COLOR_parser_nodes__ASuperclass___n_type].val; /* _n_type on <self:ASuperclass> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_type");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1274);
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 832);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on <var_v:Visitor>*/;
-var2 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ASuperclass> */
-var3 = NULL;
-if (var2 == NULL) {
-var4 = 0; /* is null */
-} else {
-var4 = 1; /* arg is null and recv is not */
-}
-if (var4){
-var5 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ASuperclass> */
-if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1276);
-show_backtrace(1);
+{
+parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var5) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var2 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ASuperclass> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var2); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
 RET_LABEL:;
 }
 /* method parser_prod#ASuperclass#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__ASuperclass__visit_all(val* self, val* p0) {
-parser_prod__ASuperclass__visit_all(self, p0);
+parser_prod__ASuperclass__visit_all(self, p0); /* Direct call parser_prod#ASuperclass#visit_all on <self:Object(ASuperclass)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#empty_init for (self: AAttrPropdef) */
-void parser_prod__AAttrPropdef__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AAttrPropdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AAttrPropdef__empty_init(val* self) {
-parser_prod__AAttrPropdef__empty_init(self);
-RET_LABEL:;
-}
-/* method parser_prod#AAttrPropdef#init_aattrpropdef for (self: AAttrPropdef, nullable ADoc, nullable AAble, nullable AAble, nullable TKwredef, nullable AVisibility, nullable TKwvar, nullable TAttrid, nullable TId, nullable AType, nullable AAnnotations, nullable AExpr) */
-void parser_prod__AAttrPropdef__init_aattrpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7, val* p8, val* p9, val* p10) {
+/* method parser_prod#AAttrPropdef#init_aattrpropdef for (self: AAttrPropdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwvar, nullable TId, nullable AType, nullable AExpr, nullable AAnnotations, nullable AExpr) */
+void parser_prod__AAttrPropdef__init_aattrpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7, val* p8) {
 val* var_n_doc /* var n_doc: nullable ADoc */;
-val* var_n_readable /* var n_readable: nullable AAble */;
-val* var_n_writable /* var n_writable: nullable AAble */;
 val* var_n_kwredef /* var n_kwredef: nullable TKwredef */;
 val* var_n_visibility /* var n_visibility: nullable AVisibility */;
 val* var_n_kwvar /* var n_kwvar: nullable TKwvar */;
-val* var_n_id /* var n_id: nullable TAttrid */;
 val* var_n_id2 /* var n_id2: nullable TId */;
 val* var_n_type /* var n_type: nullable AType */;
-val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
 val* var_n_expr /* var n_expr: nullable AExpr */;
+val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
+val* var_n_block /* var n_block: nullable AExpr */;
 val* var /* : null */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-val* var4 /* : null */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
 short int var5 /* : Bool */;
-val* var6 /* : null */;
-short int var7 /* : Bool */;
+short int var6 /* : Bool */;
 val* var8 /* : null */;
 short int var9 /* : Bool */;
-val* var10 /* : null */;
-short int var11 /* : Bool */;
-val* var12 /* : null */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
 short int var13 /* : Bool */;
-val* var14 /* : null */;
-short int var15 /* : Bool */;
-val* var16 /* : null */;
-short int var17 /* : Bool */;
+short int var14 /* : Bool */;
+val* var19 /* : null */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
+short int var25 /* : Bool */;
+val* var27 /* : null */;
+short int var28 /* : Bool */;
+short int var29 /* : Bool */;
+short int var31 /* : Bool */;
+short int var32 /* : Bool */;
+short int var33 /* : Bool */;
+val* var35 /* : null */;
+short int var36 /* : Bool */;
+short int var37 /* : Bool */;
+short int var39 /* : Bool */;
+short int var40 /* : Bool */;
+short int var41 /* : Bool */;
+val* var43 /* : null */;
+short int var44 /* : Bool */;
+short int var45 /* : Bool */;
+short int var47 /* : Bool */;
+short int var48 /* : Bool */;
+short int var49 /* : Bool */;
 var_n_doc = p0;
-var_n_readable = p1;
-var_n_writable = p2;
-var_n_kwredef = p3;
-var_n_visibility = p4;
-var_n_kwvar = p5;
-var_n_id = p6;
-var_n_id2 = p7;
-var_n_type = p8;
-var_n_annotations = p9;
-var_n_expr = p10;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AAttrPropdef__empty_init]))(self) /* empty_init on <self:AAttrPropdef>*/;
+var_n_kwredef = p1;
+var_n_visibility = p2;
+var_n_kwvar = p3;
+var_n_id2 = p4;
+var_n_type = p5;
+var_n_expr = p6;
+var_n_annotations = p7;
+var_n_block = p8;
 self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:AAttrPropdef> */
 var = NULL;
 if (var_n_doc == NULL) {
@@ -5295,129 +5912,247 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
-if (var1){
-((void (*)(val*, val*))(var_n_doc->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_doc, self) /* parent= on <var_n_doc:nullable ADoc(ADoc)>*/;
-} else {
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_doc,var) on <var_n_doc:nullable ADoc> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_n_doc->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_doc, var_other) /* == on <var_n_doc:nullable ADoc(ADoc)>*/;
+var4 = var5;
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_readable].val = var_n_readable; /* _n_readable on <self:AAttrPropdef> */
-var2 = NULL;
-if (var_n_readable == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
-if (var3){
-((void (*)(val*, val*))(var_n_readable->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_readable, self) /* parent= on <var_n_readable:nullable AAble(AAble)>*/;
-} else {
+var1 = var2;
+}
+if (var1){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_doc,self) on <var_n_doc:nullable ADoc(ADoc)> */
+var_n_doc->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_doc:nullable ADoc(ADoc)> */
+RET_LABEL7:(void)0;
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_writable].val = var_n_writable; /* _n_writable on <self:AAttrPropdef> */
-var4 = NULL;
-if (var_n_writable == NULL) {
-var5 = 0; /* is null */
-} else {
-var5 = 1; /* arg is null and recv is not */
 }
-if (var5){
-((void (*)(val*, val*))(var_n_writable->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_writable, self) /* parent= on <var_n_writable:nullable AAble(AAble)>*/;
 } else {
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AAttrPropdef> */
-var6 = NULL;
+self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AAttrPropdef> */
+var8 = NULL;
 if (var_n_kwredef == NULL) {
-var7 = 0; /* is null */
+var9 = 0; /* is null */
 } else {
-var7 = 1; /* arg is null and recv is not */
+var9 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_kwredef,var8) on <var_n_kwredef:nullable TKwredef> */
+var_other = var8;
+{
+var13 = ((short int (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwredef, var_other) /* == on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
+var12 = var13;
+}
+var14 = !var12;
+var10 = var14;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
+}
+if (var9){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwredef,self) on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+var_n_kwredef->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+RET_LABEL15:(void)0;
+}
 }
-if (var7){
-((void (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwredef, self) /* parent= on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
 } else {
 }
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1314);
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 853);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AAttrPropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AAttrPropdef> */
 if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1315);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 854);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_visibility->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_visibility, self) /* parent= on <var_n_visibility:nullable AVisibility>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_visibility,self) on <var_n_visibility:nullable AVisibility> */
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_kwvar == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1316);
+var_n_visibility->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_visibility:nullable AVisibility> */
+RET_LABEL16:(void)0;
+}
+}
+if (unlikely(var_n_kwvar == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 855);
 show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwvar].val = var_n_kwvar; /* _n_kwvar on <self:AAttrPropdef> */
 if (var_n_kwvar == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1317);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 856);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwvar->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwvar, self) /* parent= on <var_n_kwvar:nullable TKwvar>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwvar,self) on <var_n_kwvar:nullable TKwvar> */
+if (unlikely(var_n_kwvar == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id].val = var_n_id; /* _n_id on <self:AAttrPropdef> */
-var8 = NULL;
-if (var_n_id == NULL) {
-var9 = 0; /* is null */
-} else {
-var9 = 1; /* arg is null and recv is not */
+var_n_kwvar->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwvar:nullable TKwvar> */
+RET_LABEL17:(void)0;
 }
-if (var9){
-((void (*)(val*, val*))(var_n_id->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_id, self) /* parent= on <var_n_id:nullable TAttrid(TAttrid)>*/;
-} else {
+}
+if (unlikely(var_n_id2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 857);
+show_backtrace(1);
 }
 self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id2].val = var_n_id2; /* _n_id2 on <self:AAttrPropdef> */
-var10 = NULL;
 if (var_n_id2 == NULL) {
-var11 = 0; /* is null */
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 858);
+show_backtrace(1);
 } else {
-var11 = 1; /* arg is null and recv is not */
+{ /* Inline parser_nodes#ANode#parent= (var_n_id2,self) on <var_n_id2:nullable TId> */
+if (unlikely(var_n_id2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_id2->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_id2:nullable TId> */
+RET_LABEL18:(void)0;
 }
-if (var11){
-((void (*)(val*, val*))(var_n_id2->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_id2, self) /* parent= on <var_n_id2:nullable TId(TId)>*/;
-} else {
 }
 self->attrs[COLOR_parser_nodes__AAttrPropdef___n_type].val = var_n_type; /* _n_type on <self:AAttrPropdef> */
-var12 = NULL;
+var19 = NULL;
 if (var_n_type == NULL) {
-var13 = 0; /* is null */
+var20 = 0; /* is null */
+} else {
+var20 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_type,var19) on <var_n_type:nullable AType> */
+var_other = var19;
+{
+var24 = ((short int (*)(val*, val*))(var_n_type->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_type, var_other) /* == on <var_n_type:nullable AType(AType)>*/;
+var23 = var24;
+}
+var25 = !var23;
+var21 = var25;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
+}
+var20 = var21;
+}
+if (var20){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_type,self) on <var_n_type:nullable AType(AType)> */
+var_n_type->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_type:nullable AType(AType)> */
+RET_LABEL26:(void)0;
+}
+}
+} else {
+}
+self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val = var_n_expr; /* _n_expr on <self:AAttrPropdef> */
+var27 = NULL;
+if (var_n_expr == NULL) {
+var28 = 0; /* is null */
 } else {
-var13 = 1; /* arg is null and recv is not */
+var28 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_expr,var27) on <var_n_expr:nullable AExpr> */
+var_other = var27;
+{
+var32 = ((short int (*)(val*, val*))(var_n_expr->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_expr, var_other) /* == on <var_n_expr:nullable AExpr(AExpr)>*/;
+var31 = var32;
+}
+var33 = !var31;
+var29 = var33;
+goto RET_LABEL30;
+RET_LABEL30:(void)0;
+}
+var28 = var29;
+}
+if (var28){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_expr,self) on <var_n_expr:nullable AExpr(AExpr)> */
+var_n_expr->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_expr:nullable AExpr(AExpr)> */
+RET_LABEL34:(void)0;
+}
 }
-if (var13){
-((void (*)(val*, val*))(var_n_type->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_type, self) /* parent= on <var_n_type:nullable AType(AType)>*/;
 } else {
 }
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:AAttrPropdef> */
-var14 = NULL;
+var35 = NULL;
 if (var_n_annotations == NULL) {
-var15 = 0; /* is null */
+var36 = 0; /* is null */
 } else {
-var15 = 1; /* arg is null and recv is not */
+var36 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_annotations,var35) on <var_n_annotations:nullable AAnnotations> */
+var_other = var35;
+{
+var40 = ((short int (*)(val*, val*))(var_n_annotations->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_annotations, var_other) /* == on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
+var39 = var40;
+}
+var41 = !var39;
+var37 = var41;
+goto RET_LABEL38;
+RET_LABEL38:(void)0;
+}
+var36 = var37;
+}
+if (var36){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_annotations,self) on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+var_n_annotations->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+RET_LABEL42:(void)0;
+}
 }
-if (var15){
-((void (*)(val*, val*))(var_n_annotations->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_annotations, self) /* parent= on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
 } else {
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val = var_n_expr; /* _n_expr on <self:AAttrPropdef> */
-var16 = NULL;
-if (var_n_expr == NULL) {
-var17 = 0; /* is null */
+self->attrs[COLOR_parser_nodes__AAttrPropdef___n_block].val = var_n_block; /* _n_block on <self:AAttrPropdef> */
+var43 = NULL;
+if (var_n_block == NULL) {
+var44 = 0; /* is null */
 } else {
-var17 = 1; /* arg is null and recv is not */
+var44 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_block,var43) on <var_n_block:nullable AExpr> */
+var_other = var43;
+{
+var48 = ((short int (*)(val*, val*))(var_n_block->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_block, var_other) /* == on <var_n_block:nullable AExpr(AExpr)>*/;
+var47 = var48;
+}
+var49 = !var47;
+var45 = var49;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
+}
+var44 = var45;
+}
+if (var44){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_block,self) on <var_n_block:nullable AExpr(AExpr)> */
+var_n_block->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_block:nullable AExpr(AExpr)> */
+RET_LABEL50:(void)0;
+}
 }
-if (var17){
-((void (*)(val*, val*))(var_n_expr->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_expr, self) /* parent= on <var_n_expr:nullable AExpr(AExpr)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#init_aattrpropdef for (self: Object, nullable ADoc, nullable AAble, nullable AAble, nullable TKwredef, nullable AVisibility, nullable TKwvar, nullable TAttrid, nullable TId, nullable AType, nullable AAnnotations, nullable AExpr) */
-void VIRTUAL_parser_prod__AAttrPropdef__init_aattrpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7, val* p8, val* p9, val* p10) {
-parser_prod__AAttrPropdef__init_aattrpropdef(self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
+/* method parser_prod#AAttrPropdef#init_aattrpropdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwvar, nullable TId, nullable AType, nullable AExpr, nullable AAnnotations, nullable AExpr) */
+void VIRTUAL_parser_prod__AAttrPropdef__init_aattrpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7, val* p8) {
+parser_prod__AAttrPropdef__init_aattrpropdef(self, p0, p1, p2, p3, p4, p5, p6, p7, p8); /* Direct call parser_prod#AAttrPropdef#init_aattrpropdef on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AAttrPropdef#replace_child for (self: AAttrPropdef, ANode, nullable ANode) */
@@ -5426,488 +6161,495 @@ val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : nullable ADoc */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : null */;
-val* var6 /* : nullable AAble */;
-short int var7 /* : Bool */;
-val* var8 /* : null */;
+const char* var_class_name;
+val* var8 /* : nullable TKwredef */;
 short int var9 /* : Bool */;
 short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var13 /* : null */;
-val* var14 /* : nullable AAble */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
 short int var15 /* : Bool */;
-val* var16 /* : null */;
-short int var17 /* : Bool */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-val* var21 /* : null */;
-val* var22 /* : nullable TKwredef */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
+val* var19 /* : nullable AVisibility */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
 short int var23 /* : Bool */;
-val* var24 /* : null */;
 short int var25 /* : Bool */;
 short int var26 /* : Bool */;
 int cltype27;
 int idtype28;
-val* var29 /* : null */;
-val* var30 /* : AVisibility */;
+const char* var_class_name29;
+val* var30 /* : TKwvar */;
 short int var31 /* : Bool */;
-val* var32 /* : null */;
-short int var33 /* : Bool */;
+short int var32 /* : Bool */;
 short int var34 /* : Bool */;
-int cltype35;
-int idtype36;
-val* var37 /* : TKwvar */;
-short int var38 /* : Bool */;
-val* var39 /* : null */;
-short int var40 /* : Bool */;
-short int var41 /* : Bool */;
-int cltype42;
-int idtype43;
-val* var44 /* : nullable TAttrid */;
+short int var36 /* : Bool */;
+short int var37 /* : Bool */;
+int cltype38;
+int idtype39;
+const char* var_class_name40;
+val* var41 /* : TId */;
+short int var42 /* : Bool */;
+short int var43 /* : Bool */;
 short int var45 /* : Bool */;
-val* var46 /* : null */;
 short int var47 /* : Bool */;
 short int var48 /* : Bool */;
 int cltype49;
 int idtype50;
-val* var51 /* : null */;
-val* var52 /* : nullable TId */;
+const char* var_class_name51;
+val* var52 /* : nullable AType */;
 short int var53 /* : Bool */;
-val* var54 /* : null */;
-short int var55 /* : Bool */;
+short int var54 /* : Bool */;
 short int var56 /* : Bool */;
-int cltype57;
-int idtype58;
-val* var59 /* : null */;
-val* var60 /* : nullable AType */;
-short int var61 /* : Bool */;
-val* var62 /* : null */;
-short int var63 /* : Bool */;
+short int var58 /* : Bool */;
+short int var59 /* : Bool */;
+int cltype60;
+int idtype61;
+const char* var_class_name62;
+val* var63 /* : nullable AExpr */;
 short int var64 /* : Bool */;
-int cltype65;
-int idtype66;
-val* var67 /* : null */;
-val* var68 /* : nullable AAnnotations */;
+short int var65 /* : Bool */;
+short int var67 /* : Bool */;
 short int var69 /* : Bool */;
-val* var70 /* : null */;
-short int var71 /* : Bool */;
-short int var72 /* : Bool */;
-int cltype73;
-int idtype74;
-val* var75 /* : null */;
-val* var76 /* : nullable AExpr */;
-short int var77 /* : Bool */;
-val* var78 /* : null */;
-short int var79 /* : Bool */;
+short int var70 /* : Bool */;
+int cltype71;
+int idtype72;
+const char* var_class_name73;
+val* var74 /* : nullable AAnnotations */;
+short int var75 /* : Bool */;
+short int var76 /* : Bool */;
+short int var78 /* : Bool */;
 short int var80 /* : Bool */;
-int cltype81;
-int idtype82;
-val* var83 /* : null */;
+short int var81 /* : Bool */;
+int cltype82;
+int idtype83;
+const char* var_class_name84;
+val* var85 /* : nullable AExpr */;
+short int var86 /* : Bool */;
+short int var87 /* : Bool */;
+short int var89 /* : Bool */;
+short int var91 /* : Bool */;
+short int var92 /* : Bool */;
+int cltype93;
+int idtype94;
+const char* var_class_name95;
 var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AAttrPropdef> */
 if (var == NULL) {
 var1 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:nullable ADoc>*/;
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:nullable ADoc> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable ADoc(ADoc)> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
 }
 if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
+/* <var_new_child:nullable ANode> isa nullable ADoc */
+cltype = type_nullable_parser_nodes__ADoc.color;
+idtype = type_nullable_parser_nodes__ADoc.id;
+if(var_new_child == NULL) {
+var7 = 1;
 } else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ADoc */
-cltype = type_parser_nodes__ADoc.color;
-idtype = type_parser_nodes__ADoc.id;
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1345);
+}
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ADoc", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 872);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_new_child; /* _n_doc on <self:AAttrPropdef> */
-} else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var5; /* _n_doc on <self:AAttrPropdef> */
+{
+parser_prod__AAttrPropdef__n_doc_61d(self, var_new_child); /* Direct call parser_prod#AAttrPropdef#n_doc= on <self:AAttrPropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var6 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_readable].val; /* _n_readable on <self:AAttrPropdef> */
-if (var6 == NULL) {
-var7 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:nullable AAble>*/;
-}
-if (var7){
-var8 = NULL;
-if (var_new_child == NULL) {
-var9 = 0; /* is null */
-} else {
-var9 = 1; /* arg is null and recv is not */
-}
-if (var9){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AAble */
-cltype11 = type_parser_nodes__AAble.color;
-idtype12 = type_parser_nodes__AAble.id;
-if(cltype11 >= var_new_child->type->table_size) {
-var10 = 0;
+var8 = self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val; /* _n_kwredef on <self:AAttrPropdef> */
+if (var8 == NULL) {
+var9 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var10 = var_new_child->type->type_table[cltype11] == idtype12;
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:nullable TKwredef> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:nullable TKwredef(TKwredef)> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1355);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_readable].val = var_new_child; /* _n_readable on <self:AAttrPropdef> */
-} else {
-var13 = NULL;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_readable].val = var13; /* _n_readable on <self:AAttrPropdef> */
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
 }
-goto RET_LABEL;
-} else {
+var9 = var10;
 }
-var14 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_writable].val; /* _n_writable on <self:AAttrPropdef> */
-if (var14 == NULL) {
-var15 = 0; /* <var_old_child:ANode> cannot be null */
+if (var9){
+/* <var_new_child:nullable ANode> isa nullable TKwredef */
+cltype16 = type_nullable_parser_nodes__TKwredef.color;
+idtype17 = type_nullable_parser_nodes__TKwredef.id;
+if(var_new_child == NULL) {
+var15 = 1;
 } else {
-var15 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var_old_child) /* == on <var14:nullable AAble>*/;
-}
-if (var15){
-var16 = NULL;
-if (var_new_child == NULL) {
-var17 = 0; /* is null */
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
 } else {
-var17 = 1; /* arg is null and recv is not */
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
 }
-if (var17){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AAble */
-cltype19 = type_parser_nodes__AAble.color;
-idtype20 = type_parser_nodes__AAble.id;
-if(cltype19 >= var_new_child->type->table_size) {
-var18 = 0;
-} else {
-var18 = var_new_child->type->type_table[cltype19] == idtype20;
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1365);
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TKwredef", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 876);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_writable].val = var_new_child; /* _n_writable on <self:AAttrPropdef> */
-} else {
-var21 = NULL;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_writable].val = var21; /* _n_writable on <self:AAttrPropdef> */
+{
+parser_prod__AAttrPropdef__n_kwredef_61d(self, var_new_child); /* Direct call parser_prod#AAttrPropdef#n_kwredef= on <self:AAttrPropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var22 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwredef].val; /* _n_kwredef on <self:AAttrPropdef> */
-if (var22 == NULL) {
-var23 = 0; /* <var_old_child:ANode> cannot be null */
+var19 = self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val; /* _n_visibility on <self:AAttrPropdef> */
+if (var19 == NULL) {
+var20 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var23 = ((short int (*)(val*, val*))(var22->class->vft[COLOR_kernel__Object___61d_61d]))(var22, var_old_child) /* == on <var22:nullable TKwredef>*/;
+{ /* Inline kernel#Object#== (var19,var_old_child) on <var19:nullable AVisibility> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var19,var_other) on <var19:nullable AVisibility(AVisibility)> */
+var25 = var19 == var_other;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
-if (var23){
-var24 = NULL;
-if (var_new_child == NULL) {
-var25 = 0; /* is null */
-} else {
-var25 = 1; /* arg is null and recv is not */
 }
-if (var25){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwredef */
-cltype27 = type_parser_nodes__TKwredef.color;
-idtype28 = type_parser_nodes__TKwredef.id;
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
+}
+var20 = var21;
+}
+if (var20){
+/* <var_new_child:nullable ANode> isa AVisibility */
+cltype27 = type_parser_nodes__AVisibility.color;
+idtype28 = type_parser_nodes__AVisibility.id;
+if(var_new_child == NULL) {
+var26 = 0;
+} else {
 if(cltype27 >= var_new_child->type->table_size) {
 var26 = 0;
 } else {
 var26 = var_new_child->type->type_table[cltype27] == idtype28;
 }
-if (!var26) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1375);
+}
+if (unlikely(!var26)) {
+var_class_name29 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AVisibility", var_class_name29);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 880);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AAttrPropdef> */
-} else {
-var29 = NULL;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwredef].val = var29; /* _n_kwredef on <self:AAttrPropdef> */
+{
+parser_prod__AAttrPropdef__n_visibility_61d(self, var_new_child); /* Direct call parser_prod#AAttrPropdef#n_visibility= on <self:AAttrPropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var30 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_visibility].val; /* _n_visibility on <self:AAttrPropdef> */
-if (var30 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_visibility");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1382);
+var30 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwvar].val; /* _n_kwvar on <self:AAttrPropdef> */
+if (unlikely(var30 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwvar");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 883);
 show_backtrace(1);
 }
-var31 = ((short int (*)(val*, val*))(var30->class->vft[COLOR_kernel__Object___61d_61d]))(var30, var_old_child) /* == on <var30:AVisibility>*/;
-if (var31){
-var32 = NULL;
-if (var_new_child == NULL) {
-var33 = 0; /* is null */
-} else {
-var33 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var30,var_old_child) on <var30:TKwvar> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var30,var_other) on <var30:TKwvar> */
+var36 = var30 == var_other;
+var34 = var36;
+goto RET_LABEL35;
+RET_LABEL35:(void)0;
 }
-if (var33){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AVisibility */
-cltype35 = type_parser_nodes__AVisibility.color;
-idtype36 = type_parser_nodes__AVisibility.id;
-if(cltype35 >= var_new_child->type->table_size) {
-var34 = 0;
-} else {
-var34 = var_new_child->type->type_table[cltype35] == idtype36;
 }
-if (!var34) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1385);
-show_backtrace(1);
+var32 = var34;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_visibility].val = var_new_child; /* _n_visibility on <self:AAttrPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1388);
-show_backtrace(1);
+var31 = var32;
 }
-goto RET_LABEL;
+if (var31){
+/* <var_new_child:nullable ANode> isa TKwvar */
+cltype38 = type_parser_nodes__TKwvar.color;
+idtype39 = type_parser_nodes__TKwvar.id;
+if(var_new_child == NULL) {
+var37 = 0;
 } else {
+if(cltype38 >= var_new_child->type->table_size) {
+var37 = 0;
+} else {
+var37 = var_new_child->type->type_table[cltype38] == idtype39;
 }
-var37 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwvar].val; /* _n_kwvar on <self:AAttrPropdef> */
-if (var37 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwvar");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1392);
+}
+if (unlikely(!var37)) {
+var_class_name40 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwvar", var_class_name40);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 884);
 show_backtrace(1);
 }
-var38 = ((short int (*)(val*, val*))(var37->class->vft[COLOR_kernel__Object___61d_61d]))(var37, var_old_child) /* == on <var37:TKwvar>*/;
-if (var38){
-var39 = NULL;
-if (var_new_child == NULL) {
-var40 = 0; /* is null */
-} else {
-var40 = 1; /* arg is null and recv is not */
+{
+parser_prod__AAttrPropdef__n_kwvar_61d(self, var_new_child); /* Direct call parser_prod#AAttrPropdef#n_kwvar= on <self:AAttrPropdef>*/
 }
-if (var40){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwvar */
-cltype42 = type_parser_nodes__TKwvar.color;
-idtype43 = type_parser_nodes__TKwvar.id;
-if(cltype42 >= var_new_child->type->table_size) {
-var41 = 0;
+goto RET_LABEL;
 } else {
-var41 = var_new_child->type->type_table[cltype42] == idtype43;
 }
-if (!var41) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1395);
+var41 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id2].val; /* _n_id2 on <self:AAttrPropdef> */
+if (unlikely(var41 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id2");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 887);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwvar].val = var_new_child; /* _n_kwvar on <self:AAttrPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1398);
-show_backtrace(1);
+{
+{ /* Inline kernel#Object#== (var41,var_old_child) on <var41:TId> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var41,var_other) on <var41:TId> */
+var47 = var41 == var_other;
+var45 = var47;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
 }
-goto RET_LABEL;
-} else {
 }
-var44 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id].val; /* _n_id on <self:AAttrPropdef> */
-if (var44 == NULL) {
-var45 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var45 = ((short int (*)(val*, val*))(var44->class->vft[COLOR_kernel__Object___61d_61d]))(var44, var_old_child) /* == on <var44:nullable TAttrid>*/;
+var43 = var45;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
 }
-if (var45){
-var46 = NULL;
-if (var_new_child == NULL) {
-var47 = 0; /* is null */
-} else {
-var47 = 1; /* arg is null and recv is not */
+var42 = var43;
 }
-if (var47){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TAttrid */
-cltype49 = type_parser_nodes__TAttrid.color;
-idtype50 = type_parser_nodes__TAttrid.id;
+if (var42){
+/* <var_new_child:nullable ANode> isa TId */
+cltype49 = type_parser_nodes__TId.color;
+idtype50 = type_parser_nodes__TId.id;
+if(var_new_child == NULL) {
+var48 = 0;
+} else {
 if(cltype49 >= var_new_child->type->table_size) {
 var48 = 0;
 } else {
 var48 = var_new_child->type->type_table[cltype49] == idtype50;
 }
-if (!var48) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1405);
+}
+if (unlikely(!var48)) {
+var_class_name51 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TId", var_class_name51);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 888);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id].val = var_new_child; /* _n_id on <self:AAttrPropdef> */
-} else {
-var51 = NULL;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id].val = var51; /* _n_id on <self:AAttrPropdef> */
+{
+parser_prod__AAttrPropdef__n_id2_61d(self, var_new_child); /* Direct call parser_prod#AAttrPropdef#n_id2= on <self:AAttrPropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var52 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id2].val; /* _n_id2 on <self:AAttrPropdef> */
+var52 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_type].val; /* _n_type on <self:AAttrPropdef> */
 if (var52 == NULL) {
 var53 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var53 = ((short int (*)(val*, val*))(var52->class->vft[COLOR_kernel__Object___61d_61d]))(var52, var_old_child) /* == on <var52:nullable TId>*/;
+{ /* Inline kernel#Object#== (var52,var_old_child) on <var52:nullable AType> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var52,var_other) on <var52:nullable AType(AType)> */
+var58 = var52 == var_other;
+var56 = var58;
+goto RET_LABEL57;
+RET_LABEL57:(void)0;
+}
+}
+var54 = var56;
+goto RET_LABEL55;
+RET_LABEL55:(void)0;
+}
+var53 = var54;
 }
 if (var53){
-var54 = NULL;
-if (var_new_child == NULL) {
-var55 = 0; /* is null */
+/* <var_new_child:nullable ANode> isa nullable AType */
+cltype60 = type_nullable_parser_nodes__AType.color;
+idtype61 = type_nullable_parser_nodes__AType.id;
+if(var_new_child == NULL) {
+var59 = 1;
 } else {
-var55 = 1; /* arg is null and recv is not */
-}
-if (var55){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TId */
-cltype57 = type_parser_nodes__TId.color;
-idtype58 = type_parser_nodes__TId.id;
-if(cltype57 >= var_new_child->type->table_size) {
-var56 = 0;
+if(cltype60 >= var_new_child->type->table_size) {
+var59 = 0;
 } else {
-var56 = var_new_child->type->type_table[cltype57] == idtype58;
+var59 = var_new_child->type->type_table[cltype60] == idtype61;
+}
 }
-if (!var56) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1415);
+if (unlikely(!var59)) {
+var_class_name62 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AType", var_class_name62);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 892);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id2].val = var_new_child; /* _n_id2 on <self:AAttrPropdef> */
-} else {
-var59 = NULL;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id2].val = var59; /* _n_id2 on <self:AAttrPropdef> */
+{
+parser_prod__AAttrPropdef__n_type_61d(self, var_new_child); /* Direct call parser_prod#AAttrPropdef#n_type= on <self:AAttrPropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var60 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_type].val; /* _n_type on <self:AAttrPropdef> */
-if (var60 == NULL) {
-var61 = 0; /* <var_old_child:ANode> cannot be null */
+var63 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val; /* _n_expr on <self:AAttrPropdef> */
+if (var63 == NULL) {
+var64 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var61 = ((short int (*)(val*, val*))(var60->class->vft[COLOR_kernel__Object___61d_61d]))(var60, var_old_child) /* == on <var60:nullable AType>*/;
+{ /* Inline kernel#Object#== (var63,var_old_child) on <var63:nullable AExpr> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var63,var_other) on <var63:nullable AExpr(AExpr)> */
+var69 = var63 == var_other;
+var67 = var69;
+goto RET_LABEL68;
+RET_LABEL68:(void)0;
 }
-if (var61){
-var62 = NULL;
-if (var_new_child == NULL) {
-var63 = 0; /* is null */
-} else {
-var63 = 1; /* arg is null and recv is not */
 }
-if (var63){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AType */
-cltype65 = type_parser_nodes__AType.color;
-idtype66 = type_parser_nodes__AType.id;
-if(cltype65 >= var_new_child->type->table_size) {
-var64 = 0;
+var65 = var67;
+goto RET_LABEL66;
+RET_LABEL66:(void)0;
+}
+var64 = var65;
+}
+if (var64){
+/* <var_new_child:nullable ANode> isa nullable AExpr */
+cltype71 = type_nullable_parser_nodes__AExpr.color;
+idtype72 = type_nullable_parser_nodes__AExpr.id;
+if(var_new_child == NULL) {
+var70 = 1;
 } else {
-var64 = var_new_child->type->type_table[cltype65] == idtype66;
+if(cltype71 >= var_new_child->type->table_size) {
+var70 = 0;
+} else {
+var70 = var_new_child->type->type_table[cltype71] == idtype72;
+}
 }
-if (!var64) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1425);
+if (unlikely(!var70)) {
+var_class_name73 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AExpr", var_class_name73);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 896);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_type].val = var_new_child; /* _n_type on <self:AAttrPropdef> */
-} else {
-var67 = NULL;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_type].val = var67; /* _n_type on <self:AAttrPropdef> */
+{
+parser_prod__AAttrPropdef__n_expr_61d(self, var_new_child); /* Direct call parser_prod#AAttrPropdef#n_expr= on <self:AAttrPropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var68 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AAttrPropdef> */
-if (var68 == NULL) {
-var69 = 0; /* <var_old_child:ANode> cannot be null */
+var74 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AAttrPropdef> */
+if (var74 == NULL) {
+var75 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var69 = ((short int (*)(val*, val*))(var68->class->vft[COLOR_kernel__Object___61d_61d]))(var68, var_old_child) /* == on <var68:nullable AAnnotations>*/;
+{ /* Inline kernel#Object#== (var74,var_old_child) on <var74:nullable AAnnotations> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var74,var_other) on <var74:nullable AAnnotations(AAnnotations)> */
+var80 = var74 == var_other;
+var78 = var80;
+goto RET_LABEL79;
+RET_LABEL79:(void)0;
 }
-if (var69){
-var70 = NULL;
-if (var_new_child == NULL) {
-var71 = 0; /* is null */
-} else {
-var71 = 1; /* arg is null and recv is not */
 }
-if (var71){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AAnnotations */
-cltype73 = type_parser_nodes__AAnnotations.color;
-idtype74 = type_parser_nodes__AAnnotations.id;
-if(cltype73 >= var_new_child->type->table_size) {
-var72 = 0;
+var76 = var78;
+goto RET_LABEL77;
+RET_LABEL77:(void)0;
+}
+var75 = var76;
+}
+if (var75){
+/* <var_new_child:nullable ANode> isa nullable AAnnotations */
+cltype82 = type_nullable_parser_nodes__AAnnotations.color;
+idtype83 = type_nullable_parser_nodes__AAnnotations.id;
+if(var_new_child == NULL) {
+var81 = 1;
+} else {
+if(cltype82 >= var_new_child->type->table_size) {
+var81 = 0;
 } else {
-var72 = var_new_child->type->type_table[cltype73] == idtype74;
+var81 = var_new_child->type->type_table[cltype82] == idtype83;
 }
-if (!var72) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1435);
+}
+if (unlikely(!var81)) {
+var_class_name84 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AAnnotations", var_class_name84);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 900);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:AAttrPropdef> */
-} else {
-var75 = NULL;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var75; /* _n_annotations on <self:AAttrPropdef> */
+{
+parser_prod__AAttrPropdef__n_annotations_61d(self, var_new_child); /* Direct call parser_prod#AAttrPropdef#n_annotations= on <self:AAttrPropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var76 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val; /* _n_expr on <self:AAttrPropdef> */
-if (var76 == NULL) {
-var77 = 0; /* <var_old_child:ANode> cannot be null */
+var85 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_block].val; /* _n_block on <self:AAttrPropdef> */
+if (var85 == NULL) {
+var86 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var77 = ((short int (*)(val*, val*))(var76->class->vft[COLOR_kernel__Object___61d_61d]))(var76, var_old_child) /* == on <var76:nullable AExpr>*/;
+{ /* Inline kernel#Object#== (var85,var_old_child) on <var85:nullable AExpr> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var85,var_other) on <var85:nullable AExpr(AExpr)> */
+var91 = var85 == var_other;
+var89 = var91;
+goto RET_LABEL90;
+RET_LABEL90:(void)0;
 }
-if (var77){
-var78 = NULL;
-if (var_new_child == NULL) {
-var79 = 0; /* is null */
-} else {
-var79 = 1; /* arg is null and recv is not */
 }
-if (var79){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AExpr */
-cltype81 = type_parser_nodes__AExpr.color;
-idtype82 = type_parser_nodes__AExpr.id;
-if(cltype81 >= var_new_child->type->table_size) {
-var80 = 0;
+var87 = var89;
+goto RET_LABEL88;
+RET_LABEL88:(void)0;
+}
+var86 = var87;
+}
+if (var86){
+/* <var_new_child:nullable ANode> isa nullable AExpr */
+cltype93 = type_nullable_parser_nodes__AExpr.color;
+idtype94 = type_nullable_parser_nodes__AExpr.id;
+if(var_new_child == NULL) {
+var92 = 1;
+} else {
+if(cltype93 >= var_new_child->type->table_size) {
+var92 = 0;
 } else {
-var80 = var_new_child->type->type_table[cltype81] == idtype82;
+var92 = var_new_child->type->type_table[cltype93] == idtype94;
 }
-if (!var80) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1445);
+}
+if (unlikely(!var92)) {
+var_class_name95 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AExpr", var_class_name95);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 904);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val = var_new_child; /* _n_expr on <self:AAttrPropdef> */
-} else {
-var83 = NULL;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val = var83; /* _n_expr on <self:AAttrPropdef> */
+{
+parser_prod__AAttrPropdef__n_block_61d(self, var_new_child); /* Direct call parser_prod#AAttrPropdef#n_block= on <self:AAttrPropdef>*/
 }
 goto RET_LABEL;
 } else {
@@ -5916,7 +6658,7 @@ RET_LABEL:;
 }
 /* method parser_prod#AAttrPropdef#replace_child for (self: Object, ANode, nullable ANode) */
 void VIRTUAL_parser_prod__AAttrPropdef__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AAttrPropdef__replace_child(self, p0, p1);
+parser_prod__AAttrPropdef__replace_child(self, p0, p1); /* Direct call parser_prod#AAttrPropdef#replace_child on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AAttrPropdef#n_doc= for (self: AAttrPropdef, nullable ADoc) */
@@ -5924,6 +6666,11 @@ void parser_prod__AAttrPropdef__n_doc_61d(val* self, val* p0) {
 val* var_node /* var node: nullable ADoc */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_node; /* _n_doc on <self:AAttrPropdef> */
 var = NULL;
@@ -5932,63 +6679,34 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
-if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ADoc(ADoc)>*/;
-} else {
-}
-RET_LABEL:;
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable ADoc> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable ADoc(ADoc)>*/;
+var4 = var5;
 }
-/* method parser_prod#AAttrPropdef#n_doc= for (self: Object, nullable ADoc) */
-void VIRTUAL_parser_prod__AAttrPropdef__n_doc_61d(val* self, val* p0) {
-parser_prod__AAttrPropdef__n_doc_61d(self, p0);
-RET_LABEL:;
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
-/* method parser_prod#AAttrPropdef#n_readable= for (self: AAttrPropdef, nullable AAble) */
-void parser_prod__AAttrPropdef__n_readable_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AAble */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_readable].val = var_node; /* _n_readable on <self:AAttrPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
+var1 = var2;
 }
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AAble(AAble)>*/;
-} else {
-}
-RET_LABEL:;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable ADoc(ADoc)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable ADoc(ADoc)> */
+RET_LABEL7:(void)0;
 }
-/* method parser_prod#AAttrPropdef#n_readable= for (self: Object, nullable AAble) */
-void VIRTUAL_parser_prod__AAttrPropdef__n_readable_61d(val* self, val* p0) {
-parser_prod__AAttrPropdef__n_readable_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AAttrPropdef#n_writable= for (self: AAttrPropdef, nullable AAble) */
-void parser_prod__AAttrPropdef__n_writable_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AAble */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_writable].val = var_node; /* _n_writable on <self:AAttrPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
 }
-if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AAble(AAble)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#n_writable= for (self: Object, nullable AAble) */
-void VIRTUAL_parser_prod__AAttrPropdef__n_writable_61d(val* self, val* p0) {
-parser_prod__AAttrPropdef__n_writable_61d(self, p0);
+/* method parser_prod#AAttrPropdef#n_doc= for (self: Object, nullable ADoc) */
+void VIRTUAL_parser_prod__AAttrPropdef__n_doc_61d(val* self, val* p0) {
+parser_prod__AAttrPropdef__n_doc_61d(self, p0); /* Direct call parser_prod#AAttrPropdef#n_doc= on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AAttrPropdef#n_kwredef= for (self: AAttrPropdef, nullable TKwredef) */
@@ -5996,36 +6714,74 @@ void parser_prod__AAttrPropdef__n_kwredef_61d(val* self, val* p0) {
 val* var_node /* var node: nullable TKwredef */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AAttrPropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AAttrPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TKwredef> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TKwredef(TKwredef)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TKwredef(TKwredef)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TKwredef(TKwredef)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TKwredef(TKwredef)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AAttrPropdef#n_kwredef= for (self: Object, nullable TKwredef) */
 void VIRTUAL_parser_prod__AAttrPropdef__n_kwredef_61d(val* self, val* p0) {
-parser_prod__AAttrPropdef__n_kwredef_61d(self, p0);
+parser_prod__AAttrPropdef__n_kwredef_61d(self, p0); /* Direct call parser_prod#AAttrPropdef#n_kwredef= on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#n_visibility= for (self: AAttrPropdef, AVisibility) */
+/* method parser_prod#AAttrPropdef#n_visibility= for (self: AAttrPropdef, nullable AVisibility) */
 void parser_prod__AAttrPropdef__n_visibility_61d(val* self, val* p0) {
-val* var_node /* var node: AVisibility */;
+val* var_node /* var node: nullable AVisibility */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_visibility].val = var_node; /* _n_visibility on <self:AAttrPropdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AVisibility>*/;
+self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val = var_node; /* _n_visibility on <self:AAttrPropdef> */
+if (var_node == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 922);
+show_backtrace(1);
+} else {
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AVisibility> */
+if (unlikely(var_node == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AVisibility> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#n_visibility= for (self: Object, AVisibility) */
+/* method parser_prod#AAttrPropdef#n_visibility= for (self: Object, nullable AVisibility) */
 void VIRTUAL_parser_prod__AAttrPropdef__n_visibility_61d(val* self, val* p0) {
-parser_prod__AAttrPropdef__n_visibility_61d(self, p0);
+parser_prod__AAttrPropdef__n_visibility_61d(self, p0); /* Direct call parser_prod#AAttrPropdef#n_visibility= on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AAttrPropdef#n_kwvar= for (self: AAttrPropdef, TKwvar) */
@@ -6033,84 +6789,131 @@ void parser_prod__AAttrPropdef__n_kwvar_61d(val* self, val* p0) {
 val* var_node /* var node: TKwvar */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwvar].val = var_node; /* _n_kwvar on <self:AAttrPropdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwvar>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwvar> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwvar> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method parser_prod#AAttrPropdef#n_kwvar= for (self: Object, TKwvar) */
 void VIRTUAL_parser_prod__AAttrPropdef__n_kwvar_61d(val* self, val* p0) {
-parser_prod__AAttrPropdef__n_kwvar_61d(self, p0);
+parser_prod__AAttrPropdef__n_kwvar_61d(self, p0); /* Direct call parser_prod#AAttrPropdef#n_kwvar= on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#n_id= for (self: AAttrPropdef, nullable TAttrid) */
-void parser_prod__AAttrPropdef__n_id_61d(val* self, val* p0) {
-val* var_node /* var node: nullable TAttrid */;
-val* var /* : null */;
-short int var1 /* : Bool */;
+/* method parser_prod#AAttrPropdef#n_id2= for (self: AAttrPropdef, TId) */
+void parser_prod__AAttrPropdef__n_id2_61d(val* self, val* p0) {
+val* var_node /* var node: TId */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id].val = var_node; /* _n_id on <self:AAttrPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
+self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id2].val = var_node; /* _n_id2 on <self:AAttrPropdef> */
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TId> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TId> */
+RET_LABEL1:(void)0;
 }
-if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TAttrid(TAttrid)>*/;
-} else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#n_id= for (self: Object, nullable TAttrid) */
-void VIRTUAL_parser_prod__AAttrPropdef__n_id_61d(val* self, val* p0) {
-parser_prod__AAttrPropdef__n_id_61d(self, p0);
+/* method parser_prod#AAttrPropdef#n_id2= for (self: Object, TId) */
+void VIRTUAL_parser_prod__AAttrPropdef__n_id2_61d(val* self, val* p0) {
+parser_prod__AAttrPropdef__n_id2_61d(self, p0); /* Direct call parser_prod#AAttrPropdef#n_id2= on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#n_id2= for (self: AAttrPropdef, nullable TId) */
-void parser_prod__AAttrPropdef__n_id2_61d(val* self, val* p0) {
-val* var_node /* var node: nullable TId */;
+/* method parser_prod#AAttrPropdef#n_type= for (self: AAttrPropdef, nullable AType) */
+void parser_prod__AAttrPropdef__n_type_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AType */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id2].val = var_node; /* _n_id2 on <self:AAttrPropdef> */
+self->attrs[COLOR_parser_nodes__AAttrPropdef___n_type].val = var_node; /* _n_type on <self:AAttrPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AType> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AType(AType)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TId(TId)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AType(AType)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AType(AType)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#n_id2= for (self: Object, nullable TId) */
-void VIRTUAL_parser_prod__AAttrPropdef__n_id2_61d(val* self, val* p0) {
-parser_prod__AAttrPropdef__n_id2_61d(self, p0);
+/* method parser_prod#AAttrPropdef#n_type= for (self: Object, nullable AType) */
+void VIRTUAL_parser_prod__AAttrPropdef__n_type_61d(val* self, val* p0) {
+parser_prod__AAttrPropdef__n_type_61d(self, p0); /* Direct call parser_prod#AAttrPropdef#n_type= on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#n_type= for (self: AAttrPropdef, nullable AType) */
-void parser_prod__AAttrPropdef__n_type_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AType */;
+/* method parser_prod#AAttrPropdef#n_expr= for (self: AAttrPropdef, nullable AExpr) */
+void parser_prod__AAttrPropdef__n_expr_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AExpr */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_type].val = var_node; /* _n_type on <self:AAttrPropdef> */
+self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val = var_node; /* _n_expr on <self:AAttrPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AExpr> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AExpr(AExpr)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AType(AType)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AExpr(AExpr)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AExpr(AExpr)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#n_type= for (self: Object, nullable AType) */
-void VIRTUAL_parser_prod__AAttrPropdef__n_type_61d(val* self, val* p0) {
-parser_prod__AAttrPropdef__n_type_61d(self, p0);
+/* method parser_prod#AAttrPropdef#n_expr= for (self: Object, nullable AExpr) */
+void VIRTUAL_parser_prod__AAttrPropdef__n_expr_61d(val* self, val* p0) {
+parser_prod__AAttrPropdef__n_expr_61d(self, p0); /* Direct call parser_prod#AAttrPropdef#n_expr= on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AAttrPropdef#n_annotations= for (self: AAttrPropdef, nullable AAnnotations) */
@@ -6118,6 +6921,11 @@ void parser_prod__AAttrPropdef__n_annotations_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AAnnotations */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:AAttrPropdef> */
 var = NULL;
@@ -6126,3811 +6934,3007 @@ var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AAnnotations> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AAnnotations(AAnnotations)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AAnnotations(AAnnotations)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AAnnotations(AAnnotations)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AAnnotations(AAnnotations)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
 /* method parser_prod#AAttrPropdef#n_annotations= for (self: Object, nullable AAnnotations) */
 void VIRTUAL_parser_prod__AAttrPropdef__n_annotations_61d(val* self, val* p0) {
-parser_prod__AAttrPropdef__n_annotations_61d(self, p0);
+parser_prod__AAttrPropdef__n_annotations_61d(self, p0); /* Direct call parser_prod#AAttrPropdef#n_annotations= on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#n_expr= for (self: AAttrPropdef, nullable AExpr) */
-void parser_prod__AAttrPropdef__n_expr_61d(val* self, val* p0) {
+/* method parser_prod#AAttrPropdef#n_block= for (self: AAttrPropdef, nullable AExpr) */
+void parser_prod__AAttrPropdef__n_block_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AExpr */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val = var_node; /* _n_expr on <self:AAttrPropdef> */
+self->attrs[COLOR_parser_nodes__AAttrPropdef___n_block].val = var_node; /* _n_block on <self:AAttrPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AExpr> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AExpr(AExpr)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AExpr(AExpr)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AExpr(AExpr)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AExpr(AExpr)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AAttrPropdef#n_expr= for (self: Object, nullable AExpr) */
-void VIRTUAL_parser_prod__AAttrPropdef__n_expr_61d(val* self, val* p0) {
-parser_prod__AAttrPropdef__n_expr_61d(self, p0);
+/* method parser_prod#AAttrPropdef#n_block= for (self: Object, nullable AExpr) */
+void VIRTUAL_parser_prod__AAttrPropdef__n_block_61d(val* self, val* p0) {
+parser_prod__AAttrPropdef__n_block_61d(self, p0); /* Direct call parser_prod#AAttrPropdef#n_block= on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
 /* method parser_prod#AAttrPropdef#visit_all for (self: AAttrPropdef, Visitor) */
 void parser_prod__AAttrPropdef__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
 val* var /* : nullable ADoc */;
-val* var1 /* : null */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable ADoc */;
-val* var4 /* : nullable AAble */;
-val* var5 /* : null */;
-short int var6 /* : Bool */;
-val* var7 /* : nullable AAble */;
-val* var8 /* : nullable AAble */;
-val* var9 /* : null */;
-short int var10 /* : Bool */;
-val* var11 /* : nullable AAble */;
-val* var12 /* : nullable TKwredef */;
-val* var13 /* : null */;
-short int var14 /* : Bool */;
-val* var15 /* : nullable TKwredef */;
-val* var16 /* : AVisibility */;
-val* var17 /* : TKwvar */;
-val* var18 /* : nullable TAttrid */;
-val* var19 /* : null */;
-short int var20 /* : Bool */;
-val* var21 /* : nullable TAttrid */;
-val* var22 /* : nullable TId */;
-val* var23 /* : null */;
-short int var24 /* : Bool */;
-val* var25 /* : nullable TId */;
-val* var26 /* : nullable AType */;
-val* var27 /* : null */;
-short int var28 /* : Bool */;
-val* var29 /* : nullable AType */;
-val* var30 /* : nullable AAnnotations */;
-val* var31 /* : null */;
-short int var32 /* : Bool */;
-val* var33 /* : nullable AAnnotations */;
-val* var34 /* : nullable AExpr */;
-val* var35 /* : null */;
-short int var36 /* : Bool */;
-val* var37 /* : nullable AExpr */;
+val* var1 /* : nullable TKwredef */;
+val* var2 /* : nullable AVisibility */;
+val* var3 /* : TKwvar */;
+val* var4 /* : TId */;
+val* var5 /* : nullable AType */;
+val* var6 /* : nullable AExpr */;
+val* var7 /* : nullable AAnnotations */;
+val* var8 /* : nullable AExpr */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AAttrPropdef> */
-var1 = NULL;
-if (var == NULL) {
-var2 = 0; /* is null */
-} else {
-var2 = 1; /* arg is null and recv is not */
-}
-if (var2){
-var3 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AAttrPropdef> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1532);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var4 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_readable].val; /* _n_readable on <self:AAttrPropdef> */
-var5 = NULL;
-if (var4 == NULL) {
-var6 = 0; /* is null */
-} else {
-var6 = 1; /* arg is null and recv is not */
-}
-if (var6){
-var7 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_readable].val; /* _n_readable on <self:AAttrPropdef> */
-if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1535);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var8 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_writable].val; /* _n_writable on <self:AAttrPropdef> */
-var9 = NULL;
-if (var8 == NULL) {
-var10 = 0; /* is null */
-} else {
-var10 = 1; /* arg is null and recv is not */
-}
-if (var10){
-var11 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_writable].val; /* _n_writable on <self:AAttrPropdef> */
-if (var11 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1538);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var11) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var12 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwredef].val; /* _n_kwredef on <self:AAttrPropdef> */
-var13 = NULL;
-if (var12 == NULL) {
-var14 = 0; /* is null */
-} else {
-var14 = 1; /* arg is null and recv is not */
-}
-if (var14){
-var15 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwredef].val; /* _n_kwredef on <self:AAttrPropdef> */
-if (var15 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1541);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var15) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var16 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_visibility].val; /* _n_visibility on <self:AAttrPropdef> */
-if (var16 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_visibility");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1543);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var16) /* enter_visit on <var_v:Visitor>*/;
-var17 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwvar].val; /* _n_kwvar on <self:AAttrPropdef> */
-if (var17 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwvar");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1544);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var17) /* enter_visit on <var_v:Visitor>*/;
-var18 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id].val; /* _n_id on <self:AAttrPropdef> */
-var19 = NULL;
-if (var18 == NULL) {
-var20 = 0; /* is null */
-} else {
-var20 = 1; /* arg is null and recv is not */
-}
-if (var20){
-var21 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id].val; /* _n_id on <self:AAttrPropdef> */
-if (var21 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1546);
-show_backtrace(1);
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var21) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var1 = self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val; /* _n_kwredef on <self:AAttrPropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-var22 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id2].val; /* _n_id2 on <self:AAttrPropdef> */
-var23 = NULL;
-if (var22 == NULL) {
-var24 = 0; /* is null */
-} else {
-var24 = 1; /* arg is null and recv is not */
+var2 = self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val; /* _n_visibility on <self:AAttrPropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var2); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var24){
-var25 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id2].val; /* _n_id2 on <self:AAttrPropdef> */
-if (var25 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1549);
+var3 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_kwvar].val; /* _n_kwvar on <self:AAttrPropdef> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwvar");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 961);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var25) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var26 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_type].val; /* _n_type on <self:AAttrPropdef> */
-var27 = NULL;
-if (var26 == NULL) {
-var28 = 0; /* is null */
-} else {
-var28 = 1; /* arg is null and recv is not */
+{
+parser_nodes__Visitor__enter_visit(var_v, var3); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var28){
-var29 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_type].val; /* _n_type on <self:AAttrPropdef> */
-if (var29 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1552);
+var4 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_id2].val; /* _n_id2 on <self:AAttrPropdef> */
+if (unlikely(var4 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id2");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 962);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var29) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var30 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AAttrPropdef> */
-var31 = NULL;
-if (var30 == NULL) {
-var32 = 0; /* is null */
-} else {
-var32 = 1; /* arg is null and recv is not */
-}
-if (var32){
-var33 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AAttrPropdef> */
-if (var33 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1555);
-show_backtrace(1);
+{
+parser_nodes__Visitor__enter_visit(var_v, var4); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var33) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var5 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_type].val; /* _n_type on <self:AAttrPropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var5); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-var34 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val; /* _n_expr on <self:AAttrPropdef> */
-var35 = NULL;
-if (var34 == NULL) {
-var36 = 0; /* is null */
-} else {
-var36 = 1; /* arg is null and recv is not */
+var6 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val; /* _n_expr on <self:AAttrPropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var6); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var36){
-var37 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val; /* _n_expr on <self:AAttrPropdef> */
-if (var37 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1558);
-show_backtrace(1);
+var7 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AAttrPropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var7); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var37) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var8 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_block].val; /* _n_block on <self:AAttrPropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var8); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
 RET_LABEL:;
 }
 /* method parser_prod#AAttrPropdef#visit_all for (self: Object, Visitor) */
 void VIRTUAL_parser_prod__AAttrPropdef__visit_all(val* self, val* p0) {
-parser_prod__AAttrPropdef__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#empty_init for (self: AMethPropdef) */
-void parser_prod__AMethPropdef__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AMethPropdef__empty_init(val* self) {
-parser_prod__AMethPropdef__empty_init(self);
+parser_prod__AAttrPropdef__visit_all(self, p0); /* Direct call parser_prod#AAttrPropdef#visit_all on <self:Object(AAttrPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AMethPropdef#init_amethpropdef for (self: AMethPropdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable AMethid, nullable ASignature) */
-void parser_prod__AMethPropdef__init_amethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4) {
-val* var_n_doc /* var n_doc: nullable ADoc */;
+/* method parser_prod#AMainMethPropdef#init_amainmethpropdef for (self: AMainMethPropdef, nullable TKwredef, nullable AExpr) */
+void parser_prod__AMainMethPropdef__init_amainmethpropdef(val* self, val* p0, val* p1) {
 val* var_n_kwredef /* var n_kwredef: nullable TKwredef */;
-val* var_n_visibility /* var n_visibility: nullable AVisibility */;
-val* var_n_methid /* var n_methid: nullable AMethid */;
-val* var_n_signature /* var n_signature: nullable ASignature */;
+val* var_n_block /* var n_block: nullable AExpr */;
 val* var /* : null */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-var_n_doc = p0;
-var_n_kwredef = p1;
-var_n_visibility = p2;
-var_n_methid = p3;
-var_n_signature = p4;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AMethPropdef__empty_init]))(self) /* empty_init on <self:AMethPropdef>*/;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:AMethPropdef> */
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+val* var8 /* : null */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+var_n_kwredef = p0;
+var_n_block = p1;
+self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AMainMethPropdef> */
 var = NULL;
-if (var_n_doc == NULL) {
+if (var_n_kwredef == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_kwredef,var) on <var_n_kwredef:nullable TKwredef> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwredef, var_other) /* == on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_n_doc->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_doc, self) /* parent= on <var_n_doc:nullable ADoc(ADoc)>*/;
-} else {
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwredef,self) on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+var_n_kwredef->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+RET_LABEL7:(void)0;
+}
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AMethPropdef> */
-var2 = NULL;
-if (var_n_kwredef == NULL) {
-var3 = 0; /* is null */
 } else {
-var3 = 1; /* arg is null and recv is not */
 }
-if (var3){
-((void (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwredef, self) /* parent= on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_block].val = var_n_block; /* _n_block on <self:AMainMethPropdef> */
+var8 = NULL;
+if (var_n_block == NULL) {
+var9 = 0; /* is null */
 } else {
+var9 = 1; /* arg is null and recv is not */
 }
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1582);
-show_backtrace(1);
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_block,var8) on <var_n_block:nullable AExpr> */
+var_other = var8;
+{
+var13 = ((short int (*)(val*, val*))(var_n_block->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_block, var_other) /* == on <var_n_block:nullable AExpr(AExpr)>*/;
+var12 = var13;
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AMethPropdef> */
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1583);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_visibility->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_visibility, self) /* parent= on <var_n_visibility:nullable AVisibility>*/;
+var14 = !var12;
+var10 = var14;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
 }
-if (var_n_methid == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1584);
-show_backtrace(1);
+var9 = var10;
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_n_methid; /* _n_methid on <self:AMethPropdef> */
-if (var_n_methid == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1585);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_methid->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_methid, self) /* parent= on <var_n_methid:nullable AMethid>*/;
+if (var9){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_block,self) on <var_n_block:nullable AExpr(AExpr)> */
+var_n_block->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_block:nullable AExpr(AExpr)> */
+RET_LABEL15:(void)0;
 }
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1586);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_n_signature; /* _n_signature on <self:AMethPropdef> */
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1587);
-show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_signature->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_signature, self) /* parent= on <var_n_signature:nullable ASignature>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AMethPropdef#init_amethpropdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable AMethid, nullable ASignature) */
-void VIRTUAL_parser_prod__AMethPropdef__init_amethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4) {
-parser_prod__AMethPropdef__init_amethpropdef(self, p0, p1, p2, p3, p4);
+/* method parser_prod#AMainMethPropdef#init_amainmethpropdef for (self: Object, nullable TKwredef, nullable AExpr) */
+void VIRTUAL_parser_prod__AMainMethPropdef__init_amainmethpropdef(val* self, val* p0, val* p1) {
+parser_prod__AMainMethPropdef__init_amainmethpropdef(self, p0, p1); /* Direct call parser_prod#AMainMethPropdef#init_amainmethpropdef on <self:Object(AMainMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AMethPropdef#replace_child for (self: AMethPropdef, ANode, nullable ANode) */
-void parser_prod__AMethPropdef__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AMainMethPropdef#replace_child for (self: AMainMethPropdef, ANode, nullable ANode) */
+void parser_prod__AMainMethPropdef__replace_child(val* self, val* p0, val* p1) {
 val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
-val* var /* : nullable ADoc */;
+val* var /* : nullable TKwredef */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : null */;
-val* var6 /* : nullable TKwredef */;
-short int var7 /* : Bool */;
-val* var8 /* : null */;
+const char* var_class_name;
+val* var8 /* : nullable AExpr */;
 short int var9 /* : Bool */;
 short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var13 /* : null */;
-val* var14 /* : nullable AVisibility */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
 short int var15 /* : Bool */;
-val* var16 /* : null */;
-short int var17 /* : Bool */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-val* var21 /* : nullable AMethid */;
-short int var22 /* : Bool */;
-val* var23 /* : null */;
-short int var24 /* : Bool */;
-short int var25 /* : Bool */;
-int cltype26;
-int idtype27;
-val* var28 /* : nullable ASignature */;
-short int var29 /* : Bool */;
-val* var30 /* : null */;
-short int var31 /* : Bool */;
-short int var32 /* : Bool */;
-int cltype33;
-int idtype34;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AMethPropdef> */
+var = self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val; /* _n_kwredef on <self:AMainMethPropdef> */
 if (var == NULL) {
 var1 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:nullable ADoc>*/;
-}
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ADoc */
-cltype = type_parser_nodes__ADoc.color;
-idtype = type_parser_nodes__ADoc.id;
-if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1595);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_new_child; /* _n_doc on <self:AMethPropdef> */
-} else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var5; /* _n_doc on <self:AMethPropdef> */
-}
-goto RET_LABEL;
-} else {
-}
-var6 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AMethPropdef> */
-if (var6 == NULL) {
-var7 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:nullable TKwredef>*/;
-}
-if (var7){
-var8 = NULL;
-if (var_new_child == NULL) {
-var9 = 0; /* is null */
-} else {
-var9 = 1; /* arg is null and recv is not */
-}
-if (var9){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwredef */
-cltype11 = type_parser_nodes__TKwredef.color;
-idtype12 = type_parser_nodes__TKwredef.id;
-if(cltype11 >= var_new_child->type->table_size) {
-var10 = 0;
-} else {
-var10 = var_new_child->type->type_table[cltype11] == idtype12;
-}
-if (!var10) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1605);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AMethPropdef> */
-} else {
-var13 = NULL;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var13; /* _n_kwredef on <self:AMethPropdef> */
-}
-goto RET_LABEL;
-} else {
-}
-var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AMethPropdef> */
-if (var14 == NULL) {
-var15 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var15 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var_old_child) /* == on <var14:nullable AVisibility>*/;
-}
-if (var15){
-var16 = NULL;
-if (var_new_child == NULL) {
-var17 = 0; /* is null */
-} else {
-var17 = 1; /* arg is null and recv is not */
-}
-if (var17){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AVisibility */
-cltype19 = type_parser_nodes__AVisibility.color;
-idtype20 = type_parser_nodes__AVisibility.id;
-if(cltype19 >= var_new_child->type->table_size) {
-var18 = 0;
-} else {
-var18 = var_new_child->type->type_table[cltype19] == idtype20;
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:nullable TKwredef> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable TKwredef(TKwredef)> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1615);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_new_child; /* _n_visibility on <self:AMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1618);
-show_backtrace(1);
-}
-goto RET_LABEL;
-} else {
-}
-var21 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AMethPropdef> */
-if (var21 == NULL) {
-var22 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_old_child) /* == on <var21:nullable AMethid>*/;
-}
-if (var22){
-var23 = NULL;
-if (var_new_child == NULL) {
-var24 = 0; /* is null */
-} else {
-var24 = 1; /* arg is null and recv is not */
-}
-if (var24){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AMethid */
-cltype26 = type_parser_nodes__AMethid.color;
-idtype27 = type_parser_nodes__AMethid.id;
-if(cltype26 >= var_new_child->type->table_size) {
-var25 = 0;
-} else {
-var25 = var_new_child->type->type_table[cltype26] == idtype27;
-}
-if (!var25) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1625);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_new_child; /* _n_methid on <self:AMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1628);
-show_backtrace(1);
-}
-goto RET_LABEL;
-} else {
-}
-var28 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
-if (var28 == NULL) {
-var29 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var29 = ((short int (*)(val*, val*))(var28->class->vft[COLOR_kernel__Object___61d_61d]))(var28, var_old_child) /* == on <var28:nullable ASignature>*/;
-}
-if (var29){
-var30 = NULL;
-if (var_new_child == NULL) {
-var31 = 0; /* is null */
-} else {
-var31 = 1; /* arg is null and recv is not */
-}
-if (var31){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ASignature */
-cltype33 = type_parser_nodes__ASignature.color;
-idtype34 = type_parser_nodes__ASignature.id;
-if(cltype33 >= var_new_child->type->table_size) {
-var32 = 0;
-} else {
-var32 = var_new_child->type->type_table[cltype33] == idtype34;
-}
-if (!var32) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1635);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_new_child; /* _n_signature on <self:AMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1638);
-show_backtrace(1);
-}
-goto RET_LABEL;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AMethPropdef__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AMethPropdef__replace_child(self, p0, p1);
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#n_doc= for (self: AMethPropdef, nullable ADoc) */
-void parser_prod__AMethPropdef__n_doc_61d(val* self, val* p0) {
-val* var_node /* var node: nullable ADoc */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_node; /* _n_doc on <self:AMethPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
-}
-if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ADoc(ADoc)>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#n_doc= for (self: Object, nullable ADoc) */
-void VIRTUAL_parser_prod__AMethPropdef__n_doc_61d(val* self, val* p0) {
-parser_prod__AMethPropdef__n_doc_61d(self, p0);
-RET_LABEL:;
 }
-/* method parser_prod#AMethPropdef#n_kwredef= for (self: AMethPropdef, nullable TKwredef) */
-void parser_prod__AMethPropdef__n_kwredef_61d(val* self, val* p0) {
-val* var_node /* var node: nullable TKwredef */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AMethPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
-}
-if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TKwredef(TKwredef)>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#n_kwredef= for (self: Object, nullable TKwredef) */
-void VIRTUAL_parser_prod__AMethPropdef__n_kwredef_61d(val* self, val* p0) {
-parser_prod__AMethPropdef__n_kwredef_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#n_visibility= for (self: AMethPropdef, nullable AVisibility) */
-void parser_prod__AMethPropdef__n_visibility_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AVisibility */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_node; /* _n_visibility on <self:AMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1661);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AVisibility>*/;
-}
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#n_visibility= for (self: Object, nullable AVisibility) */
-void VIRTUAL_parser_prod__AMethPropdef__n_visibility_61d(val* self, val* p0) {
-parser_prod__AMethPropdef__n_visibility_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#n_methid= for (self: AMethPropdef, nullable AMethid) */
-void parser_prod__AMethPropdef__n_methid_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AMethid */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_node; /* _n_methid on <self:AMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1666);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AMethid>*/;
-}
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#n_methid= for (self: Object, nullable AMethid) */
-void VIRTUAL_parser_prod__AMethPropdef__n_methid_61d(val* self, val* p0) {
-parser_prod__AMethPropdef__n_methid_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#n_signature= for (self: AMethPropdef, nullable ASignature) */
-void parser_prod__AMethPropdef__n_signature_61d(val* self, val* p0) {
-val* var_node /* var node: nullable ASignature */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_node; /* _n_signature on <self:AMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1671);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ASignature>*/;
-}
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#n_signature= for (self: Object, nullable ASignature) */
-void VIRTUAL_parser_prod__AMethPropdef__n_signature_61d(val* self, val* p0) {
-parser_prod__AMethPropdef__n_signature_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#visit_all for (self: AMethPropdef, Visitor) */
-void parser_prod__AMethPropdef__visit_all(val* self, val* p0) {
-val* var_v /* var v: Visitor */;
-val* var /* : nullable ADoc */;
-val* var1 /* : null */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable ADoc */;
-val* var4 /* : nullable TKwredef */;
-val* var5 /* : null */;
-short int var6 /* : Bool */;
-val* var7 /* : nullable TKwredef */;
-val* var8 /* : nullable AVisibility */;
-val* var9 /* : nullable AMethid */;
-val* var10 /* : nullable ASignature */;
-var_v = p0;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AMethPropdef> */
-var1 = NULL;
-if (var == NULL) {
-var2 = 0; /* is null */
-} else {
-var2 = 1; /* arg is null and recv is not */
-}
-if (var2){
-var3 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AMethPropdef> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1678);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var4 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AMethPropdef> */
-var5 = NULL;
-if (var4 == NULL) {
-var6 = 0; /* is null */
-} else {
-var6 = 1; /* arg is null and recv is not */
-}
-if (var6){
-var7 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AMethPropdef> */
-if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1681);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var8 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
-var9 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var9) /* enter_visit on <var_v:Visitor>*/;
-var10 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var10) /* enter_visit on <var_v:Visitor>*/;
-RET_LABEL:;
-}
-/* method parser_prod#AMethPropdef#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AMethPropdef__visit_all(val* self, val* p0) {
-parser_prod__AMethPropdef__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#empty_init for (self: ADeferredMethPropdef) */
-void parser_prod__ADeferredMethPropdef__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ADeferredMethPropdef__empty_init(val* self) {
-parser_prod__ADeferredMethPropdef__empty_init(self);
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#init_adeferredmethpropdef for (self: ADeferredMethPropdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmeth, nullable AMethid, nullable ASignature, nullable AAnnotations) */
-void parser_prod__ADeferredMethPropdef__init_adeferredmethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6) {
-val* var_n_doc /* var n_doc: nullable ADoc */;
-val* var_n_kwredef /* var n_kwredef: nullable TKwredef */;
-val* var_n_visibility /* var n_visibility: nullable AVisibility */;
-val* var_n_kwmeth /* var n_kwmeth: nullable TKwmeth */;
-val* var_n_methid /* var n_methid: nullable AMethid */;
-val* var_n_signature /* var n_signature: nullable ASignature */;
-val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-val* var4 /* : null */;
-short int var5 /* : Bool */;
-var_n_doc = p0;
-var_n_kwredef = p1;
-var_n_visibility = p2;
-var_n_kwmeth = p3;
-var_n_methid = p4;
-var_n_signature = p5;
-var_n_annotations = p6;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ADeferredMethPropdef__empty_init]))(self) /* empty_init on <self:ADeferredMethPropdef>*/;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:ADeferredMethPropdef> */
-var = NULL;
-if (var_n_doc == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
-}
-if (var1){
-((void (*)(val*, val*))(var_n_doc->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_doc, self) /* parent= on <var_n_doc:nullable ADoc(ADoc)>*/;
-} else {
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:ADeferredMethPropdef> */
-var2 = NULL;
-if (var_n_kwredef == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((void (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwredef, self) /* parent= on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
-} else {
-}
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1710);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:ADeferredMethPropdef> */
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1711);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_visibility->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_visibility, self) /* parent= on <var_n_visibility:nullable AVisibility>*/;
-}
-if (var_n_kwmeth == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1712);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__ADeferredMethPropdef___n_kwmeth].val = var_n_kwmeth; /* _n_kwmeth on <self:ADeferredMethPropdef> */
-if (var_n_kwmeth == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1713);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_kwmeth->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwmeth, self) /* parent= on <var_n_kwmeth:nullable TKwmeth>*/;
-}
-if (var_n_methid == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1714);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_n_methid; /* _n_methid on <self:ADeferredMethPropdef> */
-if (var_n_methid == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1715);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_methid->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_methid, self) /* parent= on <var_n_methid:nullable AMethid>*/;
-}
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1716);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_n_signature; /* _n_signature on <self:ADeferredMethPropdef> */
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1717);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_signature->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_signature, self) /* parent= on <var_n_signature:nullable ASignature>*/;
-}
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:ADeferredMethPropdef> */
-var4 = NULL;
-if (var_n_annotations == NULL) {
-var5 = 0; /* is null */
-} else {
-var5 = 1; /* arg is null and recv is not */
-}
-if (var5){
-((void (*)(val*, val*))(var_n_annotations->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_annotations, self) /* parent= on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#init_adeferredmethpropdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmeth, nullable AMethid, nullable ASignature, nullable AAnnotations) */
-void VIRTUAL_parser_prod__ADeferredMethPropdef__init_adeferredmethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6) {
-parser_prod__ADeferredMethPropdef__init_adeferredmethpropdef(self, p0, p1, p2, p3, p4, p5, p6);
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#replace_child for (self: ADeferredMethPropdef, ANode, nullable ANode) */
-void parser_prod__ADeferredMethPropdef__replace_child(val* self, val* p0, val* p1) {
-val* var_old_child /* var old_child: ANode */;
-val* var_new_child /* var new_child: nullable ANode */;
-val* var /* : nullable ADoc */;
-short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-short int var4 /* : Bool */;
-int cltype;
-int idtype;
-val* var5 /* : null */;
-val* var6 /* : nullable TKwredef */;
-short int var7 /* : Bool */;
-val* var8 /* : null */;
-short int var9 /* : Bool */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var13 /* : null */;
-val* var14 /* : nullable AVisibility */;
-short int var15 /* : Bool */;
-val* var16 /* : null */;
-short int var17 /* : Bool */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-val* var21 /* : TKwmeth */;
-short int var22 /* : Bool */;
-val* var23 /* : null */;
-short int var24 /* : Bool */;
-short int var25 /* : Bool */;
-int cltype26;
-int idtype27;
-val* var28 /* : nullable AMethid */;
-short int var29 /* : Bool */;
-val* var30 /* : null */;
-short int var31 /* : Bool */;
-short int var32 /* : Bool */;
-int cltype33;
-int idtype34;
-val* var35 /* : nullable ASignature */;
-short int var36 /* : Bool */;
-val* var37 /* : null */;
-short int var38 /* : Bool */;
-short int var39 /* : Bool */;
-int cltype40;
-int idtype41;
-val* var42 /* : nullable AAnnotations */;
-short int var43 /* : Bool */;
-val* var44 /* : null */;
-short int var45 /* : Bool */;
-short int var46 /* : Bool */;
-int cltype47;
-int idtype48;
-val* var49 /* : null */;
-var_old_child = p0;
-var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:ADeferredMethPropdef> */
-if (var == NULL) {
-var1 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:nullable ADoc>*/;
-}
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ADoc */
-cltype = type_parser_nodes__ADoc.color;
-idtype = type_parser_nodes__ADoc.id;
-if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1729);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_new_child; /* _n_doc on <self:ADeferredMethPropdef> */
-} else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var5; /* _n_doc on <self:ADeferredMethPropdef> */
-}
-goto RET_LABEL;
-} else {
-}
-var6 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:ADeferredMethPropdef> */
-if (var6 == NULL) {
-var7 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:nullable TKwredef>*/;
-}
-if (var7){
-var8 = NULL;
-if (var_new_child == NULL) {
-var9 = 0; /* is null */
-} else {
-var9 = 1; /* arg is null and recv is not */
-}
-if (var9){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwredef */
-cltype11 = type_parser_nodes__TKwredef.color;
-idtype12 = type_parser_nodes__TKwredef.id;
-if(cltype11 >= var_new_child->type->table_size) {
-var10 = 0;
-} else {
-var10 = var_new_child->type->type_table[cltype11] == idtype12;
-}
-if (!var10) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1739);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:ADeferredMethPropdef> */
-} else {
-var13 = NULL;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var13; /* _n_kwredef on <self:ADeferredMethPropdef> */
-}
-goto RET_LABEL;
-} else {
-}
-var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:ADeferredMethPropdef> */
-if (var14 == NULL) {
-var15 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var15 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var_old_child) /* == on <var14:nullable AVisibility>*/;
-}
-if (var15){
-var16 = NULL;
-if (var_new_child == NULL) {
-var17 = 0; /* is null */
-} else {
-var17 = 1; /* arg is null and recv is not */
-}
-if (var17){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AVisibility */
-cltype19 = type_parser_nodes__AVisibility.color;
-idtype20 = type_parser_nodes__AVisibility.id;
-if(cltype19 >= var_new_child->type->table_size) {
-var18 = 0;
-} else {
-var18 = var_new_child->type->type_table[cltype19] == idtype20;
-}
-if (!var18) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1749);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_new_child; /* _n_visibility on <self:ADeferredMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1752);
-show_backtrace(1);
-}
-goto RET_LABEL;
-} else {
-}
-var21 = self->attrs[COLOR_parser_nodes__ADeferredMethPropdef___n_kwmeth].val; /* _n_kwmeth on <self:ADeferredMethPropdef> */
-if (var21 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwmeth");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1756);
-show_backtrace(1);
-}
-var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_old_child) /* == on <var21:TKwmeth>*/;
-if (var22){
-var23 = NULL;
-if (var_new_child == NULL) {
-var24 = 0; /* is null */
-} else {
-var24 = 1; /* arg is null and recv is not */
-}
-if (var24){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwmeth */
-cltype26 = type_parser_nodes__TKwmeth.color;
-idtype27 = type_parser_nodes__TKwmeth.id;
-if(cltype26 >= var_new_child->type->table_size) {
-var25 = 0;
-} else {
-var25 = var_new_child->type->type_table[cltype26] == idtype27;
-}
-if (!var25) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1759);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__ADeferredMethPropdef___n_kwmeth].val = var_new_child; /* _n_kwmeth on <self:ADeferredMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1762);
-show_backtrace(1);
-}
-goto RET_LABEL;
-} else {
-}
-var28 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:ADeferredMethPropdef> */
-if (var28 == NULL) {
-var29 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var29 = ((short int (*)(val*, val*))(var28->class->vft[COLOR_kernel__Object___61d_61d]))(var28, var_old_child) /* == on <var28:nullable AMethid>*/;
-}
-if (var29){
-var30 = NULL;
-if (var_new_child == NULL) {
-var31 = 0; /* is null */
-} else {
-var31 = 1; /* arg is null and recv is not */
-}
-if (var31){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AMethid */
-cltype33 = type_parser_nodes__AMethid.color;
-idtype34 = type_parser_nodes__AMethid.id;
-if(cltype33 >= var_new_child->type->table_size) {
-var32 = 0;
-} else {
-var32 = var_new_child->type->type_table[cltype33] == idtype34;
-}
-if (!var32) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1769);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_new_child; /* _n_methid on <self:ADeferredMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1772);
-show_backtrace(1);
-}
-goto RET_LABEL;
-} else {
-}
-var35 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:ADeferredMethPropdef> */
-if (var35 == NULL) {
-var36 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var36 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___61d_61d]))(var35, var_old_child) /* == on <var35:nullable ASignature>*/;
-}
-if (var36){
-var37 = NULL;
-if (var_new_child == NULL) {
-var38 = 0; /* is null */
-} else {
-var38 = 1; /* arg is null and recv is not */
-}
-if (var38){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ASignature */
-cltype40 = type_parser_nodes__ASignature.color;
-idtype41 = type_parser_nodes__ASignature.id;
-if(cltype40 >= var_new_child->type->table_size) {
-var39 = 0;
-} else {
-var39 = var_new_child->type->type_table[cltype40] == idtype41;
-}
-if (!var39) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1779);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_new_child; /* _n_signature on <self:ADeferredMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1782);
-show_backtrace(1);
-}
-goto RET_LABEL;
-} else {
-}
-var42 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ADeferredMethPropdef> */
-if (var42 == NULL) {
-var43 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var43 = ((short int (*)(val*, val*))(var42->class->vft[COLOR_kernel__Object___61d_61d]))(var42, var_old_child) /* == on <var42:nullable AAnnotations>*/;
-}
-if (var43){
-var44 = NULL;
-if (var_new_child == NULL) {
-var45 = 0; /* is null */
-} else {
-var45 = 1; /* arg is null and recv is not */
-}
-if (var45){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AAnnotations */
-cltype47 = type_parser_nodes__AAnnotations.color;
-idtype48 = type_parser_nodes__AAnnotations.id;
-if(cltype47 >= var_new_child->type->table_size) {
-var46 = 0;
-} else {
-var46 = var_new_child->type->type_table[cltype47] == idtype48;
-}
-if (!var46) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1789);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:ADeferredMethPropdef> */
-} else {
-var49 = NULL;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var49; /* _n_annotations on <self:ADeferredMethPropdef> */
-}
-goto RET_LABEL;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__ADeferredMethPropdef__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ADeferredMethPropdef__replace_child(self, p0, p1);
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_doc= for (self: ADeferredMethPropdef, nullable ADoc) */
-void parser_prod__ADeferredMethPropdef__n_doc_61d(val* self, val* p0) {
-val* var_node /* var node: nullable ADoc */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_node; /* _n_doc on <self:ADeferredMethPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
-}
-if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ADoc(ADoc)>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_doc= for (self: Object, nullable ADoc) */
-void VIRTUAL_parser_prod__ADeferredMethPropdef__n_doc_61d(val* self, val* p0) {
-parser_prod__ADeferredMethPropdef__n_doc_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_kwredef= for (self: ADeferredMethPropdef, nullable TKwredef) */
-void parser_prod__ADeferredMethPropdef__n_kwredef_61d(val* self, val* p0) {
-val* var_node /* var node: nullable TKwredef */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:ADeferredMethPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
-}
-if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TKwredef(TKwredef)>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_kwredef= for (self: Object, nullable TKwredef) */
-void VIRTUAL_parser_prod__ADeferredMethPropdef__n_kwredef_61d(val* self, val* p0) {
-parser_prod__ADeferredMethPropdef__n_kwredef_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_visibility= for (self: ADeferredMethPropdef, nullable AVisibility) */
-void parser_prod__ADeferredMethPropdef__n_visibility_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AVisibility */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_node; /* _n_visibility on <self:ADeferredMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1815);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AVisibility>*/;
-}
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_visibility= for (self: Object, nullable AVisibility) */
-void VIRTUAL_parser_prod__ADeferredMethPropdef__n_visibility_61d(val* self, val* p0) {
-parser_prod__ADeferredMethPropdef__n_visibility_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_kwmeth= for (self: ADeferredMethPropdef, TKwmeth) */
-void parser_prod__ADeferredMethPropdef__n_kwmeth_61d(val* self, val* p0) {
-val* var_node /* var node: TKwmeth */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__ADeferredMethPropdef___n_kwmeth].val = var_node; /* _n_kwmeth on <self:ADeferredMethPropdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwmeth>*/;
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_kwmeth= for (self: Object, TKwmeth) */
-void VIRTUAL_parser_prod__ADeferredMethPropdef__n_kwmeth_61d(val* self, val* p0) {
-parser_prod__ADeferredMethPropdef__n_kwmeth_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_methid= for (self: ADeferredMethPropdef, nullable AMethid) */
-void parser_prod__ADeferredMethPropdef__n_methid_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AMethid */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_node; /* _n_methid on <self:ADeferredMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1825);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AMethid>*/;
-}
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_methid= for (self: Object, nullable AMethid) */
-void VIRTUAL_parser_prod__ADeferredMethPropdef__n_methid_61d(val* self, val* p0) {
-parser_prod__ADeferredMethPropdef__n_methid_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_signature= for (self: ADeferredMethPropdef, nullable ASignature) */
-void parser_prod__ADeferredMethPropdef__n_signature_61d(val* self, val* p0) {
-val* var_node /* var node: nullable ASignature */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_node; /* _n_signature on <self:ADeferredMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1830);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ASignature>*/;
-}
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_signature= for (self: Object, nullable ASignature) */
-void VIRTUAL_parser_prod__ADeferredMethPropdef__n_signature_61d(val* self, val* p0) {
-parser_prod__ADeferredMethPropdef__n_signature_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_annotations= for (self: ADeferredMethPropdef, nullable AAnnotations) */
-void parser_prod__ADeferredMethPropdef__n_annotations_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AAnnotations */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:ADeferredMethPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
-}
-if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AAnnotations(AAnnotations)>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#n_annotations= for (self: Object, nullable AAnnotations) */
-void VIRTUAL_parser_prod__ADeferredMethPropdef__n_annotations_61d(val* self, val* p0) {
-parser_prod__ADeferredMethPropdef__n_annotations_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#visit_all for (self: ADeferredMethPropdef, Visitor) */
-void parser_prod__ADeferredMethPropdef__visit_all(val* self, val* p0) {
-val* var_v /* var v: Visitor */;
-val* var /* : nullable ADoc */;
-val* var1 /* : null */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable ADoc */;
-val* var4 /* : nullable TKwredef */;
-val* var5 /* : null */;
-short int var6 /* : Bool */;
-val* var7 /* : nullable TKwredef */;
-val* var8 /* : nullable AVisibility */;
-val* var9 /* : TKwmeth */;
-val* var10 /* : nullable AMethid */;
-val* var11 /* : nullable ASignature */;
-val* var12 /* : nullable AAnnotations */;
-val* var13 /* : null */;
-short int var14 /* : Bool */;
-val* var15 /* : nullable AAnnotations */;
-var_v = p0;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:ADeferredMethPropdef> */
-var1 = NULL;
-if (var == NULL) {
-var2 = 0; /* is null */
-} else {
-var2 = 1; /* arg is null and recv is not */
-}
-if (var2){
-var3 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:ADeferredMethPropdef> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1844);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var4 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:ADeferredMethPropdef> */
-var5 = NULL;
-if (var4 == NULL) {
-var6 = 0; /* is null */
-} else {
-var6 = 1; /* arg is null and recv is not */
-}
-if (var6){
-var7 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:ADeferredMethPropdef> */
-if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1847);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var8 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:ADeferredMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
-var9 = self->attrs[COLOR_parser_nodes__ADeferredMethPropdef___n_kwmeth].val; /* _n_kwmeth on <self:ADeferredMethPropdef> */
-if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwmeth");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1850);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var9) /* enter_visit on <var_v:Visitor>*/;
-var10 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:ADeferredMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var10) /* enter_visit on <var_v:Visitor>*/;
-var11 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:ADeferredMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var11) /* enter_visit on <var_v:Visitor>*/;
-var12 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ADeferredMethPropdef> */
-var13 = NULL;
-if (var12 == NULL) {
-var14 = 0; /* is null */
-} else {
-var14 = 1; /* arg is null and recv is not */
-}
-if (var14){
-var15 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ADeferredMethPropdef> */
-if (var15 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1854);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var15) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#ADeferredMethPropdef#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__ADeferredMethPropdef__visit_all(val* self, val* p0) {
-parser_prod__ADeferredMethPropdef__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AInternMethPropdef#empty_init for (self: AInternMethPropdef) */
-void parser_prod__AInternMethPropdef__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AInternMethPropdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AInternMethPropdef__empty_init(val* self) {
-parser_prod__AInternMethPropdef__empty_init(self);
-RET_LABEL:;
-}
-/* method parser_prod#AInternMethPropdef#init_ainternmethpropdef for (self: AInternMethPropdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmeth, nullable AMethid, nullable ASignature) */
-void parser_prod__AInternMethPropdef__init_ainternmethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5) {
-val* var_n_doc /* var n_doc: nullable ADoc */;
-val* var_n_kwredef /* var n_kwredef: nullable TKwredef */;
-val* var_n_visibility /* var n_visibility: nullable AVisibility */;
-val* var_n_kwmeth /* var n_kwmeth: nullable TKwmeth */;
-val* var_n_methid /* var n_methid: nullable AMethid */;
-val* var_n_signature /* var n_signature: nullable ASignature */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-var_n_doc = p0;
-var_n_kwredef = p1;
-var_n_visibility = p2;
-var_n_kwmeth = p3;
-var_n_methid = p4;
-var_n_signature = p5;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AInternMethPropdef__empty_init]))(self) /* empty_init on <self:AInternMethPropdef>*/;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:AInternMethPropdef> */
-var = NULL;
-if (var_n_doc == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
-}
-if (var1){
-((void (*)(val*, val*))(var_n_doc->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_doc, self) /* parent= on <var_n_doc:nullable ADoc(ADoc)>*/;
-} else {
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AInternMethPropdef> */
-var2 = NULL;
-if (var_n_kwredef == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((void (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwredef, self) /* parent= on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
-} else {
-}
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1879);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AInternMethPropdef> */
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1880);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_visibility->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_visibility, self) /* parent= on <var_n_visibility:nullable AVisibility>*/;
-}
-if (var_n_kwmeth == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1881);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AInternMethPropdef___n_kwmeth].val = var_n_kwmeth; /* _n_kwmeth on <self:AInternMethPropdef> */
-if (var_n_kwmeth == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1882);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_kwmeth->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwmeth, self) /* parent= on <var_n_kwmeth:nullable TKwmeth>*/;
-}
-if (var_n_methid == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1883);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_n_methid; /* _n_methid on <self:AInternMethPropdef> */
-if (var_n_methid == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1884);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_methid->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_methid, self) /* parent= on <var_n_methid:nullable AMethid>*/;
-}
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1885);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_n_signature; /* _n_signature on <self:AInternMethPropdef> */
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1886);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_signature->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_signature, self) /* parent= on <var_n_signature:nullable ASignature>*/;
-}
-RET_LABEL:;
-}
-/* method parser_prod#AInternMethPropdef#init_ainternmethpropdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmeth, nullable AMethid, nullable ASignature) */
-void VIRTUAL_parser_prod__AInternMethPropdef__init_ainternmethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5) {
-parser_prod__AInternMethPropdef__init_ainternmethpropdef(self, p0, p1, p2, p3, p4, p5);
-RET_LABEL:;
-}
-/* method parser_prod#AInternMethPropdef#replace_child for (self: AInternMethPropdef, ANode, nullable ANode) */
-void parser_prod__AInternMethPropdef__replace_child(val* self, val* p0, val* p1) {
-val* var_old_child /* var old_child: ANode */;
-val* var_new_child /* var new_child: nullable ANode */;
-val* var /* : nullable ADoc */;
-short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-short int var4 /* : Bool */;
-int cltype;
-int idtype;
-val* var5 /* : null */;
-val* var6 /* : nullable TKwredef */;
-short int var7 /* : Bool */;
-val* var8 /* : null */;
-short int var9 /* : Bool */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var13 /* : null */;
-val* var14 /* : nullable AVisibility */;
-short int var15 /* : Bool */;
-val* var16 /* : null */;
-short int var17 /* : Bool */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-val* var21 /* : TKwmeth */;
-short int var22 /* : Bool */;
-val* var23 /* : null */;
-short int var24 /* : Bool */;
-short int var25 /* : Bool */;
-int cltype26;
-int idtype27;
-val* var28 /* : nullable AMethid */;
-short int var29 /* : Bool */;
-val* var30 /* : null */;
-short int var31 /* : Bool */;
-short int var32 /* : Bool */;
-int cltype33;
-int idtype34;
-val* var35 /* : nullable ASignature */;
-short int var36 /* : Bool */;
-val* var37 /* : null */;
-short int var38 /* : Bool */;
-short int var39 /* : Bool */;
-int cltype40;
-int idtype41;
-var_old_child = p0;
-var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AInternMethPropdef> */
-if (var == NULL) {
-var1 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:nullable ADoc>*/;
-}
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ADoc */
-cltype = type_parser_nodes__ADoc.color;
-idtype = type_parser_nodes__ADoc.id;
-if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1894);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_new_child; /* _n_doc on <self:AInternMethPropdef> */
-} else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var5; /* _n_doc on <self:AInternMethPropdef> */
-}
-goto RET_LABEL;
-} else {
-}
-var6 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AInternMethPropdef> */
-if (var6 == NULL) {
-var7 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:nullable TKwredef>*/;
-}
-if (var7){
-var8 = NULL;
-if (var_new_child == NULL) {
-var9 = 0; /* is null */
-} else {
-var9 = 1; /* arg is null and recv is not */
-}
-if (var9){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwredef */
-cltype11 = type_parser_nodes__TKwredef.color;
-idtype12 = type_parser_nodes__TKwredef.id;
-if(cltype11 >= var_new_child->type->table_size) {
-var10 = 0;
-} else {
-var10 = var_new_child->type->type_table[cltype11] == idtype12;
-}
-if (!var10) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1904);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AInternMethPropdef> */
-} else {
-var13 = NULL;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var13; /* _n_kwredef on <self:AInternMethPropdef> */
-}
-goto RET_LABEL;
-} else {
-}
-var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AInternMethPropdef> */
-if (var14 == NULL) {
-var15 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var15 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var_old_child) /* == on <var14:nullable AVisibility>*/;
-}
-if (var15){
-var16 = NULL;
-if (var_new_child == NULL) {
-var17 = 0; /* is null */
-} else {
-var17 = 1; /* arg is null and recv is not */
-}
-if (var17){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AVisibility */
-cltype19 = type_parser_nodes__AVisibility.color;
-idtype20 = type_parser_nodes__AVisibility.id;
-if(cltype19 >= var_new_child->type->table_size) {
-var18 = 0;
-} else {
-var18 = var_new_child->type->type_table[cltype19] == idtype20;
-}
-if (!var18) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1914);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_new_child; /* _n_visibility on <self:AInternMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1917);
-show_backtrace(1);
-}
-goto RET_LABEL;
-} else {
-}
-var21 = self->attrs[COLOR_parser_nodes__AInternMethPropdef___n_kwmeth].val; /* _n_kwmeth on <self:AInternMethPropdef> */
-if (var21 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwmeth");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1921);
-show_backtrace(1);
-}
-var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_old_child) /* == on <var21:TKwmeth>*/;
-if (var22){
-var23 = NULL;
-if (var_new_child == NULL) {
-var24 = 0; /* is null */
-} else {
-var24 = 1; /* arg is null and recv is not */
-}
-if (var24){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwmeth */
-cltype26 = type_parser_nodes__TKwmeth.color;
-idtype27 = type_parser_nodes__TKwmeth.id;
-if(cltype26 >= var_new_child->type->table_size) {
-var25 = 0;
-} else {
-var25 = var_new_child->type->type_table[cltype26] == idtype27;
-}
-if (!var25) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1924);
-show_backtrace(1);
-}
-self->attrs[COLOR_parser_nodes__AInternMethPropdef___n_kwmeth].val = var_new_child; /* _n_kwmeth on <self:AInternMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1927);
-show_backtrace(1);
-}
-goto RET_LABEL;
-} else {
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
-var28 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AInternMethPropdef> */
-if (var28 == NULL) {
-var29 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var29 = ((short int (*)(val*, val*))(var28->class->vft[COLOR_kernel__Object___61d_61d]))(var28, var_old_child) /* == on <var28:nullable AMethid>*/;
+var1 = var2;
 }
-if (var29){
-var30 = NULL;
-if (var_new_child == NULL) {
-var31 = 0; /* is null */
+if (var1){
+/* <var_new_child:nullable ANode> isa nullable TKwredef */
+cltype = type_nullable_parser_nodes__TKwredef.color;
+idtype = type_nullable_parser_nodes__TKwredef.id;
+if(var_new_child == NULL) {
+var7 = 1;
 } else {
-var31 = 1; /* arg is null and recv is not */
-}
-if (var31){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AMethid */
-cltype33 = type_parser_nodes__AMethid.color;
-idtype34 = type_parser_nodes__AMethid.id;
-if(cltype33 >= var_new_child->type->table_size) {
-var32 = 0;
+if(cltype >= var_new_child->type->table_size) {
+var7 = 0;
 } else {
-var32 = var_new_child->type->type_table[cltype33] == idtype34;
+var7 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var32) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1934);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_new_child; /* _n_methid on <self:AInternMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1937);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TKwredef", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 984);
 show_backtrace(1);
 }
+{
+parser_prod__AMainMethPropdef__n_kwredef_61d(self, var_new_child); /* Direct call parser_prod#AMainMethPropdef#n_kwredef= on <self:AMainMethPropdef>*/
+}
 goto RET_LABEL;
 } else {
 }
-var35 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AInternMethPropdef> */
-if (var35 == NULL) {
-var36 = 0; /* <var_old_child:ANode> cannot be null */
+var8 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_block].val; /* _n_block on <self:AMainMethPropdef> */
+if (var8 == NULL) {
+var9 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var36 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___61d_61d]))(var35, var_old_child) /* == on <var35:nullable ASignature>*/;
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:nullable AExpr> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:nullable AExpr(AExpr)> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (var36){
-var37 = NULL;
-if (var_new_child == NULL) {
-var38 = 0; /* is null */
-} else {
-var38 = 1; /* arg is null and recv is not */
 }
-if (var38){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ASignature */
-cltype40 = type_parser_nodes__ASignature.color;
-idtype41 = type_parser_nodes__ASignature.id;
-if(cltype40 >= var_new_child->type->table_size) {
-var39 = 0;
-} else {
-var39 = var_new_child->type->type_table[cltype40] == idtype41;
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
 }
-if (!var39) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1944);
-show_backtrace(1);
+var9 = var10;
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_new_child; /* _n_signature on <self:AInternMethPropdef> */
+if (var9){
+/* <var_new_child:nullable ANode> isa nullable AExpr */
+cltype16 = type_nullable_parser_nodes__AExpr.color;
+idtype17 = type_nullable_parser_nodes__AExpr.id;
+if(var_new_child == NULL) {
+var15 = 1;
+} else {
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1947);
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
+}
+}
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AExpr", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 988);
 show_backtrace(1);
 }
+{
+parser_prod__AMainMethPropdef__n_block_61d(self, var_new_child); /* Direct call parser_prod#AMainMethPropdef#n_block= on <self:AMainMethPropdef>*/
+}
 goto RET_LABEL;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AInternMethPropdef#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AInternMethPropdef__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AInternMethPropdef__replace_child(self, p0, p1);
+/* method parser_prod#AMainMethPropdef#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AMainMethPropdef__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AMainMethPropdef__replace_child(self, p0, p1); /* Direct call parser_prod#AMainMethPropdef#replace_child on <self:Object(AMainMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AInternMethPropdef#n_doc= for (self: AInternMethPropdef, nullable ADoc) */
-void parser_prod__AInternMethPropdef__n_doc_61d(val* self, val* p0) {
-val* var_node /* var node: nullable ADoc */;
+/* method parser_prod#AMainMethPropdef#n_kwredef= for (self: AMainMethPropdef, nullable TKwredef) */
+void parser_prod__AMainMethPropdef__n_kwredef_61d(val* self, val* p0) {
+val* var_node /* var node: nullable TKwredef */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_node; /* _n_doc on <self:AInternMethPropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AMainMethPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TKwredef> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TKwredef(TKwredef)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ADoc(ADoc)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TKwredef(TKwredef)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TKwredef(TKwredef)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AInternMethPropdef#n_doc= for (self: Object, nullable ADoc) */
-void VIRTUAL_parser_prod__AInternMethPropdef__n_doc_61d(val* self, val* p0) {
-parser_prod__AInternMethPropdef__n_doc_61d(self, p0);
+/* method parser_prod#AMainMethPropdef#n_kwredef= for (self: Object, nullable TKwredef) */
+void VIRTUAL_parser_prod__AMainMethPropdef__n_kwredef_61d(val* self, val* p0) {
+parser_prod__AMainMethPropdef__n_kwredef_61d(self, p0); /* Direct call parser_prod#AMainMethPropdef#n_kwredef= on <self:Object(AMainMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AInternMethPropdef#n_kwredef= for (self: AInternMethPropdef, nullable TKwredef) */
-void parser_prod__AInternMethPropdef__n_kwredef_61d(val* self, val* p0) {
-val* var_node /* var node: nullable TKwredef */;
+/* method parser_prod#AMainMethPropdef#n_block= for (self: AMainMethPropdef, nullable AExpr) */
+void parser_prod__AMainMethPropdef__n_block_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AExpr */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AInternMethPropdef> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_block].val = var_node; /* _n_block on <self:AMainMethPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
-if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TKwredef(TKwredef)>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#AInternMethPropdef#n_kwredef= for (self: Object, nullable TKwredef) */
-void VIRTUAL_parser_prod__AInternMethPropdef__n_kwredef_61d(val* self, val* p0) {
-parser_prod__AInternMethPropdef__n_kwredef_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AInternMethPropdef#n_visibility= for (self: AInternMethPropdef, nullable AVisibility) */
-void parser_prod__AInternMethPropdef__n_visibility_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AVisibility */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_node; /* _n_visibility on <self:AInternMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1970);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AVisibility>*/;
-}
-RET_LABEL:;
-}
-/* method parser_prod#AInternMethPropdef#n_visibility= for (self: Object, nullable AVisibility) */
-void VIRTUAL_parser_prod__AInternMethPropdef__n_visibility_61d(val* self, val* p0) {
-parser_prod__AInternMethPropdef__n_visibility_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AInternMethPropdef#n_kwmeth= for (self: AInternMethPropdef, TKwmeth) */
-void parser_prod__AInternMethPropdef__n_kwmeth_61d(val* self, val* p0) {
-val* var_node /* var node: TKwmeth */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AInternMethPropdef___n_kwmeth].val = var_node; /* _n_kwmeth on <self:AInternMethPropdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwmeth>*/;
-RET_LABEL:;
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AExpr> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AExpr(AExpr)>*/;
+var4 = var5;
 }
-/* method parser_prod#AInternMethPropdef#n_kwmeth= for (self: Object, TKwmeth) */
-void VIRTUAL_parser_prod__AInternMethPropdef__n_kwmeth_61d(val* self, val* p0) {
-parser_prod__AInternMethPropdef__n_kwmeth_61d(self, p0);
-RET_LABEL:;
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
-/* method parser_prod#AInternMethPropdef#n_methid= for (self: AInternMethPropdef, nullable AMethid) */
-void parser_prod__AInternMethPropdef__n_methid_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AMethid */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_node; /* _n_methid on <self:AInternMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1980);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AMethid>*/;
+var1 = var2;
 }
-RET_LABEL:;
+if (var1){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AExpr(AExpr)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AExpr(AExpr)> */
+RET_LABEL7:(void)0;
 }
-/* method parser_prod#AInternMethPropdef#n_methid= for (self: Object, nullable AMethid) */
-void VIRTUAL_parser_prod__AInternMethPropdef__n_methid_61d(val* self, val* p0) {
-parser_prod__AInternMethPropdef__n_methid_61d(self, p0);
-RET_LABEL:;
 }
-/* method parser_prod#AInternMethPropdef#n_signature= for (self: AInternMethPropdef, nullable ASignature) */
-void parser_prod__AInternMethPropdef__n_signature_61d(val* self, val* p0) {
-val* var_node /* var node: nullable ASignature */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_node; /* _n_signature on <self:AInternMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1985);
-show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ASignature>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AInternMethPropdef#n_signature= for (self: Object, nullable ASignature) */
-void VIRTUAL_parser_prod__AInternMethPropdef__n_signature_61d(val* self, val* p0) {
-parser_prod__AInternMethPropdef__n_signature_61d(self, p0);
+/* method parser_prod#AMainMethPropdef#n_block= for (self: Object, nullable AExpr) */
+void VIRTUAL_parser_prod__AMainMethPropdef__n_block_61d(val* self, val* p0) {
+parser_prod__AMainMethPropdef__n_block_61d(self, p0); /* Direct call parser_prod#AMainMethPropdef#n_block= on <self:Object(AMainMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AInternMethPropdef#visit_all for (self: AInternMethPropdef, Visitor) */
-void parser_prod__AInternMethPropdef__visit_all(val* self, val* p0) {
+/* method parser_prod#AMainMethPropdef#visit_all for (self: AMainMethPropdef, Visitor) */
+void parser_prod__AMainMethPropdef__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : nullable ADoc */;
-val* var1 /* : null */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable ADoc */;
-val* var4 /* : nullable TKwredef */;
-val* var5 /* : null */;
-short int var6 /* : Bool */;
-val* var7 /* : nullable TKwredef */;
-val* var8 /* : nullable AVisibility */;
-val* var9 /* : TKwmeth */;
-val* var10 /* : nullable AMethid */;
-val* var11 /* : nullable ASignature */;
+val* var /* : nullable TKwredef */;
+val* var1 /* : nullable AExpr */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AInternMethPropdef> */
-var1 = NULL;
-if (var == NULL) {
-var2 = 0; /* is null */
-} else {
-var2 = 1; /* arg is null and recv is not */
+var = self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val; /* _n_kwredef on <self:AMainMethPropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var2){
-var3 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AInternMethPropdef> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1992);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var4 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AInternMethPropdef> */
-var5 = NULL;
-if (var4 == NULL) {
-var6 = 0; /* is null */
-} else {
-var6 = 1; /* arg is null and recv is not */
-}
-if (var6){
-var7 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AInternMethPropdef> */
-if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1995);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var8 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AInternMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
-var9 = self->attrs[COLOR_parser_nodes__AInternMethPropdef___n_kwmeth].val; /* _n_kwmeth on <self:AInternMethPropdef> */
-if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwmeth");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 1998);
-show_backtrace(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var9) /* enter_visit on <var_v:Visitor>*/;
-var10 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AInternMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var10) /* enter_visit on <var_v:Visitor>*/;
-var11 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AInternMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var11) /* enter_visit on <var_v:Visitor>*/;
-RET_LABEL:;
-}
-/* method parser_prod#AInternMethPropdef#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AInternMethPropdef__visit_all(val* self, val* p0) {
-parser_prod__AInternMethPropdef__visit_all(self, p0);
-RET_LABEL:;
+var1 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_block].val; /* _n_block on <self:AMainMethPropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-/* method parser_prod#AExternMethPropdef#empty_init for (self: AExternMethPropdef) */
-void parser_prod__AExternMethPropdef__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AExternMethPropdef__empty_init(val* self) {
-parser_prod__AExternMethPropdef__empty_init(self);
+/* method parser_prod#AMainMethPropdef#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AMainMethPropdef__visit_all(val* self, val* p0) {
+parser_prod__AMainMethPropdef__visit_all(self, p0); /* Direct call parser_prod#AMainMethPropdef#visit_all on <self:Object(AMainMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#init_aexternmethpropdef for (self: AExternMethPropdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmeth, nullable AMethid, nullable ASignature, nullable TString, nullable AExternCalls, nullable AExternCodeBlock) */
-void parser_prod__AExternMethPropdef__init_aexternmethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7, val* p8) {
+/* method parser_prod#ATypePropdef#init_atypepropdef for (self: ATypePropdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwtype, nullable TClassid, nullable AType, nullable AAnnotations) */
+void parser_prod__ATypePropdef__init_atypepropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6) {
 val* var_n_doc /* var n_doc: nullable ADoc */;
 val* var_n_kwredef /* var n_kwredef: nullable TKwredef */;
 val* var_n_visibility /* var n_visibility: nullable AVisibility */;
-val* var_n_kwmeth /* var n_kwmeth: nullable TKwmeth */;
-val* var_n_methid /* var n_methid: nullable AMethid */;
-val* var_n_signature /* var n_signature: nullable ASignature */;
-val* var_n_extern /* var n_extern: nullable TString */;
-val* var_n_extern_calls /* var n_extern_calls: nullable AExternCalls */;
-val* var_n_extern_code_block /* var n_extern_code_block: nullable AExternCodeBlock */;
+val* var_n_kwtype /* var n_kwtype: nullable TKwtype */;
+val* var_n_id /* var n_id: nullable TClassid */;
+val* var_n_type /* var n_type: nullable AType */;
+val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
 val* var /* : null */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-val* var4 /* : null */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
 short int var5 /* : Bool */;
-val* var6 /* : null */;
-short int var7 /* : Bool */;
+short int var6 /* : Bool */;
 val* var8 /* : null */;
 short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+val* var20 /* : null */;
+short int var21 /* : Bool */;
+short int var22 /* : Bool */;
+short int var24 /* : Bool */;
+short int var25 /* : Bool */;
+short int var26 /* : Bool */;
 var_n_doc = p0;
 var_n_kwredef = p1;
 var_n_visibility = p2;
-var_n_kwmeth = p3;
-var_n_methid = p4;
-var_n_signature = p5;
-var_n_extern = p6;
-var_n_extern_calls = p7;
-var_n_extern_code_block = p8;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AExternMethPropdef__empty_init]))(self) /* empty_init on <self:AExternMethPropdef>*/;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:AExternMethPropdef> */
+var_n_kwtype = p3;
+var_n_id = p4;
+var_n_type = p5;
+var_n_annotations = p6;
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:ATypePropdef> */
 var = NULL;
 if (var_n_doc == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_doc,var) on <var_n_doc:nullable ADoc> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_n_doc->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_doc, var_other) /* == on <var_n_doc:nullable ADoc(ADoc)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_n_doc->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_doc, self) /* parent= on <var_n_doc:nullable ADoc(ADoc)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_doc,self) on <var_n_doc:nullable ADoc(ADoc)> */
+var_n_doc->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_doc:nullable ADoc(ADoc)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AExternMethPropdef> */
-var2 = NULL;
+self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:ATypePropdef> */
+var8 = NULL;
 if (var_n_kwredef == NULL) {
-var3 = 0; /* is null */
+var9 = 0; /* is null */
 } else {
-var3 = 1; /* arg is null and recv is not */
+var9 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_kwredef,var8) on <var_n_kwredef:nullable TKwredef> */
+var_other = var8;
+{
+var13 = ((short int (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwredef, var_other) /* == on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
+var12 = var13;
+}
+var14 = !var12;
+var10 = var14;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
+}
+if (var9){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwredef,self) on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+var_n_kwredef->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+RET_LABEL15:(void)0;
+}
 }
-if (var3){
-((void (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwredef, self) /* parent= on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
 } else {
 }
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2027);
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1026);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AExternMethPropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:ATypePropdef> */
 if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2028);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1027);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_visibility->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_visibility, self) /* parent= on <var_n_visibility:nullable AVisibility>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_visibility,self) on <var_n_visibility:nullable AVisibility> */
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_kwmeth == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2029);
+var_n_visibility->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_visibility:nullable AVisibility> */
+RET_LABEL16:(void)0;
+}
+}
+if (unlikely(var_n_kwtype == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1028);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AExternMethPropdef___n_kwmeth].val = var_n_kwmeth; /* _n_kwmeth on <self:AExternMethPropdef> */
-if (var_n_kwmeth == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2030);
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwtype].val = var_n_kwtype; /* _n_kwtype on <self:ATypePropdef> */
+if (var_n_kwtype == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1029);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_kwmeth->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwmeth, self) /* parent= on <var_n_kwmeth:nullable TKwmeth>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwtype,self) on <var_n_kwtype:nullable TKwtype> */
+if (unlikely(var_n_kwtype == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_methid == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2031);
+var_n_kwtype->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwtype:nullable TKwtype> */
+RET_LABEL17:(void)0;
+}
+}
+if (unlikely(var_n_id == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1030);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_n_methid; /* _n_methid on <self:AExternMethPropdef> */
-if (var_n_methid == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2032);
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_id].val = var_n_id; /* _n_id on <self:ATypePropdef> */
+if (var_n_id == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1031);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_methid->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_methid, self) /* parent= on <var_n_methid:nullable AMethid>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_id,self) on <var_n_id:nullable TClassid> */
+if (unlikely(var_n_id == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2033);
+var_n_id->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_id:nullable TClassid> */
+RET_LABEL18:(void)0;
+}
+}
+if (unlikely(var_n_type == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1032);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_n_signature; /* _n_signature on <self:AExternMethPropdef> */
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2034);
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_type].val = var_n_type; /* _n_type on <self:ATypePropdef> */
+if (var_n_type == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1033);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_signature->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_signature, self) /* parent= on <var_n_signature:nullable ASignature>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_n_type,self) on <var_n_type:nullable AType> */
+if (unlikely(var_n_type == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val = var_n_extern; /* _n_extern on <self:AExternMethPropdef> */
-var4 = NULL;
-if (var_n_extern == NULL) {
-var5 = 0; /* is null */
-} else {
-var5 = 1; /* arg is null and recv is not */
+var_n_type->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_type:nullable AType> */
+RET_LABEL19:(void)0;
 }
-if (var5){
-((void (*)(val*, val*))(var_n_extern->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_extern, self) /* parent= on <var_n_extern:nullable TString(TString)>*/;
-} else {
 }
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val = var_n_extern_calls; /* _n_extern_calls on <self:AExternMethPropdef> */
-var6 = NULL;
-if (var_n_extern_calls == NULL) {
-var7 = 0; /* is null */
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:ATypePropdef> */
+var20 = NULL;
+if (var_n_annotations == NULL) {
+var21 = 0; /* is null */
 } else {
-var7 = 1; /* arg is null and recv is not */
+var21 = 1; /* arg is null and recv is not */
 }
-if (var7){
-((void (*)(val*, val*))(var_n_extern_calls->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_extern_calls, self) /* parent= on <var_n_extern_calls:nullable AExternCalls(AExternCalls)>*/;
-} else {
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_annotations,var20) on <var_n_annotations:nullable AAnnotations> */
+var_other = var20;
+{
+var25 = ((short int (*)(val*, val*))(var_n_annotations->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_annotations, var_other) /* == on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
+var24 = var25;
+}
+var26 = !var24;
+var22 = var26;
+goto RET_LABEL23;
+RET_LABEL23:(void)0;
+}
+var21 = var22;
+}
+if (var21){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_annotations,self) on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+var_n_annotations->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+RET_LABEL27:(void)0;
 }
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val = var_n_extern_code_block; /* _n_extern_code_block on <self:AExternMethPropdef> */
-var8 = NULL;
-if (var_n_extern_code_block == NULL) {
-var9 = 0; /* is null */
-} else {
-var9 = 1; /* arg is null and recv is not */
 }
-if (var9){
-((void (*)(val*, val*))(var_n_extern_code_block->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_extern_code_block, self) /* parent= on <var_n_extern_code_block:nullable AExternCodeBlock(AExternCodeBlock)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#init_aexternmethpropdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmeth, nullable AMethid, nullable ASignature, nullable TString, nullable AExternCalls, nullable AExternCodeBlock) */
-void VIRTUAL_parser_prod__AExternMethPropdef__init_aexternmethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7, val* p8) {
-parser_prod__AExternMethPropdef__init_aexternmethpropdef(self, p0, p1, p2, p3, p4, p5, p6, p7, p8);
+/* method parser_prod#ATypePropdef#init_atypepropdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwtype, nullable TClassid, nullable AType, nullable AAnnotations) */
+void VIRTUAL_parser_prod__ATypePropdef__init_atypepropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6) {
+parser_prod__ATypePropdef__init_atypepropdef(self, p0, p1, p2, p3, p4, p5, p6); /* Direct call parser_prod#ATypePropdef#init_atypepropdef on <self:Object(ATypePropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#replace_child for (self: AExternMethPropdef, ANode, nullable ANode) */
-void parser_prod__AExternMethPropdef__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#ATypePropdef#replace_child for (self: ATypePropdef, ANode, nullable ANode) */
+void parser_prod__ATypePropdef__replace_child(val* self, val* p0, val* p1) {
 val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : nullable ADoc */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : null */;
-val* var6 /* : nullable TKwredef */;
-short int var7 /* : Bool */;
-val* var8 /* : null */;
+const char* var_class_name;
+val* var8 /* : nullable TKwredef */;
 short int var9 /* : Bool */;
 short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var13 /* : null */;
-val* var14 /* : nullable AVisibility */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
 short int var15 /* : Bool */;
-val* var16 /* : null */;
-short int var17 /* : Bool */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-val* var21 /* : TKwmeth */;
-short int var22 /* : Bool */;
-val* var23 /* : null */;
-short int var24 /* : Bool */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
+val* var19 /* : nullable AVisibility */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
 short int var25 /* : Bool */;
-int cltype26;
-int idtype27;
-val* var28 /* : nullable AMethid */;
-short int var29 /* : Bool */;
-val* var30 /* : null */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+const char* var_class_name29;
+val* var30 /* : TKwtype */;
 short int var31 /* : Bool */;
 short int var32 /* : Bool */;
-int cltype33;
-int idtype34;
-val* var35 /* : nullable ASignature */;
+short int var34 /* : Bool */;
 short int var36 /* : Bool */;
-val* var37 /* : null */;
-short int var38 /* : Bool */;
-short int var39 /* : Bool */;
-int cltype40;
-int idtype41;
-val* var42 /* : nullable TString */;
+short int var37 /* : Bool */;
+int cltype38;
+int idtype39;
+const char* var_class_name40;
+val* var41 /* : TClassid */;
+short int var42 /* : Bool */;
 short int var43 /* : Bool */;
-val* var44 /* : null */;
 short int var45 /* : Bool */;
-short int var46 /* : Bool */;
-int cltype47;
-int idtype48;
-val* var49 /* : null */;
-val* var50 /* : nullable AExternCalls */;
-short int var51 /* : Bool */;
-val* var52 /* : null */;
+short int var47 /* : Bool */;
+short int var48 /* : Bool */;
+int cltype49;
+int idtype50;
+const char* var_class_name51;
+val* var52 /* : AType */;
 short int var53 /* : Bool */;
 short int var54 /* : Bool */;
-int cltype55;
-int idtype56;
-val* var57 /* : null */;
-val* var58 /* : nullable AExternCodeBlock */;
+short int var56 /* : Bool */;
+short int var58 /* : Bool */;
 short int var59 /* : Bool */;
-val* var60 /* : null */;
-short int var61 /* : Bool */;
-short int var62 /* : Bool */;
-int cltype63;
-int idtype64;
-val* var65 /* : null */;
+int cltype60;
+int idtype61;
+const char* var_class_name62;
+val* var63 /* : nullable AAnnotations */;
+short int var64 /* : Bool */;
+short int var65 /* : Bool */;
+short int var67 /* : Bool */;
+short int var69 /* : Bool */;
+short int var70 /* : Bool */;
+int cltype71;
+int idtype72;
+const char* var_class_name73;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AExternMethPropdef> */
+var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:ATypePropdef> */
 if (var == NULL) {
 var1 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:nullable ADoc>*/;
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:nullable ADoc> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable ADoc(ADoc)> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
 }
 if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
+/* <var_new_child:nullable ANode> isa nullable ADoc */
+cltype = type_nullable_parser_nodes__ADoc.color;
+idtype = type_nullable_parser_nodes__ADoc.id;
+if(var_new_child == NULL) {
+var7 = 1;
 } else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ADoc */
-cltype = type_parser_nodes__ADoc.color;
-idtype = type_parser_nodes__ADoc.id;
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
+}
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2054);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ADoc", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1041);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_new_child; /* _n_doc on <self:AExternMethPropdef> */
-} else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var5; /* _n_doc on <self:AExternMethPropdef> */
+{
+parser_prod__ATypePropdef__n_doc_61d(self, var_new_child); /* Direct call parser_prod#ATypePropdef#n_doc= on <self:ATypePropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var6 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AExternMethPropdef> */
-if (var6 == NULL) {
-var7 = 0; /* <var_old_child:ANode> cannot be null */
+var8 = self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val; /* _n_kwredef on <self:ATypePropdef> */
+if (var8 == NULL) {
+var9 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:nullable TKwredef>*/;
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:nullable TKwredef> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:nullable TKwredef(TKwredef)> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (var7){
-var8 = NULL;
-if (var_new_child == NULL) {
-var9 = 0; /* is null */
-} else {
-var9 = 1; /* arg is null and recv is not */
+}
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
 }
 if (var9){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwredef */
-cltype11 = type_parser_nodes__TKwredef.color;
-idtype12 = type_parser_nodes__TKwredef.id;
-if(cltype11 >= var_new_child->type->table_size) {
-var10 = 0;
+/* <var_new_child:nullable ANode> isa nullable TKwredef */
+cltype16 = type_nullable_parser_nodes__TKwredef.color;
+idtype17 = type_nullable_parser_nodes__TKwredef.id;
+if(var_new_child == NULL) {
+var15 = 1;
+} else {
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
 } else {
-var10 = var_new_child->type->type_table[cltype11] == idtype12;
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2064);
+}
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TKwredef", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1045);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AExternMethPropdef> */
-} else {
-var13 = NULL;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var13; /* _n_kwredef on <self:AExternMethPropdef> */
+{
+parser_prod__ATypePropdef__n_kwredef_61d(self, var_new_child); /* Direct call parser_prod#ATypePropdef#n_kwredef= on <self:ATypePropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AExternMethPropdef> */
-if (var14 == NULL) {
-var15 = 0; /* <var_old_child:ANode> cannot be null */
+var19 = self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val; /* _n_visibility on <self:ATypePropdef> */
+if (var19 == NULL) {
+var20 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var15 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var_old_child) /* == on <var14:nullable AVisibility>*/;
+{ /* Inline kernel#Object#== (var19,var_old_child) on <var19:nullable AVisibility> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var19,var_other) on <var19:nullable AVisibility(AVisibility)> */
+var25 = var19 == var_other;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
-if (var15){
-var16 = NULL;
-if (var_new_child == NULL) {
-var17 = 0; /* is null */
-} else {
-var17 = 1; /* arg is null and recv is not */
 }
-if (var17){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AVisibility */
-cltype19 = type_parser_nodes__AVisibility.color;
-idtype20 = type_parser_nodes__AVisibility.id;
-if(cltype19 >= var_new_child->type->table_size) {
-var18 = 0;
-} else {
-var18 = var_new_child->type->type_table[cltype19] == idtype20;
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2074);
-show_backtrace(1);
+var20 = var21;
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_new_child; /* _n_visibility on <self:AExternMethPropdef> */
+if (var20){
+/* <var_new_child:nullable ANode> isa AVisibility */
+cltype27 = type_parser_nodes__AVisibility.color;
+idtype28 = type_parser_nodes__AVisibility.id;
+if(var_new_child == NULL) {
+var26 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2077);
-show_backtrace(1);
-}
-goto RET_LABEL;
+if(cltype27 >= var_new_child->type->table_size) {
+var26 = 0;
 } else {
+var26 = var_new_child->type->type_table[cltype27] == idtype28;
 }
-var21 = self->attrs[COLOR_parser_nodes__AExternMethPropdef___n_kwmeth].val; /* _n_kwmeth on <self:AExternMethPropdef> */
-if (var21 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwmeth");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2081);
+}
+if (unlikely(!var26)) {
+var_class_name29 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AVisibility", var_class_name29);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1049);
 show_backtrace(1);
 }
-var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_old_child) /* == on <var21:TKwmeth>*/;
-if (var22){
-var23 = NULL;
-if (var_new_child == NULL) {
-var24 = 0; /* is null */
-} else {
-var24 = 1; /* arg is null and recv is not */
+{
+parser_prod__ATypePropdef__n_visibility_61d(self, var_new_child); /* Direct call parser_prod#ATypePropdef#n_visibility= on <self:ATypePropdef>*/
 }
-if (var24){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwmeth */
-cltype26 = type_parser_nodes__TKwmeth.color;
-idtype27 = type_parser_nodes__TKwmeth.id;
-if(cltype26 >= var_new_child->type->table_size) {
-var25 = 0;
+goto RET_LABEL;
 } else {
-var25 = var_new_child->type->type_table[cltype26] == idtype27;
 }
-if (!var25) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2084);
+var30 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwtype].val; /* _n_kwtype on <self:ATypePropdef> */
+if (unlikely(var30 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwtype");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1052);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AExternMethPropdef___n_kwmeth].val = var_new_child; /* _n_kwmeth on <self:AExternMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2087);
-show_backtrace(1);
+{
+{ /* Inline kernel#Object#== (var30,var_old_child) on <var30:TKwtype> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var30,var_other) on <var30:TKwtype> */
+var36 = var30 == var_other;
+var34 = var36;
+goto RET_LABEL35;
+RET_LABEL35:(void)0;
 }
-goto RET_LABEL;
-} else {
 }
-var28 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AExternMethPropdef> */
-if (var28 == NULL) {
-var29 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var29 = ((short int (*)(val*, val*))(var28->class->vft[COLOR_kernel__Object___61d_61d]))(var28, var_old_child) /* == on <var28:nullable AMethid>*/;
+var32 = var34;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
 }
-if (var29){
-var30 = NULL;
-if (var_new_child == NULL) {
-var31 = 0; /* is null */
-} else {
-var31 = 1; /* arg is null and recv is not */
+var31 = var32;
 }
 if (var31){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AMethid */
-cltype33 = type_parser_nodes__AMethid.color;
-idtype34 = type_parser_nodes__AMethid.id;
-if(cltype33 >= var_new_child->type->table_size) {
-var32 = 0;
+/* <var_new_child:nullable ANode> isa TKwtype */
+cltype38 = type_parser_nodes__TKwtype.color;
+idtype39 = type_parser_nodes__TKwtype.id;
+if(var_new_child == NULL) {
+var37 = 0;
+} else {
+if(cltype38 >= var_new_child->type->table_size) {
+var37 = 0;
 } else {
-var32 = var_new_child->type->type_table[cltype33] == idtype34;
+var37 = var_new_child->type->type_table[cltype38] == idtype39;
 }
-if (!var32) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2094);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_new_child; /* _n_methid on <self:AExternMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2097);
+if (unlikely(!var37)) {
+var_class_name40 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TKwtype", var_class_name40);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1053);
 show_backtrace(1);
 }
-goto RET_LABEL;
-} else {
+{
+parser_prod__ATypePropdef__n_kwtype_61d(self, var_new_child); /* Direct call parser_prod#ATypePropdef#n_kwtype= on <self:ATypePropdef>*/
 }
-var35 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AExternMethPropdef> */
-if (var35 == NULL) {
-var36 = 0; /* <var_old_child:ANode> cannot be null */
+goto RET_LABEL;
 } else {
-var36 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___61d_61d]))(var35, var_old_child) /* == on <var35:nullable ASignature>*/;
 }
-if (var36){
-var37 = NULL;
-if (var_new_child == NULL) {
-var38 = 0; /* is null */
-} else {
-var38 = 1; /* arg is null and recv is not */
+var41 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_id].val; /* _n_id on <self:ATypePropdef> */
+if (unlikely(var41 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1056);
+show_backtrace(1);
 }
-if (var38){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ASignature */
-cltype40 = type_parser_nodes__ASignature.color;
-idtype41 = type_parser_nodes__ASignature.id;
-if(cltype40 >= var_new_child->type->table_size) {
-var39 = 0;
-} else {
-var39 = var_new_child->type->type_table[cltype40] == idtype41;
+{
+{ /* Inline kernel#Object#== (var41,var_old_child) on <var41:TClassid> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var41,var_other) on <var41:TClassid> */
+var47 = var41 == var_other;
+var45 = var47;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
 }
-if (!var39) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2104);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_new_child; /* _n_signature on <self:AExternMethPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2107);
-show_backtrace(1);
+var43 = var45;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
 }
-goto RET_LABEL;
-} else {
+var42 = var43;
 }
-var42 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val; /* _n_extern on <self:AExternMethPropdef> */
-if (var42 == NULL) {
-var43 = 0; /* <var_old_child:ANode> cannot be null */
+if (var42){
+/* <var_new_child:nullable ANode> isa TClassid */
+cltype49 = type_parser_nodes__TClassid.color;
+idtype50 = type_parser_nodes__TClassid.id;
+if(var_new_child == NULL) {
+var48 = 0;
 } else {
-var43 = ((short int (*)(val*, val*))(var42->class->vft[COLOR_kernel__Object___61d_61d]))(var42, var_old_child) /* == on <var42:nullable TString>*/;
-}
-if (var43){
-var44 = NULL;
-if (var_new_child == NULL) {
-var45 = 0; /* is null */
+if(cltype49 >= var_new_child->type->table_size) {
+var48 = 0;
 } else {
-var45 = 1; /* arg is null and recv is not */
+var48 = var_new_child->type->type_table[cltype49] == idtype50;
 }
-if (var45){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TString */
-cltype47 = type_parser_nodes__TString.color;
-idtype48 = type_parser_nodes__TString.id;
-if(cltype47 >= var_new_child->type->table_size) {
-var46 = 0;
-} else {
-var46 = var_new_child->type->type_table[cltype47] == idtype48;
 }
-if (!var46) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2114);
+if (unlikely(!var48)) {
+var_class_name51 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "TClassid", var_class_name51);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1057);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val = var_new_child; /* _n_extern on <self:AExternMethPropdef> */
-} else {
-var49 = NULL;
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val = var49; /* _n_extern on <self:AExternMethPropdef> */
+{
+parser_prod__ATypePropdef__n_id_61d(self, var_new_child); /* Direct call parser_prod#ATypePropdef#n_id= on <self:ATypePropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var50 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val; /* _n_extern_calls on <self:AExternMethPropdef> */
-if (var50 == NULL) {
-var51 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var51 = ((short int (*)(val*, val*))(var50->class->vft[COLOR_kernel__Object___61d_61d]))(var50, var_old_child) /* == on <var50:nullable AExternCalls>*/;
+var52 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_type].val; /* _n_type on <self:ATypePropdef> */
+if (unlikely(var52 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1060);
+show_backtrace(1);
 }
-if (var51){
-var52 = NULL;
-if (var_new_child == NULL) {
-var53 = 0; /* is null */
-} else {
-var53 = 1; /* arg is null and recv is not */
+{
+{ /* Inline kernel#Object#== (var52,var_old_child) on <var52:AType> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var52,var_other) on <var52:AType> */
+var58 = var52 == var_other;
+var56 = var58;
+goto RET_LABEL57;
+RET_LABEL57:(void)0;
+}
+}
+var54 = var56;
+goto RET_LABEL55;
+RET_LABEL55:(void)0;
+}
+var53 = var54;
 }
 if (var53){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AExternCalls */
-cltype55 = type_parser_nodes__AExternCalls.color;
-idtype56 = type_parser_nodes__AExternCalls.id;
-if(cltype55 >= var_new_child->type->table_size) {
-var54 = 0;
+/* <var_new_child:nullable ANode> isa AType */
+cltype60 = type_parser_nodes__AType.color;
+idtype61 = type_parser_nodes__AType.id;
+if(var_new_child == NULL) {
+var59 = 0;
 } else {
-var54 = var_new_child->type->type_table[cltype55] == idtype56;
+if(cltype60 >= var_new_child->type->table_size) {
+var59 = 0;
+} else {
+var59 = var_new_child->type->type_table[cltype60] == idtype61;
+}
 }
-if (!var54) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2124);
+if (unlikely(!var59)) {
+var_class_name62 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AType", var_class_name62);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1061);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val = var_new_child; /* _n_extern_calls on <self:AExternMethPropdef> */
-} else {
-var57 = NULL;
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val = var57; /* _n_extern_calls on <self:AExternMethPropdef> */
+{
+parser_prod__ATypePropdef__n_type_61d(self, var_new_child); /* Direct call parser_prod#ATypePropdef#n_type= on <self:ATypePropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var58 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AExternMethPropdef> */
-if (var58 == NULL) {
-var59 = 0; /* <var_old_child:ANode> cannot be null */
+var63 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ATypePropdef> */
+if (var63 == NULL) {
+var64 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var59 = ((short int (*)(val*, val*))(var58->class->vft[COLOR_kernel__Object___61d_61d]))(var58, var_old_child) /* == on <var58:nullable AExternCodeBlock>*/;
+{ /* Inline kernel#Object#== (var63,var_old_child) on <var63:nullable AAnnotations> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var63,var_other) on <var63:nullable AAnnotations(AAnnotations)> */
+var69 = var63 == var_other;
+var67 = var69;
+goto RET_LABEL68;
+RET_LABEL68:(void)0;
 }
-if (var59){
-var60 = NULL;
-if (var_new_child == NULL) {
-var61 = 0; /* is null */
-} else {
-var61 = 1; /* arg is null and recv is not */
 }
-if (var61){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AExternCodeBlock */
-cltype63 = type_parser_nodes__AExternCodeBlock.color;
-idtype64 = type_parser_nodes__AExternCodeBlock.id;
-if(cltype63 >= var_new_child->type->table_size) {
-var62 = 0;
+var65 = var67;
+goto RET_LABEL66;
+RET_LABEL66:(void)0;
+}
+var64 = var65;
+}
+if (var64){
+/* <var_new_child:nullable ANode> isa nullable AAnnotations */
+cltype71 = type_nullable_parser_nodes__AAnnotations.color;
+idtype72 = type_nullable_parser_nodes__AAnnotations.id;
+if(var_new_child == NULL) {
+var70 = 1;
+} else {
+if(cltype71 >= var_new_child->type->table_size) {
+var70 = 0;
 } else {
-var62 = var_new_child->type->type_table[cltype63] == idtype64;
+var70 = var_new_child->type->type_table[cltype71] == idtype72;
 }
-if (!var62) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2134);
+}
+if (unlikely(!var70)) {
+var_class_name73 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AAnnotations", var_class_name73);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1065);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val = var_new_child; /* _n_extern_code_block on <self:AExternMethPropdef> */
-} else {
-var65 = NULL;
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val = var65; /* _n_extern_code_block on <self:AExternMethPropdef> */
+{
+parser_prod__ATypePropdef__n_annotations_61d(self, var_new_child); /* Direct call parser_prod#ATypePropdef#n_annotations= on <self:ATypePropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AExternMethPropdef__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AExternMethPropdef__replace_child(self, p0, p1);
+/* method parser_prod#ATypePropdef#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__ATypePropdef__replace_child(val* self, val* p0, val* p1) {
+parser_prod__ATypePropdef__replace_child(self, p0, p1); /* Direct call parser_prod#ATypePropdef#replace_child on <self:Object(ATypePropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_doc= for (self: AExternMethPropdef, nullable ADoc) */
-void parser_prod__AExternMethPropdef__n_doc_61d(val* self, val* p0) {
+/* method parser_prod#ATypePropdef#n_doc= for (self: ATypePropdef, nullable ADoc) */
+void parser_prod__ATypePropdef__n_doc_61d(val* self, val* p0) {
 val* var_node /* var node: nullable ADoc */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_node; /* _n_doc on <self:AExternMethPropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_node; /* _n_doc on <self:ATypePropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable ADoc> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable ADoc(ADoc)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ADoc(ADoc)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable ADoc(ADoc)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable ADoc(ADoc)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_doc= for (self: Object, nullable ADoc) */
-void VIRTUAL_parser_prod__AExternMethPropdef__n_doc_61d(val* self, val* p0) {
-parser_prod__AExternMethPropdef__n_doc_61d(self, p0);
+/* method parser_prod#ATypePropdef#n_doc= for (self: Object, nullable ADoc) */
+void VIRTUAL_parser_prod__ATypePropdef__n_doc_61d(val* self, val* p0) {
+parser_prod__ATypePropdef__n_doc_61d(self, p0); /* Direct call parser_prod#ATypePropdef#n_doc= on <self:Object(ATypePropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_kwredef= for (self: AExternMethPropdef, nullable TKwredef) */
-void parser_prod__AExternMethPropdef__n_kwredef_61d(val* self, val* p0) {
+/* method parser_prod#ATypePropdef#n_kwredef= for (self: ATypePropdef, nullable TKwredef) */
+void parser_prod__ATypePropdef__n_kwredef_61d(val* self, val* p0) {
 val* var_node /* var node: nullable TKwredef */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AExternMethPropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:ATypePropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TKwredef> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TKwredef(TKwredef)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TKwredef(TKwredef)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TKwredef(TKwredef)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TKwredef(TKwredef)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_kwredef= for (self: Object, nullable TKwredef) */
-void VIRTUAL_parser_prod__AExternMethPropdef__n_kwredef_61d(val* self, val* p0) {
-parser_prod__AExternMethPropdef__n_kwredef_61d(self, p0);
+/* method parser_prod#ATypePropdef#n_kwredef= for (self: Object, nullable TKwredef) */
+void VIRTUAL_parser_prod__ATypePropdef__n_kwredef_61d(val* self, val* p0) {
+parser_prod__ATypePropdef__n_kwredef_61d(self, p0); /* Direct call parser_prod#ATypePropdef#n_kwredef= on <self:Object(ATypePropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_visibility= for (self: AExternMethPropdef, nullable AVisibility) */
-void parser_prod__AExternMethPropdef__n_visibility_61d(val* self, val* p0) {
+/* method parser_prod#ATypePropdef#n_visibility= for (self: ATypePropdef, nullable AVisibility) */
+void parser_prod__ATypePropdef__n_visibility_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AVisibility */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_node; /* _n_visibility on <self:AExternMethPropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val = var_node; /* _n_visibility on <self:ATypePropdef> */
 if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2160);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1083);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AVisibility>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AVisibility> */
+if (unlikely(var_node == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AVisibility> */
+RET_LABEL1:(void)0;
+}
 }
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_visibility= for (self: Object, nullable AVisibility) */
-void VIRTUAL_parser_prod__AExternMethPropdef__n_visibility_61d(val* self, val* p0) {
-parser_prod__AExternMethPropdef__n_visibility_61d(self, p0);
+/* method parser_prod#ATypePropdef#n_visibility= for (self: Object, nullable AVisibility) */
+void VIRTUAL_parser_prod__ATypePropdef__n_visibility_61d(val* self, val* p0) {
+parser_prod__ATypePropdef__n_visibility_61d(self, p0); /* Direct call parser_prod#ATypePropdef#n_visibility= on <self:Object(ATypePropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_kwmeth= for (self: AExternMethPropdef, TKwmeth) */
-void parser_prod__AExternMethPropdef__n_kwmeth_61d(val* self, val* p0) {
-val* var_node /* var node: TKwmeth */;
+/* method parser_prod#ATypePropdef#n_kwtype= for (self: ATypePropdef, TKwtype) */
+void parser_prod__ATypePropdef__n_kwtype_61d(val* self, val* p0) {
+val* var_node /* var node: TKwtype */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AExternMethPropdef___n_kwmeth].val = var_node; /* _n_kwmeth on <self:AExternMethPropdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwmeth>*/;
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwtype].val = var_node; /* _n_kwtype on <self:ATypePropdef> */
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TKwtype> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TKwtype> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_kwmeth= for (self: Object, TKwmeth) */
-void VIRTUAL_parser_prod__AExternMethPropdef__n_kwmeth_61d(val* self, val* p0) {
-parser_prod__AExternMethPropdef__n_kwmeth_61d(self, p0);
+/* method parser_prod#ATypePropdef#n_kwtype= for (self: Object, TKwtype) */
+void VIRTUAL_parser_prod__ATypePropdef__n_kwtype_61d(val* self, val* p0) {
+parser_prod__ATypePropdef__n_kwtype_61d(self, p0); /* Direct call parser_prod#ATypePropdef#n_kwtype= on <self:Object(ATypePropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_methid= for (self: AExternMethPropdef, nullable AMethid) */
-void parser_prod__AExternMethPropdef__n_methid_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AMethid */;
+/* method parser_prod#ATypePropdef#n_id= for (self: ATypePropdef, TClassid) */
+void parser_prod__ATypePropdef__n_id_61d(val* self, val* p0) {
+val* var_node /* var node: TClassid */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_node; /* _n_methid on <self:AExternMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2170);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AMethid>*/;
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_id].val = var_node; /* _n_id on <self:ATypePropdef> */
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:TClassid> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:TClassid> */
+RET_LABEL1:(void)0;
+}
 }
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_methid= for (self: Object, nullable AMethid) */
-void VIRTUAL_parser_prod__AExternMethPropdef__n_methid_61d(val* self, val* p0) {
-parser_prod__AExternMethPropdef__n_methid_61d(self, p0);
+/* method parser_prod#ATypePropdef#n_id= for (self: Object, TClassid) */
+void VIRTUAL_parser_prod__ATypePropdef__n_id_61d(val* self, val* p0) {
+parser_prod__ATypePropdef__n_id_61d(self, p0); /* Direct call parser_prod#ATypePropdef#n_id= on <self:Object(ATypePropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_signature= for (self: AExternMethPropdef, nullable ASignature) */
-void parser_prod__AExternMethPropdef__n_signature_61d(val* self, val* p0) {
-val* var_node /* var node: nullable ASignature */;
+/* method parser_prod#ATypePropdef#n_type= for (self: ATypePropdef, AType) */
+void parser_prod__ATypePropdef__n_type_61d(val* self, val* p0) {
+val* var_node /* var node: AType */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_node; /* _n_signature on <self:AExternMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2175);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ASignature>*/;
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_type].val = var_node; /* _n_type on <self:ATypePropdef> */
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:AType> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:AType> */
+RET_LABEL1:(void)0;
+}
 }
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_signature= for (self: Object, nullable ASignature) */
-void VIRTUAL_parser_prod__AExternMethPropdef__n_signature_61d(val* self, val* p0) {
-parser_prod__AExternMethPropdef__n_signature_61d(self, p0);
+/* method parser_prod#ATypePropdef#n_type= for (self: Object, AType) */
+void VIRTUAL_parser_prod__ATypePropdef__n_type_61d(val* self, val* p0) {
+parser_prod__ATypePropdef__n_type_61d(self, p0); /* Direct call parser_prod#ATypePropdef#n_type= on <self:Object(ATypePropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_extern= for (self: AExternMethPropdef, nullable TString) */
-void parser_prod__AExternMethPropdef__n_extern_61d(val* self, val* p0) {
-val* var_node /* var node: nullable TString */;
+/* method parser_prod#ATypePropdef#n_annotations= for (self: ATypePropdef, nullable AAnnotations) */
+void parser_prod__ATypePropdef__n_annotations_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AAnnotations */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val = var_node; /* _n_extern on <self:AExternMethPropdef> */
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:ATypePropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AAnnotations> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AAnnotations(AAnnotations)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TString(TString)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AAnnotations(AAnnotations)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AAnnotations(AAnnotations)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_extern= for (self: Object, nullable TString) */
-void VIRTUAL_parser_prod__AExternMethPropdef__n_extern_61d(val* self, val* p0) {
-parser_prod__AExternMethPropdef__n_extern_61d(self, p0);
+/* method parser_prod#ATypePropdef#n_annotations= for (self: Object, nullable AAnnotations) */
+void VIRTUAL_parser_prod__ATypePropdef__n_annotations_61d(val* self, val* p0) {
+parser_prod__ATypePropdef__n_annotations_61d(self, p0); /* Direct call parser_prod#ATypePropdef#n_annotations= on <self:Object(ATypePropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_extern_calls= for (self: AExternMethPropdef, nullable AExternCalls) */
-void parser_prod__AExternMethPropdef__n_extern_calls_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AExternCalls */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val = var_node; /* _n_extern_calls on <self:AExternMethPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
+/* method parser_prod#ATypePropdef#visit_all for (self: ATypePropdef, Visitor) */
+void parser_prod__ATypePropdef__visit_all(val* self, val* p0) {
+val* var_v /* var v: Visitor */;
+val* var /* : nullable ADoc */;
+val* var1 /* : nullable TKwredef */;
+val* var2 /* : nullable AVisibility */;
+val* var3 /* : TKwtype */;
+val* var4 /* : TClassid */;
+val* var5 /* : AType */;
+val* var6 /* : nullable AAnnotations */;
+var_v = p0;
+var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:ATypePropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
-if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AExternCalls(AExternCalls)>*/;
-} else {
+var1 = self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val; /* _n_kwredef on <self:ATypePropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var1); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
+var2 = self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val; /* _n_visibility on <self:ATypePropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var2); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
+var3 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwtype].val; /* _n_kwtype on <self:ATypePropdef> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwtype");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1112);
+show_backtrace(1);
+}
+{
+parser_nodes__Visitor__enter_visit(var_v, var3); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
+var4 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_id].val; /* _n_id on <self:ATypePropdef> */
+if (unlikely(var4 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1113);
+show_backtrace(1);
+}
+{
+parser_nodes__Visitor__enter_visit(var_v, var4); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
+var5 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_type].val; /* _n_type on <self:ATypePropdef> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1114);
+show_backtrace(1);
+}
+{
+parser_nodes__Visitor__enter_visit(var_v, var5); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
+}
+var6 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ATypePropdef> */
+{
+parser_nodes__Visitor__enter_visit(var_v, var6); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:Visitor>*/
 }
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_extern_calls= for (self: Object, nullable AExternCalls) */
-void VIRTUAL_parser_prod__AExternMethPropdef__n_extern_calls_61d(val* self, val* p0) {
-parser_prod__AExternMethPropdef__n_extern_calls_61d(self, p0);
+/* method parser_prod#ATypePropdef#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__ATypePropdef__visit_all(val* self, val* p0) {
+parser_prod__ATypePropdef__visit_all(self, p0); /* Direct call parser_prod#ATypePropdef#visit_all on <self:Object(ATypePropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#n_extern_code_block= for (self: AExternMethPropdef, nullable AExternCodeBlock) */
-void parser_prod__AExternMethPropdef__n_extern_code_block_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AExternCodeBlock */;
+/* method parser_prod#AMethPropdef#init_amethpropdef for (self: AMethPropdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmeth, nullable TKwinit, nullable TKwnew, nullable AMethid, nullable ASignature, nullable AAnnotations, nullable AExternCalls, nullable AExternCodeBlock, nullable AExpr) */
+void parser_prod__AMethPropdef__init_amethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7, val* p8, val* p9, val* p10, val* p11) {
+val* var_n_doc /* var n_doc: nullable ADoc */;
+val* var_n_kwredef /* var n_kwredef: nullable TKwredef */;
+val* var_n_visibility /* var n_visibility: nullable AVisibility */;
+val* var_n_kwmeth /* var n_kwmeth: nullable TKwmeth */;
+val* var_n_kwinit /* var n_kwinit: nullable TKwinit */;
+val* var_n_kwnew /* var n_kwnew: nullable TKwnew */;
+val* var_n_methid /* var n_methid: nullable AMethid */;
+val* var_n_signature /* var n_signature: nullable ASignature */;
+val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
+val* var_n_extern_calls /* var n_extern_calls: nullable AExternCalls */;
+val* var_n_extern_code_block /* var n_extern_code_block: nullable AExternCodeBlock */;
+val* var_n_block /* var n_block: nullable AExpr */;
 val* var /* : null */;
 short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val = var_node; /* _n_extern_code_block on <self:AExternMethPropdef> */
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+val* var8 /* : null */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+val* var17 /* : null */;
+short int var18 /* : Bool */;
+short int var19 /* : Bool */;
+short int var21 /* : Bool */;
+short int var22 /* : Bool */;
+short int var23 /* : Bool */;
+val* var25 /* : null */;
+short int var26 /* : Bool */;
+short int var27 /* : Bool */;
+short int var29 /* : Bool */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
+val* var33 /* : null */;
+short int var34 /* : Bool */;
+short int var35 /* : Bool */;
+short int var37 /* : Bool */;
+short int var38 /* : Bool */;
+short int var39 /* : Bool */;
+val* var41 /* : null */;
+short int var42 /* : Bool */;
+short int var43 /* : Bool */;
+short int var45 /* : Bool */;
+short int var46 /* : Bool */;
+short int var47 /* : Bool */;
+val* var50 /* : null */;
+short int var51 /* : Bool */;
+short int var52 /* : Bool */;
+short int var54 /* : Bool */;
+short int var55 /* : Bool */;
+short int var56 /* : Bool */;
+val* var58 /* : null */;
+short int var59 /* : Bool */;
+short int var60 /* : Bool */;
+short int var62 /* : Bool */;
+short int var63 /* : Bool */;
+short int var64 /* : Bool */;
+val* var66 /* : null */;
+short int var67 /* : Bool */;
+short int var68 /* : Bool */;
+short int var70 /* : Bool */;
+short int var71 /* : Bool */;
+short int var72 /* : Bool */;
+val* var74 /* : null */;
+short int var75 /* : Bool */;
+short int var76 /* : Bool */;
+short int var78 /* : Bool */;
+short int var79 /* : Bool */;
+short int var80 /* : Bool */;
+var_n_doc = p0;
+var_n_kwredef = p1;
+var_n_visibility = p2;
+var_n_kwmeth = p3;
+var_n_kwinit = p4;
+var_n_kwnew = p5;
+var_n_methid = p6;
+var_n_signature = p7;
+var_n_annotations = p8;
+var_n_extern_calls = p9;
+var_n_extern_code_block = p10;
+var_n_block = p11;
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:AMethPropdef> */
 var = NULL;
-if (var_node == NULL) {
+if (var_n_doc == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_doc,var) on <var_n_doc:nullable ADoc> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_n_doc->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_doc, var_other) /* == on <var_n_doc:nullable ADoc(ADoc)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AExternCodeBlock(AExternCodeBlock)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_doc,self) on <var_n_doc:nullable ADoc(ADoc)> */
+var_n_doc->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_doc:nullable ADoc(ADoc)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
-RET_LABEL:;
+self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AMethPropdef> */
+var8 = NULL;
+if (var_n_kwredef == NULL) {
+var9 = 0; /* is null */
+} else {
+var9 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_kwredef,var8) on <var_n_kwredef:nullable TKwredef> */
+var_other = var8;
+{
+var13 = ((short int (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwredef, var_other) /* == on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
+var12 = var13;
+}
+var14 = !var12;
+var10 = var14;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
+}
+if (var9){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwredef,self) on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+var_n_kwredef->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwredef:nullable TKwredef(TKwredef)> */
+RET_LABEL15:(void)0;
 }
-/* method parser_prod#AExternMethPropdef#n_extern_code_block= for (self: Object, nullable AExternCodeBlock) */
-void VIRTUAL_parser_prod__AExternMethPropdef__n_extern_code_block_61d(val* self, val* p0) {
-parser_prod__AExternMethPropdef__n_extern_code_block_61d(self, p0);
-RET_LABEL:;
 }
-/* method parser_prod#AExternMethPropdef#visit_all for (self: AExternMethPropdef, Visitor) */
-void parser_prod__AExternMethPropdef__visit_all(val* self, val* p0) {
-val* var_v /* var v: Visitor */;
-val* var /* : nullable ADoc */;
-val* var1 /* : null */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable ADoc */;
-val* var4 /* : nullable TKwredef */;
-val* var5 /* : null */;
-short int var6 /* : Bool */;
-val* var7 /* : nullable TKwredef */;
-val* var8 /* : nullable AVisibility */;
-val* var9 /* : TKwmeth */;
-val* var10 /* : nullable AMethid */;
-val* var11 /* : nullable ASignature */;
-val* var12 /* : nullable TString */;
-val* var13 /* : null */;
-short int var14 /* : Bool */;
-val* var15 /* : nullable TString */;
-val* var16 /* : nullable AExternCalls */;
-val* var17 /* : null */;
-short int var18 /* : Bool */;
-val* var19 /* : nullable AExternCalls */;
-val* var20 /* : nullable AExternCodeBlock */;
-val* var21 /* : null */;
-short int var22 /* : Bool */;
-val* var23 /* : nullable AExternCodeBlock */;
-var_v = p0;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AExternMethPropdef> */
-var1 = NULL;
-if (var == NULL) {
-var2 = 0; /* is null */
 } else {
-var2 = 1; /* arg is null and recv is not */
 }
-if (var2){
-var3 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AExternMethPropdef> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2203);
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1138);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
-} else {
+self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AMethPropdef> */
+if (var_n_visibility == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1139);
+show_backtrace(1);
+} else {
+{ /* Inline parser_nodes#ANode#parent= (var_n_visibility,self) on <var_n_visibility:nullable AVisibility> */
+if (unlikely(var_n_visibility == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_n_visibility->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_visibility:nullable AVisibility> */
+RET_LABEL16:(void)0;
+}
+}
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwmeth].val = var_n_kwmeth; /* _n_kwmeth on <self:AMethPropdef> */
+var17 = NULL;
+if (var_n_kwmeth == NULL) {
+var18 = 0; /* is null */
+} else {
+var18 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_kwmeth,var17) on <var_n_kwmeth:nullable TKwmeth> */
+var_other = var17;
+{
+var22 = ((short int (*)(val*, val*))(var_n_kwmeth->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwmeth, var_other) /* == on <var_n_kwmeth:nullable TKwmeth(TKwmeth)>*/;
+var21 = var22;
+}
+var23 = !var21;
+var19 = var23;
+goto RET_LABEL20;
+RET_LABEL20:(void)0;
+}
+var18 = var19;
+}
+if (var18){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwmeth,self) on <var_n_kwmeth:nullable TKwmeth(TKwmeth)> */
+var_n_kwmeth->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwmeth:nullable TKwmeth(TKwmeth)> */
+RET_LABEL24:(void)0;
+}
+}
+} else {
+}
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwinit].val = var_n_kwinit; /* _n_kwinit on <self:AMethPropdef> */
+var25 = NULL;
+if (var_n_kwinit == NULL) {
+var26 = 0; /* is null */
+} else {
+var26 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_kwinit,var25) on <var_n_kwinit:nullable TKwinit> */
+var_other = var25;
+{
+var30 = ((short int (*)(val*, val*))(var_n_kwinit->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwinit, var_other) /* == on <var_n_kwinit:nullable TKwinit(TKwinit)>*/;
+var29 = var30;
+}
+var31 = !var29;
+var27 = var31;
+goto RET_LABEL28;
+RET_LABEL28:(void)0;
+}
+var26 = var27;
+}
+if (var26){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwinit,self) on <var_n_kwinit:nullable TKwinit(TKwinit)> */
+var_n_kwinit->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwinit:nullable TKwinit(TKwinit)> */
+RET_LABEL32:(void)0;
+}
+}
+} else {
+}
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwnew].val = var_n_kwnew; /* _n_kwnew on <self:AMethPropdef> */
+var33 = NULL;
+if (var_n_kwnew == NULL) {
+var34 = 0; /* is null */
+} else {
+var34 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_kwnew,var33) on <var_n_kwnew:nullable TKwnew> */
+var_other = var33;
+{
+var38 = ((short int (*)(val*, val*))(var_n_kwnew->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwnew, var_other) /* == on <var_n_kwnew:nullable TKwnew(TKwnew)>*/;
+var37 = var38;
+}
+var39 = !var37;
+var35 = var39;
+goto RET_LABEL36;
+RET_LABEL36:(void)0;
+}
+var34 = var35;
+}
+if (var34){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_kwnew,self) on <var_n_kwnew:nullable TKwnew(TKwnew)> */
+var_n_kwnew->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_kwnew:nullable TKwnew(TKwnew)> */
+RET_LABEL40:(void)0;
+}
+}
+} else {
+}
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_n_methid; /* _n_methid on <self:AMethPropdef> */
+var41 = NULL;
+if (var_n_methid == NULL) {
+var42 = 0; /* is null */
+} else {
+var42 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_methid,var41) on <var_n_methid:nullable AMethid> */
+var_other = var41;
+{
+var46 = ((short int (*)(val*, val*))(var_n_methid->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_methid, var_other) /* == on <var_n_methid:nullable AMethid(AMethid)>*/;
+var45 = var46;
+}
+var47 = !var45;
+var43 = var47;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
+}
+var42 = var43;
+}
+if (var42){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_methid,self) on <var_n_methid:nullable AMethid(AMethid)> */
+var_n_methid->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_methid:nullable AMethid(AMethid)> */
+RET_LABEL48:(void)0;
+}
 }
-var4 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AExternMethPropdef> */
-var5 = NULL;
-if (var4 == NULL) {
-var6 = 0; /* is null */
 } else {
-var6 = 1; /* arg is null and recv is not */
 }
-if (var6){
-var7 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AExternMethPropdef> */
-if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2206);
+if (unlikely(var_n_signature == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1148);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_n_signature; /* _n_signature on <self:AMethPropdef> */
+if (var_n_signature == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1149);
+show_backtrace(1);
 } else {
-}
-var8 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AExternMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
-var9 = self->attrs[COLOR_parser_nodes__AExternMethPropdef___n_kwmeth].val; /* _n_kwmeth on <self:AExternMethPropdef> */
-if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwmeth");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2209);
+{ /* Inline parser_nodes#ANode#parent= (var_n_signature,self) on <var_n_signature:nullable ASignature> */
+if (unlikely(var_n_signature == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var9) /* enter_visit on <var_v:Visitor>*/;
-var10 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AExternMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var10) /* enter_visit on <var_v:Visitor>*/;
-var11 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AExternMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var11) /* enter_visit on <var_v:Visitor>*/;
-var12 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val; /* _n_extern on <self:AExternMethPropdef> */
-var13 = NULL;
-if (var12 == NULL) {
-var14 = 0; /* is null */
-} else {
-var14 = 1; /* arg is null and recv is not */
+var_n_signature->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_signature:nullable ASignature> */
+RET_LABEL49:(void)0;
 }
-if (var14){
-var15 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val; /* _n_extern on <self:AExternMethPropdef> */
-if (var15 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2213);
-show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var15) /* enter_visit on <var_v:Visitor>*/;
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:AMethPropdef> */
+var50 = NULL;
+if (var_n_annotations == NULL) {
+var51 = 0; /* is null */
 } else {
+var51 = 1; /* arg is null and recv is not */
 }
-var16 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val; /* _n_extern_calls on <self:AExternMethPropdef> */
-var17 = NULL;
-if (var16 == NULL) {
-var18 = 0; /* is null */
-} else {
-var18 = 1; /* arg is null and recv is not */
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_annotations,var50) on <var_n_annotations:nullable AAnnotations> */
+var_other = var50;
+{
+var55 = ((short int (*)(val*, val*))(var_n_annotations->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_annotations, var_other) /* == on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
+var54 = var55;
 }
-if (var18){
-var19 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val; /* _n_extern_calls on <self:AExternMethPropdef> */
-if (var19 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2216);
-show_backtrace(1);
+var56 = !var54;
+var52 = var56;
+goto RET_LABEL53;
+RET_LABEL53:(void)0;
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var19) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var51 = var52;
 }
-var20 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AExternMethPropdef> */
-var21 = NULL;
-if (var20 == NULL) {
-var22 = 0; /* is null */
-} else {
-var22 = 1; /* arg is null and recv is not */
+if (var51){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_annotations,self) on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+var_n_annotations->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_annotations:nullable AAnnotations(AAnnotations)> */
+RET_LABEL57:(void)0;
 }
-if (var22){
-var23 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AExternMethPropdef> */
-if (var23 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2219);
-show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var23) /* enter_visit on <var_v:Visitor>*/;
 } else {
 }
-RET_LABEL:;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_extern_calls].val = var_n_extern_calls; /* _n_extern_calls on <self:AMethPropdef> */
+var58 = NULL;
+if (var_n_extern_calls == NULL) {
+var59 = 0; /* is null */
+} else {
+var59 = 1; /* arg is null and recv is not */
 }
-/* method parser_prod#AExternMethPropdef#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AExternMethPropdef__visit_all(val* self, val* p0) {
-parser_prod__AExternMethPropdef__visit_all(self, p0);
-RET_LABEL:;
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_extern_calls,var58) on <var_n_extern_calls:nullable AExternCalls> */
+var_other = var58;
+{
+var63 = ((short int (*)(val*, val*))(var_n_extern_calls->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_extern_calls, var_other) /* == on <var_n_extern_calls:nullable AExternCalls(AExternCalls)>*/;
+var62 = var63;
 }
-/* method parser_prod#AConcreteMethPropdef#empty_init for (self: AConcreteMethPropdef) */
-void parser_prod__AConcreteMethPropdef__empty_init(val* self) {
-RET_LABEL:;
+var64 = !var62;
+var60 = var64;
+goto RET_LABEL61;
+RET_LABEL61:(void)0;
 }
-/* method parser_prod#AConcreteMethPropdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__empty_init(val* self) {
-parser_prod__AConcreteMethPropdef__empty_init(self);
-RET_LABEL:;
+var59 = var60;
 }
-/* method parser_prod#AConcreteMethPropdef#init_aconcretemethpropdef for (self: AConcreteMethPropdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmeth, nullable AMethid, nullable ASignature, nullable AAnnotations, nullable AExpr) */
-void parser_prod__AConcreteMethPropdef__init_aconcretemethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7) {
-val* var_n_doc /* var n_doc: nullable ADoc */;
-val* var_n_kwredef /* var n_kwredef: nullable TKwredef */;
-val* var_n_visibility /* var n_visibility: nullable AVisibility */;
-val* var_n_kwmeth /* var n_kwmeth: nullable TKwmeth */;
-val* var_n_methid /* var n_methid: nullable AMethid */;
-val* var_n_signature /* var n_signature: nullable ASignature */;
-val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
-val* var_n_block /* var n_block: nullable AExpr */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-val* var4 /* : null */;
-short int var5 /* : Bool */;
-val* var6 /* : null */;
-short int var7 /* : Bool */;
-var_n_doc = p0;
-var_n_kwredef = p1;
-var_n_visibility = p2;
-var_n_kwmeth = p3;
-var_n_methid = p4;
-var_n_signature = p5;
-var_n_annotations = p6;
-var_n_block = p7;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AConcreteMethPropdef__empty_init]))(self) /* empty_init on <self:AConcreteMethPropdef>*/;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:AConcreteMethPropdef> */
-var = NULL;
-if (var_n_doc == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
+if (var59){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_extern_calls,self) on <var_n_extern_calls:nullable AExternCalls(AExternCalls)> */
+var_n_extern_calls->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_extern_calls:nullable AExternCalls(AExternCalls)> */
+RET_LABEL65:(void)0;
 }
-if (var1){
-((void (*)(val*, val*))(var_n_doc->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_doc, self) /* parent= on <var_n_doc:nullable ADoc(ADoc)>*/;
-} else {
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AConcreteMethPropdef> */
-var2 = NULL;
-if (var_n_kwredef == NULL) {
-var3 = 0; /* is null */
 } else {
-var3 = 1; /* arg is null and recv is not */
 }
-if (var3){
-((void (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwredef, self) /* parent= on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_extern_code_block].val = var_n_extern_code_block; /* _n_extern_code_block on <self:AMethPropdef> */
+var66 = NULL;
+if (var_n_extern_code_block == NULL) {
+var67 = 0; /* is null */
 } else {
+var67 = 1; /* arg is null and recv is not */
 }
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2246);
-show_backtrace(1);
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_extern_code_block,var66) on <var_n_extern_code_block:nullable AExternCodeBlock> */
+var_other = var66;
+{
+var71 = ((short int (*)(val*, val*))(var_n_extern_code_block->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_extern_code_block, var_other) /* == on <var_n_extern_code_block:nullable AExternCodeBlock(AExternCodeBlock)>*/;
+var70 = var71;
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AConcreteMethPropdef> */
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2247);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_visibility->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_visibility, self) /* parent= on <var_n_visibility:nullable AVisibility>*/;
+var72 = !var70;
+var68 = var72;
+goto RET_LABEL69;
+RET_LABEL69:(void)0;
 }
-if (var_n_kwmeth == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2248);
-show_backtrace(1);
+var67 = var68;
 }
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_kwmeth].val = var_n_kwmeth; /* _n_kwmeth on <self:AConcreteMethPropdef> */
-if (var_n_kwmeth == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2249);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_kwmeth->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwmeth, self) /* parent= on <var_n_kwmeth:nullable TKwmeth>*/;
+if (var67){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_extern_code_block,self) on <var_n_extern_code_block:nullable AExternCodeBlock(AExternCodeBlock)> */
+var_n_extern_code_block->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_extern_code_block:nullable AExternCodeBlock(AExternCodeBlock)> */
+RET_LABEL73:(void)0;
 }
-if (var_n_methid == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2250);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_n_methid; /* _n_methid on <self:AConcreteMethPropdef> */
-if (var_n_methid == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2251);
-show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_methid->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_methid, self) /* parent= on <var_n_methid:nullable AMethid>*/;
-}
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2252);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_n_signature; /* _n_signature on <self:AConcreteMethPropdef> */
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2253);
-show_backtrace(1);
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_block].val = var_n_block; /* _n_block on <self:AMethPropdef> */
+var74 = NULL;
+if (var_n_block == NULL) {
+var75 = 0; /* is null */
 } else {
-((void (*)(val*, val*))(var_n_signature->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_signature, self) /* parent= on <var_n_signature:nullable ASignature>*/;
+var75 = 1; /* arg is null and recv is not */
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:AConcreteMethPropdef> */
-var4 = NULL;
-if (var_n_annotations == NULL) {
-var5 = 0; /* is null */
-} else {
-var5 = 1; /* arg is null and recv is not */
+if (0) {
+{ /* Inline kernel#Object#!= (var_n_block,var74) on <var_n_block:nullable AExpr> */
+var_other = var74;
+{
+var79 = ((short int (*)(val*, val*))(var_n_block->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_block, var_other) /* == on <var_n_block:nullable AExpr(AExpr)>*/;
+var78 = var79;
 }
-if (var5){
-((void (*)(val*, val*))(var_n_annotations->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_annotations, self) /* parent= on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
-} else {
+var80 = !var78;
+var76 = var80;
+goto RET_LABEL77;
+RET_LABEL77:(void)0;
+}
+var75 = var76;
+}
+if (var75){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_n_block,self) on <var_n_block:nullable AExpr(AExpr)> */
+var_n_block->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_n_block:nullable AExpr(AExpr)> */
+RET_LABEL81:(void)0;
 }
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_n_block; /* _n_block on <self:AConcreteMethPropdef> */
-var6 = NULL;
-if (var_n_block == NULL) {
-var7 = 0; /* is null */
-} else {
-var7 = 1; /* arg is null and recv is not */
 }
-if (var7){
-((void (*)(val*, val*))(var_n_block->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_block, self) /* parent= on <var_n_block:nullable AExpr(AExpr)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#init_aconcretemethpropdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmeth, nullable AMethid, nullable ASignature, nullable AAnnotations, nullable AExpr) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__init_aconcretemethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7) {
-parser_prod__AConcreteMethPropdef__init_aconcretemethpropdef(self, p0, p1, p2, p3, p4, p5, p6, p7);
+/* method parser_prod#AMethPropdef#init_amethpropdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwmeth, nullable TKwinit, nullable TKwnew, nullable AMethid, nullable ASignature, nullable AAnnotations, nullable AExternCalls, nullable AExternCodeBlock, nullable AExpr) */
+void VIRTUAL_parser_prod__AMethPropdef__init_amethpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7, val* p8, val* p9, val* p10, val* p11) {
+parser_prod__AMethPropdef__init_amethpropdef(self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); /* Direct call parser_prod#AMethPropdef#init_amethpropdef on <self:Object(AMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#replace_child for (self: AConcreteMethPropdef, ANode, nullable ANode) */
-void parser_prod__AConcreteMethPropdef__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AMethPropdef#replace_child for (self: AMethPropdef, ANode, nullable ANode) */
+void parser_prod__AMethPropdef__replace_child(val* self, val* p0, val* p1) {
 val* var_old_child /* var old_child: ANode */;
 val* var_new_child /* var new_child: nullable ANode */;
 val* var /* : nullable ADoc */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var4 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : null */;
-val* var6 /* : nullable TKwredef */;
-short int var7 /* : Bool */;
-val* var8 /* : null */;
+const char* var_class_name;
+val* var8 /* : nullable TKwredef */;
 short int var9 /* : Bool */;
 short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var13 /* : null */;
-val* var14 /* : nullable AVisibility */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
 short int var15 /* : Bool */;
-val* var16 /* : null */;
-short int var17 /* : Bool */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-val* var21 /* : nullable TKwmeth */;
-short int var22 /* : Bool */;
-val* var23 /* : null */;
-short int var24 /* : Bool */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
+val* var19 /* : nullable AVisibility */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
 short int var25 /* : Bool */;
-int cltype26;
-int idtype27;
-val* var28 /* : nullable AMethid */;
-short int var29 /* : Bool */;
-val* var30 /* : null */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+const char* var_class_name29;
+val* var30 /* : nullable TKwmeth */;
 short int var31 /* : Bool */;
 short int var32 /* : Bool */;
-int cltype33;
-int idtype34;
-val* var35 /* : nullable ASignature */;
+short int var34 /* : Bool */;
 short int var36 /* : Bool */;
-val* var37 /* : null */;
-short int var38 /* : Bool */;
-short int var39 /* : Bool */;
-int cltype40;
-int idtype41;
-val* var42 /* : nullable AAnnotations */;
+short int var37 /* : Bool */;
+int cltype38;
+int idtype39;
+const char* var_class_name40;
+val* var41 /* : nullable TKwinit */;
+short int var42 /* : Bool */;
 short int var43 /* : Bool */;
-val* var44 /* : null */;
 short int var45 /* : Bool */;
-short int var46 /* : Bool */;
-int cltype47;
-int idtype48;
-val* var49 /* : null */;
-val* var50 /* : nullable AExpr */;
-short int var51 /* : Bool */;
-val* var52 /* : null */;
+short int var47 /* : Bool */;
+short int var48 /* : Bool */;
+int cltype49;
+int idtype50;
+const char* var_class_name51;
+val* var52 /* : nullable TKwnew */;
 short int var53 /* : Bool */;
 short int var54 /* : Bool */;
-int cltype55;
-int idtype56;
-val* var57 /* : null */;
+short int var56 /* : Bool */;
+short int var58 /* : Bool */;
+short int var59 /* : Bool */;
+int cltype60;
+int idtype61;
+const char* var_class_name62;
+val* var63 /* : nullable AMethid */;
+short int var64 /* : Bool */;
+short int var65 /* : Bool */;
+short int var67 /* : Bool */;
+short int var69 /* : Bool */;
+short int var70 /* : Bool */;
+int cltype71;
+int idtype72;
+const char* var_class_name73;
+val* var74 /* : nullable ASignature */;
+short int var75 /* : Bool */;
+short int var76 /* : Bool */;
+short int var78 /* : Bool */;
+short int var80 /* : Bool */;
+short int var81 /* : Bool */;
+int cltype82;
+int idtype83;
+const char* var_class_name84;
+val* var85 /* : nullable AAnnotations */;
+short int var86 /* : Bool */;
+short int var87 /* : Bool */;
+short int var89 /* : Bool */;
+short int var91 /* : Bool */;
+short int var92 /* : Bool */;
+int cltype93;
+int idtype94;
+const char* var_class_name95;
+val* var96 /* : nullable AExternCalls */;
+short int var97 /* : Bool */;
+short int var98 /* : Bool */;
+short int var100 /* : Bool */;
+short int var102 /* : Bool */;
+short int var103 /* : Bool */;
+int cltype104;
+int idtype105;
+const char* var_class_name106;
+val* var107 /* : nullable AExternCodeBlock */;
+short int var108 /* : Bool */;
+short int var109 /* : Bool */;
+short int var111 /* : Bool */;
+short int var113 /* : Bool */;
+short int var114 /* : Bool */;
+int cltype115;
+int idtype116;
+const char* var_class_name117;
+val* var118 /* : nullable AExpr */;
+short int var119 /* : Bool */;
+short int var120 /* : Bool */;
+short int var122 /* : Bool */;
+short int var124 /* : Bool */;
+short int var125 /* : Bool */;
+int cltype126;
+int idtype127;
+const char* var_class_name128;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AConcreteMethPropdef> */
+var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AMethPropdef> */
 if (var == NULL) {
 var1 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:nullable ADoc>*/;
+{ /* Inline kernel#Object#== (var,var_old_child) on <var:nullable ADoc> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable ADoc(ADoc)> */
+var6 = var == var_other;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+}
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
 }
 if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
+/* <var_new_child:nullable ANode> isa nullable ADoc */
+cltype = type_nullable_parser_nodes__ADoc.color;
+idtype = type_nullable_parser_nodes__ADoc.id;
+if(var_new_child == NULL) {
+var7 = 1;
 } else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ADoc */
-cltype = type_parser_nodes__ADoc.color;
-idtype = type_parser_nodes__ADoc.id;
 if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+var7 = 0;
 } else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+var7 = var_new_child->type->type_table[cltype] == idtype;
+}
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2269);
+if (unlikely(!var7)) {
+var_class_name = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ADoc", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1163);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_new_child; /* _n_doc on <self:AConcreteMethPropdef> */
-} else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var5; /* _n_doc on <self:AConcreteMethPropdef> */
+{
+parser_prod__AMethPropdef__n_doc_61d(self, var_new_child); /* Direct call parser_prod#AMethPropdef#n_doc= on <self:AMethPropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var6 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AConcreteMethPropdef> */
-if (var6 == NULL) {
-var7 = 0; /* <var_old_child:ANode> cannot be null */
+var8 = self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val; /* _n_kwredef on <self:AMethPropdef> */
+if (var8 == NULL) {
+var9 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:nullable TKwredef>*/;
+{ /* Inline kernel#Object#== (var8,var_old_child) on <var8:nullable TKwredef> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:nullable TKwredef(TKwredef)> */
+var14 = var8 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-if (var7){
-var8 = NULL;
-if (var_new_child == NULL) {
-var9 = 0; /* is null */
-} else {
-var9 = 1; /* arg is null and recv is not */
+}
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
 }
 if (var9){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwredef */
-cltype11 = type_parser_nodes__TKwredef.color;
-idtype12 = type_parser_nodes__TKwredef.id;
-if(cltype11 >= var_new_child->type->table_size) {
-var10 = 0;
+/* <var_new_child:nullable ANode> isa nullable TKwredef */
+cltype16 = type_nullable_parser_nodes__TKwredef.color;
+idtype17 = type_nullable_parser_nodes__TKwredef.id;
+if(var_new_child == NULL) {
+var15 = 1;
+} else {
+if(cltype16 >= var_new_child->type->table_size) {
+var15 = 0;
 } else {
-var10 = var_new_child->type->type_table[cltype11] == idtype12;
+var15 = var_new_child->type->type_table[cltype16] == idtype17;
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2279);
+}
+if (unlikely(!var15)) {
+var_class_name18 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TKwredef", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1167);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AConcreteMethPropdef> */
-} else {
-var13 = NULL;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var13; /* _n_kwredef on <self:AConcreteMethPropdef> */
+{
+((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__APropdef__n_kwredef_61d]))(self, var_new_child) /* n_kwredef= on <self:AMethPropdef>*/;
 }
 goto RET_LABEL;
 } else {
 }
-var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AConcreteMethPropdef> */
-if (var14 == NULL) {
-var15 = 0; /* <var_old_child:ANode> cannot be null */
+var19 = self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val; /* _n_visibility on <self:AMethPropdef> */
+if (var19 == NULL) {
+var20 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var15 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var_old_child) /* == on <var14:nullable AVisibility>*/;
+{ /* Inline kernel#Object#== (var19,var_old_child) on <var19:nullable AVisibility> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var19,var_other) on <var19:nullable AVisibility(AVisibility)> */
+var25 = var19 == var_other;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
-if (var15){
-var16 = NULL;
-if (var_new_child == NULL) {
-var17 = 0; /* is null */
-} else {
-var17 = 1; /* arg is null and recv is not */
 }
-if (var17){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AVisibility */
-cltype19 = type_parser_nodes__AVisibility.color;
-idtype20 = type_parser_nodes__AVisibility.id;
-if(cltype19 >= var_new_child->type->table_size) {
-var18 = 0;
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
+}
+var20 = var21;
+}
+if (var20){
+/* <var_new_child:nullable ANode> isa AVisibility */
+cltype27 = type_parser_nodes__AVisibility.color;
+idtype28 = type_parser_nodes__AVisibility.id;
+if(var_new_child == NULL) {
+var26 = 0;
+} else {
+if(cltype27 >= var_new_child->type->table_size) {
+var26 = 0;
 } else {
-var18 = var_new_child->type->type_table[cltype19] == idtype20;
+var26 = var_new_child->type->type_table[cltype27] == idtype28;
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2289);
+}
+if (unlikely(!var26)) {
+var_class_name29 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AVisibility", var_class_name29);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1171);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_new_child; /* _n_visibility on <self:AConcreteMethPropdef> */
+{
+parser_prod__AMethPropdef__n_visibility_61d(self, var_new_child); /* Direct call parser_prod#AMethPropdef#n_visibility= on <self:AMethPropdef>*/
+}
+goto RET_LABEL;
+} else {
+}
+var30 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwmeth].val; /* _n_kwmeth on <self:AMethPropdef> */
+if (var30 == NULL) {
+var31 = 0; /* <var_old_child:ANode> cannot be null */
+} else {
+{ /* Inline kernel#Object#== (var30,var_old_child) on <var30:nullable TKwmeth> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var30,var_other) on <var30:nullable TKwmeth(TKwmeth)> */
+var36 = var30 == var_other;
+var34 = var36;
+goto RET_LABEL35;
+RET_LABEL35:(void)0;
+}
+}
+var32 = var34;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
+}
+var31 = var32;
+}
+if (var31){
+/* <var_new_child:nullable ANode> isa nullable TKwmeth */
+cltype38 = type_nullable_parser_nodes__TKwmeth.color;
+idtype39 = type_nullable_parser_nodes__TKwmeth.id;
+if(var_new_child == NULL) {
+var37 = 1;
+} else {
+if(cltype38 >= var_new_child->type->table_size) {
+var37 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2292);
+var37 = var_new_child->type->type_table[cltype38] == idtype39;
+}
+}
+if (unlikely(!var37)) {
+var_class_name40 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TKwmeth", var_class_name40);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1175);
 show_backtrace(1);
 }
+{
+parser_prod__AMethPropdef__n_kwmeth_61d(self, var_new_child); /* Direct call parser_prod#AMethPropdef#n_kwmeth= on <self:AMethPropdef>*/
+}
 goto RET_LABEL;
 } else {
 }
-var21 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_kwmeth].val; /* _n_kwmeth on <self:AConcreteMethPropdef> */
-if (var21 == NULL) {
-var22 = 0; /* <var_old_child:ANode> cannot be null */
+var41 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwinit].val; /* _n_kwinit on <self:AMethPropdef> */
+if (var41 == NULL) {
+var42 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_old_child) /* == on <var21:nullable TKwmeth>*/;
+{ /* Inline kernel#Object#== (var41,var_old_child) on <var41:nullable TKwinit> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var41,var_other) on <var41:nullable TKwinit(TKwinit)> */
+var47 = var41 == var_other;
+var45 = var47;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
 }
-if (var22){
-var23 = NULL;
-if (var_new_child == NULL) {
-var24 = 0; /* is null */
-} else {
-var24 = 1; /* arg is null and recv is not */
 }
-if (var24){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa TKwmeth */
-cltype26 = type_parser_nodes__TKwmeth.color;
-idtype27 = type_parser_nodes__TKwmeth.id;
-if(cltype26 >= var_new_child->type->table_size) {
-var25 = 0;
+var43 = var45;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
+}
+var42 = var43;
+}
+if (var42){
+/* <var_new_child:nullable ANode> isa nullable TKwinit */
+cltype49 = type_nullable_parser_nodes__TKwinit.color;
+idtype50 = type_nullable_parser_nodes__TKwinit.id;
+if(var_new_child == NULL) {
+var48 = 1;
+} else {
+if(cltype49 >= var_new_child->type->table_size) {
+var48 = 0;
 } else {
-var25 = var_new_child->type->type_table[cltype26] == idtype27;
+var48 = var_new_child->type->type_table[cltype49] == idtype50;
 }
-if (!var25) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2299);
+}
+if (unlikely(!var48)) {
+var_class_name51 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TKwinit", var_class_name51);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1179);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_kwmeth].val = var_new_child; /* _n_kwmeth on <self:AConcreteMethPropdef> */
+{
+parser_prod__AMethPropdef__n_kwinit_61d(self, var_new_child); /* Direct call parser_prod#AMethPropdef#n_kwinit= on <self:AMethPropdef>*/
+}
+goto RET_LABEL;
+} else {
+}
+var52 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwnew].val; /* _n_kwnew on <self:AMethPropdef> */
+if (var52 == NULL) {
+var53 = 0; /* <var_old_child:ANode> cannot be null */
+} else {
+{ /* Inline kernel#Object#== (var52,var_old_child) on <var52:nullable TKwnew> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var52,var_other) on <var52:nullable TKwnew(TKwnew)> */
+var58 = var52 == var_other;
+var56 = var58;
+goto RET_LABEL57;
+RET_LABEL57:(void)0;
+}
+}
+var54 = var56;
+goto RET_LABEL55;
+RET_LABEL55:(void)0;
+}
+var53 = var54;
+}
+if (var53){
+/* <var_new_child:nullable ANode> isa nullable TKwnew */
+cltype60 = type_nullable_parser_nodes__TKwnew.color;
+idtype61 = type_nullable_parser_nodes__TKwnew.id;
+if(var_new_child == NULL) {
+var59 = 1;
+} else {
+if(cltype60 >= var_new_child->type->table_size) {
+var59 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2302);
+var59 = var_new_child->type->type_table[cltype60] == idtype61;
+}
+}
+if (unlikely(!var59)) {
+var_class_name62 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable TKwnew", var_class_name62);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1183);
 show_backtrace(1);
 }
+{
+parser_prod__AMethPropdef__n_kwnew_61d(self, var_new_child); /* Direct call parser_prod#AMethPropdef#n_kwnew= on <self:AMethPropdef>*/
+}
 goto RET_LABEL;
 } else {
 }
-var28 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AConcreteMethPropdef> */
-if (var28 == NULL) {
-var29 = 0; /* <var_old_child:ANode> cannot be null */
+var63 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AMethPropdef> */
+if (var63 == NULL) {
+var64 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var29 = ((short int (*)(val*, val*))(var28->class->vft[COLOR_kernel__Object___61d_61d]))(var28, var_old_child) /* == on <var28:nullable AMethid>*/;
+{ /* Inline kernel#Object#== (var63,var_old_child) on <var63:nullable AMethid> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var63,var_other) on <var63:nullable AMethid(AMethid)> */
+var69 = var63 == var_other;
+var67 = var69;
+goto RET_LABEL68;
+RET_LABEL68:(void)0;
 }
-if (var29){
-var30 = NULL;
-if (var_new_child == NULL) {
-var31 = 0; /* is null */
-} else {
-var31 = 1; /* arg is null and recv is not */
 }
-if (var31){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AMethid */
-cltype33 = type_parser_nodes__AMethid.color;
-idtype34 = type_parser_nodes__AMethid.id;
-if(cltype33 >= var_new_child->type->table_size) {
-var32 = 0;
+var65 = var67;
+goto RET_LABEL66;
+RET_LABEL66:(void)0;
+}
+var64 = var65;
+}
+if (var64){
+/* <var_new_child:nullable ANode> isa nullable AMethid */
+cltype71 = type_nullable_parser_nodes__AMethid.color;
+idtype72 = type_nullable_parser_nodes__AMethid.id;
+if(var_new_child == NULL) {
+var70 = 1;
+} else {
+if(cltype71 >= var_new_child->type->table_size) {
+var70 = 0;
 } else {
-var32 = var_new_child->type->type_table[cltype33] == idtype34;
+var70 = var_new_child->type->type_table[cltype71] == idtype72;
 }
-if (!var32) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2309);
+}
+if (unlikely(!var70)) {
+var_class_name73 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AMethid", var_class_name73);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1187);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_new_child; /* _n_methid on <self:AConcreteMethPropdef> */
+{
+parser_prod__AMethPropdef__n_methid_61d(self, var_new_child); /* Direct call parser_prod#AMethPropdef#n_methid= on <self:AMethPropdef>*/
+}
+goto RET_LABEL;
+} else {
+}
+var74 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
+if (var74 == NULL) {
+var75 = 0; /* <var_old_child:ANode> cannot be null */
+} else {
+{ /* Inline kernel#Object#== (var74,var_old_child) on <var74:nullable ASignature> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var74,var_other) on <var74:nullable ASignature(ASignature)> */
+var80 = var74 == var_other;
+var78 = var80;
+goto RET_LABEL79;
+RET_LABEL79:(void)0;
+}
+}
+var76 = var78;
+goto RET_LABEL77;
+RET_LABEL77:(void)0;
+}
+var75 = var76;
+}
+if (var75){
+/* <var_new_child:nullable ANode> isa ASignature */
+cltype82 = type_parser_nodes__ASignature.color;
+idtype83 = type_parser_nodes__ASignature.id;
+if(var_new_child == NULL) {
+var81 = 0;
+} else {
+if(cltype82 >= var_new_child->type->table_size) {
+var81 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2312);
+var81 = var_new_child->type->type_table[cltype82] == idtype83;
+}
+}
+if (unlikely(!var81)) {
+var_class_name84 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "ASignature", var_class_name84);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1191);
 show_backtrace(1);
 }
+{
+parser_prod__AMethPropdef__n_signature_61d(self, var_new_child); /* Direct call parser_prod#AMethPropdef#n_signature= on <self:AMethPropdef>*/
+}
 goto RET_LABEL;
 } else {
 }
-var35 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AConcreteMethPropdef> */
-if (var35 == NULL) {
-var36 = 0; /* <var_old_child:ANode> cannot be null */
+var85 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AMethPropdef> */
+if (var85 == NULL) {
+var86 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var36 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___61d_61d]))(var35, var_old_child) /* == on <var35:nullable ASignature>*/;
+{ /* Inline kernel#Object#== (var85,var_old_child) on <var85:nullable AAnnotations> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var85,var_other) on <var85:nullable AAnnotations(AAnnotations)> */
+var91 = var85 == var_other;
+var89 = var91;
+goto RET_LABEL90;
+RET_LABEL90:(void)0;
 }
-if (var36){
-var37 = NULL;
-if (var_new_child == NULL) {
-var38 = 0; /* is null */
-} else {
-var38 = 1; /* arg is null and recv is not */
 }
-if (var38){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa ASignature */
-cltype40 = type_parser_nodes__ASignature.color;
-idtype41 = type_parser_nodes__ASignature.id;
-if(cltype40 >= var_new_child->type->table_size) {
-var39 = 0;
+var87 = var89;
+goto RET_LABEL88;
+RET_LABEL88:(void)0;
+}
+var86 = var87;
+}
+if (var86){
+/* <var_new_child:nullable ANode> isa nullable AAnnotations */
+cltype93 = type_nullable_parser_nodes__AAnnotations.color;
+idtype94 = type_nullable_parser_nodes__AAnnotations.id;
+if(var_new_child == NULL) {
+var92 = 1;
+} else {
+if(cltype93 >= var_new_child->type->table_size) {
+var92 = 0;
 } else {
-var39 = var_new_child->type->type_table[cltype40] == idtype41;
+var92 = var_new_child->type->type_table[cltype93] == idtype94;
 }
-if (!var39) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2319);
+}
+if (unlikely(!var92)) {
+var_class_name95 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AAnnotations", var_class_name95);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1195);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_new_child; /* _n_signature on <self:AConcreteMethPropdef> */
+{
+parser_prod__AMethPropdef__n_annotations_61d(self, var_new_child); /* Direct call parser_prod#AMethPropdef#n_annotations= on <self:AMethPropdef>*/
+}
+goto RET_LABEL;
+} else {
+}
+var96 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_extern_calls].val; /* _n_extern_calls on <self:AMethPropdef> */
+if (var96 == NULL) {
+var97 = 0; /* <var_old_child:ANode> cannot be null */
+} else {
+{ /* Inline kernel#Object#== (var96,var_old_child) on <var96:nullable AExternCalls> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var96,var_other) on <var96:nullable AExternCalls(AExternCalls)> */
+var102 = var96 == var_other;
+var100 = var102;
+goto RET_LABEL101;
+RET_LABEL101:(void)0;
+}
+}
+var98 = var100;
+goto RET_LABEL99;
+RET_LABEL99:(void)0;
+}
+var97 = var98;
+}
+if (var97){
+/* <var_new_child:nullable ANode> isa nullable AExternCalls */
+cltype104 = type_nullable_parser_nodes__AExternCalls.color;
+idtype105 = type_nullable_parser_nodes__AExternCalls.id;
+if(var_new_child == NULL) {
+var103 = 1;
+} else {
+if(cltype104 >= var_new_child->type->table_size) {
+var103 = 0;
 } else {
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2322);
+var103 = var_new_child->type->type_table[cltype104] == idtype105;
+}
+}
+if (unlikely(!var103)) {
+var_class_name106 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AExternCalls", var_class_name106);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1199);
 show_backtrace(1);
 }
+{
+parser_prod__AMethPropdef__n_extern_calls_61d(self, var_new_child); /* Direct call parser_prod#AMethPropdef#n_extern_calls= on <self:AMethPropdef>*/
+}
 goto RET_LABEL;
 } else {
 }
-var42 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AConcreteMethPropdef> */
-if (var42 == NULL) {
-var43 = 0; /* <var_old_child:ANode> cannot be null */
+var107 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
+if (var107 == NULL) {
+var108 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var43 = ((short int (*)(val*, val*))(var42->class->vft[COLOR_kernel__Object___61d_61d]))(var42, var_old_child) /* == on <var42:nullable AAnnotations>*/;
+{ /* Inline kernel#Object#== (var107,var_old_child) on <var107:nullable AExternCodeBlock> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var107,var_other) on <var107:nullable AExternCodeBlock(AExternCodeBlock)> */
+var113 = var107 == var_other;
+var111 = var113;
+goto RET_LABEL112;
+RET_LABEL112:(void)0;
 }
-if (var43){
-var44 = NULL;
-if (var_new_child == NULL) {
-var45 = 0; /* is null */
-} else {
-var45 = 1; /* arg is null and recv is not */
 }
-if (var45){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AAnnotations */
-cltype47 = type_parser_nodes__AAnnotations.color;
-idtype48 = type_parser_nodes__AAnnotations.id;
-if(cltype47 >= var_new_child->type->table_size) {
-var46 = 0;
+var109 = var111;
+goto RET_LABEL110;
+RET_LABEL110:(void)0;
+}
+var108 = var109;
+}
+if (var108){
+/* <var_new_child:nullable ANode> isa nullable AExternCodeBlock */
+cltype115 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype116 = type_nullable_parser_nodes__AExternCodeBlock.id;
+if(var_new_child == NULL) {
+var114 = 1;
 } else {
-var46 = var_new_child->type->type_table[cltype47] == idtype48;
+if(cltype115 >= var_new_child->type->table_size) {
+var114 = 0;
+} else {
+var114 = var_new_child->type->type_table[cltype115] == idtype116;
+}
 }
-if (!var46) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2329);
+if (unlikely(!var114)) {
+var_class_name117 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AExternCodeBlock", var_class_name117);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1203);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:AConcreteMethPropdef> */
-} else {
-var49 = NULL;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var49; /* _n_annotations on <self:AConcreteMethPropdef> */
+{
+parser_prod__AMethPropdef__n_extern_code_block_61d(self, var_new_child); /* Direct call parser_prod#AMethPropdef#n_extern_code_block= on <self:AMethPropdef>*/
 }
 goto RET_LABEL;
 } else {
 }
-var50 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AConcreteMethPropdef> */
-if (var50 == NULL) {
-var51 = 0; /* <var_old_child:ANode> cannot be null */
+var118 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_block].val; /* _n_block on <self:AMethPropdef> */
+if (var118 == NULL) {
+var119 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var51 = ((short int (*)(val*, val*))(var50->class->vft[COLOR_kernel__Object___61d_61d]))(var50, var_old_child) /* == on <var50:nullable AExpr>*/;
+{ /* Inline kernel#Object#== (var118,var_old_child) on <var118:nullable AExpr> */
+var_other = var_old_child;
+{
+{ /* Inline kernel#Object#is_same_instance (var118,var_other) on <var118:nullable AExpr(AExpr)> */
+var124 = var118 == var_other;
+var122 = var124;
+goto RET_LABEL123;
+RET_LABEL123:(void)0;
 }
-if (var51){
-var52 = NULL;
-if (var_new_child == NULL) {
-var53 = 0; /* is null */
-} else {
-var53 = 1; /* arg is null and recv is not */
 }
-if (var53){
-((void (*)(val*, val*))(var_new_child->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_new_child, self) /* parent= on <var_new_child:nullable ANode(ANode)>*/;
-/* <var_new_child:nullable ANode(ANode)> isa AExpr */
-cltype55 = type_parser_nodes__AExpr.color;
-idtype56 = type_parser_nodes__AExpr.id;
-if(cltype55 >= var_new_child->type->table_size) {
-var54 = 0;
+var120 = var122;
+goto RET_LABEL121;
+RET_LABEL121:(void)0;
+}
+var119 = var120;
+}
+if (var119){
+/* <var_new_child:nullable ANode> isa nullable AExpr */
+cltype126 = type_nullable_parser_nodes__AExpr.color;
+idtype127 = type_nullable_parser_nodes__AExpr.id;
+if(var_new_child == NULL) {
+var125 = 1;
+} else {
+if(cltype126 >= var_new_child->type->table_size) {
+var125 = 0;
 } else {
-var54 = var_new_child->type->type_table[cltype55] == idtype56;
+var125 = var_new_child->type->type_table[cltype126] == idtype127;
 }
-if (!var54) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2339);
+}
+if (unlikely(!var125)) {
+var_class_name128 = var_new_child == NULL ? "null" : var_new_child->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable AExpr", var_class_name128);
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1207);
 show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_new_child; /* _n_block on <self:AConcreteMethPropdef> */
-} else {
-var57 = NULL;
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var57; /* _n_block on <self:AConcreteMethPropdef> */
+{
+((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_block_61d]))(self, var_new_child) /* n_block= on <self:AMethPropdef>*/;
 }
 goto RET_LABEL;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AConcreteMethPropdef__replace_child(self, p0, p1);
+/* method parser_prod#AMethPropdef#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AMethPropdef__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AMethPropdef__replace_child(self, p0, p1); /* Direct call parser_prod#AMethPropdef#replace_child on <self:Object(AMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_doc= for (self: AConcreteMethPropdef, nullable ADoc) */
-void parser_prod__AConcreteMethPropdef__n_doc_61d(val* self, val* p0) {
+/* method parser_prod#AMethPropdef#n_doc= for (self: AMethPropdef, nullable ADoc) */
+void parser_prod__AMethPropdef__n_doc_61d(val* self, val* p0) {
 val* var_node /* var node: nullable ADoc */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_node; /* _n_doc on <self:AConcreteMethPropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_node; /* _n_doc on <self:AMethPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable ADoc> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable ADoc(ADoc)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ADoc(ADoc)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable ADoc(ADoc)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable ADoc(ADoc)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_doc= for (self: Object, nullable ADoc) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__n_doc_61d(val* self, val* p0) {
-parser_prod__AConcreteMethPropdef__n_doc_61d(self, p0);
+/* method parser_prod#AMethPropdef#n_doc= for (self: Object, nullable ADoc) */
+void VIRTUAL_parser_prod__AMethPropdef__n_doc_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_doc_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_doc= on <self:Object(AMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_kwredef= for (self: AConcreteMethPropdef, nullable TKwredef) */
-void parser_prod__AConcreteMethPropdef__n_kwredef_61d(val* self, val* p0) {
+/* method parser_prod#AMethPropdef#n_kwredef= for (self: AMethPropdef, nullable TKwredef) */
+void parser_prod__AMethPropdef__n_kwredef_61d(val* self, val* p0) {
 val* var_node /* var node: nullable TKwredef */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AConcreteMethPropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AMethPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TKwredef> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TKwredef(TKwredef)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TKwredef(TKwredef)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TKwredef(TKwredef)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TKwredef(TKwredef)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_kwredef= for (self: Object, nullable TKwredef) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__n_kwredef_61d(val* self, val* p0) {
-parser_prod__AConcreteMethPropdef__n_kwredef_61d(self, p0);
+/* method parser_prod#AMethPropdef#n_kwredef= for (self: Object, nullable TKwredef) */
+void VIRTUAL_parser_prod__AMethPropdef__n_kwredef_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_kwredef_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_kwredef= on <self:Object(AMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_visibility= for (self: AConcreteMethPropdef, nullable AVisibility) */
-void parser_prod__AConcreteMethPropdef__n_visibility_61d(val* self, val* p0) {
+/* method parser_prod#AMethPropdef#n_visibility= for (self: AMethPropdef, nullable AVisibility) */
+void parser_prod__AMethPropdef__n_visibility_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AVisibility */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_node; /* _n_visibility on <self:AConcreteMethPropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val = var_node; /* _n_visibility on <self:AMethPropdef> */
 if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2365);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1225);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AVisibility>*/;
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AVisibility> */
+if (unlikely(var_node == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
+show_backtrace(1);
+}
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AVisibility> */
+RET_LABEL1:(void)0;
+}
 }
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_visibility= for (self: Object, nullable AVisibility) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__n_visibility_61d(val* self, val* p0) {
-parser_prod__AConcreteMethPropdef__n_visibility_61d(self, p0);
+/* method parser_prod#AMethPropdef#n_visibility= for (self: Object, nullable AVisibility) */
+void VIRTUAL_parser_prod__AMethPropdef__n_visibility_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_visibility_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_visibility= on <self:Object(AMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_kwmeth= for (self: AConcreteMethPropdef, nullable TKwmeth) */
-void parser_prod__AConcreteMethPropdef__n_kwmeth_61d(val* self, val* p0) {
+/* method parser_prod#AMethPropdef#n_kwmeth= for (self: AMethPropdef, nullable TKwmeth) */
+void parser_prod__AMethPropdef__n_kwmeth_61d(val* self, val* p0) {
 val* var_node /* var node: nullable TKwmeth */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_kwmeth].val = var_node; /* _n_kwmeth on <self:AConcreteMethPropdef> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwmeth].val = var_node; /* _n_kwmeth on <self:AMethPropdef> */
+var = NULL;
 if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2370);
-show_backtrace(1);
+var1 = 0; /* is null */
 } else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TKwmeth>*/;
+var1 = 1; /* arg is null and recv is not */
 }
-RET_LABEL:;
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TKwmeth> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TKwmeth(TKwmeth)>*/;
+var4 = var5;
 }
-/* method parser_prod#AConcreteMethPropdef#n_kwmeth= for (self: Object, nullable TKwmeth) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__n_kwmeth_61d(val* self, val* p0) {
-parser_prod__AConcreteMethPropdef__n_kwmeth_61d(self, p0);
-RET_LABEL:;
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
-/* method parser_prod#AConcreteMethPropdef#n_methid= for (self: AConcreteMethPropdef, nullable AMethid) */
-void parser_prod__AConcreteMethPropdef__n_methid_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AMethid */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_node; /* _n_methid on <self:AConcreteMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2375);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AMethid>*/;
+var1 = var2;
 }
-RET_LABEL:;
+if (var1){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TKwmeth(TKwmeth)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TKwmeth(TKwmeth)> */
+RET_LABEL7:(void)0;
 }
-/* method parser_prod#AConcreteMethPropdef#n_methid= for (self: Object, nullable AMethid) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__n_methid_61d(val* self, val* p0) {
-parser_prod__AConcreteMethPropdef__n_methid_61d(self, p0);
-RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_signature= for (self: AConcreteMethPropdef, nullable ASignature) */
-void parser_prod__AConcreteMethPropdef__n_signature_61d(val* self, val* p0) {
-val* var_node /* var node: nullable ASignature */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_node; /* _n_signature on <self:AConcreteMethPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2380);
-show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable ASignature>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_signature= for (self: Object, nullable ASignature) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__n_signature_61d(val* self, val* p0) {
-parser_prod__AConcreteMethPropdef__n_signature_61d(self, p0);
+/* method parser_prod#AMethPropdef#n_kwmeth= for (self: Object, nullable TKwmeth) */
+void VIRTUAL_parser_prod__AMethPropdef__n_kwmeth_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_kwmeth_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_kwmeth= on <self:Object(AMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_annotations= for (self: AConcreteMethPropdef, nullable AAnnotations) */
-void parser_prod__AConcreteMethPropdef__n_annotations_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AAnnotations */;
+/* method parser_prod#AMethPropdef#n_kwinit= for (self: AMethPropdef, nullable TKwinit) */
+void parser_prod__AMethPropdef__n_kwinit_61d(val* self, val* p0) {
+val* var_node /* var node: nullable TKwinit */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:AConcreteMethPropdef> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwinit].val = var_node; /* _n_kwinit on <self:AMethPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TKwinit> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TKwinit(TKwinit)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AAnnotations(AAnnotations)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TKwinit(TKwinit)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TKwinit(TKwinit)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_annotations= for (self: Object, nullable AAnnotations) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__n_annotations_61d(val* self, val* p0) {
-parser_prod__AConcreteMethPropdef__n_annotations_61d(self, p0);
+/* method parser_prod#AMethPropdef#n_kwinit= for (self: Object, nullable TKwinit) */
+void VIRTUAL_parser_prod__AMethPropdef__n_kwinit_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_kwinit_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_kwinit= on <self:Object(AMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_block= for (self: AConcreteMethPropdef, nullable AExpr) */
-void parser_prod__AConcreteMethPropdef__n_block_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AExpr */;
+/* method parser_prod#AMethPropdef#n_kwnew= for (self: AMethPropdef, nullable TKwnew) */
+void parser_prod__AMethPropdef__n_kwnew_61d(val* self, val* p0) {
+val* var_node /* var node: nullable TKwnew */;
 val* var /* : null */;
 short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_node; /* _n_block on <self:AConcreteMethPropdef> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwnew].val = var_node; /* _n_kwnew on <self:AMethPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable TKwnew> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable TKwnew(TKwnew)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AExpr(AExpr)>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable TKwnew(TKwnew)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable TKwnew(TKwnew)> */
+RET_LABEL7:(void)0;
+}
+}
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#n_block= for (self: Object, nullable AExpr) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__n_block_61d(val* self, val* p0) {
-parser_prod__AConcreteMethPropdef__n_block_61d(self, p0);
+/* method parser_prod#AMethPropdef#n_kwnew= for (self: Object, nullable TKwnew) */
+void VIRTUAL_parser_prod__AMethPropdef__n_kwnew_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_kwnew_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_kwnew= on <self:Object(AMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#visit_all for (self: AConcreteMethPropdef, Visitor) */
-void parser_prod__AConcreteMethPropdef__visit_all(val* self, val* p0) {
-val* var_v /* var v: Visitor */;
-val* var /* : nullable ADoc */;
-val* var1 /* : null */;
+/* method parser_prod#AMethPropdef#n_methid= for (self: AMethPropdef, nullable AMethid) */
+void parser_prod__AMethPropdef__n_methid_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AMethid */;
+val* var /* : null */;
+short int var1 /* : Bool */;
 short int var2 /* : Bool */;
-val* var3 /* : nullable ADoc */;
-val* var4 /* : nullable TKwredef */;
-val* var5 /* : null */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
 short int var6 /* : Bool */;
-val* var7 /* : nullable TKwredef */;
-val* var8 /* : nullable AVisibility */;
-val* var9 /* : nullable TKwmeth */;
-val* var10 /* : nullable AMethid */;
-val* var11 /* : nullable ASignature */;
-val* var12 /* : nullable AAnnotations */;
-val* var13 /* : null */;
-short int var14 /* : Bool */;
-val* var15 /* : nullable AAnnotations */;
-val* var16 /* : nullable AExpr */;
-val* var17 /* : null */;
-short int var18 /* : Bool */;
-val* var19 /* : nullable AExpr */;
-var_v = p0;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AConcreteMethPropdef> */
-var1 = NULL;
-if (var == NULL) {
-var2 = 0; /* is null */
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_node; /* _n_methid on <self:AMethPropdef> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
 } else {
-var2 = 1; /* arg is null and recv is not */
+var1 = 1; /* arg is null and recv is not */
 }
-if (var2){
-var3 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AConcreteMethPropdef> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2401);
-show_backtrace(1);
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AMethid> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AMethid(AMethid)>*/;
+var4 = var5;
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
-var4 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AConcreteMethPropdef> */
-var5 = NULL;
-if (var4 == NULL) {
-var6 = 0; /* is null */
-} else {
-var6 = 1; /* arg is null and recv is not */
+var1 = var2;
 }
-if (var6){
-var7 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AConcreteMethPropdef> */
-if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2404);
-show_backtrace(1);
+if (var1){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AMethid(AMethid)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AMethid(AMethid)> */
+RET_LABEL7:(void)0;
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
-} else {
 }
-var8 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AConcreteMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
-var9 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_kwmeth].val; /* _n_kwmeth on <self:AConcreteMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var9) /* enter_visit on <var_v:Visitor>*/;
-var10 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AConcreteMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var10) /* enter_visit on <var_v:Visitor>*/;
-var11 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AConcreteMethPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var11) /* enter_visit on <var_v:Visitor>*/;
-var12 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AConcreteMethPropdef> */
-var13 = NULL;
-if (var12 == NULL) {
-var14 = 0; /* is null */
 } else {
-var14 = 1; /* arg is null and recv is not */
 }
-if (var14){
-var15 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AConcreteMethPropdef> */
-if (var15 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2411);
-show_backtrace(1);
+RET_LABEL:;
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var15) /* enter_visit on <var_v:Visitor>*/;
-} else {
+/* method parser_prod#AMethPropdef#n_methid= for (self: Object, nullable AMethid) */
+void VIRTUAL_parser_prod__AMethPropdef__n_methid_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_methid_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_methid= on <self:Object(AMethPropdef)>*/
+RET_LABEL:;
 }
-var16 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AConcreteMethPropdef> */
-var17 = NULL;
-if (var16 == NULL) {
-var18 = 0; /* is null */
+/* method parser_prod#AMethPropdef#n_signature= for (self: AMethPropdef, nullable ASignature) */
+void parser_prod__AMethPropdef__n_signature_61d(val* self, val* p0) {
+val* var_node /* var node: nullable ASignature */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_node; /* _n_signature on <self:AMethPropdef> */
+if (var_node == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_prod.nit", 1250);
+show_backtrace(1);
 } else {
-var18 = 1; /* arg is null and recv is not */
-}
-if (var18){
-var19 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AConcreteMethPropdef> */
-if (var19 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2414);
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable ASignature> */
+if (unlikely(var_node == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var19) /* enter_visit on <var_v:Visitor>*/;
-} else {
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable ASignature> */
+RET_LABEL1:(void)0;
+}
 }
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteMethPropdef#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AConcreteMethPropdef__visit_all(val* self, val* p0) {
-parser_prod__AConcreteMethPropdef__visit_all(self, p0);
+/* method parser_prod#AMethPropdef#n_signature= for (self: Object, nullable ASignature) */
+void VIRTUAL_parser_prod__AMethPropdef__n_signature_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_signature_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_signature= on <self:Object(AMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteInitPropdef#empty_init for (self: AConcreteInitPropdef) */
-void parser_prod__AConcreteInitPropdef__empty_init(val* self) {
+/* method parser_prod#AMethPropdef#n_annotations= for (self: AMethPropdef, nullable AAnnotations) */
+void parser_prod__AMethPropdef__n_annotations_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AAnnotations */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:AMethPropdef> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
+} else {
+var1 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AAnnotations> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AAnnotations(AAnnotations)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AAnnotations(AAnnotations)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AAnnotations(AAnnotations)> */
+RET_LABEL7:(void)0;
+}
+}
+} else {
+}
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteInitPropdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AConcreteInitPropdef__empty_init(val* self) {
-parser_prod__AConcreteInitPropdef__empty_init(self);
+/* method parser_prod#AMethPropdef#n_annotations= for (self: Object, nullable AAnnotations) */
+void VIRTUAL_parser_prod__AMethPropdef__n_annotations_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_annotations_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_annotations= on <self:Object(AMethPropdef)>*/
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteInitPropdef#init_aconcreteinitpropdef for (self: AConcreteInitPropdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwinit, nullable AMethid, nullable ASignature, nullable AAnnotations, nullable AExpr) */
-void parser_prod__AConcreteInitPropdef__init_aconcreteinitpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7) {
-val* var_n_doc /* var n_doc: nullable ADoc */;
-val* var_n_kwredef /* var n_kwredef: nullable TKwredef */;
-val* var_n_visibility /* var n_visibility: nullable AVisibility */;
-val* var_n_kwinit /* var n_kwinit: nullable TKwinit */;
-val* var_n_methid /* var n_methid: nullable AMethid */;
-val* var_n_signature /* var n_signature: nullable ASignature */;
-val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
-val* var_n_block /* var n_block: nullable AExpr */;
+/* method parser_prod#AMethPropdef#n_extern_calls= for (self: AMethPropdef, nullable AExternCalls) */
+void parser_prod__AMethPropdef__n_extern_calls_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AExternCalls */;
 val* var /* : null */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-val* var4 /* : null */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
 short int var5 /* : Bool */;
-val* var6 /* : null */;
-short int var7 /* : Bool */;
-val* var8 /* : null */;
-short int var9 /* : Bool */;
-var_n_doc = p0;
-var_n_kwredef = p1;
-var_n_visibility = p2;
-var_n_kwinit = p3;
-var_n_methid = p4;
-var_n_signature = p5;
-var_n_annotations = p6;
-var_n_block = p7;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AConcreteInitPropdef__empty_init]))(self) /* empty_init on <self:AConcreteInitPropdef>*/;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:AConcreteInitPropdef> */
+short int var6 /* : Bool */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_extern_calls].val = var_node; /* _n_extern_calls on <self:AMethPropdef> */
 var = NULL;
-if (var_n_doc == NULL) {
+if (var_node == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AExternCalls> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AExternCalls(AExternCalls)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
 if (var1){
-((void (*)(val*, val*))(var_n_doc->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_doc, self) /* parent= on <var_n_doc:nullable ADoc(ADoc)>*/;
-} else {
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AExternCalls(AExternCalls)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AExternCalls(AExternCalls)> */
+RET_LABEL7:(void)0;
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AConcreteInitPropdef> */
-var2 = NULL;
-if (var_n_kwredef == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
 }
-if (var3){
-((void (*)(val*, val*))(var_n_kwredef->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwredef, self) /* parent= on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
 } else {
 }
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2441);
-show_backtrace(1);
+RET_LABEL:;
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AConcreteInitPropdef> */
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2442);
-show_backtrace(1);
+/* method parser_prod#AMethPropdef#n_extern_calls= for (self: Object, nullable AExternCalls) */
+void VIRTUAL_parser_prod__AMethPropdef__n_extern_calls_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_extern_calls_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_extern_calls= on <self:Object(AMethPropdef)>*/
+RET_LABEL:;
+}
+/* method parser_prod#AMethPropdef#n_extern_code_block= for (self: AMethPropdef, nullable AExternCodeBlock) */
+void parser_prod__AMethPropdef__n_extern_code_block_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AExternCodeBlock */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_extern_code_block].val = var_node; /* _n_extern_code_block on <self:AMethPropdef> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
 } else {
-((void (*)(val*, val*))(var_n_visibility->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_visibility, self) /* parent= on <var_n_visibility:nullable AVisibility>*/;
+var1 = 1; /* arg is null and recv is not */
 }
-if (var_n_kwinit == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2443);
-show_backtrace(1);
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AExternCodeBlock> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AExternCodeBlock(AExternCodeBlock)>*/;
+var4 = var5;
 }
-self->attrs[COLOR_parser_nodes__AConcreteInitPropdef___n_kwinit].val = var_n_kwinit; /* _n_kwinit on <self:AConcreteInitPropdef> */
-if (var_n_kwinit == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2444);
-show_backtrace(1);
-} else {
-((void (*)(val*, val*))(var_n_kwinit->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwinit, self) /* parent= on <var_n_kwinit:nullable TKwinit>*/;
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_n_methid; /* _n_methid on <self:AConcreteInitPropdef> */
-var4 = NULL;
-if (var_n_methid == NULL) {
-var5 = 0; /* is null */
-} else {
-var5 = 1; /* arg is null and recv is not */
+var1 = var2;
 }
-if (var5){
-((void (*)(val*, val*))(var_n_methid->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_methid, self) /* parent= on <var_n_methid:nullable AMethid(AMethid)>*/;
-} else {
+if (var1){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AExternCodeBlock(AExternCodeBlock)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AExternCodeBlock(AExternCodeBlock)> */
+RET_LABEL7:(void)0;
 }
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2449);
-show_backtrace(1);
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_n_signature; /* _n_signature on <self:AConcreteInitPropdef> */
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2450);
-show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var_n_signature->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_signature, self) /* parent= on <var_n_signature:nullable ASignature>*/;
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:AConcreteInitPropdef> */
-var6 = NULL;
-if (var_n_annotations == NULL) {
-var7 = 0; /* is null */
-} else {
-var7 = 1; /* arg is null and recv is not */
+RET_LABEL:;
 }
-if (var7){
-((void (*)(val*, val*))(var_n_annotations->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_annotations, self) /* parent= on <var_n_annotations:nullable AAnnotations(AAnnotations)>*/;
-} else {
+/* method parser_prod#AMethPropdef#n_extern_code_block= for (self: Object, nullable AExternCodeBlock) */
+void VIRTUAL_parser_prod__AMethPropdef__n_extern_code_block_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_extern_code_block_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_extern_code_block= on <self:Object(AMethPropdef)>*/
+RET_LABEL:;
 }
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_n_block; /* _n_block on <self:AConcreteInitPropdef> */
-var8 = NULL;
-if (var_n_block == NULL) {
-var9 = 0; /* is null */
+/* method parser_prod#AMethPropdef#n_block= for (self: AMethPropdef, nullable AExpr) */
+void parser_prod__AMethPropdef__n_block_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AExpr */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_block].val = var_node; /* _n_block on <self:AMethPropdef> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
 } else {
-var9 = 1; /* arg is null and recv is not */
+var1 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,var) on <var_node:nullable AExpr> */
+var_other = var;
+{
+var5 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable AExpr(AExpr)>*/;
+var4 = var5;
+}
+var6 = !var4;
+var2 = var6;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+var1 = var2;
+}
+if (var1){
+{
+{ /* Inline parser_nodes#ANode#parent= (var_node,self) on <var_node:nullable AExpr(AExpr)> */
+var_node->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_node:nullable AExpr(AExpr)> */
+RET_LABEL7:(void)0;
+}
 }
-if (var9){
-((void (*)(val*, val*))(var_n_block->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_block, self) /* parent= on <var_n_block:nullable AExpr(AExpr)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AConcreteInitPropdef#init_aconcreteinitpropdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwinit, nullable AMethid, nullable ASignature, nullable AAnnotations, nullable AExpr) */
-void VIRTUAL_parser_prod__AConcreteInitPropdef__init_aconcreteinitpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7) {
-parser_prod__AConcreteInitPropdef__init_aconcreteinitpropdef(self, p0, p1, p2, p3, p4, p5, p6, p7);
+/* method parser_prod#AMethPropdef#n_block= for (self: Object, nullable AExpr) */
+void VIRTUAL_parser_prod__AMethPropdef__n_block_61d(val* self, val* p0) {
+parser_prod__AMethPropdef__n_block_61d(self, p0); /* Direct call parser_prod#AMethPropdef#n_block= on <self:Object(AMethPropdef)>*/
 RET_LABEL:;
 }