c_src: update for kill is
[nit.git] / c_src / parser_prod.sep.2.c
index 95544bc..4f88f87 100644 (file)
@@ -1,368 +1,6 @@
 #include "parser_prod.sep.0.h"
-/* method parser_prod#AConcreteInitPropdef#n_methid= for (self: AConcreteInitPropdef, nullable AMethid) */
-void parser_prod__AConcreteInitPropdef__n_methid_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AMethid */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_node; /* _n_methid on <self:AConcreteInitPropdef> */
-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 AMethid(AMethid)>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#AConcreteInitPropdef#n_methid= for (self: Object, nullable AMethid) */
-void VIRTUAL_parser_prod__AConcreteInitPropdef__n_methid_61d(val* self, val* p0) {
-parser_prod__AConcreteInitPropdef__n_methid_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AConcreteInitPropdef#n_signature= for (self: AConcreteInitPropdef, nullable ASignature) */
-void parser_prod__AConcreteInitPropdef__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:AConcreteInitPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 2579);
-exit(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#AConcreteInitPropdef#n_signature= for (self: Object, nullable ASignature) */
-void VIRTUAL_parser_prod__AConcreteInitPropdef__n_signature_61d(val* self, val* p0) {
-parser_prod__AConcreteInitPropdef__n_signature_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AConcreteInitPropdef#n_annotations= for (self: AConcreteInitPropdef, nullable AAnnotations) */
-void parser_prod__AConcreteInitPropdef__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:AConcreteInitPropdef> */
-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#AConcreteInitPropdef#n_annotations= for (self: Object, nullable AAnnotations) */
-void VIRTUAL_parser_prod__AConcreteInitPropdef__n_annotations_61d(val* self, val* p0) {
-parser_prod__AConcreteInitPropdef__n_annotations_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AConcreteInitPropdef#n_block= for (self: AConcreteInitPropdef, nullable AExpr) */
-void parser_prod__AConcreteInitPropdef__n_block_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AExpr */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_node; /* _n_block on <self:AConcreteInitPropdef> */
-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 AExpr(AExpr)>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#AConcreteInitPropdef#n_block= for (self: Object, nullable AExpr) */
-void VIRTUAL_parser_prod__AConcreteInitPropdef__n_block_61d(val* self, val* p0) {
-parser_prod__AConcreteInitPropdef__n_block_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AConcreteInitPropdef#visit_all for (self: AConcreteInitPropdef, Visitor) */
-void parser_prod__AConcreteInitPropdef__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 /* : TKwinit */;
-val* var10 /* : nullable AMethid */;
-val* var11 /* : null */;
-short int var12 /* : Bool */;
-val* var13 /* : nullable AMethid */;
-val* var14 /* : nullable ASignature */;
-val* var15 /* : nullable AAnnotations */;
-val* var16 /* : null */;
-short int var17 /* : Bool */;
-val* var18 /* : nullable AAnnotations */;
-val* var19 /* : nullable AExpr */;
-val* var20 /* : null */;
-short int var21 /* : Bool */;
-val* var22 /* : nullable AExpr */;
-var_v = p0;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AConcreteInitPropdef> */
-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:AConcreteInitPropdef> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2600);
-exit(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:AConcreteInitPropdef> */
-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:AConcreteInitPropdef> */
-if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2603);
-exit(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:AConcreteInitPropdef> */
-((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__AConcreteInitPropdef___n_kwinit].val; /* _n_kwinit on <self:AConcreteInitPropdef> */
-if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwinit", "src/parser/parser_prod.nit", 2606);
-exit(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:AConcreteInitPropdef> */
-var11 = NULL;
-if (var10 == NULL) {
-var12 = 0; /* is null */
-} else {
-var12 = 1; /* arg is null and recv is not */
-}
-if (var12){
-var13 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AConcreteInitPropdef> */
-if (var13 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2608);
-exit(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var13) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AConcreteInitPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var14) /* enter_visit on <var_v:Visitor>*/;
-var15 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AConcreteInitPropdef> */
-var16 = NULL;
-if (var15 == NULL) {
-var17 = 0; /* is null */
-} else {
-var17 = 1; /* arg is null and recv is not */
-}
-if (var17){
-var18 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AConcreteInitPropdef> */
-if (var18 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2612);
-exit(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var18) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-var19 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AConcreteInitPropdef> */
-var20 = NULL;
-if (var19 == NULL) {
-var21 = 0; /* is null */
-} else {
-var21 = 1; /* arg is null and recv is not */
-}
-if (var21){
-var22 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AConcreteInitPropdef> */
-if (var22 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2615);
-exit(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var22) /* enter_visit on <var_v:Visitor>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#AConcreteInitPropdef#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AConcreteInitPropdef__visit_all(val* self, val* p0) {
-parser_prod__AConcreteInitPropdef__visit_all(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#empty_init for (self: AExternInitPropdef) */
-void parser_prod__AExternInitPropdef__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AExternInitPropdef__empty_init(val* self) {
-parser_prod__AExternInitPropdef__empty_init(self);
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#init_aexterninitpropdef for (self: AExternInitPropdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwnew, nullable AMethid, nullable ASignature, nullable TString, nullable AExternCalls, nullable AExternCodeBlock) */
-void parser_prod__AExternInitPropdef__init_aexterninitpropdef(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_kwredef /* var n_kwredef: nullable TKwredef */;
-val* var_n_visibility /* var n_visibility: nullable AVisibility */;
-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_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 /* : 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 */;
-val* var8 /* : null */;
-short int var9 /* : Bool */;
-val* var10 /* : null */;
-short int var11 /* : Bool */;
-var_n_doc = p0;
-var_n_kwredef = p1;
-var_n_visibility = p2;
-var_n_kwnew = 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__AExternInitPropdef__empty_init]))(self) /* empty_init on <self:AExternInitPropdef>*/;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:AExternInitPropdef> */
-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:AExternInitPropdef> */
-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 (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2643);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AExternInitPropdef> */
-if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 2644);
-exit(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_kwnew == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2645);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AExternInitPropdef___n_kwnew].val = var_n_kwnew; /* _n_kwnew on <self:AExternInitPropdef> */
-if (var_n_kwnew == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 2646);
-exit(1);
-} else {
-((void (*)(val*, val*))(var_n_kwnew->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwnew, self) /* parent= on <var_n_kwnew:nullable TKwnew>*/;
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_n_methid; /* _n_methid on <self:AExternInitPropdef> */
-var4 = NULL;
-if (var_n_methid == NULL) {
-var5 = 0; /* is null */
-} else {
-var5 = 1; /* arg is null and recv is not */
-}
-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 (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2651);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_n_signature; /* _n_signature on <self:AExternInitPropdef> */
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 2652);
-exit(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__AExternPropdef___n_extern].val = var_n_extern; /* _n_extern on <self:AExternInitPropdef> */
-var6 = NULL;
-if (var_n_extern == NULL) {
-var7 = 0; /* is null */
-} else {
-var7 = 1; /* arg is null and recv is not */
-}
-if (var7){
-((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:AExternInitPropdef> */
-var8 = NULL;
-if (var_n_extern_calls == NULL) {
-var9 = 0; /* is null */
-} else {
-var9 = 1; /* arg is null and recv is not */
-}
-if (var9){
-((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 {
-}
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val = var_n_extern_code_block; /* _n_extern_code_block on <self:AExternInitPropdef> */
-var10 = NULL;
-if (var_n_extern_code_block == NULL) {
-var11 = 0; /* is null */
-} else {
-var11 = 1; /* arg is null and recv is not */
-}
-if (var11){
-((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#AExternInitPropdef#init_aexterninitpropdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwnew, nullable AMethid, nullable ASignature, nullable TString, nullable AExternCalls, nullable AExternCodeBlock) */
-void VIRTUAL_parser_prod__AExternInitPropdef__init_aexterninitpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7, val* p8) {
-parser_prod__AExternInitPropdef__init_aexterninitpropdef(self, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#replace_child for (self: AExternInitPropdef, ANode, nullable ANode) */
-void parser_prod__AExternInitPropdef__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AConcreteInitPropdef#replace_child for (self: AConcreteInitPropdef, ANode, nullable ANode) */
+void parser_prod__AConcreteInitPropdef__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 */;
@@ -388,7 +26,7 @@ short int var17 /* : Bool */;
 short int var18 /* : Bool */;
 int cltype19;
 int idtype20;
-val* var21 /* : TKwnew */;
+val* var21 /* : TKwinit */;
 short int var22 /* : Bool */;
 val* var23 /* : null */;
 short int var24 /* : Bool */;
@@ -410,7 +48,7 @@ short int var39 /* : Bool */;
 short int var40 /* : Bool */;
 int cltype41;
 int idtype42;
-val* var43 /* : nullable TString */;
+val* var43 /* : nullable AAnnotations */;
 short int var44 /* : Bool */;
 val* var45 /* : null */;
 short int var46 /* : Bool */;
@@ -418,7 +56,7 @@ short int var47 /* : Bool */;
 int cltype48;
 int idtype49;
 val* var50 /* : null */;
-val* var51 /* : nullable AExternCalls */;
+val* var51 /* : nullable AExpr */;
 short int var52 /* : Bool */;
 val* var53 /* : null */;
 short int var54 /* : Bool */;
@@ -426,17 +64,9 @@ short int var55 /* : Bool */;
 int cltype56;
 int idtype57;
 val* var58 /* : null */;
-val* var59 /* : nullable AExternCodeBlock */;
-short int var60 /* : Bool */;
-val* var61 /* : null */;
-short int var62 /* : Bool */;
-short int var63 /* : Bool */;
-int cltype64;
-int idtype65;
-val* var66 /* : null */;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AExternInitPropdef> */
+var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AConcreteInitPropdef> */
 if (var == NULL) {
 var1 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
@@ -445,811 +75,426 @@ var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_6
 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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2672);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_new_child; /* _n_doc on <self:AExternInitPropdef> */
-} else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var5; /* _n_doc on <self:AExternInitPropdef> */
-}
-goto RET_LABEL;
-} else {
-}
-var6 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AExternInitPropdef> */
-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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2682);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AExternInitPropdef> */
-} else {
-var13 = NULL;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var13; /* _n_kwredef on <self:AExternInitPropdef> */
-}
-goto RET_LABEL;
-} else {
-}
-var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AExternInitPropdef> */
-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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2692);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_new_child; /* _n_visibility on <self:AExternInitPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 2695);
-exit(1);
-}
-goto RET_LABEL;
-} else {
-}
-var21 = self->attrs[COLOR_parser_nodes__AExternInitPropdef___n_kwnew].val; /* _n_kwnew on <self:AExternInitPropdef> */
-if (var21 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwnew", "src/parser/parser_prod.nit", 2699);
-exit(1);
-}
-var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_old_child) /* == on <var21:TKwnew>*/;
-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 TKwnew */
-cltype26 = type_parser_nodes__TKwnew.color;
-idtype27 = type_parser_nodes__TKwnew.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2702);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AExternInitPropdef___n_kwnew].val = var_new_child; /* _n_kwnew on <self:AExternInitPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 2705);
-exit(1);
-}
-goto RET_LABEL;
-} else {
-}
-var28 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AExternInitPropdef> */
-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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2712);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_new_child; /* _n_methid on <self:AExternInitPropdef> */
-} else {
-var35 = NULL;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var35; /* _n_methid on <self:AExternInitPropdef> */
-}
-goto RET_LABEL;
-} else {
-}
-var36 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AExternInitPropdef> */
-if (var36 == NULL) {
-var37 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var37 = ((short int (*)(val*, val*))(var36->class->vft[COLOR_kernel__Object___61d_61d]))(var36, var_old_child) /* == on <var36:nullable ASignature>*/;
-}
-if (var37){
-var38 = NULL;
-if (var_new_child == NULL) {
-var39 = 0; /* is null */
-} else {
-var39 = 1; /* arg is null and recv is not */
-}
-if (var39){
-((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 */
-cltype41 = type_parser_nodes__ASignature.color;
-idtype42 = type_parser_nodes__ASignature.id;
-if(cltype41 >= var_new_child->type->table_size) {
-var40 = 0;
-} else {
-var40 = var_new_child->type->type_table[cltype41] == idtype42;
-}
-if (!var40) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2722);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_new_child; /* _n_signature on <self:AExternInitPropdef> */
-} else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 2725);
-exit(1);
-}
-goto RET_LABEL;
-} else {
-}
-var43 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val; /* _n_extern on <self:AExternInitPropdef> */
-if (var43 == NULL) {
-var44 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var44 = ((short int (*)(val*, val*))(var43->class->vft[COLOR_kernel__Object___61d_61d]))(var43, var_old_child) /* == on <var43:nullable TString>*/;
-}
-if (var44){
-var45 = NULL;
-if (var_new_child == NULL) {
-var46 = 0; /* is null */
-} else {
-var46 = 1; /* arg is null and recv is not */
-}
-if (var46){
-((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 */
-cltype48 = type_parser_nodes__TString.color;
-idtype49 = type_parser_nodes__TString.id;
-if(cltype48 >= var_new_child->type->table_size) {
-var47 = 0;
-} else {
-var47 = var_new_child->type->type_table[cltype48] == idtype49;
-}
-if (!var47) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2732);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val = var_new_child; /* _n_extern on <self:AExternInitPropdef> */
-} else {
-var50 = NULL;
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val = var50; /* _n_extern on <self:AExternInitPropdef> */
-}
-goto RET_LABEL;
-} else {
-}
-var51 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val; /* _n_extern_calls on <self:AExternInitPropdef> */
-if (var51 == NULL) {
-var52 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var52 = ((short int (*)(val*, val*))(var51->class->vft[COLOR_kernel__Object___61d_61d]))(var51, var_old_child) /* == on <var51:nullable AExternCalls>*/;
-}
-if (var52){
-var53 = NULL;
-if (var_new_child == NULL) {
-var54 = 0; /* is null */
+var3 = 0; /* is null */
 } else {
-var54 = 1; /* arg is null and recv is not */
+var3 = 1; /* arg is null and recv is not */
 }
-if (var54){
+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 AExternCalls */
-cltype56 = type_parser_nodes__AExternCalls.color;
-idtype57 = type_parser_nodes__AExternCalls.id;
-if(cltype56 >= var_new_child->type->table_size) {
-var55 = 0;
+/* <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 {
-var55 = var_new_child->type->type_table[cltype56] == idtype57;
+var4 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var55) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2742);
+if (!var4) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2466);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val = var_new_child; /* _n_extern_calls on <self:AExternInitPropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_new_child; /* _n_doc on <self:AConcreteInitPropdef> */
 } else {
-var58 = NULL;
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val = var58; /* _n_extern_calls on <self:AExternInitPropdef> */
+var5 = NULL;
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var5; /* _n_doc on <self:AConcreteInitPropdef> */
 }
 goto RET_LABEL;
 } else {
 }
-var59 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AExternInitPropdef> */
-if (var59 == NULL) {
-var60 = 0; /* <var_old_child:ANode> cannot be null */
+var6 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AConcreteInitPropdef> */
+if (var6 == NULL) {
+var7 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var60 = ((short int (*)(val*, val*))(var59->class->vft[COLOR_kernel__Object___61d_61d]))(var59, var_old_child) /* == on <var59:nullable AExternCodeBlock>*/;
+var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:nullable TKwredef>*/;
 }
-if (var60){
-var61 = NULL;
+if (var7){
+var8 = NULL;
 if (var_new_child == NULL) {
-var62 = 0; /* is null */
+var9 = 0; /* is null */
 } else {
-var62 = 1; /* arg is null and recv is not */
+var9 = 1; /* arg is null and recv is not */
 }
-if (var62){
+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 AExternCodeBlock */
-cltype64 = type_parser_nodes__AExternCodeBlock.color;
-idtype65 = type_parser_nodes__AExternCodeBlock.id;
-if(cltype64 >= var_new_child->type->table_size) {
-var63 = 0;
+/* <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 {
-var63 = var_new_child->type->type_table[cltype64] == idtype65;
+var10 = var_new_child->type->type_table[cltype11] == idtype12;
 }
-if (!var63) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2752);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2476);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val = var_new_child; /* _n_extern_code_block on <self:AExternInitPropdef> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AConcreteInitPropdef> */
 } else {
-var66 = NULL;
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val = var66; /* _n_extern_code_block on <self:AExternInitPropdef> */
+var13 = NULL;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var13; /* _n_kwredef on <self:AConcreteInitPropdef> */
 }
 goto RET_LABEL;
 } else {
 }
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AExternInitPropdef__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AExternInitPropdef__replace_child(self, p0, p1);
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_doc= for (self: AExternInitPropdef, nullable ADoc) */
-void parser_prod__AExternInitPropdef__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:AExternInitPropdef> */
-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)>*/;
+var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AConcreteInitPropdef> */
+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>*/;
 }
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_doc= for (self: Object, nullable ADoc) */
-void VIRTUAL_parser_prod__AExternInitPropdef__n_doc_61d(val* self, val* p0) {
-parser_prod__AExternInitPropdef__n_doc_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_kwredef= for (self: AExternInitPropdef, nullable TKwredef) */
-void parser_prod__AExternInitPropdef__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:AExternInitPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
+if (var15){
+var16 = NULL;
+if (var_new_child == NULL) {
+var17 = 0; /* is null */
 } else {
-var1 = 1; /* arg is null and recv is not */
+var17 = 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)>*/;
+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;
 }
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_kwredef= for (self: Object, nullable TKwredef) */
-void VIRTUAL_parser_prod__AExternInitPropdef__n_kwredef_61d(val* self, val* p0) {
-parser_prod__AExternInitPropdef__n_kwredef_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_visibility= for (self: AExternInitPropdef, nullable AVisibility) */
-void parser_prod__AExternInitPropdef__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:AExternInitPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 2778);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2486);
 exit(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#AExternInitPropdef#n_visibility= for (self: Object, nullable AVisibility) */
-void VIRTUAL_parser_prod__AExternInitPropdef__n_visibility_61d(val* self, val* p0) {
-parser_prod__AExternInitPropdef__n_visibility_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_kwnew= for (self: AExternInitPropdef, TKwnew) */
-void parser_prod__AExternInitPropdef__n_kwnew_61d(val* self, val* p0) {
-val* var_node /* var node: TKwnew */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AExternInitPropdef___n_kwnew].val = var_node; /* _n_kwnew on <self:AExternInitPropdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwnew>*/;
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_kwnew= for (self: Object, TKwnew) */
-void VIRTUAL_parser_prod__AExternInitPropdef__n_kwnew_61d(val* self, val* p0) {
-parser_prod__AExternInitPropdef__n_kwnew_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_methid= for (self: AExternInitPropdef, nullable AMethid) */
-void parser_prod__AExternInitPropdef__n_methid_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AMethid */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_node; /* _n_methid on <self:AExternInitPropdef> */
-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 AMethid(AMethid)>*/;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_new_child; /* _n_visibility on <self:AConcreteInitPropdef> */
 } else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_methid= for (self: Object, nullable AMethid) */
-void VIRTUAL_parser_prod__AExternInitPropdef__n_methid_61d(val* self, val* p0) {
-parser_prod__AExternInitPropdef__n_methid_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_signature= for (self: AExternInitPropdef, nullable ASignature) */
-void parser_prod__AExternInitPropdef__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:AExternInitPropdef> */
-if (var_node == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 2795);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2489);
 exit(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#AExternInitPropdef#n_signature= for (self: Object, nullable ASignature) */
-void VIRTUAL_parser_prod__AExternInitPropdef__n_signature_61d(val* self, val* p0) {
-parser_prod__AExternInitPropdef__n_signature_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_extern= for (self: AExternInitPropdef, nullable TString) */
-void parser_prod__AExternInitPropdef__n_extern_61d(val* self, val* p0) {
-val* var_node /* var node: nullable TString */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val = var_node; /* _n_extern on <self:AExternInitPropdef> */
-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 TString(TString)>*/;
+goto RET_LABEL;
 } else {
 }
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_extern= for (self: Object, nullable TString) */
-void VIRTUAL_parser_prod__AExternInitPropdef__n_extern_61d(val* self, val* p0) {
-parser_prod__AExternInitPropdef__n_extern_61d(self, p0);
-RET_LABEL:;
+var21 = self->attrs[COLOR_parser_nodes__AConcreteInitPropdef___n_kwinit].val; /* _n_kwinit on <self:AConcreteInitPropdef> */
+if (var21 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwinit");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2493);
+exit(1);
 }
-/* method parser_prod#AExternInitPropdef#n_extern_calls= for (self: AExternInitPropdef, nullable AExternCalls) */
-void parser_prod__AExternInitPropdef__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:AExternInitPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
+var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_old_child) /* == on <var21:TKwinit>*/;
+if (var22){
+var23 = NULL;
+if (var_new_child == NULL) {
+var24 = 0; /* is null */
 } else {
-var1 = 1; /* arg is null and recv is not */
+var24 = 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 AExternCalls(AExternCalls)>*/;
+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 TKwinit */
+cltype26 = type_parser_nodes__TKwinit.color;
+idtype27 = type_parser_nodes__TKwinit.id;
+if(cltype26 >= var_new_child->type->table_size) {
+var25 = 0;
 } else {
+var25 = var_new_child->type->type_table[cltype26] == idtype27;
 }
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_extern_calls= for (self: Object, nullable AExternCalls) */
-void VIRTUAL_parser_prod__AExternInitPropdef__n_extern_calls_61d(val* self, val* p0) {
-parser_prod__AExternInitPropdef__n_extern_calls_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#n_extern_code_block= for (self: AExternInitPropdef, nullable AExternCodeBlock) */
-void parser_prod__AExternInitPropdef__n_extern_code_block_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AExternCodeBlock */;
-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:AExternInitPropdef> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
+if (!var25) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2496);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__AConcreteInitPropdef___n_kwinit].val = var_new_child; /* _n_kwinit on <self:AConcreteInitPropdef> */
 } else {
-var1 = 1; /* arg is null and recv is not */
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2499);
+exit(1);
 }
-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)>*/;
+goto RET_LABEL;
 } else {
 }
-RET_LABEL:;
+var28 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AConcreteInitPropdef> */
+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>*/;
 }
-/* method parser_prod#AExternInitPropdef#n_extern_code_block= for (self: Object, nullable AExternCodeBlock) */
-void VIRTUAL_parser_prod__AExternInitPropdef__n_extern_code_block_61d(val* self, val* p0) {
-parser_prod__AExternInitPropdef__n_extern_code_block_61d(self, p0);
-RET_LABEL:;
+if (var29){
+var30 = NULL;
+if (var_new_child == NULL) {
+var31 = 0; /* is null */
+} else {
+var31 = 1; /* arg is null and recv is not */
 }
-/* method parser_prod#AExternInitPropdef#visit_all for (self: AExternInitPropdef, Visitor) */
-void parser_prod__AExternInitPropdef__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 /* : TKwnew */;
-val* var10 /* : nullable AMethid */;
-val* var11 /* : null */;
-short int var12 /* : Bool */;
-val* var13 /* : nullable AMethid */;
-val* var14 /* : nullable ASignature */;
-val* var15 /* : nullable TString */;
-val* var16 /* : null */;
-short int var17 /* : Bool */;
-val* var18 /* : nullable TString */;
-val* var19 /* : nullable AExternCalls */;
-val* var20 /* : null */;
-short int var21 /* : Bool */;
-val* var22 /* : nullable AExternCalls */;
-val* var23 /* : nullable AExternCodeBlock */;
-val* var24 /* : null */;
-short int var25 /* : Bool */;
-val* var26 /* : nullable AExternCodeBlock */;
-var_v = p0;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AExternInitPropdef> */
-var1 = NULL;
-if (var == NULL) {
-var2 = 0; /* is null */
+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 {
-var2 = 1; /* arg is null and recv is not */
+var32 = var_new_child->type->type_table[cltype33] == idtype34;
 }
-if (var2){
-var3 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AExternInitPropdef> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2823);
+if (!var32) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2506);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_new_child; /* _n_methid on <self:AConcreteInitPropdef> */
 } else {
+var35 = NULL;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var35; /* _n_methid on <self:AConcreteInitPropdef> */
 }
-var4 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AExternInitPropdef> */
-var5 = NULL;
-if (var4 == NULL) {
-var6 = 0; /* is null */
+goto RET_LABEL;
 } 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:AExternInitPropdef> */
-if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2826);
-exit(1);
+var36 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AConcreteInitPropdef> */
+if (var36 == NULL) {
+var37 = 0; /* <var_old_child:ANode> cannot be null */
+} else {
+var37 = ((short int (*)(val*, val*))(var36->class->vft[COLOR_kernel__Object___61d_61d]))(var36, var_old_child) /* == on <var36:nullable ASignature>*/;
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
+if (var37){
+var38 = NULL;
+if (var_new_child == NULL) {
+var39 = 0; /* is null */
 } else {
+var39 = 1; /* arg is null and recv is not */
 }
-var8 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AExternInitPropdef> */
-((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__AExternInitPropdef___n_kwnew].val; /* _n_kwnew on <self:AExternInitPropdef> */
-if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwnew", "src/parser/parser_prod.nit", 2829);
+if (var39){
+((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 */
+cltype41 = type_parser_nodes__ASignature.color;
+idtype42 = type_parser_nodes__ASignature.id;
+if(cltype41 >= var_new_child->type->table_size) {
+var40 = 0;
+} else {
+var40 = var_new_child->type->type_table[cltype41] == idtype42;
+}
+if (!var40) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2516);
 exit(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:AExternInitPropdef> */
-var11 = NULL;
-if (var10 == NULL) {
-var12 = 0; /* is null */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_new_child; /* _n_signature on <self:AConcreteInitPropdef> */
 } else {
-var12 = 1; /* arg is null and recv is not */
-}
-if (var12){
-var13 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AExternInitPropdef> */
-if (var13 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2831);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2519);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var13) /* enter_visit on <var_v:Visitor>*/;
+goto RET_LABEL;
 } else {
 }
-var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AExternInitPropdef> */
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var14) /* enter_visit on <var_v:Visitor>*/;
-var15 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val; /* _n_extern on <self:AExternInitPropdef> */
-var16 = NULL;
-if (var15 == NULL) {
-var17 = 0; /* is null */
+var43 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AConcreteInitPropdef> */
+if (var43 == NULL) {
+var44 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
-var17 = 1; /* arg is null and recv is not */
+var44 = ((short int (*)(val*, val*))(var43->class->vft[COLOR_kernel__Object___61d_61d]))(var43, var_old_child) /* == on <var43:nullable AAnnotations>*/;
 }
-if (var17){
-var18 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val; /* _n_extern on <self:AExternInitPropdef> */
-if (var18 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2835);
+if (var44){
+var45 = NULL;
+if (var_new_child == NULL) {
+var46 = 0; /* is null */
+} else {
+var46 = 1; /* arg is null and recv is not */
+}
+if (var46){
+((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 */
+cltype48 = type_parser_nodes__AAnnotations.color;
+idtype49 = type_parser_nodes__AAnnotations.id;
+if(cltype48 >= var_new_child->type->table_size) {
+var47 = 0;
+} else {
+var47 = var_new_child->type->type_table[cltype48] == idtype49;
+}
+if (!var47) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2526);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var18) /* enter_visit on <var_v:Visitor>*/;
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:AConcreteInitPropdef> */
 } else {
+var50 = NULL;
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var50; /* _n_annotations on <self:AConcreteInitPropdef> */
 }
-var19 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val; /* _n_extern_calls on <self:AExternInitPropdef> */
-var20 = NULL;
-if (var19 == NULL) {
-var21 = 0; /* is null */
+goto RET_LABEL;
 } else {
-var21 = 1; /* arg is null and recv is not */
 }
-if (var21){
-var22 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val; /* _n_extern_calls on <self:AExternInitPropdef> */
-if (var22 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2838);
-exit(1);
+var51 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AConcreteInitPropdef> */
+if (var51 == NULL) {
+var52 = 0; /* <var_old_child:ANode> cannot be null */
+} else {
+var52 = ((short int (*)(val*, val*))(var51->class->vft[COLOR_kernel__Object___61d_61d]))(var51, var_old_child) /* == on <var51:nullable AExpr>*/;
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var22) /* enter_visit on <var_v:Visitor>*/;
+if (var52){
+var53 = NULL;
+if (var_new_child == NULL) {
+var54 = 0; /* is null */
 } else {
+var54 = 1; /* arg is null and recv is not */
 }
-var23 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AExternInitPropdef> */
-var24 = NULL;
-if (var23 == NULL) {
-var25 = 0; /* is null */
+if (var54){
+((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 */
+cltype56 = type_parser_nodes__AExpr.color;
+idtype57 = type_parser_nodes__AExpr.id;
+if(cltype56 >= var_new_child->type->table_size) {
+var55 = 0;
 } else {
-var25 = 1; /* arg is null and recv is not */
+var55 = var_new_child->type->type_table[cltype56] == idtype57;
 }
-if (var25){
-var26 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AExternInitPropdef> */
-if (var26 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2841);
+if (!var55) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2536);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var26) /* enter_visit on <var_v:Visitor>*/;
+self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_new_child; /* _n_block on <self:AConcreteInitPropdef> */
 } else {
+var58 = NULL;
+self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var58; /* _n_block on <self:AConcreteInitPropdef> */
 }
-RET_LABEL:;
-}
-/* method parser_prod#AExternInitPropdef#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AExternInitPropdef__visit_all(val* self, val* p0) {
-parser_prod__AExternInitPropdef__visit_all(self, p0);
-RET_LABEL:;
+goto RET_LABEL;
+} else {
 }
-/* method parser_prod#AMainMethPropdef#empty_init for (self: AMainMethPropdef) */
-void parser_prod__AMainMethPropdef__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AMainMethPropdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AMainMethPropdef__empty_init(val* self) {
-parser_prod__AMainMethPropdef__empty_init(self);
+/* method parser_prod#AConcreteInitPropdef#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AConcreteInitPropdef__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AConcreteInitPropdef__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* 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_block /* var n_block: nullable AExpr */;
+/* method parser_prod#AConcreteInitPropdef#n_doc= for (self: AConcreteInitPropdef, nullable ADoc) */
+void parser_prod__AConcreteInitPropdef__n_doc_61d(val* self, val* p0) {
+val* var_node /* var node: nullable ADoc */;
 val* var /* : null */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-var_n_kwredef = p0;
-var_n_block = p1;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AMainMethPropdef__empty_init]))(self) /* empty_init on <self:AMainMethPropdef>*/;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AMainMethPropdef> */
+var_node = p0;
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_node; /* _n_doc on <self:AConcreteInitPropdef> */
 var = NULL;
-if (var_n_kwredef == 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_n_kwredef->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwredef, self) /* parent= on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
-} else {
-}
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_n_block; /* _n_block on <self:AMainMethPropdef> */
-var2 = NULL;
-if (var_n_block == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (var3){
-((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)>*/;
+((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#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);
+/* method parser_prod#AConcreteInitPropdef#n_doc= for (self: Object, nullable ADoc) */
+void VIRTUAL_parser_prod__AConcreteInitPropdef__n_doc_61d(val* self, val* p0) {
+parser_prod__AConcreteInitPropdef__n_doc_61d(self, p0);
 RET_LABEL:;
 }
-/* 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 TKwredef */;
+/* method parser_prod#AConcreteInitPropdef#n_kwredef= for (self: AConcreteInitPropdef, nullable TKwredef) */
+void parser_prod__AConcreteInitPropdef__n_kwredef_61d(val* self, val* p0) {
+val* var_node /* var node: nullable TKwredef */;
+val* var /* : null */;
 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 AExpr */;
-short int var7 /* : Bool */;
-val* var8 /* : null */;
-short int var9 /* : Bool */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var13 /* : null */;
-var_old_child = p0;
-var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AMainMethPropdef> */
-if (var == NULL) {
-var1 = 0; /* <var_old_child:ANode> cannot be null */
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AConcreteInitPropdef> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
 } else {
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:nullable TKwredef>*/;
+var1 = 1; /* arg is null and recv is not */
 }
 if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TKwredef(TKwredef)>*/;
 } 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 TKwredef */
-cltype = type_parser_nodes__TKwredef.color;
-idtype = type_parser_nodes__TKwredef.id;
-if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_new_child->type->type_table[cltype] == idtype;
+RET_LABEL:;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2869);
-exit(1);
+/* method parser_prod#AConcreteInitPropdef#n_kwredef= for (self: Object, nullable TKwredef) */
+void VIRTUAL_parser_prod__AConcreteInitPropdef__n_kwredef_61d(val* self, val* p0) {
+parser_prod__AConcreteInitPropdef__n_kwredef_61d(self, p0);
+RET_LABEL:;
 }
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AMainMethPropdef> */
+/* method parser_prod#AConcreteInitPropdef#n_visibility= for (self: AConcreteInitPropdef, nullable AVisibility) */
+void parser_prod__AConcreteInitPropdef__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:AConcreteInitPropdef> */
+if (var_node == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2562);
+exit(1);
 } else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var5; /* _n_kwredef on <self:AMainMethPropdef> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AVisibility>*/;
 }
-goto RET_LABEL;
-} else {
+RET_LABEL:;
 }
-var6 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AMainMethPropdef> */
-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 AExpr>*/;
+/* method parser_prod#AConcreteInitPropdef#n_visibility= for (self: Object, nullable AVisibility) */
+void VIRTUAL_parser_prod__AConcreteInitPropdef__n_visibility_61d(val* self, val* p0) {
+parser_prod__AConcreteInitPropdef__n_visibility_61d(self, p0);
+RET_LABEL:;
 }
-if (var7){
-var8 = NULL;
-if (var_new_child == NULL) {
-var9 = 0; /* is null */
+/* method parser_prod#AConcreteInitPropdef#n_kwinit= for (self: AConcreteInitPropdef, TKwinit) */
+void parser_prod__AConcreteInitPropdef__n_kwinit_61d(val* self, val* p0) {
+val* var_node /* var node: TKwinit */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AConcreteInitPropdef___n_kwinit].val = var_node; /* _n_kwinit on <self:AConcreteInitPropdef> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwinit>*/;
+RET_LABEL:;
+}
+/* method parser_prod#AConcreteInitPropdef#n_kwinit= for (self: Object, TKwinit) */
+void VIRTUAL_parser_prod__AConcreteInitPropdef__n_kwinit_61d(val* self, val* p0) {
+parser_prod__AConcreteInitPropdef__n_kwinit_61d(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AConcreteInitPropdef#n_methid= for (self: AConcreteInitPropdef, nullable AMethid) */
+void parser_prod__AConcreteInitPropdef__n_methid_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AMethid */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_node; /* _n_methid on <self:AConcreteInitPropdef> */
+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 (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 AExpr */
-cltype11 = type_parser_nodes__AExpr.color;
-idtype12 = type_parser_nodes__AExpr.id;
-if(cltype11 >= var_new_child->type->table_size) {
-var10 = 0;
+if (var1){
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AMethid(AMethid)>*/;
 } else {
-var10 = var_new_child->type->type_table[cltype11] == idtype12;
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2879);
-exit(1);
+RET_LABEL:;
 }
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_new_child; /* _n_block on <self:AMainMethPropdef> */
-} else {
-var13 = NULL;
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var13; /* _n_block on <self:AMainMethPropdef> */
+/* method parser_prod#AConcreteInitPropdef#n_methid= for (self: Object, nullable AMethid) */
+void VIRTUAL_parser_prod__AConcreteInitPropdef__n_methid_61d(val* self, val* p0) {
+parser_prod__AConcreteInitPropdef__n_methid_61d(self, p0);
+RET_LABEL:;
 }
-goto RET_LABEL;
+/* method parser_prod#AConcreteInitPropdef#n_signature= for (self: AConcreteInitPropdef, nullable ASignature) */
+void parser_prod__AConcreteInitPropdef__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:AConcreteInitPropdef> */
+if (var_node == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2579);
+exit(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#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);
+/* method parser_prod#AConcreteInitPropdef#n_signature= for (self: Object, nullable ASignature) */
+void VIRTUAL_parser_prod__AConcreteInitPropdef__n_signature_61d(val* self, val* p0) {
+parser_prod__AConcreteInitPropdef__n_signature_61d(self, p0);
 RET_LABEL:;
 }
-/* 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 */;
+/* method parser_prod#AConcreteInitPropdef#n_annotations= for (self: AConcreteInitPropdef, nullable AAnnotations) */
+void parser_prod__AConcreteInitPropdef__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__AMethPropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AMainMethPropdef> */
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:AConcreteInitPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -1257,23 +502,23 @@ var1 = 0; /* is null */
 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)>*/;
+((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#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);
+/* method parser_prod#AConcreteInitPropdef#n_annotations= for (self: Object, nullable AAnnotations) */
+void VIRTUAL_parser_prod__AConcreteInitPropdef__n_annotations_61d(val* self, val* p0) {
+parser_prod__AConcreteInitPropdef__n_annotations_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AMainMethPropdef#n_block= for (self: AMainMethPropdef, nullable AExpr) */
-void parser_prod__AMainMethPropdef__n_block_61d(val* self, val* p0) {
+/* method parser_prod#AConcreteInitPropdef#n_block= for (self: AConcreteInitPropdef, nullable AExpr) */
+void parser_prod__AConcreteInitPropdef__n_block_61d(val* self, val* p0) {
 val* var_node /* var node: nullable AExpr */;
 val* var /* : null */;
 short int var1 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_node; /* _n_block on <self:AMainMethPropdef> */
+self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_node; /* _n_block on <self:AConcreteInitPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -1286,24 +531,39 @@ if (var1){
 }
 RET_LABEL:;
 }
-/* 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);
+/* method parser_prod#AConcreteInitPropdef#n_block= for (self: Object, nullable AExpr) */
+void VIRTUAL_parser_prod__AConcreteInitPropdef__n_block_61d(val* self, val* p0) {
+parser_prod__AConcreteInitPropdef__n_block_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AMainMethPropdef#visit_all for (self: AMainMethPropdef, Visitor) */
-void parser_prod__AMainMethPropdef__visit_all(val* self, val* p0) {
+/* method parser_prod#AConcreteInitPropdef#visit_all for (self: AConcreteInitPropdef, Visitor) */
+void parser_prod__AConcreteInitPropdef__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : nullable TKwredef */;
+val* var /* : nullable ADoc */;
 val* var1 /* : null */;
 short int var2 /* : Bool */;
-val* var3 /* : nullable TKwredef */;
-val* var4 /* : nullable AExpr */;
+val* var3 /* : nullable ADoc */;
+val* var4 /* : nullable TKwredef */;
 val* var5 /* : null */;
 short int var6 /* : Bool */;
-val* var7 /* : nullable AExpr */;
+val* var7 /* : nullable TKwredef */;
+val* var8 /* : nullable AVisibility */;
+val* var9 /* : TKwinit */;
+val* var10 /* : nullable AMethid */;
+val* var11 /* : null */;
+short int var12 /* : Bool */;
+val* var13 /* : nullable AMethid */;
+val* var14 /* : nullable ASignature */;
+val* var15 /* : nullable AAnnotations */;
+val* var16 /* : null */;
+short int var17 /* : Bool */;
+val* var18 /* : nullable AAnnotations */;
+val* var19 /* : nullable AExpr */;
+val* var20 /* : null */;
+short int var21 /* : Bool */;
+val* var22 /* : nullable AExpr */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AMainMethPropdef> */
+var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AConcreteInitPropdef> */
 var1 = NULL;
 if (var == NULL) {
 var2 = 0; /* is null */
@@ -1311,15 +571,16 @@ var2 = 0; /* is null */
 var2 = 1; /* arg is null and recv is not */
 }
 if (var2){
-var3 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AMainMethPropdef> */
+var3 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AConcreteInitPropdef> */
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2907);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2600);
 exit(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__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AMainMethPropdef> */
+var4 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AConcreteInitPropdef> */
 var5 = NULL;
 if (var4 == NULL) {
 var6 = 0; /* is null */
@@ -1327,54 +588,127 @@ var6 = 0; /* is null */
 var6 = 1; /* arg is null and recv is not */
 }
 if (var6){
-var7 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AMainMethPropdef> */
+var7 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AConcreteInitPropdef> */
 if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2910);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2603);
 exit(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:AConcreteInitPropdef> */
+((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__AConcreteInitPropdef___n_kwinit].val; /* _n_kwinit on <self:AConcreteInitPropdef> */
+if (var9 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwinit");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2606);
+exit(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:AConcreteInitPropdef> */
+var11 = NULL;
+if (var10 == NULL) {
+var12 = 0; /* is null */
+} else {
+var12 = 1; /* arg is null and recv is not */
+}
+if (var12){
+var13 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AConcreteInitPropdef> */
+if (var13 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2608);
+exit(1);
+}
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var13) /* enter_visit on <var_v:Visitor>*/;
+} else {
+}
+var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AConcreteInitPropdef> */
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var14) /* enter_visit on <var_v:Visitor>*/;
+var15 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AConcreteInitPropdef> */
+var16 = NULL;
+if (var15 == NULL) {
+var17 = 0; /* is null */
+} else {
+var17 = 1; /* arg is null and recv is not */
+}
+if (var17){
+var18 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AConcreteInitPropdef> */
+if (var18 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2612);
+exit(1);
+}
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var18) /* enter_visit on <var_v:Visitor>*/;
+} else {
+}
+var19 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AConcreteInitPropdef> */
+var20 = NULL;
+if (var19 == NULL) {
+var21 = 0; /* is null */
+} else {
+var21 = 1; /* arg is null and recv is not */
+}
+if (var21){
+var22 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AConcreteInitPropdef> */
+if (var22 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2615);
+exit(1);
+}
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var22) /* enter_visit on <var_v:Visitor>*/;
+} else {
+}
 RET_LABEL:;
 }
-/* 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);
+/* method parser_prod#AConcreteInitPropdef#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AConcreteInitPropdef__visit_all(val* self, val* p0) {
+parser_prod__AConcreteInitPropdef__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ATypePropdef#empty_init for (self: ATypePropdef) */
-void parser_prod__ATypePropdef__empty_init(val* self) {
+/* method parser_prod#AExternInitPropdef#empty_init for (self: AExternInitPropdef) */
+void parser_prod__AExternInitPropdef__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#ATypePropdef#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ATypePropdef__empty_init(val* self) {
-parser_prod__ATypePropdef__empty_init(self);
+/* method parser_prod#AExternInitPropdef#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AExternInitPropdef__empty_init(val* self) {
+parser_prod__AExternInitPropdef__empty_init(self);
 RET_LABEL:;
 }
-/* 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) {
+/* method parser_prod#AExternInitPropdef#init_aexterninitpropdef for (self: AExternInitPropdef, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwnew, nullable AMethid, nullable ASignature, nullable TString, nullable AExternCalls, nullable AExternCodeBlock) */
+void parser_prod__AExternInitPropdef__init_aexterninitpropdef(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_kwredef /* var n_kwredef: nullable TKwredef */;
 val* var_n_visibility /* var n_visibility: nullable AVisibility */;
-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_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_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 /* : 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 */;
+val* var8 /* : null */;
+short int var9 /* : Bool */;
+val* var10 /* : null */;
+short int var11 /* : Bool */;
 var_n_doc = p0;
-var_n_kwredef = p1;
-var_n_visibility = p2;
-var_n_kwtype = p3;
-var_n_id = p4;
-var_n_type = p5;
-var_n_annotations = p6;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ATypePropdef__empty_init]))(self) /* empty_init on <self:ATypePropdef>*/;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:ATypePropdef> */
+var_n_kwredef = p1;
+var_n_visibility = p2;
+var_n_kwnew = 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__AExternInitPropdef__empty_init]))(self) /* empty_init on <self:AExternInitPropdef>*/;
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:AExternInitPropdef> */
 var = NULL;
 if (var_n_doc == NULL) {
 var1 = 0; /* is null */
@@ -1385,7 +719,7 @@ 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__ATypePropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AExternInitPropdef> */
 var2 = NULL;
 if (var_n_kwredef == NULL) {
 var3 = 0; /* is null */
@@ -1397,69 +731,97 @@ if (var3){
 } else {
 }
 if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2936);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2643);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ATypePropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AExternInitPropdef> */
 if (var_n_visibility == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 2937);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2644);
 exit(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_kwtype == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2938);
+if (var_n_kwnew == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2645);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwtype].val = var_n_kwtype; /* _n_kwtype on <self:ATypePropdef> */
-if (var_n_kwtype == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 2939);
+self->attrs[COLOR_parser_nodes__AExternInitPropdef___n_kwnew].val = var_n_kwnew; /* _n_kwnew on <self:AExternInitPropdef> */
+if (var_n_kwnew == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2646);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_kwtype->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwtype, self) /* parent= on <var_n_kwtype:nullable TKwtype>*/;
+((void (*)(val*, val*))(var_n_kwnew->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwnew, self) /* parent= on <var_n_kwnew:nullable TKwnew>*/;
 }
-if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2940);
-exit(1);
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_n_methid; /* _n_methid on <self:AExternInitPropdef> */
+var4 = NULL;
+if (var_n_methid == NULL) {
+var5 = 0; /* is null */
+} else {
+var5 = 1; /* arg is null and recv is not */
 }
-self->attrs[COLOR_parser_nodes__ATypePropdef___n_id].val = var_n_id; /* _n_id on <self:ATypePropdef> */
-if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 2941);
-exit(1);
+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 {
-((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>*/;
 }
-if (var_n_type == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 2942);
+if (var_n_signature == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2651);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ATypePropdef___n_type].val = var_n_type; /* _n_type on <self:ATypePropdef> */
-if (var_n_type == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 2943);
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_n_signature; /* _n_signature on <self:AExternInitPropdef> */
+if (var_n_signature == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2652);
 exit(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>*/;
+((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:ATypePropdef> */
-var4 = NULL;
-if (var_n_annotations == NULL) {
-var5 = 0; /* is null */
+self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val = var_n_extern; /* _n_extern on <self:AExternInitPropdef> */
+var6 = NULL;
+if (var_n_extern == NULL) {
+var7 = 0; /* is null */
 } else {
-var5 = 1; /* arg is null and recv is not */
+var7 = 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)>*/;
+if (var7){
+((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:AExternInitPropdef> */
+var8 = NULL;
+if (var_n_extern_calls == NULL) {
+var9 = 0; /* is null */
+} else {
+var9 = 1; /* arg is null and recv is not */
+}
+if (var9){
+((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 {
+}
+self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val = var_n_extern_code_block; /* _n_extern_code_block on <self:AExternInitPropdef> */
+var10 = NULL;
+if (var_n_extern_code_block == NULL) {
+var11 = 0; /* is null */
+} else {
+var11 = 1; /* arg is null and recv is not */
+}
+if (var11){
+((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#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);
+/* method parser_prod#AExternInitPropdef#init_aexterninitpropdef for (self: Object, nullable ADoc, nullable TKwredef, nullable AVisibility, nullable TKwnew, nullable AMethid, nullable ASignature, nullable TString, nullable AExternCalls, nullable AExternCodeBlock) */
+void VIRTUAL_parser_prod__AExternInitPropdef__init_aexterninitpropdef(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5, val* p6, val* p7, val* p8) {
+parser_prod__AExternInitPropdef__init_aexterninitpropdef(self, p0, p1, p2, p3, p4, p5, p6, p7, p8);
 RET_LABEL:;
 }
-/* method parser_prod#ATypePropdef#replace_child for (self: ATypePropdef, ANode, nullable ANode) */
-void parser_prod__ATypePropdef__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AExternInitPropdef#replace_child for (self: AExternInitPropdef, ANode, nullable ANode) */
+void parser_prod__AExternInitPropdef__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 */;
@@ -1478,45 +840,62 @@ short int var10 /* : Bool */;
 int cltype11;
 int idtype12;
 val* var13 /* : null */;
-val* var14 /* : AVisibility */;
+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 /* : TKwtype */;
+val* var21 /* : TKwnew */;
 short int var22 /* : Bool */;
 val* var23 /* : null */;
 short int var24 /* : Bool */;
 short int var25 /* : Bool */;
 int cltype26;
 int idtype27;
-val* var28 /* : TClassid */;
+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 /* : AType */;
-short int var36 /* : Bool */;
-val* var37 /* : null */;
-short int var38 /* : Bool */;
+val* var35 /* : null */;
+val* var36 /* : nullable ASignature */;
+short int var37 /* : Bool */;
+val* var38 /* : null */;
 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 var40 /* : Bool */;
+int cltype41;
+int idtype42;
+val* var43 /* : nullable TString */;
+short int var44 /* : Bool */;
+val* var45 /* : null */;
 short int var46 /* : Bool */;
-int cltype47;
-int idtype48;
-val* var49 /* : null */;
+short int var47 /* : Bool */;
+int cltype48;
+int idtype49;
+val* var50 /* : null */;
+val* var51 /* : nullable AExternCalls */;
+short int var52 /* : Bool */;
+val* var53 /* : null */;
+short int var54 /* : Bool */;
+short int var55 /* : Bool */;
+int cltype56;
+int idtype57;
+val* var58 /* : null */;
+val* var59 /* : nullable AExternCodeBlock */;
+short int var60 /* : Bool */;
+val* var61 /* : null */;
+short int var62 /* : Bool */;
+short int var63 /* : Bool */;
+int cltype64;
+int idtype65;
+val* var66 /* : null */;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:ATypePropdef> */
+var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AExternInitPropdef> */
 if (var == NULL) {
 var1 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
@@ -1540,18 +919,19 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2955);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2672);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_new_child; /* _n_doc on <self:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_new_child; /* _n_doc on <self:AExternInitPropdef> */
 } else {
 var5 = NULL;
-self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var5; /* _n_doc on <self:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var5; /* _n_doc on <self:AExternInitPropdef> */
 }
 goto RET_LABEL;
 } else {
 }
-var6 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwredef].val; /* _n_kwredef on <self:ATypePropdef> */
+var6 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AExternInitPropdef> */
 if (var6 == NULL) {
 var7 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
@@ -1575,23 +955,24 @@ var10 = 0;
 var10 = var_new_child->type->type_table[cltype11] == idtype12;
 }
 if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2965);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2682);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AExternInitPropdef> */
 } else {
 var13 = NULL;
-self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwredef].val = var13; /* _n_kwredef on <self:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var13; /* _n_kwredef on <self:AExternInitPropdef> */
 }
 goto RET_LABEL;
 } else {
 }
-var14 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_visibility].val; /* _n_visibility on <self:ATypePropdef> */
+var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AExternInitPropdef> */
 if (var14 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_visibility", "src/parser/parser_prod.nit", 2972);
-exit(1);
+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>*/;
 }
-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) {
@@ -1610,171 +991,375 @@ var18 = 0;
 var18 = var_new_child->type->type_table[cltype19] == idtype20;
 }
 if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2975);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2692);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val = var_new_child; /* _n_visibility on <self:AExternInitPropdef> */
+} else {
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2695);
+exit(1);
+}
+goto RET_LABEL;
+} else {
+}
+var21 = self->attrs[COLOR_parser_nodes__AExternInitPropdef___n_kwnew].val; /* _n_kwnew on <self:AExternInitPropdef> */
+if (var21 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwnew");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2699);
+exit(1);
+}
+var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_old_child) /* == on <var21:TKwnew>*/;
+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 TKwnew */
+cltype26 = type_parser_nodes__TKwnew.color;
+idtype27 = type_parser_nodes__TKwnew.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", 2702);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__AExternInitPropdef___n_kwnew].val = var_new_child; /* _n_kwnew on <self:AExternInitPropdef> */
+} else {
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2705);
+exit(1);
+}
+goto RET_LABEL;
+} else {
+}
+var28 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AExternInitPropdef> */
+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", 2712);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_new_child; /* _n_methid on <self:AExternInitPropdef> */
+} else {
+var35 = NULL;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var35; /* _n_methid on <self:AExternInitPropdef> */
+}
+goto RET_LABEL;
+} else {
+}
+var36 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AExternInitPropdef> */
+if (var36 == NULL) {
+var37 = 0; /* <var_old_child:ANode> cannot be null */
+} else {
+var37 = ((short int (*)(val*, val*))(var36->class->vft[COLOR_kernel__Object___61d_61d]))(var36, var_old_child) /* == on <var36:nullable ASignature>*/;
+}
+if (var37){
+var38 = NULL;
+if (var_new_child == NULL) {
+var39 = 0; /* is null */
+} else {
+var39 = 1; /* arg is null and recv is not */
+}
+if (var39){
+((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 */
+cltype41 = type_parser_nodes__ASignature.color;
+idtype42 = type_parser_nodes__ASignature.id;
+if(cltype41 >= var_new_child->type->table_size) {
+var40 = 0;
+} else {
+var40 = var_new_child->type->type_table[cltype41] == idtype42;
+}
+if (!var40) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2722);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ATypePropdef___n_visibility].val = var_new_child; /* _n_visibility on <self:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val = var_new_child; /* _n_signature on <self:AExternInitPropdef> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 2978);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2725);
 exit(1);
 }
 goto RET_LABEL;
 } else {
 }
-var21 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwtype].val; /* _n_kwtype on <self:ATypePropdef> */
-if (var21 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwtype", "src/parser/parser_prod.nit", 2982);
-exit(1);
+var43 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val; /* _n_extern on <self:AExternInitPropdef> */
+if (var43 == NULL) {
+var44 = 0; /* <var_old_child:ANode> cannot be null */
+} else {
+var44 = ((short int (*)(val*, val*))(var43->class->vft[COLOR_kernel__Object___61d_61d]))(var43, var_old_child) /* == on <var43:nullable TString>*/;
 }
-var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_old_child) /* == on <var21:TKwtype>*/;
-if (var22){
-var23 = NULL;
+if (var44){
+var45 = NULL;
 if (var_new_child == NULL) {
-var24 = 0; /* is null */
+var46 = 0; /* is null */
 } else {
-var24 = 1; /* arg is null and recv is not */
+var46 = 1; /* arg is null and recv is not */
 }
-if (var24){
+if (var46){
 ((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 TKwtype */
-cltype26 = type_parser_nodes__TKwtype.color;
-idtype27 = type_parser_nodes__TKwtype.id;
-if(cltype26 >= var_new_child->type->table_size) {
-var25 = 0;
+/* <var_new_child:nullable ANode(ANode)> isa TString */
+cltype48 = type_parser_nodes__TString.color;
+idtype49 = type_parser_nodes__TString.id;
+if(cltype48 >= var_new_child->type->table_size) {
+var47 = 0;
 } else {
-var25 = var_new_child->type->type_table[cltype26] == idtype27;
+var47 = var_new_child->type->type_table[cltype48] == idtype49;
 }
-if (!var25) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2985);
+if (!var47) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2732);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwtype].val = var_new_child; /* _n_kwtype on <self:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val = var_new_child; /* _n_extern on <self:AExternInitPropdef> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 2988);
-exit(1);
+var50 = NULL;
+self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val = var50; /* _n_extern on <self:AExternInitPropdef> */
 }
 goto RET_LABEL;
 } else {
 }
-var28 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_id].val; /* _n_id on <self:ATypePropdef> */
-if (var28 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 2992);
-exit(1);
+var51 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val; /* _n_extern_calls on <self:AExternInitPropdef> */
+if (var51 == NULL) {
+var52 = 0; /* <var_old_child:ANode> cannot be null */
+} else {
+var52 = ((short int (*)(val*, val*))(var51->class->vft[COLOR_kernel__Object___61d_61d]))(var51, var_old_child) /* == on <var51:nullable AExternCalls>*/;
 }
-var29 = ((short int (*)(val*, val*))(var28->class->vft[COLOR_kernel__Object___61d_61d]))(var28, var_old_child) /* == on <var28:TClassid>*/;
-if (var29){
-var30 = NULL;
+if (var52){
+var53 = NULL;
 if (var_new_child == NULL) {
-var31 = 0; /* is null */
+var54 = 0; /* is null */
 } else {
-var31 = 1; /* arg is null and recv is not */
+var54 = 1; /* arg is null and recv is not */
 }
-if (var31){
+if (var54){
 ((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;
+/* <var_new_child:nullable ANode(ANode)> isa AExternCalls */
+cltype56 = type_parser_nodes__AExternCalls.color;
+idtype57 = type_parser_nodes__AExternCalls.id;
+if(cltype56 >= var_new_child->type->table_size) {
+var55 = 0;
 } else {
-var32 = var_new_child->type->type_table[cltype33] == idtype34;
+var55 = var_new_child->type->type_table[cltype56] == idtype57;
 }
-if (!var32) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 2995);
+if (!var55) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2742);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ATypePropdef___n_id].val = var_new_child; /* _n_id on <self:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val = var_new_child; /* _n_extern_calls on <self:AExternInitPropdef> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 2998);
-exit(1);
+var58 = NULL;
+self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val = var58; /* _n_extern_calls on <self:AExternInitPropdef> */
 }
 goto RET_LABEL;
 } else {
 }
-var35 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_type].val; /* _n_type on <self:ATypePropdef> */
-if (var35 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_type", "src/parser/parser_prod.nit", 3002);
-exit(1);
+var59 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AExternInitPropdef> */
+if (var59 == NULL) {
+var60 = 0; /* <var_old_child:ANode> cannot be null */
+} else {
+var60 = ((short int (*)(val*, val*))(var59->class->vft[COLOR_kernel__Object___61d_61d]))(var59, var_old_child) /* == on <var59:nullable AExternCodeBlock>*/;
 }
-var36 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___61d_61d]))(var35, var_old_child) /* == on <var35:AType>*/;
-if (var36){
-var37 = NULL;
+if (var60){
+var61 = NULL;
 if (var_new_child == NULL) {
-var38 = 0; /* is null */
+var62 = 0; /* is null */
 } else {
-var38 = 1; /* arg is null and recv is not */
+var62 = 1; /* arg is null and recv is not */
 }
-if (var38){
+if (var62){
 ((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 */
-cltype40 = type_parser_nodes__AType.color;
-idtype41 = type_parser_nodes__AType.id;
-if(cltype40 >= var_new_child->type->table_size) {
-var39 = 0;
+/* <var_new_child:nullable ANode(ANode)> isa AExternCodeBlock */
+cltype64 = type_parser_nodes__AExternCodeBlock.color;
+idtype65 = type_parser_nodes__AExternCodeBlock.id;
+if(cltype64 >= var_new_child->type->table_size) {
+var63 = 0;
 } else {
-var39 = var_new_child->type->type_table[cltype40] == idtype41;
+var63 = var_new_child->type->type_table[cltype64] == idtype65;
 }
-if (!var39) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3005);
+if (!var63) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2752);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ATypePropdef___n_type].val = var_new_child; /* _n_type on <self:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val = var_new_child; /* _n_extern_code_block on <self:AExternInitPropdef> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3008);
-exit(1);
+var66 = NULL;
+self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val = var66; /* _n_extern_code_block on <self:AExternInitPropdef> */
 }
 goto RET_LABEL;
 } else {
 }
-var42 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ATypePropdef> */
-if (var42 == NULL) {
-var43 = 0; /* <var_old_child:ANode> cannot be null */
+RET_LABEL:;
+}
+/* method parser_prod#AExternInitPropdef#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AExternInitPropdef__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AExternInitPropdef__replace_child(self, p0, p1);
+RET_LABEL:;
+}
+/* method parser_prod#AExternInitPropdef#n_doc= for (self: AExternInitPropdef, nullable ADoc) */
+void parser_prod__AExternInitPropdef__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:AExternInitPropdef> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
 } else {
-var43 = ((short int (*)(val*, val*))(var42->class->vft[COLOR_kernel__Object___61d_61d]))(var42, var_old_child) /* == on <var42:nullable AAnnotations>*/;
+var1 = 1; /* arg is null and recv is not */
 }
-if (var43){
-var44 = NULL;
-if (var_new_child == NULL) {
-var45 = 0; /* is null */
+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 {
-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;
+RET_LABEL:;
+}
+/* method parser_prod#AExternInitPropdef#n_doc= for (self: Object, nullable ADoc) */
+void VIRTUAL_parser_prod__AExternInitPropdef__n_doc_61d(val* self, val* p0) {
+parser_prod__AExternInitPropdef__n_doc_61d(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AExternInitPropdef#n_kwredef= for (self: AExternInitPropdef, nullable TKwredef) */
+void parser_prod__AExternInitPropdef__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:AExternInitPropdef> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
 } else {
-var46 = var_new_child->type->type_table[cltype47] == idtype48;
+var1 = 1; /* arg is null and recv is not */
 }
-if (!var46) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3015);
+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#AExternInitPropdef#n_kwredef= for (self: Object, nullable TKwredef) */
+void VIRTUAL_parser_prod__AExternInitPropdef__n_kwredef_61d(val* self, val* p0) {
+parser_prod__AExternInitPropdef__n_kwredef_61d(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AExternInitPropdef#n_visibility= for (self: AExternInitPropdef, nullable AVisibility) */
+void parser_prod__AExternInitPropdef__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:AExternInitPropdef> */
+if (var_node == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2778);
 exit(1);
+} else {
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AVisibility>*/;
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:ATypePropdef> */
+RET_LABEL:;
+}
+/* method parser_prod#AExternInitPropdef#n_visibility= for (self: Object, nullable AVisibility) */
+void VIRTUAL_parser_prod__AExternInitPropdef__n_visibility_61d(val* self, val* p0) {
+parser_prod__AExternInitPropdef__n_visibility_61d(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AExternInitPropdef#n_kwnew= for (self: AExternInitPropdef, TKwnew) */
+void parser_prod__AExternInitPropdef__n_kwnew_61d(val* self, val* p0) {
+val* var_node /* var node: TKwnew */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AExternInitPropdef___n_kwnew].val = var_node; /* _n_kwnew on <self:AExternInitPropdef> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwnew>*/;
+RET_LABEL:;
+}
+/* method parser_prod#AExternInitPropdef#n_kwnew= for (self: Object, TKwnew) */
+void VIRTUAL_parser_prod__AExternInitPropdef__n_kwnew_61d(val* self, val* p0) {
+parser_prod__AExternInitPropdef__n_kwnew_61d(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AExternInitPropdef#n_methid= for (self: AExternInitPropdef, nullable AMethid) */
+void parser_prod__AExternInitPropdef__n_methid_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AMethid */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val = var_node; /* _n_methid on <self:AExternInitPropdef> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
 } else {
-var49 = NULL;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var49; /* _n_annotations on <self:ATypePropdef> */
+var1 = 1; /* arg is null and recv is not */
 }
-goto RET_LABEL;
+if (var1){
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AMethid(AMethid)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* 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);
+/* method parser_prod#AExternInitPropdef#n_methid= for (self: Object, nullable AMethid) */
+void VIRTUAL_parser_prod__AExternInitPropdef__n_methid_61d(val* self, val* p0) {
+parser_prod__AExternInitPropdef__n_methid_61d(self, p0);
 RET_LABEL:;
 }
-/* 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 */;
+/* method parser_prod#AExternInitPropdef#n_signature= for (self: AExternInitPropdef, nullable ASignature) */
+void parser_prod__AExternInitPropdef__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:AExternInitPropdef> */
+if (var_node == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2795);
+exit(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#AExternInitPropdef#n_signature= for (self: Object, nullable ASignature) */
+void VIRTUAL_parser_prod__AExternInitPropdef__n_signature_61d(val* self, val* p0) {
+parser_prod__AExternInitPropdef__n_signature_61d(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AExternInitPropdef#n_extern= for (self: AExternInitPropdef, nullable TString) */
+void parser_prod__AExternInitPropdef__n_extern_61d(val* self, val* p0) {
+val* var_node /* var node: nullable TString */;
 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:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val = var_node; /* _n_extern on <self:AExternInitPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -1782,23 +1367,23 @@ var1 = 0; /* is null */
 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)>*/;
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TString(TString)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* 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);
+/* method parser_prod#AExternInitPropdef#n_extern= for (self: Object, nullable TString) */
+void VIRTUAL_parser_prod__AExternInitPropdef__n_extern_61d(val* self, val* p0) {
+parser_prod__AExternInitPropdef__n_extern_61d(self, p0);
 RET_LABEL:;
 }
-/* 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 */;
+/* method parser_prod#AExternInitPropdef#n_extern_calls= for (self: AExternInitPropdef, nullable AExternCalls) */
+void parser_prod__AExternInitPropdef__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__ATypePropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val = var_node; /* _n_extern_calls on <self:AExternInitPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -1806,75 +1391,23 @@ var1 = 0; /* is null */
 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)>*/;
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AExternCalls(AExternCalls)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* 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);
-RET_LABEL:;
-}
-/* method parser_prod#ATypePropdef#n_visibility= for (self: ATypePropdef, AVisibility) */
-void parser_prod__ATypePropdef__n_visibility_61d(val* self, val* p0) {
-val* var_node /* var node: AVisibility */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__ATypePropdef___n_visibility].val = var_node; /* _n_visibility on <self:ATypePropdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AVisibility>*/;
-RET_LABEL:;
-}
-/* method parser_prod#ATypePropdef#n_visibility= for (self: Object, AVisibility) */
-void VIRTUAL_parser_prod__ATypePropdef__n_visibility_61d(val* self, val* p0) {
-parser_prod__ATypePropdef__n_visibility_61d(self, p0);
-RET_LABEL:;
-}
-/* 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__ATypePropdef___n_kwtype].val = var_node; /* _n_kwtype on <self:ATypePropdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwtype>*/;
-RET_LABEL:;
-}
-/* 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);
-RET_LABEL:;
-}
-/* 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__ATypePropdef___n_id].val = var_node; /* _n_id on <self:ATypePropdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TClassid>*/;
-RET_LABEL:;
-}
-/* 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);
-RET_LABEL:;
-}
-/* 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__ATypePropdef___n_type].val = var_node; /* _n_type on <self:ATypePropdef> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AType>*/;
-RET_LABEL:;
-}
-/* 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);
+/* method parser_prod#AExternInitPropdef#n_extern_calls= for (self: Object, nullable AExternCalls) */
+void VIRTUAL_parser_prod__AExternInitPropdef__n_extern_calls_61d(val* self, val* p0) {
+parser_prod__AExternInitPropdef__n_extern_calls_61d(self, p0);
 RET_LABEL:;
 }
-/* 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 */;
+/* method parser_prod#AExternInitPropdef#n_extern_code_block= for (self: AExternInitPropdef, nullable AExternCodeBlock) */
+void parser_prod__AExternInitPropdef__n_extern_code_block_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AExternCodeBlock */;
 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:ATypePropdef> */
+self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val = var_node; /* _n_extern_code_block on <self:AExternInitPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -1882,18 +1415,18 @@ var1 = 0; /* is null */
 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)>*/;
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AExternCodeBlock(AExternCodeBlock)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* 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);
+/* method parser_prod#AExternInitPropdef#n_extern_code_block= for (self: Object, nullable AExternCodeBlock) */
+void VIRTUAL_parser_prod__AExternInitPropdef__n_extern_code_block_61d(val* self, val* p0) {
+parser_prod__AExternInitPropdef__n_extern_code_block_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ATypePropdef#visit_all for (self: ATypePropdef, Visitor) */
-void parser_prod__ATypePropdef__visit_all(val* self, val* p0) {
+/* method parser_prod#AExternInitPropdef#visit_all for (self: AExternInitPropdef, Visitor) */
+void parser_prod__AExternInitPropdef__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
 val* var /* : nullable ADoc */;
 val* var1 /* : null */;
@@ -1903,16 +1436,27 @@ val* var4 /* : nullable TKwredef */;
 val* var5 /* : null */;
 short int var6 /* : Bool */;
 val* var7 /* : nullable TKwredef */;
-val* var8 /* : AVisibility */;
-val* var9 /* : TKwtype */;
-val* var10 /* : TClassid */;
-val* var11 /* : AType */;
-val* var12 /* : nullable AAnnotations */;
-val* var13 /* : null */;
-short int var14 /* : Bool */;
-val* var15 /* : nullable AAnnotations */;
+val* var8 /* : nullable AVisibility */;
+val* var9 /* : TKwnew */;
+val* var10 /* : nullable AMethid */;
+val* var11 /* : null */;
+short int var12 /* : Bool */;
+val* var13 /* : nullable AMethid */;
+val* var14 /* : nullable ASignature */;
+val* var15 /* : nullable TString */;
+val* var16 /* : null */;
+short int var17 /* : Bool */;
+val* var18 /* : nullable TString */;
+val* var19 /* : nullable AExternCalls */;
+val* var20 /* : null */;
+short int var21 /* : Bool */;
+val* var22 /* : nullable AExternCalls */;
+val* var23 /* : nullable AExternCodeBlock */;
+val* var24 /* : null */;
+short int var25 /* : Bool */;
+val* var26 /* : nullable AExternCodeBlock */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:ATypePropdef> */
+var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AExternInitPropdef> */
 var1 = NULL;
 if (var == NULL) {
 var2 = 0; /* is null */
@@ -1920,15 +1464,16 @@ var2 = 0; /* is null */
 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:ATypePropdef> */
+var3 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AExternInitPropdef> */
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3070);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2823);
 exit(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__ATypePropdef___n_kwredef].val; /* _n_kwredef on <self:ATypePropdef> */
+var4 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AExternInitPropdef> */
 var5 = NULL;
 if (var4 == NULL) {
 var6 = 0; /* is null */
@@ -1936,80 +1481,122 @@ var6 = 0; /* is null */
 var6 = 1; /* arg is null and recv is not */
 }
 if (var6){
-var7 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwredef].val; /* _n_kwredef on <self:ATypePropdef> */
+var7 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AExternInitPropdef> */
 if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3073);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2826);
 exit(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__ATypePropdef___n_visibility].val; /* _n_visibility on <self:ATypePropdef> */
-if (var8 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_visibility", "src/parser/parser_prod.nit", 3075);
-exit(1);
-}
+var8 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_visibility].val; /* _n_visibility on <self:AExternInitPropdef> */
 ((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__ATypePropdef___n_kwtype].val; /* _n_kwtype on <self:ATypePropdef> */
+var9 = self->attrs[COLOR_parser_nodes__AExternInitPropdef___n_kwnew].val; /* _n_kwnew on <self:AExternInitPropdef> */
 if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwtype", "src/parser/parser_prod.nit", 3076);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwnew");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2829);
 exit(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__ATypePropdef___n_id].val; /* _n_id on <self:ATypePropdef> */
+var10 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AExternInitPropdef> */
+var11 = NULL;
 if (var10 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 3077);
-exit(1);
+var12 = 0; /* is null */
+} else {
+var12 = 1; /* arg is null and recv is not */
 }
-((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__ATypePropdef___n_type].val; /* _n_type on <self:ATypePropdef> */
-if (var11 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_type", "src/parser/parser_prod.nit", 3078);
+if (var12){
+var13 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AExternInitPropdef> */
+if (var13 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2831);
 exit(1);
 }
-((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:ATypePropdef> */
-var13 = NULL;
-if (var12 == NULL) {
-var14 = 0; /* is null */
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var13) /* enter_visit on <var_v:Visitor>*/;
 } 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:ATypePropdef> */
+var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AExternInitPropdef> */
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var14) /* enter_visit on <var_v:Visitor>*/;
+var15 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val; /* _n_extern on <self:AExternInitPropdef> */
+var16 = NULL;
 if (var15 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3080);
+var17 = 0; /* is null */
+} else {
+var17 = 1; /* arg is null and recv is not */
+}
+if (var17){
+var18 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern].val; /* _n_extern on <self:AExternInitPropdef> */
+if (var18 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2835);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var15) /* enter_visit on <var_v:Visitor>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var18) /* enter_visit on <var_v:Visitor>*/;
+} else {
+}
+var19 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val; /* _n_extern_calls on <self:AExternInitPropdef> */
+var20 = NULL;
+if (var19 == NULL) {
+var21 = 0; /* is null */
+} else {
+var21 = 1; /* arg is null and recv is not */
+}
+if (var21){
+var22 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_calls].val; /* _n_extern_calls on <self:AExternInitPropdef> */
+if (var22 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2838);
+exit(1);
+}
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var22) /* enter_visit on <var_v:Visitor>*/;
+} else {
+}
+var23 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AExternInitPropdef> */
+var24 = NULL;
+if (var23 == NULL) {
+var25 = 0; /* is null */
+} else {
+var25 = 1; /* arg is null and recv is not */
+}
+if (var25){
+var26 = self->attrs[COLOR_parser_nodes__AExternPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AExternInitPropdef> */
+if (var26 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2841);
+exit(1);
+}
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var26) /* enter_visit on <var_v:Visitor>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* 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);
+/* method parser_prod#AExternInitPropdef#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AExternInitPropdef__visit_all(val* self, val* p0) {
+parser_prod__AExternInitPropdef__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#empty_init for (self: AReadAble) */
-void parser_prod__AReadAble__empty_init(val* self) {
+/* method parser_prod#AMainMethPropdef#empty_init for (self: AMainMethPropdef) */
+void parser_prod__AMainMethPropdef__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AReadAble__empty_init(val* self) {
-parser_prod__AReadAble__empty_init(self);
+/* method parser_prod#AMainMethPropdef#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AMainMethPropdef__empty_init(val* self) {
+parser_prod__AMainMethPropdef__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#init_areadable for (self: AReadAble, nullable TKwredef, nullable TKwreadable) */
-void parser_prod__AReadAble__init_areadable(val* self, val* p0, val* p1) {
+/* 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_kwreadable /* var n_kwreadable: nullable TKwreadable */;
+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_kwredef = p0;
-var_n_kwreadable = p1;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AReadAble__empty_init]))(self) /* empty_init on <self:AReadAble>*/;
-self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AReadAble> */
+var_n_block = p1;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AMainMethPropdef__empty_init]))(self) /* empty_init on <self:AMainMethPropdef>*/;
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AMainMethPropdef> */
 var = NULL;
 if (var_n_kwredef == NULL) {
 var1 = 0; /* is null */
@@ -2020,26 +1607,26 @@ if (var1){
 ((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_kwreadable == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3097);
-exit(1);
+self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_n_block; /* _n_block on <self:AMainMethPropdef> */
+var2 = NULL;
+if (var_n_block == NULL) {
+var3 = 0; /* is null */
+} else {
+var3 = 1; /* arg is null and recv is not */
 }
-self->attrs[COLOR_parser_nodes__AReadAble___n_kwreadable].val = var_n_kwreadable; /* _n_kwreadable on <self:AReadAble> */
-if (var_n_kwreadable == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3098);
-exit(1);
+if (var3){
+((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 {
-((void (*)(val*, val*))(var_n_kwreadable->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwreadable, self) /* parent= on <var_n_kwreadable:nullable TKwreadable>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#init_areadable for (self: Object, nullable TKwredef, nullable TKwreadable) */
-void VIRTUAL_parser_prod__AReadAble__init_areadable(val* self, val* p0, val* p1) {
-parser_prod__AReadAble__init_areadable(self, p0, p1);
+/* 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);
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#replace_child for (self: AReadAble, ANode, nullable ANode) */
-void parser_prod__AReadAble__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 TKwredef */;
@@ -2050,16 +1637,17 @@ short int var4 /* : Bool */;
 int cltype;
 int idtype;
 val* var5 /* : null */;
-val* var6 /* : TKwreadable */;
+val* var6 /* : nullable AExpr */;
 short int var7 /* : Bool */;
 val* var8 /* : null */;
 short int var9 /* : Bool */;
 short int var10 /* : Bool */;
 int cltype11;
 int idtype12;
+val* var13 /* : null */;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val; /* _n_kwredef on <self:AReadAble> */
+var = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AMainMethPropdef> */
 if (var == NULL) {
 var1 = 0; /* <var_old_child:ANode> cannot be null */
 } else {
@@ -2083,23 +1671,24 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3106);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2869);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AReadAble> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AMainMethPropdef> */
 } else {
 var5 = NULL;
-self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var5; /* _n_kwredef on <self:AReadAble> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var5; /* _n_kwredef on <self:AMainMethPropdef> */
 }
 goto RET_LABEL;
 } else {
 }
-var6 = self->attrs[COLOR_parser_nodes__AReadAble___n_kwreadable].val; /* _n_kwreadable on <self:AReadAble> */
+var6 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AMainMethPropdef> */
 if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwreadable", "src/parser/parser_prod.nit", 3113);
-exit(1);
+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 AExpr>*/;
 }
-var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:TKwreadable>*/;
 if (var7){
 var8 = NULL;
 if (var_new_child == NULL) {
@@ -2109,40 +1698,41 @@ 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 TKwreadable */
-cltype11 = type_parser_nodes__TKwreadable.color;
-idtype12 = type_parser_nodes__TKwreadable.id;
+/* <var_new_child:nullable ANode(ANode)> isa AExpr */
+cltype11 = type_parser_nodes__AExpr.color;
+idtype12 = type_parser_nodes__AExpr.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3116);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2879);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AReadAble___n_kwreadable].val = var_new_child; /* _n_kwreadable on <self:AReadAble> */
+self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var_new_child; /* _n_block on <self:AMainMethPropdef> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3119);
-exit(1);
+var13 = NULL;
+self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val = var13; /* _n_block on <self:AMainMethPropdef> */
 }
 goto RET_LABEL;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AReadAble__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AReadAble__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);
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#n_kwredef= for (self: AReadAble, nullable TKwredef) */
-void parser_prod__AReadAble__n_kwredef_61d(val* self, val* p0) {
+/* 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 */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var_node; /* _n_kwredef on <self:AReadAble> */
+self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:AMainMethPropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -2155,34 +1745,48 @@ if (var1){
 }
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#n_kwredef= for (self: Object, nullable TKwredef) */
-void VIRTUAL_parser_prod__AReadAble__n_kwredef_61d(val* self, val* p0) {
-parser_prod__AReadAble__n_kwredef_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);
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#n_kwreadable= for (self: AReadAble, TKwreadable) */
-void parser_prod__AReadAble__n_kwreadable_61d(val* self, val* p0) {
-val* var_node /* var node: TKwreadable */;
+/* 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 */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AReadAble___n_kwreadable].val = var_node; /* _n_kwreadable on <self:AReadAble> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwreadable>*/;
+self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___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 AExpr(AExpr)>*/;
+} else {
+}
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#n_kwreadable= for (self: Object, TKwreadable) */
-void VIRTUAL_parser_prod__AReadAble__n_kwreadable_61d(val* self, val* p0) {
-parser_prod__AReadAble__n_kwreadable_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);
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#visit_all for (self: AReadAble, Visitor) */
-void parser_prod__AReadAble__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 TKwredef */;
 val* var1 /* : null */;
 short int var2 /* : Bool */;
 val* var3 /* : nullable TKwredef */;
-val* var4 /* : TKwreadable */;
+val* var4 /* : nullable AExpr */;
+val* var5 /* : null */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable AExpr */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val; /* _n_kwredef on <self:AReadAble> */
+var = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AMainMethPropdef> */
 var1 = NULL;
 if (var == NULL) {
 var2 = 0; /* is null */
@@ -2190,94 +1794,168 @@ var2 = 0; /* is null */
 var2 = 1; /* arg is null and recv is not */
 }
 if (var2){
-var3 = self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val; /* _n_kwredef on <self:AReadAble> */
+var3 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwredef].val; /* _n_kwredef on <self:AMainMethPropdef> */
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3142);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2907);
 exit(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__AReadAble___n_kwreadable].val; /* _n_kwreadable on <self:AReadAble> */
+var4 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AMainMethPropdef> */
+var5 = NULL;
 if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwreadable", "src/parser/parser_prod.nit", 3144);
+var6 = 0; /* is null */
+} else {
+var6 = 1; /* arg is null and recv is not */
+}
+if (var6){
+var7 = self->attrs[COLOR_parser_nodes__AConcreteMethPropdef___n_block].val; /* _n_block on <self:AMainMethPropdef> */
+if (var7 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2910);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var4) /* enter_visit on <var_v:Visitor>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
+} else {
+}
 RET_LABEL:;
 }
-/* method parser_prod#AReadAble#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AReadAble__visit_all(val* self, val* p0) {
-parser_prod__AReadAble__visit_all(self, p0);
+/* 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);
 RET_LABEL:;
 }
-/* method parser_prod#AWriteAble#empty_init for (self: AWriteAble) */
-void parser_prod__AWriteAble__empty_init(val* self) {
+/* method parser_prod#ATypePropdef#empty_init for (self: ATypePropdef) */
+void parser_prod__ATypePropdef__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AWriteAble#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AWriteAble__empty_init(val* self) {
-parser_prod__AWriteAble__empty_init(self);
+/* method parser_prod#ATypePropdef#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__ATypePropdef__empty_init(val* self) {
+parser_prod__ATypePropdef__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#AWriteAble#init_awriteable for (self: AWriteAble, nullable TKwredef, nullable AVisibility, nullable TKwwritable) */
-void parser_prod__AWriteAble__init_awriteable(val* self, val* p0, val* p1, val* p2) {
+/* 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_kwwritable /* var n_kwwritable: nullable TKwwritable */;
+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 */;
-var_n_kwredef = p0;
-var_n_visibility = p1;
-var_n_kwwritable = p2;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AWriteAble__empty_init]))(self) /* empty_init on <self:AWriteAble>*/;
-self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AWriteAble> */
+val* var4 /* : null */;
+short int var5 /* : Bool */;
+var_n_doc = p0;
+var_n_kwredef = p1;
+var_n_visibility = p2;
+var_n_kwtype = p3;
+var_n_id = p4;
+var_n_type = p5;
+var_n_annotations = p6;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__ATypePropdef__empty_init]))(self) /* empty_init on <self:ATypePropdef>*/;
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_n_doc; /* _n_doc on <self:ATypePropdef> */
 var = NULL;
-if (var_n_kwredef == 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_kwredef->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwredef, self) /* parent= on <var_n_kwredef:nullable TKwredef(TKwredef)>*/;
+((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__AAble___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AWriteAble> */
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:ATypePropdef> */
 var2 = NULL;
-if (var_n_visibility == 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_visibility->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_visibility, self) /* parent= on <var_n_visibility:nullable AVisibility(AVisibility)>*/;
+((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_kwwritable == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3165);
+if (var_n_visibility == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2936);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AWriteAble___n_kwwritable].val = var_n_kwwritable; /* _n_kwwritable on <self:AWriteAble> */
-if (var_n_kwwritable == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3166);
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_visibility].val = var_n_visibility; /* _n_visibility on <self:ATypePropdef> */
+if (var_n_visibility == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2937);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_kwwritable->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwwritable, self) /* parent= on <var_n_kwwritable:nullable TKwwritable>*/;
+((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_kwtype == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2938);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwtype].val = var_n_kwtype; /* _n_kwtype on <self:ATypePropdef> */
+if (var_n_kwtype == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2939);
+exit(1);
+} else {
+((void (*)(val*, val*))(var_n_kwtype->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwtype, self) /* parent= on <var_n_kwtype:nullable TKwtype>*/;
+}
+if (var_n_id == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2940);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_id].val = var_n_id; /* _n_id on <self:ATypePropdef> */
+if (var_n_id == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2941);
+exit(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>*/;
+}
+if (var_n_type == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2942);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_type].val = var_n_type; /* _n_type on <self:ATypePropdef> */
+if (var_n_type == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2943);
+exit(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>*/;
+}
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:ATypePropdef> */
+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#AWriteAble#init_awriteable for (self: Object, nullable TKwredef, nullable AVisibility, nullable TKwwritable) */
-void VIRTUAL_parser_prod__AWriteAble__init_awriteable(val* self, val* p0, val* p1, val* p2) {
-parser_prod__AWriteAble__init_awriteable(self, p0, p1, p2);
+/* 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);
 RET_LABEL:;
 }
-/* method parser_prod#AWriteAble#replace_child for (self: AWriteAble, ANode, nullable ANode) */
-void parser_prod__AWriteAble__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 TKwredef */;
+val* var /* : nullable ADoc */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -2285,7 +1963,7 @@ short int var4 /* : Bool */;
 int cltype;
 int idtype;
 val* var5 /* : null */;
-val* var6 /* : nullable AVisibility */;
+val* var6 /* : nullable TKwredef */;
 short int var7 /* : Bool */;
 val* var8 /* : null */;
 short int var9 /* : Bool */;
@@ -2293,20 +1971,49 @@ short int var10 /* : Bool */;
 int cltype11;
 int idtype12;
 val* var13 /* : null */;
-val* var14 /* : TKwwritable */;
+val* var14 /* : AVisibility */;
 short int var15 /* : Bool */;
 val* var16 /* : null */;
 short int var17 /* : Bool */;
 short int var18 /* : Bool */;
 int cltype19;
 int idtype20;
+val* var21 /* : TKwtype */;
+short int var22 /* : Bool */;
+val* var23 /* : null */;
+short int var24 /* : Bool */;
+short int var25 /* : Bool */;
+int cltype26;
+int idtype27;
+val* var28 /* : TClassid */;
+short int var29 /* : Bool */;
+val* var30 /* : null */;
+short int var31 /* : Bool */;
+short int var32 /* : Bool */;
+int cltype33;
+int idtype34;
+val* var35 /* : AType */;
+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__AAble___n_kwredef].val; /* _n_kwredef on <self:AWriteAble> */
+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 TKwredef>*/;
+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;
@@ -2317,31 +2024,32 @@ 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 TKwredef */
-cltype = type_parser_nodes__TKwredef.color;
-idtype = type_parser_nodes__TKwredef.id;
+/* <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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3174);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2955);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AWriteAble> */
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var_new_child; /* _n_doc on <self:ATypePropdef> */
 } else {
 var5 = NULL;
-self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var5; /* _n_kwredef on <self:AWriteAble> */
+self->attrs[COLOR_parser_nodes__APropdef___n_doc].val = var5; /* _n_doc on <self:ATypePropdef> */
 }
 goto RET_LABEL;
 } else {
 }
-var6 = self->attrs[COLOR_parser_nodes__AAble___n_visibility].val; /* _n_visibility on <self:AWriteAble> */
+var6 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwredef].val; /* _n_kwredef on <self:ATypePropdef> */
 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 AVisibility>*/;
+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;
@@ -2352,32 +2060,34 @@ 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 AVisibility */
-cltype11 = type_parser_nodes__AVisibility.color;
-idtype12 = type_parser_nodes__AVisibility.id;
+/* <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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3184);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2965);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AAble___n_visibility].val = var_new_child; /* _n_visibility on <self:AWriteAble> */
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwredef].val = var_new_child; /* _n_kwredef on <self:ATypePropdef> */
 } else {
 var13 = NULL;
-self->attrs[COLOR_parser_nodes__AAble___n_visibility].val = var13; /* _n_visibility on <self:AWriteAble> */
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwredef].val = var13; /* _n_kwredef on <self:ATypePropdef> */
 }
 goto RET_LABEL;
 } else {
 }
-var14 = self->attrs[COLOR_parser_nodes__AWriteAble___n_kwwritable].val; /* _n_kwwritable on <self:AWriteAble> */
+var14 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_visibility].val; /* _n_visibility on <self:ATypePropdef> */
 if (var14 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwwritable", "src/parser/parser_prod.nit", 3191);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_visibility");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2972);
 exit(1);
 }
-var15 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var_old_child) /* == on <var14:TKwwritable>*/;
+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) {
@@ -2387,40 +2097,216 @@ 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 TKwwritable */
-cltype19 = type_parser_nodes__TKwwritable.color;
-idtype20 = type_parser_nodes__TKwwritable.id;
+/* <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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3194);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2975);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AWriteAble___n_kwwritable].val = var_new_child; /* _n_kwwritable on <self:AWriteAble> */
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_visibility].val = var_new_child; /* _n_visibility on <self:ATypePropdef> */
+} else {
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2978);
+exit(1);
+}
+goto RET_LABEL;
+} else {
+}
+var21 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwtype].val; /* _n_kwtype on <self:ATypePropdef> */
+if (var21 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwtype");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2982);
+exit(1);
+}
+var22 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_old_child) /* == on <var21:TKwtype>*/;
+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 TKwtype */
+cltype26 = type_parser_nodes__TKwtype.color;
+idtype27 = type_parser_nodes__TKwtype.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", 2985);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwtype].val = var_new_child; /* _n_kwtype on <self:ATypePropdef> */
+} else {
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2988);
+exit(1);
+}
+goto RET_LABEL;
+} else {
+}
+var28 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_id].val; /* _n_id on <self:ATypePropdef> */
+if (var28 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2992);
+exit(1);
+}
+var29 = ((short int (*)(val*, val*))(var28->class->vft[COLOR_kernel__Object___61d_61d]))(var28, var_old_child) /* == on <var28:TClassid>*/;
+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;
+} 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", 2995);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_id].val = var_new_child; /* _n_id on <self:ATypePropdef> */
+} else {
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 2998);
+exit(1);
+}
+goto RET_LABEL;
+} else {
+}
+var35 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_type].val; /* _n_type on <self:ATypePropdef> */
+if (var35 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_type");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3002);
+exit(1);
+}
+var36 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___61d_61d]))(var35, var_old_child) /* == on <var35:AType>*/;
+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 AType */
+cltype40 = type_parser_nodes__AType.color;
+idtype41 = type_parser_nodes__AType.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", 3005);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_type].val = var_new_child; /* _n_type on <self:ATypePropdef> */
+} else {
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3008);
+exit(1);
+}
+goto RET_LABEL;
+} else {
+}
+var42 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:ATypePropdef> */
+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 {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3197);
+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", 3015);
 exit(1);
 }
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:ATypePropdef> */
+} else {
+var49 = NULL;
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var49; /* _n_annotations on <self:ATypePropdef> */
+}
 goto RET_LABEL;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AWriteAble#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AWriteAble__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AWriteAble__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);
 RET_LABEL:;
 }
-/* method parser_prod#AWriteAble#n_kwredef= for (self: AWriteAble, nullable TKwredef) */
-void parser_prod__AWriteAble__n_kwredef_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 */;
+var_node = p0;
+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 (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#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);
+RET_LABEL:;
+}
+/* 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 */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var_node; /* _n_kwredef on <self:AWriteAble> */
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwredef].val = var_node; /* _n_kwredef on <self:ATypePropdef> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -2433,18 +2319,70 @@ if (var1){
 }
 RET_LABEL:;
 }
-/* method parser_prod#AWriteAble#n_kwredef= for (self: Object, nullable TKwredef) */
-void VIRTUAL_parser_prod__AWriteAble__n_kwredef_61d(val* self, val* p0) {
-parser_prod__AWriteAble__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);
 RET_LABEL:;
 }
-/* method parser_prod#AWriteAble#n_visibility= for (self: AWriteAble, nullable AVisibility) */
-void parser_prod__AWriteAble__n_visibility_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AVisibility */;
+/* method parser_prod#ATypePropdef#n_visibility= for (self: ATypePropdef, AVisibility) */
+void parser_prod__ATypePropdef__n_visibility_61d(val* self, val* p0) {
+val* var_node /* var node: AVisibility */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__ATypePropdef___n_visibility].val = var_node; /* _n_visibility on <self:ATypePropdef> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AVisibility>*/;
+RET_LABEL:;
+}
+/* method parser_prod#ATypePropdef#n_visibility= for (self: Object, AVisibility) */
+void VIRTUAL_parser_prod__ATypePropdef__n_visibility_61d(val* self, val* p0) {
+parser_prod__ATypePropdef__n_visibility_61d(self, p0);
+RET_LABEL:;
+}
+/* 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__ATypePropdef___n_kwtype].val = var_node; /* _n_kwtype on <self:ATypePropdef> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwtype>*/;
+RET_LABEL:;
+}
+/* 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);
+RET_LABEL:;
+}
+/* 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__ATypePropdef___n_id].val = var_node; /* _n_id on <self:ATypePropdef> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TClassid>*/;
+RET_LABEL:;
+}
+/* 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);
+RET_LABEL:;
+}
+/* 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__ATypePropdef___n_type].val = var_node; /* _n_type on <self:ATypePropdef> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:AType>*/;
+RET_LABEL:;
+}
+/* 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);
+RET_LABEL:;
+}
+/* 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 */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AAble___n_visibility].val = var_node; /* _n_visibility on <self:AWriteAble> */
+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 */
@@ -2452,43 +2390,37 @@ var1 = 0; /* is null */
 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 AVisibility(AVisibility)>*/;
+((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#AWriteAble#n_visibility= for (self: Object, nullable AVisibility) */
-void VIRTUAL_parser_prod__AWriteAble__n_visibility_61d(val* self, val* p0) {
-parser_prod__AWriteAble__n_visibility_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AWriteAble#n_kwwritable= for (self: AWriteAble, TKwwritable) */
-void parser_prod__AWriteAble__n_kwwritable_61d(val* self, val* p0) {
-val* var_node /* var node: TKwwritable */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AWriteAble___n_kwwritable].val = var_node; /* _n_kwwritable on <self:AWriteAble> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwwritable>*/;
-RET_LABEL:;
-}
-/* method parser_prod#AWriteAble#n_kwwritable= for (self: Object, TKwwritable) */
-void VIRTUAL_parser_prod__AWriteAble__n_kwwritable_61d(val* self, val* p0) {
-parser_prod__AWriteAble__n_kwwritable_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);
 RET_LABEL:;
 }
-/* method parser_prod#AWriteAble#visit_all for (self: AWriteAble, Visitor) */
-void parser_prod__AWriteAble__visit_all(val* self, val* p0) {
+/* 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 TKwredef */;
+val* var /* : nullable ADoc */;
 val* var1 /* : null */;
 short int var2 /* : Bool */;
-val* var3 /* : nullable TKwredef */;
-val* var4 /* : nullable AVisibility */;
+val* var3 /* : nullable ADoc */;
+val* var4 /* : nullable TKwredef */;
 val* var5 /* : null */;
 short int var6 /* : Bool */;
-val* var7 /* : nullable AVisibility */;
-val* var8 /* : TKwwritable */;
+val* var7 /* : nullable TKwredef */;
+val* var8 /* : AVisibility */;
+val* var9 /* : TKwtype */;
+val* var10 /* : TClassid */;
+val* var11 /* : AType */;
+val* var12 /* : nullable AAnnotations */;
+val* var13 /* : null */;
+short int var14 /* : Bool */;
+val* var15 /* : nullable AAnnotations */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val; /* _n_kwredef on <self:AWriteAble> */
+var = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:ATypePropdef> */
 var1 = NULL;
 if (var == NULL) {
 var2 = 0; /* is null */
@@ -2496,15 +2428,16 @@ var2 = 0; /* is null */
 var2 = 1; /* arg is null and recv is not */
 }
 if (var2){
-var3 = self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val; /* _n_kwredef on <self:AWriteAble> */
+var3 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:ATypePropdef> */
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3227);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3070);
 exit(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__AAble___n_visibility].val; /* _n_visibility on <self:AWriteAble> */
+var4 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwredef].val; /* _n_kwredef on <self:ATypePropdef> */
 var5 = NULL;
 if (var4 == NULL) {
 var6 = 0; /* is null */
@@ -2512,78 +2445,143 @@ var6 = 0; /* is null */
 var6 = 1; /* arg is null and recv is not */
 }
 if (var6){
-var7 = self->attrs[COLOR_parser_nodes__AAble___n_visibility].val; /* _n_visibility on <self:AWriteAble> */
+var7 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_kwredef].val; /* _n_kwredef on <self:ATypePropdef> */
 if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3230);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3073);
 exit(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__AWriteAble___n_kwwritable].val; /* _n_kwwritable on <self:AWriteAble> */
+var8 = self->attrs[COLOR_parser_nodes__ATypePropdef___n_visibility].val; /* _n_visibility on <self:ATypePropdef> */
 if (var8 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwwritable", "src/parser/parser_prod.nit", 3232);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_visibility");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3075);
 exit(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__ATypePropdef___n_kwtype].val; /* _n_kwtype on <self:ATypePropdef> */
+if (var9 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwtype");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3076);
+exit(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__ATypePropdef___n_id].val; /* _n_id on <self:ATypePropdef> */
+if (var10 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3077);
+exit(1);
+}
+((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__ATypePropdef___n_type].val; /* _n_type on <self:ATypePropdef> */
+if (var11 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_type");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3078);
+exit(1);
+}
+((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:ATypePropdef> */
+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:ATypePropdef> */
+if (var15 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3080);
+exit(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#AWriteAble#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AWriteAble__visit_all(val* self, val* p0) {
-parser_prod__AWriteAble__visit_all(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);
 RET_LABEL:;
 }
-/* method parser_prod#AIdMethid#empty_init for (self: AIdMethid) */
-void parser_prod__AIdMethid__empty_init(val* self) {
+/* method parser_prod#AReadAble#empty_init for (self: AReadAble) */
+void parser_prod__AReadAble__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AIdMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AIdMethid__empty_init(val* self) {
-parser_prod__AIdMethid__empty_init(self);
+/* method parser_prod#AReadAble#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AReadAble__empty_init(val* self) {
+parser_prod__AReadAble__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#AIdMethid#init_aidmethid for (self: AIdMethid, nullable TId) */
-void parser_prod__AIdMethid__init_aidmethid(val* self, val* p0) {
-val* var_n_id /* var n_id: nullable TId */;
-var_n_id = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AIdMethid__empty_init]))(self) /* empty_init on <self:AIdMethid>*/;
-if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3243);
+/* method parser_prod#AReadAble#init_areadable for (self: AReadAble, nullable TKwredef, nullable TKwreadable) */
+void parser_prod__AReadAble__init_areadable(val* self, val* p0, val* p1) {
+val* var_n_kwredef /* var n_kwredef: nullable TKwredef */;
+val* var_n_kwreadable /* var n_kwreadable: nullable TKwreadable */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+var_n_kwredef = p0;
+var_n_kwreadable = p1;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AReadAble__empty_init]))(self) /* empty_init on <self:AReadAble>*/;
+self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AReadAble> */
+var = NULL;
+if (var_n_kwredef == NULL) {
+var1 = 0; /* is null */
+} else {
+var1 = 1; /* arg is null and recv is not */
+}
+if (var1){
+((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_kwreadable == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3097);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AIdMethid___n_id].val = var_n_id; /* _n_id on <self:AIdMethid> */
-if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3244);
+self->attrs[COLOR_parser_nodes__AReadAble___n_kwreadable].val = var_n_kwreadable; /* _n_kwreadable on <self:AReadAble> */
+if (var_n_kwreadable == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3098);
 exit(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 TId>*/;
+((void (*)(val*, val*))(var_n_kwreadable->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwreadable, self) /* parent= on <var_n_kwreadable:nullable TKwreadable>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AIdMethid#init_aidmethid for (self: Object, nullable TId) */
-void VIRTUAL_parser_prod__AIdMethid__init_aidmethid(val* self, val* p0) {
-parser_prod__AIdMethid__init_aidmethid(self, p0);
+/* method parser_prod#AReadAble#init_areadable for (self: Object, nullable TKwredef, nullable TKwreadable) */
+void VIRTUAL_parser_prod__AReadAble__init_areadable(val* self, val* p0, val* p1) {
+parser_prod__AReadAble__init_areadable(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#AIdMethid#replace_child for (self: AIdMethid, ANode, nullable ANode) */
-void parser_prod__AIdMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AReadAble#replace_child for (self: AReadAble, ANode, nullable ANode) */
+void parser_prod__AReadAble__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 /* : TId */;
+val* var /* : nullable TKwredef */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
 int cltype;
 int idtype;
+val* var5 /* : null */;
+val* var6 /* : TKwreadable */;
+short int var7 /* : Bool */;
+val* var8 /* : null */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AIdMethid___n_id].val; /* _n_id on <self:AIdMethid> */
+var = self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val; /* _n_kwredef on <self:AReadAble> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 3249);
-exit(1);
+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 TKwredef>*/;
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TId>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -2593,21 +2591,60 @@ 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 TId */
-cltype = type_parser_nodes__TId.color;
-idtype = type_parser_nodes__TId.id;
+/* <var_new_child:nullable ANode(ANode)> isa TKwredef */
+cltype = type_parser_nodes__TKwredef.color;
+idtype = type_parser_nodes__TKwredef.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3252);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3106);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AIdMethid___n_id].val = var_new_child; /* _n_id on <self:AIdMethid> */
+self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AReadAble> */
+} else {
+var5 = NULL;
+self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var5; /* _n_kwredef on <self:AReadAble> */
+}
+goto RET_LABEL;
+} else {
+}
+var6 = self->attrs[COLOR_parser_nodes__AReadAble___n_kwreadable].val; /* _n_kwreadable on <self:AReadAble> */
+if (var6 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwreadable");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3113);
+exit(1);
+}
+var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:TKwreadable>*/;
+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 TKwreadable */
+cltype11 = type_parser_nodes__TKwreadable.color;
+idtype12 = type_parser_nodes__TKwreadable.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", 3116);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__AReadAble___n_kwreadable].val = var_new_child; /* _n_kwreadable on <self:AReadAble> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3255);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3119);
 exit(1);
 }
 goto RET_LABEL;
@@ -2615,93 +2652,187 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AIdMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AIdMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AIdMethid__replace_child(self, p0, p1);
+/* method parser_prod#AReadAble#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AReadAble__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AReadAble__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#AIdMethid#n_id= for (self: AIdMethid, TId) */
-void parser_prod__AIdMethid__n_id_61d(val* self, val* p0) {
-val* var_node /* var node: TId */;
+/* method parser_prod#AReadAble#n_kwredef= for (self: AReadAble, nullable TKwredef) */
+void parser_prod__AReadAble__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__AIdMethid___n_id].val = var_node; /* _n_id on <self:AIdMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TId>*/;
+self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var_node; /* _n_kwredef on <self:AReadAble> */
+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#AIdMethid#n_id= for (self: Object, TId) */
-void VIRTUAL_parser_prod__AIdMethid__n_id_61d(val* self, val* p0) {
-parser_prod__AIdMethid__n_id_61d(self, p0);
+/* method parser_prod#AReadAble#n_kwredef= for (self: Object, nullable TKwredef) */
+void VIRTUAL_parser_prod__AReadAble__n_kwredef_61d(val* self, val* p0) {
+parser_prod__AReadAble__n_kwredef_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AIdMethid#visit_all for (self: AIdMethid, Visitor) */
-void parser_prod__AIdMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#AReadAble#n_kwreadable= for (self: AReadAble, TKwreadable) */
+void parser_prod__AReadAble__n_kwreadable_61d(val* self, val* p0) {
+val* var_node /* var node: TKwreadable */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AReadAble___n_kwreadable].val = var_node; /* _n_kwreadable on <self:AReadAble> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwreadable>*/;
+RET_LABEL:;
+}
+/* method parser_prod#AReadAble#n_kwreadable= for (self: Object, TKwreadable) */
+void VIRTUAL_parser_prod__AReadAble__n_kwreadable_61d(val* self, val* p0) {
+parser_prod__AReadAble__n_kwreadable_61d(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AReadAble#visit_all for (self: AReadAble, Visitor) */
+void parser_prod__AReadAble__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TId */;
+val* var /* : nullable TKwredef */;
+val* var1 /* : null */;
+short int var2 /* : Bool */;
+val* var3 /* : nullable TKwredef */;
+val* var4 /* : TKwreadable */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AIdMethid___n_id].val; /* _n_id on <self:AIdMethid> */
+var = self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val; /* _n_kwredef on <self:AReadAble> */
+var1 = NULL;
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 3270);
+var2 = 0; /* is null */
+} else {
+var2 = 1; /* arg is null and recv is not */
+}
+if (var2){
+var3 = self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val; /* _n_kwredef on <self:AReadAble> */
+if (var3 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3142);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* 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__AReadAble___n_kwreadable].val; /* _n_kwreadable on <self:AReadAble> */
+if (var4 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwreadable");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3144);
+exit(1);
+}
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var4) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AIdMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AIdMethid__visit_all(val* self, val* p0) {
-parser_prod__AIdMethid__visit_all(self, p0);
+/* method parser_prod#AReadAble#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AReadAble__visit_all(val* self, val* p0) {
+parser_prod__AReadAble__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#APlusMethid#empty_init for (self: APlusMethid) */
-void parser_prod__APlusMethid__empty_init(val* self) {
+/* method parser_prod#AWriteAble#empty_init for (self: AWriteAble) */
+void parser_prod__AWriteAble__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#APlusMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__APlusMethid__empty_init(val* self) {
-parser_prod__APlusMethid__empty_init(self);
+/* method parser_prod#AWriteAble#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AWriteAble__empty_init(val* self) {
+parser_prod__AWriteAble__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#APlusMethid#init_aplusmethid for (self: APlusMethid, nullable TPlus) */
-void parser_prod__APlusMethid__init_aplusmethid(val* self, val* p0) {
-val* var_n_plus /* var n_plus: nullable TPlus */;
-var_n_plus = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__APlusMethid__empty_init]))(self) /* empty_init on <self:APlusMethid>*/;
-if (var_n_plus == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3281);
+/* method parser_prod#AWriteAble#init_awriteable for (self: AWriteAble, nullable TKwredef, nullable AVisibility, nullable TKwwritable) */
+void parser_prod__AWriteAble__init_awriteable(val* self, val* p0, val* p1, val* p2) {
+val* var_n_kwredef /* var n_kwredef: nullable TKwredef */;
+val* var_n_visibility /* var n_visibility: nullable AVisibility */;
+val* var_n_kwwritable /* var n_kwwritable: nullable TKwwritable */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+val* var2 /* : null */;
+short int var3 /* : Bool */;
+var_n_kwredef = p0;
+var_n_visibility = p1;
+var_n_kwwritable = p2;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AWriteAble__empty_init]))(self) /* empty_init on <self:AWriteAble>*/;
+self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var_n_kwredef; /* _n_kwredef on <self:AWriteAble> */
+var = NULL;
+if (var_n_kwredef == NULL) {
+var1 = 0; /* is null */
+} else {
+var1 = 1; /* arg is null and recv is not */
+}
+if (var1){
+((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 {
+}
+self->attrs[COLOR_parser_nodes__AAble___n_visibility].val = var_n_visibility; /* _n_visibility on <self:AWriteAble> */
+var2 = NULL;
+if (var_n_visibility == NULL) {
+var3 = 0; /* is null */
+} else {
+var3 = 1; /* arg is null and recv is not */
+}
+if (var3){
+((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(AVisibility)>*/;
+} else {
+}
+if (var_n_kwwritable == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3165);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__APlusMethid___n_plus].val = var_n_plus; /* _n_plus on <self:APlusMethid> */
-if (var_n_plus == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3282);
+self->attrs[COLOR_parser_nodes__AWriteAble___n_kwwritable].val = var_n_kwwritable; /* _n_kwwritable on <self:AWriteAble> */
+if (var_n_kwwritable == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3166);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_plus->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_plus, self) /* parent= on <var_n_plus:nullable TPlus>*/;
+((void (*)(val*, val*))(var_n_kwwritable->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwwritable, self) /* parent= on <var_n_kwwritable:nullable TKwwritable>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#APlusMethid#init_aplusmethid for (self: Object, nullable TPlus) */
-void VIRTUAL_parser_prod__APlusMethid__init_aplusmethid(val* self, val* p0) {
-parser_prod__APlusMethid__init_aplusmethid(self, p0);
+/* method parser_prod#AWriteAble#init_awriteable for (self: Object, nullable TKwredef, nullable AVisibility, nullable TKwwritable) */
+void VIRTUAL_parser_prod__AWriteAble__init_awriteable(val* self, val* p0, val* p1, val* p2) {
+parser_prod__AWriteAble__init_awriteable(self, p0, p1, p2);
 RET_LABEL:;
 }
-/* method parser_prod#APlusMethid#replace_child for (self: APlusMethid, ANode, nullable ANode) */
-void parser_prod__APlusMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AWriteAble#replace_child for (self: AWriteAble, ANode, nullable ANode) */
+void parser_prod__AWriteAble__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 /* : TPlus */;
+val* var /* : nullable TKwredef */;
 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 AVisibility */;
+short int var7 /* : Bool */;
+val* var8 /* : null */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
+val* var13 /* : null */;
+val* var14 /* : TKwwritable */;
+short int var15 /* : Bool */;
+val* var16 /* : null */;
+short int var17 /* : Bool */;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__APlusMethid___n_plus].val; /* _n_plus on <self:APlusMethid> */
+var = self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val; /* _n_kwredef on <self:AWriteAble> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_plus", "src/parser/parser_prod.nit", 3287);
-exit(1);
+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 TKwredef>*/;
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TPlus>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -2711,219 +2842,269 @@ 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 TPlus */
-cltype = type_parser_nodes__TPlus.color;
-idtype = type_parser_nodes__TPlus.id;
+/* <var_new_child:nullable ANode(ANode)> isa TKwredef */
+cltype = type_parser_nodes__TKwredef.color;
+idtype = type_parser_nodes__TKwredef.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3290);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3174);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__APlusMethid___n_plus].val = var_new_child; /* _n_plus on <self:APlusMethid> */
+self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var_new_child; /* _n_kwredef on <self:AWriteAble> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3293);
-exit(1);
+var5 = NULL;
+self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val = var5; /* _n_kwredef on <self:AWriteAble> */
 }
 goto RET_LABEL;
 } else {
 }
-RET_LABEL:;
-}
-/* method parser_prod#APlusMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__APlusMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__APlusMethid__replace_child(self, p0, p1);
-RET_LABEL:;
+var6 = self->attrs[COLOR_parser_nodes__AAble___n_visibility].val; /* _n_visibility on <self:AWriteAble> */
+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 AVisibility>*/;
 }
-/* method parser_prod#APlusMethid#n_plus= for (self: APlusMethid, TPlus) */
-void parser_prod__APlusMethid__n_plus_61d(val* self, val* p0) {
-val* var_node /* var node: TPlus */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__APlusMethid___n_plus].val = var_node; /* _n_plus on <self:APlusMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TPlus>*/;
-RET_LABEL:;
+if (var7){
+var8 = NULL;
+if (var_new_child == NULL) {
+var9 = 0; /* is null */
+} else {
+var9 = 1; /* arg is null and recv is not */
 }
-/* method parser_prod#APlusMethid#n_plus= for (self: Object, TPlus) */
-void VIRTUAL_parser_prod__APlusMethid__n_plus_61d(val* self, val* p0) {
-parser_prod__APlusMethid__n_plus_61d(self, p0);
-RET_LABEL:;
+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 AVisibility */
+cltype11 = type_parser_nodes__AVisibility.color;
+idtype12 = type_parser_nodes__AVisibility.id;
+if(cltype11 >= var_new_child->type->table_size) {
+var10 = 0;
+} else {
+var10 = var_new_child->type->type_table[cltype11] == idtype12;
 }
-/* method parser_prod#APlusMethid#visit_all for (self: APlusMethid, Visitor) */
-void parser_prod__APlusMethid__visit_all(val* self, val* p0) {
-val* var_v /* var v: Visitor */;
-val* var /* : TPlus */;
-var_v = p0;
-var = self->attrs[COLOR_parser_nodes__APlusMethid___n_plus].val; /* _n_plus on <self:APlusMethid> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_plus", "src/parser/parser_prod.nit", 3308);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3184);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
-RET_LABEL:;
+self->attrs[COLOR_parser_nodes__AAble___n_visibility].val = var_new_child; /* _n_visibility on <self:AWriteAble> */
+} else {
+var13 = NULL;
+self->attrs[COLOR_parser_nodes__AAble___n_visibility].val = var13; /* _n_visibility on <self:AWriteAble> */
 }
-/* method parser_prod#APlusMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__APlusMethid__visit_all(val* self, val* p0) {
-parser_prod__APlusMethid__visit_all(self, p0);
-RET_LABEL:;
+goto RET_LABEL;
+} else {
 }
-/* method parser_prod#AMinusMethid#empty_init for (self: AMinusMethid) */
-void parser_prod__AMinusMethid__empty_init(val* self) {
-RET_LABEL:;
+var14 = self->attrs[COLOR_parser_nodes__AWriteAble___n_kwwritable].val; /* _n_kwwritable on <self:AWriteAble> */
+if (var14 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwwritable");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3191);
+exit(1);
 }
-/* method parser_prod#AMinusMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AMinusMethid__empty_init(val* self) {
-parser_prod__AMinusMethid__empty_init(self);
-RET_LABEL:;
+var15 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var_old_child) /* == on <var14:TKwwritable>*/;
+if (var15){
+var16 = NULL;
+if (var_new_child == NULL) {
+var17 = 0; /* is null */
+} else {
+var17 = 1; /* arg is null and recv is not */
 }
-/* method parser_prod#AMinusMethid#init_aminusmethid for (self: AMinusMethid, nullable TMinus) */
-void parser_prod__AMinusMethid__init_aminusmethid(val* self, val* p0) {
-val* var_n_minus /* var n_minus: nullable TMinus */;
-var_n_minus = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AMinusMethid__empty_init]))(self) /* empty_init on <self:AMinusMethid>*/;
-if (var_n_minus == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3319);
+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 TKwwritable */
+cltype19 = type_parser_nodes__TKwwritable.color;
+idtype20 = type_parser_nodes__TKwwritable.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", 3194);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AMinusMethid___n_minus].val = var_n_minus; /* _n_minus on <self:AMinusMethid> */
-if (var_n_minus == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3320);
+self->attrs[COLOR_parser_nodes__AWriteAble___n_kwwritable].val = var_new_child; /* _n_kwwritable on <self:AWriteAble> */
+} else {
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3197);
 exit(1);
+}
+goto RET_LABEL;
 } else {
-((void (*)(val*, val*))(var_n_minus->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_minus, self) /* parent= on <var_n_minus:nullable TMinus>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AMinusMethid#init_aminusmethid for (self: Object, nullable TMinus) */
-void VIRTUAL_parser_prod__AMinusMethid__init_aminusmethid(val* self, val* p0) {
-parser_prod__AMinusMethid__init_aminusmethid(self, p0);
+/* method parser_prod#AWriteAble#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AWriteAble__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AWriteAble__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#AMinusMethid#replace_child for (self: AMinusMethid, ANode, nullable ANode) */
-void parser_prod__AMinusMethid__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 /* : TMinus */;
-short int var1 /* : Bool */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-short int var4 /* : Bool */;
-int cltype;
-int idtype;
-var_old_child = p0;
-var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AMinusMethid___n_minus].val; /* _n_minus on <self:AMinusMethid> */
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_minus", "src/parser/parser_prod.nit", 3325);
-exit(1);
-}
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TMinus>*/;
-if (var1){
-var2 = NULL;
-if (var_new_child == NULL) {
-var3 = 0; /* is null */
+/* method parser_prod#AWriteAble#n_kwredef= for (self: AWriteAble, nullable TKwredef) */
+void parser_prod__AWriteAble__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__AAble___n_kwredef].val = var_node; /* _n_kwredef on <self:AWriteAble> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
 } else {
-var3 = 1; /* arg is null and recv is not */
+var1 = 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 TMinus */
-cltype = type_parser_nodes__TMinus.color;
-idtype = type_parser_nodes__TMinus.id;
-if(cltype >= var_new_child->type->table_size) {
-var4 = 0;
+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 {
-var4 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3328);
-exit(1);
+RET_LABEL:;
 }
-self->attrs[COLOR_parser_nodes__AMinusMethid___n_minus].val = var_new_child; /* _n_minus on <self:AMinusMethid> */
+/* method parser_prod#AWriteAble#n_kwredef= for (self: Object, nullable TKwredef) */
+void VIRTUAL_parser_prod__AWriteAble__n_kwredef_61d(val* self, val* p0) {
+parser_prod__AWriteAble__n_kwredef_61d(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AWriteAble#n_visibility= for (self: AWriteAble, nullable AVisibility) */
+void parser_prod__AWriteAble__n_visibility_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AVisibility */;
+val* var /* : null */;
+short int var1 /* : Bool */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AAble___n_visibility].val = var_node; /* _n_visibility on <self:AWriteAble> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3331);
-exit(1);
+var1 = 1; /* arg is null and recv is not */
 }
-goto RET_LABEL;
+if (var1){
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AVisibility(AVisibility)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AMinusMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AMinusMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AMinusMethid__replace_child(self, p0, p1);
+/* method parser_prod#AWriteAble#n_visibility= for (self: Object, nullable AVisibility) */
+void VIRTUAL_parser_prod__AWriteAble__n_visibility_61d(val* self, val* p0) {
+parser_prod__AWriteAble__n_visibility_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AMinusMethid#n_minus= for (self: AMinusMethid, TMinus) */
-void parser_prod__AMinusMethid__n_minus_61d(val* self, val* p0) {
-val* var_node /* var node: TMinus */;
+/* method parser_prod#AWriteAble#n_kwwritable= for (self: AWriteAble, TKwwritable) */
+void parser_prod__AWriteAble__n_kwwritable_61d(val* self, val* p0) {
+val* var_node /* var node: TKwwritable */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AMinusMethid___n_minus].val = var_node; /* _n_minus on <self:AMinusMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TMinus>*/;
+self->attrs[COLOR_parser_nodes__AWriteAble___n_kwwritable].val = var_node; /* _n_kwwritable on <self:AWriteAble> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TKwwritable>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AMinusMethid#n_minus= for (self: Object, TMinus) */
-void VIRTUAL_parser_prod__AMinusMethid__n_minus_61d(val* self, val* p0) {
-parser_prod__AMinusMethid__n_minus_61d(self, p0);
+/* method parser_prod#AWriteAble#n_kwwritable= for (self: Object, TKwwritable) */
+void VIRTUAL_parser_prod__AWriteAble__n_kwwritable_61d(val* self, val* p0) {
+parser_prod__AWriteAble__n_kwwritable_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AMinusMethid#visit_all for (self: AMinusMethid, Visitor) */
-void parser_prod__AMinusMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#AWriteAble#visit_all for (self: AWriteAble, Visitor) */
+void parser_prod__AWriteAble__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TMinus */;
+val* var /* : nullable TKwredef */;
+val* var1 /* : null */;
+short int var2 /* : Bool */;
+val* var3 /* : nullable TKwredef */;
+val* var4 /* : nullable AVisibility */;
+val* var5 /* : null */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable AVisibility */;
+val* var8 /* : TKwwritable */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AMinusMethid___n_minus].val; /* _n_minus on <self:AMinusMethid> */
+var = self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val; /* _n_kwredef on <self:AWriteAble> */
+var1 = NULL;
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_minus", "src/parser/parser_prod.nit", 3346);
+var2 = 0; /* is null */
+} else {
+var2 = 1; /* arg is null and recv is not */
+}
+if (var2){
+var3 = self->attrs[COLOR_parser_nodes__AAble___n_kwredef].val; /* _n_kwredef on <self:AWriteAble> */
+if (var3 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3227);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* 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__AAble___n_visibility].val; /* _n_visibility on <self:AWriteAble> */
+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__AAble___n_visibility].val; /* _n_visibility on <self:AWriteAble> */
+if (var7 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3230);
+exit(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__AWriteAble___n_kwwritable].val; /* _n_kwwritable on <self:AWriteAble> */
+if (var8 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwwritable");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3232);
+exit(1);
+}
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AMinusMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AMinusMethid__visit_all(val* self, val* p0) {
-parser_prod__AMinusMethid__visit_all(self, p0);
+/* method parser_prod#AWriteAble#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AWriteAble__visit_all(val* self, val* p0) {
+parser_prod__AWriteAble__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AStarMethid#empty_init for (self: AStarMethid) */
-void parser_prod__AStarMethid__empty_init(val* self) {
+/* method parser_prod#AIdMethid#empty_init for (self: AIdMethid) */
+void parser_prod__AIdMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AStarMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AStarMethid__empty_init(val* self) {
-parser_prod__AStarMethid__empty_init(self);
+/* method parser_prod#AIdMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AIdMethid__empty_init(val* self) {
+parser_prod__AIdMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#AStarMethid#init_astarmethid for (self: AStarMethid, nullable TStar) */
-void parser_prod__AStarMethid__init_astarmethid(val* self, val* p0) {
-val* var_n_star /* var n_star: nullable TStar */;
-var_n_star = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AStarMethid__empty_init]))(self) /* empty_init on <self:AStarMethid>*/;
-if (var_n_star == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3357);
+/* method parser_prod#AIdMethid#init_aidmethid for (self: AIdMethid, nullable TId) */
+void parser_prod__AIdMethid__init_aidmethid(val* self, val* p0) {
+val* var_n_id /* var n_id: nullable TId */;
+var_n_id = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AIdMethid__empty_init]))(self) /* empty_init on <self:AIdMethid>*/;
+if (var_n_id == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3243);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AStarMethid___n_star].val = var_n_star; /* _n_star on <self:AStarMethid> */
-if (var_n_star == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3358);
+self->attrs[COLOR_parser_nodes__AIdMethid___n_id].val = var_n_id; /* _n_id on <self:AIdMethid> */
+if (var_n_id == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3244);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_star->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_star, self) /* parent= on <var_n_star:nullable TStar>*/;
+((void (*)(val*, val*))(var_n_id->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_id, self) /* parent= on <var_n_id:nullable TId>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AStarMethid#init_astarmethid for (self: Object, nullable TStar) */
-void VIRTUAL_parser_prod__AStarMethid__init_astarmethid(val* self, val* p0) {
-parser_prod__AStarMethid__init_astarmethid(self, p0);
+/* method parser_prod#AIdMethid#init_aidmethid for (self: Object, nullable TId) */
+void VIRTUAL_parser_prod__AIdMethid__init_aidmethid(val* self, val* p0) {
+parser_prod__AIdMethid__init_aidmethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AStarMethid#replace_child for (self: AStarMethid, ANode, nullable ANode) */
-void parser_prod__AStarMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AIdMethid#replace_child for (self: AIdMethid, ANode, nullable ANode) */
+void parser_prod__AIdMethid__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 /* : TStar */;
+val* var /* : TId */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -2932,12 +3113,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AStarMethid___n_star].val; /* _n_star on <self:AStarMethid> */
+var = self->attrs[COLOR_parser_nodes__AIdMethid___n_id].val; /* _n_id on <self:AIdMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_star", "src/parser/parser_prod.nit", 3363);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3249);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TStar>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TId>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -2947,21 +3129,23 @@ 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 TStar */
-cltype = type_parser_nodes__TStar.color;
-idtype = type_parser_nodes__TStar.id;
+/* <var_new_child:nullable ANode(ANode)> isa TId */
+cltype = type_parser_nodes__TId.color;
+idtype = type_parser_nodes__TId.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3366);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3252);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AStarMethid___n_star].val = var_new_child; /* _n_star on <self:AStarMethid> */
+self->attrs[COLOR_parser_nodes__AIdMethid___n_id].val = var_new_child; /* _n_id on <self:AIdMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3369);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3255);
 exit(1);
 }
 goto RET_LABEL;
@@ -2969,79 +3153,82 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AStarMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AStarMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AStarMethid__replace_child(self, p0, p1);
+/* method parser_prod#AIdMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AIdMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AIdMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#AStarMethid#n_star= for (self: AStarMethid, TStar) */
-void parser_prod__AStarMethid__n_star_61d(val* self, val* p0) {
-val* var_node /* var node: TStar */;
+/* method parser_prod#AIdMethid#n_id= for (self: AIdMethid, TId) */
+void parser_prod__AIdMethid__n_id_61d(val* self, val* p0) {
+val* var_node /* var node: TId */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AStarMethid___n_star].val = var_node; /* _n_star on <self:AStarMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TStar>*/;
+self->attrs[COLOR_parser_nodes__AIdMethid___n_id].val = var_node; /* _n_id on <self:AIdMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TId>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AStarMethid#n_star= for (self: Object, TStar) */
-void VIRTUAL_parser_prod__AStarMethid__n_star_61d(val* self, val* p0) {
-parser_prod__AStarMethid__n_star_61d(self, p0);
+/* method parser_prod#AIdMethid#n_id= for (self: Object, TId) */
+void VIRTUAL_parser_prod__AIdMethid__n_id_61d(val* self, val* p0) {
+parser_prod__AIdMethid__n_id_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AStarMethid#visit_all for (self: AStarMethid, Visitor) */
-void parser_prod__AStarMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#AIdMethid#visit_all for (self: AIdMethid, Visitor) */
+void parser_prod__AIdMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TStar */;
+val* var /* : TId */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AStarMethid___n_star].val; /* _n_star on <self:AStarMethid> */
+var = self->attrs[COLOR_parser_nodes__AIdMethid___n_id].val; /* _n_id on <self:AIdMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_star", "src/parser/parser_prod.nit", 3384);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3270);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AStarMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AStarMethid__visit_all(val* self, val* p0) {
-parser_prod__AStarMethid__visit_all(self, p0);
+/* method parser_prod#AIdMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AIdMethid__visit_all(val* self, val* p0) {
+parser_prod__AIdMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ASlashMethid#empty_init for (self: ASlashMethid) */
-void parser_prod__ASlashMethid__empty_init(val* self) {
+/* method parser_prod#APlusMethid#empty_init for (self: APlusMethid) */
+void parser_prod__APlusMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#ASlashMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ASlashMethid__empty_init(val* self) {
-parser_prod__ASlashMethid__empty_init(self);
+/* method parser_prod#APlusMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__APlusMethid__empty_init(val* self) {
+parser_prod__APlusMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#ASlashMethid#init_aslashmethid for (self: ASlashMethid, nullable TSlash) */
-void parser_prod__ASlashMethid__init_aslashmethid(val* self, val* p0) {
-val* var_n_slash /* var n_slash: nullable TSlash */;
-var_n_slash = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ASlashMethid__empty_init]))(self) /* empty_init on <self:ASlashMethid>*/;
-if (var_n_slash == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3395);
+/* method parser_prod#APlusMethid#init_aplusmethid for (self: APlusMethid, nullable TPlus) */
+void parser_prod__APlusMethid__init_aplusmethid(val* self, val* p0) {
+val* var_n_plus /* var n_plus: nullable TPlus */;
+var_n_plus = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__APlusMethid__empty_init]))(self) /* empty_init on <self:APlusMethid>*/;
+if (var_n_plus == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3281);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ASlashMethid___n_slash].val = var_n_slash; /* _n_slash on <self:ASlashMethid> */
-if (var_n_slash == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3396);
+self->attrs[COLOR_parser_nodes__APlusMethid___n_plus].val = var_n_plus; /* _n_plus on <self:APlusMethid> */
+if (var_n_plus == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3282);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_slash->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_slash, self) /* parent= on <var_n_slash:nullable TSlash>*/;
+((void (*)(val*, val*))(var_n_plus->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_plus, self) /* parent= on <var_n_plus:nullable TPlus>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ASlashMethid#init_aslashmethid for (self: Object, nullable TSlash) */
-void VIRTUAL_parser_prod__ASlashMethid__init_aslashmethid(val* self, val* p0) {
-parser_prod__ASlashMethid__init_aslashmethid(self, p0);
+/* method parser_prod#APlusMethid#init_aplusmethid for (self: Object, nullable TPlus) */
+void VIRTUAL_parser_prod__APlusMethid__init_aplusmethid(val* self, val* p0) {
+parser_prod__APlusMethid__init_aplusmethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ASlashMethid#replace_child for (self: ASlashMethid, ANode, nullable ANode) */
-void parser_prod__ASlashMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#APlusMethid#replace_child for (self: APlusMethid, ANode, nullable ANode) */
+void parser_prod__APlusMethid__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 /* : TSlash */;
+val* var /* : TPlus */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -3050,12 +3237,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__ASlashMethid___n_slash].val; /* _n_slash on <self:ASlashMethid> */
+var = self->attrs[COLOR_parser_nodes__APlusMethid___n_plus].val; /* _n_plus on <self:APlusMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_slash", "src/parser/parser_prod.nit", 3401);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_plus");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3287);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TSlash>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TPlus>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -3065,21 +3253,23 @@ 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 TSlash */
-cltype = type_parser_nodes__TSlash.color;
-idtype = type_parser_nodes__TSlash.id;
+/* <var_new_child:nullable ANode(ANode)> isa TPlus */
+cltype = type_parser_nodes__TPlus.color;
+idtype = type_parser_nodes__TPlus.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3404);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3290);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ASlashMethid___n_slash].val = var_new_child; /* _n_slash on <self:ASlashMethid> */
+self->attrs[COLOR_parser_nodes__APlusMethid___n_plus].val = var_new_child; /* _n_plus on <self:APlusMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3407);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3293);
 exit(1);
 }
 goto RET_LABEL;
@@ -3087,79 +3277,82 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ASlashMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__ASlashMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ASlashMethid__replace_child(self, p0, p1);
+/* method parser_prod#APlusMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__APlusMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__APlusMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#ASlashMethid#n_slash= for (self: ASlashMethid, TSlash) */
-void parser_prod__ASlashMethid__n_slash_61d(val* self, val* p0) {
-val* var_node /* var node: TSlash */;
+/* method parser_prod#APlusMethid#n_plus= for (self: APlusMethid, TPlus) */
+void parser_prod__APlusMethid__n_plus_61d(val* self, val* p0) {
+val* var_node /* var node: TPlus */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__ASlashMethid___n_slash].val = var_node; /* _n_slash on <self:ASlashMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TSlash>*/;
+self->attrs[COLOR_parser_nodes__APlusMethid___n_plus].val = var_node; /* _n_plus on <self:APlusMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TPlus>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ASlashMethid#n_slash= for (self: Object, TSlash) */
-void VIRTUAL_parser_prod__ASlashMethid__n_slash_61d(val* self, val* p0) {
-parser_prod__ASlashMethid__n_slash_61d(self, p0);
+/* method parser_prod#APlusMethid#n_plus= for (self: Object, TPlus) */
+void VIRTUAL_parser_prod__APlusMethid__n_plus_61d(val* self, val* p0) {
+parser_prod__APlusMethid__n_plus_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ASlashMethid#visit_all for (self: ASlashMethid, Visitor) */
-void parser_prod__ASlashMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#APlusMethid#visit_all for (self: APlusMethid, Visitor) */
+void parser_prod__APlusMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TSlash */;
+val* var /* : TPlus */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__ASlashMethid___n_slash].val; /* _n_slash on <self:ASlashMethid> */
+var = self->attrs[COLOR_parser_nodes__APlusMethid___n_plus].val; /* _n_plus on <self:APlusMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_slash", "src/parser/parser_prod.nit", 3422);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_plus");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3308);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ASlashMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__ASlashMethid__visit_all(val* self, val* p0) {
-parser_prod__ASlashMethid__visit_all(self, p0);
+/* method parser_prod#APlusMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__APlusMethid__visit_all(val* self, val* p0) {
+parser_prod__APlusMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#APercentMethid#empty_init for (self: APercentMethid) */
-void parser_prod__APercentMethid__empty_init(val* self) {
+/* method parser_prod#AMinusMethid#empty_init for (self: AMinusMethid) */
+void parser_prod__AMinusMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#APercentMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__APercentMethid__empty_init(val* self) {
-parser_prod__APercentMethid__empty_init(self);
+/* method parser_prod#AMinusMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AMinusMethid__empty_init(val* self) {
+parser_prod__AMinusMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#APercentMethid#init_apercentmethid for (self: APercentMethid, nullable TPercent) */
-void parser_prod__APercentMethid__init_apercentmethid(val* self, val* p0) {
-val* var_n_percent /* var n_percent: nullable TPercent */;
-var_n_percent = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__APercentMethid__empty_init]))(self) /* empty_init on <self:APercentMethid>*/;
-if (var_n_percent == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3433);
+/* method parser_prod#AMinusMethid#init_aminusmethid for (self: AMinusMethid, nullable TMinus) */
+void parser_prod__AMinusMethid__init_aminusmethid(val* self, val* p0) {
+val* var_n_minus /* var n_minus: nullable TMinus */;
+var_n_minus = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AMinusMethid__empty_init]))(self) /* empty_init on <self:AMinusMethid>*/;
+if (var_n_minus == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3319);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__APercentMethid___n_percent].val = var_n_percent; /* _n_percent on <self:APercentMethid> */
-if (var_n_percent == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3434);
+self->attrs[COLOR_parser_nodes__AMinusMethid___n_minus].val = var_n_minus; /* _n_minus on <self:AMinusMethid> */
+if (var_n_minus == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3320);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_percent->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_percent, self) /* parent= on <var_n_percent:nullable TPercent>*/;
+((void (*)(val*, val*))(var_n_minus->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_minus, self) /* parent= on <var_n_minus:nullable TMinus>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#APercentMethid#init_apercentmethid for (self: Object, nullable TPercent) */
-void VIRTUAL_parser_prod__APercentMethid__init_apercentmethid(val* self, val* p0) {
-parser_prod__APercentMethid__init_apercentmethid(self, p0);
+/* method parser_prod#AMinusMethid#init_aminusmethid for (self: Object, nullable TMinus) */
+void VIRTUAL_parser_prod__AMinusMethid__init_aminusmethid(val* self, val* p0) {
+parser_prod__AMinusMethid__init_aminusmethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#APercentMethid#replace_child for (self: APercentMethid, ANode, nullable ANode) */
-void parser_prod__APercentMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AMinusMethid#replace_child for (self: AMinusMethid, ANode, nullable ANode) */
+void parser_prod__AMinusMethid__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 /* : TPercent */;
+val* var /* : TMinus */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -3168,12 +3361,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__APercentMethid___n_percent].val; /* _n_percent on <self:APercentMethid> */
+var = self->attrs[COLOR_parser_nodes__AMinusMethid___n_minus].val; /* _n_minus on <self:AMinusMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_percent", "src/parser/parser_prod.nit", 3439);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_minus");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3325);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TPercent>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TMinus>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -3183,21 +3377,23 @@ 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 TPercent */
-cltype = type_parser_nodes__TPercent.color;
-idtype = type_parser_nodes__TPercent.id;
+/* <var_new_child:nullable ANode(ANode)> isa TMinus */
+cltype = type_parser_nodes__TMinus.color;
+idtype = type_parser_nodes__TMinus.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3442);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3328);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__APercentMethid___n_percent].val = var_new_child; /* _n_percent on <self:APercentMethid> */
+self->attrs[COLOR_parser_nodes__AMinusMethid___n_minus].val = var_new_child; /* _n_minus on <self:AMinusMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3445);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3331);
 exit(1);
 }
 goto RET_LABEL;
@@ -3205,79 +3401,82 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#APercentMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__APercentMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__APercentMethid__replace_child(self, p0, p1);
+/* method parser_prod#AMinusMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AMinusMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AMinusMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#APercentMethid#n_percent= for (self: APercentMethid, TPercent) */
-void parser_prod__APercentMethid__n_percent_61d(val* self, val* p0) {
-val* var_node /* var node: TPercent */;
+/* method parser_prod#AMinusMethid#n_minus= for (self: AMinusMethid, TMinus) */
+void parser_prod__AMinusMethid__n_minus_61d(val* self, val* p0) {
+val* var_node /* var node: TMinus */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__APercentMethid___n_percent].val = var_node; /* _n_percent on <self:APercentMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TPercent>*/;
+self->attrs[COLOR_parser_nodes__AMinusMethid___n_minus].val = var_node; /* _n_minus on <self:AMinusMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TMinus>*/;
 RET_LABEL:;
 }
-/* method parser_prod#APercentMethid#n_percent= for (self: Object, TPercent) */
-void VIRTUAL_parser_prod__APercentMethid__n_percent_61d(val* self, val* p0) {
-parser_prod__APercentMethid__n_percent_61d(self, p0);
+/* method parser_prod#AMinusMethid#n_minus= for (self: Object, TMinus) */
+void VIRTUAL_parser_prod__AMinusMethid__n_minus_61d(val* self, val* p0) {
+parser_prod__AMinusMethid__n_minus_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#APercentMethid#visit_all for (self: APercentMethid, Visitor) */
-void parser_prod__APercentMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#AMinusMethid#visit_all for (self: AMinusMethid, Visitor) */
+void parser_prod__AMinusMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TPercent */;
+val* var /* : TMinus */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__APercentMethid___n_percent].val; /* _n_percent on <self:APercentMethid> */
+var = self->attrs[COLOR_parser_nodes__AMinusMethid___n_minus].val; /* _n_minus on <self:AMinusMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_percent", "src/parser/parser_prod.nit", 3460);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_minus");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3346);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#APercentMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__APercentMethid__visit_all(val* self, val* p0) {
-parser_prod__APercentMethid__visit_all(self, p0);
+/* method parser_prod#AMinusMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AMinusMethid__visit_all(val* self, val* p0) {
+parser_prod__AMinusMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AEqMethid#empty_init for (self: AEqMethid) */
-void parser_prod__AEqMethid__empty_init(val* self) {
+/* method parser_prod#AStarMethid#empty_init for (self: AStarMethid) */
+void parser_prod__AStarMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AEqMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AEqMethid__empty_init(val* self) {
-parser_prod__AEqMethid__empty_init(self);
+/* method parser_prod#AStarMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AStarMethid__empty_init(val* self) {
+parser_prod__AStarMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#AEqMethid#init_aeqmethid for (self: AEqMethid, nullable TEq) */
-void parser_prod__AEqMethid__init_aeqmethid(val* self, val* p0) {
-val* var_n_eq /* var n_eq: nullable TEq */;
-var_n_eq = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AEqMethid__empty_init]))(self) /* empty_init on <self:AEqMethid>*/;
-if (var_n_eq == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3471);
+/* method parser_prod#AStarMethid#init_astarmethid for (self: AStarMethid, nullable TStar) */
+void parser_prod__AStarMethid__init_astarmethid(val* self, val* p0) {
+val* var_n_star /* var n_star: nullable TStar */;
+var_n_star = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AStarMethid__empty_init]))(self) /* empty_init on <self:AStarMethid>*/;
+if (var_n_star == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3357);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AEqMethid___n_eq].val = var_n_eq; /* _n_eq on <self:AEqMethid> */
-if (var_n_eq == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3472);
+self->attrs[COLOR_parser_nodes__AStarMethid___n_star].val = var_n_star; /* _n_star on <self:AStarMethid> */
+if (var_n_star == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3358);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_eq->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_eq, self) /* parent= on <var_n_eq:nullable TEq>*/;
+((void (*)(val*, val*))(var_n_star->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_star, self) /* parent= on <var_n_star:nullable TStar>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AEqMethid#init_aeqmethid for (self: Object, nullable TEq) */
-void VIRTUAL_parser_prod__AEqMethid__init_aeqmethid(val* self, val* p0) {
-parser_prod__AEqMethid__init_aeqmethid(self, p0);
+/* method parser_prod#AStarMethid#init_astarmethid for (self: Object, nullable TStar) */
+void VIRTUAL_parser_prod__AStarMethid__init_astarmethid(val* self, val* p0) {
+parser_prod__AStarMethid__init_astarmethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AEqMethid#replace_child for (self: AEqMethid, ANode, nullable ANode) */
-void parser_prod__AEqMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AStarMethid#replace_child for (self: AStarMethid, ANode, nullable ANode) */
+void parser_prod__AStarMethid__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 /* : TEq */;
+val* var /* : TStar */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -3286,12 +3485,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AEqMethid___n_eq].val; /* _n_eq on <self:AEqMethid> */
+var = self->attrs[COLOR_parser_nodes__AStarMethid___n_star].val; /* _n_star on <self:AStarMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_eq", "src/parser/parser_prod.nit", 3477);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_star");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3363);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TEq>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TStar>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -3301,21 +3501,23 @@ 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 TEq */
-cltype = type_parser_nodes__TEq.color;
-idtype = type_parser_nodes__TEq.id;
+/* <var_new_child:nullable ANode(ANode)> isa TStar */
+cltype = type_parser_nodes__TStar.color;
+idtype = type_parser_nodes__TStar.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3480);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3366);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AEqMethid___n_eq].val = var_new_child; /* _n_eq on <self:AEqMethid> */
+self->attrs[COLOR_parser_nodes__AStarMethid___n_star].val = var_new_child; /* _n_star on <self:AStarMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3483);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3369);
 exit(1);
 }
 goto RET_LABEL;
@@ -3323,79 +3525,82 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AEqMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AEqMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AEqMethid__replace_child(self, p0, p1);
+/* method parser_prod#AStarMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AStarMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AStarMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#AEqMethid#n_eq= for (self: AEqMethid, TEq) */
-void parser_prod__AEqMethid__n_eq_61d(val* self, val* p0) {
-val* var_node /* var node: TEq */;
+/* method parser_prod#AStarMethid#n_star= for (self: AStarMethid, TStar) */
+void parser_prod__AStarMethid__n_star_61d(val* self, val* p0) {
+val* var_node /* var node: TStar */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AEqMethid___n_eq].val = var_node; /* _n_eq on <self:AEqMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TEq>*/;
+self->attrs[COLOR_parser_nodes__AStarMethid___n_star].val = var_node; /* _n_star on <self:AStarMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TStar>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AEqMethid#n_eq= for (self: Object, TEq) */
-void VIRTUAL_parser_prod__AEqMethid__n_eq_61d(val* self, val* p0) {
-parser_prod__AEqMethid__n_eq_61d(self, p0);
+/* method parser_prod#AStarMethid#n_star= for (self: Object, TStar) */
+void VIRTUAL_parser_prod__AStarMethid__n_star_61d(val* self, val* p0) {
+parser_prod__AStarMethid__n_star_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AEqMethid#visit_all for (self: AEqMethid, Visitor) */
-void parser_prod__AEqMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#AStarMethid#visit_all for (self: AStarMethid, Visitor) */
+void parser_prod__AStarMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TEq */;
+val* var /* : TStar */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AEqMethid___n_eq].val; /* _n_eq on <self:AEqMethid> */
+var = self->attrs[COLOR_parser_nodes__AStarMethid___n_star].val; /* _n_star on <self:AStarMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_eq", "src/parser/parser_prod.nit", 3498);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_star");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3384);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AEqMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AEqMethid__visit_all(val* self, val* p0) {
-parser_prod__AEqMethid__visit_all(self, p0);
+/* method parser_prod#AStarMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AStarMethid__visit_all(val* self, val* p0) {
+parser_prod__AStarMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ANeMethid#empty_init for (self: ANeMethid) */
-void parser_prod__ANeMethid__empty_init(val* self) {
+/* method parser_prod#ASlashMethid#empty_init for (self: ASlashMethid) */
+void parser_prod__ASlashMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#ANeMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ANeMethid__empty_init(val* self) {
-parser_prod__ANeMethid__empty_init(self);
+/* method parser_prod#ASlashMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__ASlashMethid__empty_init(val* self) {
+parser_prod__ASlashMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#ANeMethid#init_anemethid for (self: ANeMethid, nullable TNe) */
-void parser_prod__ANeMethid__init_anemethid(val* self, val* p0) {
-val* var_n_ne /* var n_ne: nullable TNe */;
-var_n_ne = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ANeMethid__empty_init]))(self) /* empty_init on <self:ANeMethid>*/;
-if (var_n_ne == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3509);
+/* method parser_prod#ASlashMethid#init_aslashmethid for (self: ASlashMethid, nullable TSlash) */
+void parser_prod__ASlashMethid__init_aslashmethid(val* self, val* p0) {
+val* var_n_slash /* var n_slash: nullable TSlash */;
+var_n_slash = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__ASlashMethid__empty_init]))(self) /* empty_init on <self:ASlashMethid>*/;
+if (var_n_slash == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3395);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ANeMethid___n_ne].val = var_n_ne; /* _n_ne on <self:ANeMethid> */
-if (var_n_ne == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3510);
+self->attrs[COLOR_parser_nodes__ASlashMethid___n_slash].val = var_n_slash; /* _n_slash on <self:ASlashMethid> */
+if (var_n_slash == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3396);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_ne->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_ne, self) /* parent= on <var_n_ne:nullable TNe>*/;
+((void (*)(val*, val*))(var_n_slash->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_slash, self) /* parent= on <var_n_slash:nullable TSlash>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ANeMethid#init_anemethid for (self: Object, nullable TNe) */
-void VIRTUAL_parser_prod__ANeMethid__init_anemethid(val* self, val* p0) {
-parser_prod__ANeMethid__init_anemethid(self, p0);
+/* method parser_prod#ASlashMethid#init_aslashmethid for (self: Object, nullable TSlash) */
+void VIRTUAL_parser_prod__ASlashMethid__init_aslashmethid(val* self, val* p0) {
+parser_prod__ASlashMethid__init_aslashmethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ANeMethid#replace_child for (self: ANeMethid, ANode, nullable ANode) */
-void parser_prod__ANeMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#ASlashMethid#replace_child for (self: ASlashMethid, ANode, nullable ANode) */
+void parser_prod__ASlashMethid__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 /* : TNe */;
+val* var /* : TSlash */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -3404,12 +3609,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__ANeMethid___n_ne].val; /* _n_ne on <self:ANeMethid> */
+var = self->attrs[COLOR_parser_nodes__ASlashMethid___n_slash].val; /* _n_slash on <self:ASlashMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_ne", "src/parser/parser_prod.nit", 3515);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_slash");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3401);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TNe>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TSlash>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -3419,21 +3625,23 @@ 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 TNe */
-cltype = type_parser_nodes__TNe.color;
-idtype = type_parser_nodes__TNe.id;
+/* <var_new_child:nullable ANode(ANode)> isa TSlash */
+cltype = type_parser_nodes__TSlash.color;
+idtype = type_parser_nodes__TSlash.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3518);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3404);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ANeMethid___n_ne].val = var_new_child; /* _n_ne on <self:ANeMethid> */
+self->attrs[COLOR_parser_nodes__ASlashMethid___n_slash].val = var_new_child; /* _n_slash on <self:ASlashMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3521);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3407);
 exit(1);
 }
 goto RET_LABEL;
@@ -3441,79 +3649,82 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ANeMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__ANeMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ANeMethid__replace_child(self, p0, p1);
+/* method parser_prod#ASlashMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__ASlashMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__ASlashMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#ANeMethid#n_ne= for (self: ANeMethid, TNe) */
-void parser_prod__ANeMethid__n_ne_61d(val* self, val* p0) {
-val* var_node /* var node: TNe */;
+/* method parser_prod#ASlashMethid#n_slash= for (self: ASlashMethid, TSlash) */
+void parser_prod__ASlashMethid__n_slash_61d(val* self, val* p0) {
+val* var_node /* var node: TSlash */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__ANeMethid___n_ne].val = var_node; /* _n_ne on <self:ANeMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TNe>*/;
+self->attrs[COLOR_parser_nodes__ASlashMethid___n_slash].val = var_node; /* _n_slash on <self:ASlashMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TSlash>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ANeMethid#n_ne= for (self: Object, TNe) */
-void VIRTUAL_parser_prod__ANeMethid__n_ne_61d(val* self, val* p0) {
-parser_prod__ANeMethid__n_ne_61d(self, p0);
+/* method parser_prod#ASlashMethid#n_slash= for (self: Object, TSlash) */
+void VIRTUAL_parser_prod__ASlashMethid__n_slash_61d(val* self, val* p0) {
+parser_prod__ASlashMethid__n_slash_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ANeMethid#visit_all for (self: ANeMethid, Visitor) */
-void parser_prod__ANeMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#ASlashMethid#visit_all for (self: ASlashMethid, Visitor) */
+void parser_prod__ASlashMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TNe */;
+val* var /* : TSlash */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__ANeMethid___n_ne].val; /* _n_ne on <self:ANeMethid> */
+var = self->attrs[COLOR_parser_nodes__ASlashMethid___n_slash].val; /* _n_slash on <self:ASlashMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_ne", "src/parser/parser_prod.nit", 3536);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_slash");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3422);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ANeMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__ANeMethid__visit_all(val* self, val* p0) {
-parser_prod__ANeMethid__visit_all(self, p0);
+/* method parser_prod#ASlashMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__ASlashMethid__visit_all(val* self, val* p0) {
+parser_prod__ASlashMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ALeMethid#empty_init for (self: ALeMethid) */
-void parser_prod__ALeMethid__empty_init(val* self) {
+/* method parser_prod#APercentMethid#empty_init for (self: APercentMethid) */
+void parser_prod__APercentMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#ALeMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ALeMethid__empty_init(val* self) {
-parser_prod__ALeMethid__empty_init(self);
+/* method parser_prod#APercentMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__APercentMethid__empty_init(val* self) {
+parser_prod__APercentMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#ALeMethid#init_alemethid for (self: ALeMethid, nullable TLe) */
-void parser_prod__ALeMethid__init_alemethid(val* self, val* p0) {
-val* var_n_le /* var n_le: nullable TLe */;
-var_n_le = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ALeMethid__empty_init]))(self) /* empty_init on <self:ALeMethid>*/;
-if (var_n_le == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3547);
+/* method parser_prod#APercentMethid#init_apercentmethid for (self: APercentMethid, nullable TPercent) */
+void parser_prod__APercentMethid__init_apercentmethid(val* self, val* p0) {
+val* var_n_percent /* var n_percent: nullable TPercent */;
+var_n_percent = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__APercentMethid__empty_init]))(self) /* empty_init on <self:APercentMethid>*/;
+if (var_n_percent == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3433);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ALeMethid___n_le].val = var_n_le; /* _n_le on <self:ALeMethid> */
-if (var_n_le == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3548);
+self->attrs[COLOR_parser_nodes__APercentMethid___n_percent].val = var_n_percent; /* _n_percent on <self:APercentMethid> */
+if (var_n_percent == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3434);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_le->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_le, self) /* parent= on <var_n_le:nullable TLe>*/;
+((void (*)(val*, val*))(var_n_percent->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_percent, self) /* parent= on <var_n_percent:nullable TPercent>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ALeMethid#init_alemethid for (self: Object, nullable TLe) */
-void VIRTUAL_parser_prod__ALeMethid__init_alemethid(val* self, val* p0) {
-parser_prod__ALeMethid__init_alemethid(self, p0);
+/* method parser_prod#APercentMethid#init_apercentmethid for (self: Object, nullable TPercent) */
+void VIRTUAL_parser_prod__APercentMethid__init_apercentmethid(val* self, val* p0) {
+parser_prod__APercentMethid__init_apercentmethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ALeMethid#replace_child for (self: ALeMethid, ANode, nullable ANode) */
-void parser_prod__ALeMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#APercentMethid#replace_child for (self: APercentMethid, ANode, nullable ANode) */
+void parser_prod__APercentMethid__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 /* : TLe */;
+val* var /* : TPercent */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -3522,12 +3733,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__ALeMethid___n_le].val; /* _n_le on <self:ALeMethid> */
+var = self->attrs[COLOR_parser_nodes__APercentMethid___n_percent].val; /* _n_percent on <self:APercentMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_le", "src/parser/parser_prod.nit", 3553);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_percent");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3439);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TLe>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TPercent>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -3537,21 +3749,23 @@ 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 TLe */
-cltype = type_parser_nodes__TLe.color;
-idtype = type_parser_nodes__TLe.id;
+/* <var_new_child:nullable ANode(ANode)> isa TPercent */
+cltype = type_parser_nodes__TPercent.color;
+idtype = type_parser_nodes__TPercent.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3556);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3442);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ALeMethid___n_le].val = var_new_child; /* _n_le on <self:ALeMethid> */
+self->attrs[COLOR_parser_nodes__APercentMethid___n_percent].val = var_new_child; /* _n_percent on <self:APercentMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3559);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3445);
 exit(1);
 }
 goto RET_LABEL;
@@ -3559,79 +3773,82 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ALeMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__ALeMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ALeMethid__replace_child(self, p0, p1);
+/* method parser_prod#APercentMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__APercentMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__APercentMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#ALeMethid#n_le= for (self: ALeMethid, TLe) */
-void parser_prod__ALeMethid__n_le_61d(val* self, val* p0) {
-val* var_node /* var node: TLe */;
+/* method parser_prod#APercentMethid#n_percent= for (self: APercentMethid, TPercent) */
+void parser_prod__APercentMethid__n_percent_61d(val* self, val* p0) {
+val* var_node /* var node: TPercent */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__ALeMethid___n_le].val = var_node; /* _n_le on <self:ALeMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TLe>*/;
+self->attrs[COLOR_parser_nodes__APercentMethid___n_percent].val = var_node; /* _n_percent on <self:APercentMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TPercent>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ALeMethid#n_le= for (self: Object, TLe) */
-void VIRTUAL_parser_prod__ALeMethid__n_le_61d(val* self, val* p0) {
-parser_prod__ALeMethid__n_le_61d(self, p0);
+/* method parser_prod#APercentMethid#n_percent= for (self: Object, TPercent) */
+void VIRTUAL_parser_prod__APercentMethid__n_percent_61d(val* self, val* p0) {
+parser_prod__APercentMethid__n_percent_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ALeMethid#visit_all for (self: ALeMethid, Visitor) */
-void parser_prod__ALeMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#APercentMethid#visit_all for (self: APercentMethid, Visitor) */
+void parser_prod__APercentMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TLe */;
+val* var /* : TPercent */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__ALeMethid___n_le].val; /* _n_le on <self:ALeMethid> */
+var = self->attrs[COLOR_parser_nodes__APercentMethid___n_percent].val; /* _n_percent on <self:APercentMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_le", "src/parser/parser_prod.nit", 3574);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_percent");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3460);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ALeMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__ALeMethid__visit_all(val* self, val* p0) {
-parser_prod__ALeMethid__visit_all(self, p0);
+/* method parser_prod#APercentMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__APercentMethid__visit_all(val* self, val* p0) {
+parser_prod__APercentMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AGeMethid#empty_init for (self: AGeMethid) */
-void parser_prod__AGeMethid__empty_init(val* self) {
+/* method parser_prod#AEqMethid#empty_init for (self: AEqMethid) */
+void parser_prod__AEqMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AGeMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AGeMethid__empty_init(val* self) {
-parser_prod__AGeMethid__empty_init(self);
+/* method parser_prod#AEqMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AEqMethid__empty_init(val* self) {
+parser_prod__AEqMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#AGeMethid#init_agemethid for (self: AGeMethid, nullable TGe) */
-void parser_prod__AGeMethid__init_agemethid(val* self, val* p0) {
-val* var_n_ge /* var n_ge: nullable TGe */;
-var_n_ge = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AGeMethid__empty_init]))(self) /* empty_init on <self:AGeMethid>*/;
-if (var_n_ge == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3585);
+/* method parser_prod#AEqMethid#init_aeqmethid for (self: AEqMethid, nullable TEq) */
+void parser_prod__AEqMethid__init_aeqmethid(val* self, val* p0) {
+val* var_n_eq /* var n_eq: nullable TEq */;
+var_n_eq = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AEqMethid__empty_init]))(self) /* empty_init on <self:AEqMethid>*/;
+if (var_n_eq == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3471);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AGeMethid___n_ge].val = var_n_ge; /* _n_ge on <self:AGeMethid> */
-if (var_n_ge == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3586);
+self->attrs[COLOR_parser_nodes__AEqMethid___n_eq].val = var_n_eq; /* _n_eq on <self:AEqMethid> */
+if (var_n_eq == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3472);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_ge->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_ge, self) /* parent= on <var_n_ge:nullable TGe>*/;
+((void (*)(val*, val*))(var_n_eq->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_eq, self) /* parent= on <var_n_eq:nullable TEq>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AGeMethid#init_agemethid for (self: Object, nullable TGe) */
-void VIRTUAL_parser_prod__AGeMethid__init_agemethid(val* self, val* p0) {
-parser_prod__AGeMethid__init_agemethid(self, p0);
+/* method parser_prod#AEqMethid#init_aeqmethid for (self: Object, nullable TEq) */
+void VIRTUAL_parser_prod__AEqMethid__init_aeqmethid(val* self, val* p0) {
+parser_prod__AEqMethid__init_aeqmethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AGeMethid#replace_child for (self: AGeMethid, ANode, nullable ANode) */
-void parser_prod__AGeMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AEqMethid#replace_child for (self: AEqMethid, ANode, nullable ANode) */
+void parser_prod__AEqMethid__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 /* : TGe */;
+val* var /* : TEq */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -3640,12 +3857,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AGeMethid___n_ge].val; /* _n_ge on <self:AGeMethid> */
+var = self->attrs[COLOR_parser_nodes__AEqMethid___n_eq].val; /* _n_eq on <self:AEqMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_ge", "src/parser/parser_prod.nit", 3591);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_eq");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3477);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TGe>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TEq>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -3655,21 +3873,23 @@ 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 TGe */
-cltype = type_parser_nodes__TGe.color;
-idtype = type_parser_nodes__TGe.id;
+/* <var_new_child:nullable ANode(ANode)> isa TEq */
+cltype = type_parser_nodes__TEq.color;
+idtype = type_parser_nodes__TEq.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3594);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3480);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AGeMethid___n_ge].val = var_new_child; /* _n_ge on <self:AGeMethid> */
+self->attrs[COLOR_parser_nodes__AEqMethid___n_eq].val = var_new_child; /* _n_eq on <self:AEqMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3597);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3483);
 exit(1);
 }
 goto RET_LABEL;
@@ -3677,79 +3897,82 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AGeMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AGeMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AGeMethid__replace_child(self, p0, p1);
+/* method parser_prod#AEqMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AEqMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AEqMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#AGeMethid#n_ge= for (self: AGeMethid, TGe) */
-void parser_prod__AGeMethid__n_ge_61d(val* self, val* p0) {
-val* var_node /* var node: TGe */;
+/* method parser_prod#AEqMethid#n_eq= for (self: AEqMethid, TEq) */
+void parser_prod__AEqMethid__n_eq_61d(val* self, val* p0) {
+val* var_node /* var node: TEq */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AGeMethid___n_ge].val = var_node; /* _n_ge on <self:AGeMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TGe>*/;
+self->attrs[COLOR_parser_nodes__AEqMethid___n_eq].val = var_node; /* _n_eq on <self:AEqMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TEq>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AGeMethid#n_ge= for (self: Object, TGe) */
-void VIRTUAL_parser_prod__AGeMethid__n_ge_61d(val* self, val* p0) {
-parser_prod__AGeMethid__n_ge_61d(self, p0);
+/* method parser_prod#AEqMethid#n_eq= for (self: Object, TEq) */
+void VIRTUAL_parser_prod__AEqMethid__n_eq_61d(val* self, val* p0) {
+parser_prod__AEqMethid__n_eq_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AGeMethid#visit_all for (self: AGeMethid, Visitor) */
-void parser_prod__AGeMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#AEqMethid#visit_all for (self: AEqMethid, Visitor) */
+void parser_prod__AEqMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TGe */;
+val* var /* : TEq */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AGeMethid___n_ge].val; /* _n_ge on <self:AGeMethid> */
+var = self->attrs[COLOR_parser_nodes__AEqMethid___n_eq].val; /* _n_eq on <self:AEqMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_ge", "src/parser/parser_prod.nit", 3612);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_eq");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3498);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AGeMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AGeMethid__visit_all(val* self, val* p0) {
-parser_prod__AGeMethid__visit_all(self, p0);
+/* method parser_prod#AEqMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AEqMethid__visit_all(val* self, val* p0) {
+parser_prod__AEqMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ALtMethid#empty_init for (self: ALtMethid) */
-void parser_prod__ALtMethid__empty_init(val* self) {
+/* method parser_prod#ANeMethid#empty_init for (self: ANeMethid) */
+void parser_prod__ANeMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#ALtMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ALtMethid__empty_init(val* self) {
-parser_prod__ALtMethid__empty_init(self);
+/* method parser_prod#ANeMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__ANeMethid__empty_init(val* self) {
+parser_prod__ANeMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#ALtMethid#init_altmethid for (self: ALtMethid, nullable TLt) */
-void parser_prod__ALtMethid__init_altmethid(val* self, val* p0) {
-val* var_n_lt /* var n_lt: nullable TLt */;
-var_n_lt = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ALtMethid__empty_init]))(self) /* empty_init on <self:ALtMethid>*/;
-if (var_n_lt == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3623);
+/* method parser_prod#ANeMethid#init_anemethid for (self: ANeMethid, nullable TNe) */
+void parser_prod__ANeMethid__init_anemethid(val* self, val* p0) {
+val* var_n_ne /* var n_ne: nullable TNe */;
+var_n_ne = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__ANeMethid__empty_init]))(self) /* empty_init on <self:ANeMethid>*/;
+if (var_n_ne == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3509);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ALtMethid___n_lt].val = var_n_lt; /* _n_lt on <self:ALtMethid> */
-if (var_n_lt == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3624);
+self->attrs[COLOR_parser_nodes__ANeMethid___n_ne].val = var_n_ne; /* _n_ne on <self:ANeMethid> */
+if (var_n_ne == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3510);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_lt->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_lt, self) /* parent= on <var_n_lt:nullable TLt>*/;
+((void (*)(val*, val*))(var_n_ne->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_ne, self) /* parent= on <var_n_ne:nullable TNe>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ALtMethid#init_altmethid for (self: Object, nullable TLt) */
-void VIRTUAL_parser_prod__ALtMethid__init_altmethid(val* self, val* p0) {
-parser_prod__ALtMethid__init_altmethid(self, p0);
+/* method parser_prod#ANeMethid#init_anemethid for (self: Object, nullable TNe) */
+void VIRTUAL_parser_prod__ANeMethid__init_anemethid(val* self, val* p0) {
+parser_prod__ANeMethid__init_anemethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ALtMethid#replace_child for (self: ALtMethid, ANode, nullable ANode) */
-void parser_prod__ALtMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#ANeMethid#replace_child for (self: ANeMethid, ANode, nullable ANode) */
+void parser_prod__ANeMethid__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 /* : TLt */;
+val* var /* : TNe */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -3758,12 +3981,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__ALtMethid___n_lt].val; /* _n_lt on <self:ALtMethid> */
+var = self->attrs[COLOR_parser_nodes__ANeMethid___n_ne].val; /* _n_ne on <self:ANeMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_lt", "src/parser/parser_prod.nit", 3629);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_ne");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3515);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TLt>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TNe>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -3773,21 +3997,23 @@ 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 TLt */
-cltype = type_parser_nodes__TLt.color;
-idtype = type_parser_nodes__TLt.id;
+/* <var_new_child:nullable ANode(ANode)> isa TNe */
+cltype = type_parser_nodes__TNe.color;
+idtype = type_parser_nodes__TNe.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3632);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3518);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ALtMethid___n_lt].val = var_new_child; /* _n_lt on <self:ALtMethid> */
+self->attrs[COLOR_parser_nodes__ANeMethid___n_ne].val = var_new_child; /* _n_ne on <self:ANeMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3635);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3521);
 exit(1);
 }
 goto RET_LABEL;
@@ -3795,79 +4021,82 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ALtMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__ALtMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ALtMethid__replace_child(self, p0, p1);
+/* method parser_prod#ANeMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__ANeMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__ANeMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#ALtMethid#n_lt= for (self: ALtMethid, TLt) */
-void parser_prod__ALtMethid__n_lt_61d(val* self, val* p0) {
-val* var_node /* var node: TLt */;
+/* method parser_prod#ANeMethid#n_ne= for (self: ANeMethid, TNe) */
+void parser_prod__ANeMethid__n_ne_61d(val* self, val* p0) {
+val* var_node /* var node: TNe */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__ALtMethid___n_lt].val = var_node; /* _n_lt on <self:ALtMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TLt>*/;
+self->attrs[COLOR_parser_nodes__ANeMethid___n_ne].val = var_node; /* _n_ne on <self:ANeMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TNe>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ALtMethid#n_lt= for (self: Object, TLt) */
-void VIRTUAL_parser_prod__ALtMethid__n_lt_61d(val* self, val* p0) {
-parser_prod__ALtMethid__n_lt_61d(self, p0);
+/* method parser_prod#ANeMethid#n_ne= for (self: Object, TNe) */
+void VIRTUAL_parser_prod__ANeMethid__n_ne_61d(val* self, val* p0) {
+parser_prod__ANeMethid__n_ne_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ALtMethid#visit_all for (self: ALtMethid, Visitor) */
-void parser_prod__ALtMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#ANeMethid#visit_all for (self: ANeMethid, Visitor) */
+void parser_prod__ANeMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TLt */;
+val* var /* : TNe */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__ALtMethid___n_lt].val; /* _n_lt on <self:ALtMethid> */
+var = self->attrs[COLOR_parser_nodes__ANeMethid___n_ne].val; /* _n_ne on <self:ANeMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_lt", "src/parser/parser_prod.nit", 3650);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_ne");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3536);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ALtMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__ALtMethid__visit_all(val* self, val* p0) {
-parser_prod__ALtMethid__visit_all(self, p0);
+/* method parser_prod#ANeMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__ANeMethid__visit_all(val* self, val* p0) {
+parser_prod__ANeMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AGtMethid#empty_init for (self: AGtMethid) */
-void parser_prod__AGtMethid__empty_init(val* self) {
+/* method parser_prod#ALeMethid#empty_init for (self: ALeMethid) */
+void parser_prod__ALeMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AGtMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AGtMethid__empty_init(val* self) {
-parser_prod__AGtMethid__empty_init(self);
+/* method parser_prod#ALeMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__ALeMethid__empty_init(val* self) {
+parser_prod__ALeMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#AGtMethid#init_agtmethid for (self: AGtMethid, nullable TGt) */
-void parser_prod__AGtMethid__init_agtmethid(val* self, val* p0) {
-val* var_n_gt /* var n_gt: nullable TGt */;
-var_n_gt = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AGtMethid__empty_init]))(self) /* empty_init on <self:AGtMethid>*/;
-if (var_n_gt == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3661);
+/* method parser_prod#ALeMethid#init_alemethid for (self: ALeMethid, nullable TLe) */
+void parser_prod__ALeMethid__init_alemethid(val* self, val* p0) {
+val* var_n_le /* var n_le: nullable TLe */;
+var_n_le = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__ALeMethid__empty_init]))(self) /* empty_init on <self:ALeMethid>*/;
+if (var_n_le == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3547);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AGtMethid___n_gt].val = var_n_gt; /* _n_gt on <self:AGtMethid> */
-if (var_n_gt == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3662);
+self->attrs[COLOR_parser_nodes__ALeMethid___n_le].val = var_n_le; /* _n_le on <self:ALeMethid> */
+if (var_n_le == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3548);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_gt->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_gt, self) /* parent= on <var_n_gt:nullable TGt>*/;
+((void (*)(val*, val*))(var_n_le->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_le, self) /* parent= on <var_n_le:nullable TLe>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AGtMethid#init_agtmethid for (self: Object, nullable TGt) */
-void VIRTUAL_parser_prod__AGtMethid__init_agtmethid(val* self, val* p0) {
-parser_prod__AGtMethid__init_agtmethid(self, p0);
+/* method parser_prod#ALeMethid#init_alemethid for (self: Object, nullable TLe) */
+void VIRTUAL_parser_prod__ALeMethid__init_alemethid(val* self, val* p0) {
+parser_prod__ALeMethid__init_alemethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AGtMethid#replace_child for (self: AGtMethid, ANode, nullable ANode) */
-void parser_prod__AGtMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#ALeMethid#replace_child for (self: ALeMethid, ANode, nullable ANode) */
+void parser_prod__ALeMethid__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 /* : TGt */;
+val* var /* : TLe */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -3876,12 +4105,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AGtMethid___n_gt].val; /* _n_gt on <self:AGtMethid> */
+var = self->attrs[COLOR_parser_nodes__ALeMethid___n_le].val; /* _n_le on <self:ALeMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_gt", "src/parser/parser_prod.nit", 3667);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_le");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3553);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TGt>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TLe>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -3891,21 +4121,23 @@ 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 TGt */
-cltype = type_parser_nodes__TGt.color;
-idtype = type_parser_nodes__TGt.id;
+/* <var_new_child:nullable ANode(ANode)> isa TLe */
+cltype = type_parser_nodes__TLe.color;
+idtype = type_parser_nodes__TLe.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3670);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3556);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AGtMethid___n_gt].val = var_new_child; /* _n_gt on <self:AGtMethid> */
+self->attrs[COLOR_parser_nodes__ALeMethid___n_le].val = var_new_child; /* _n_le on <self:ALeMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3673);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3559);
 exit(1);
 }
 goto RET_LABEL;
@@ -3913,79 +4145,82 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AGtMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AGtMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AGtMethid__replace_child(self, p0, p1);
+/* method parser_prod#ALeMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__ALeMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__ALeMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#AGtMethid#n_gt= for (self: AGtMethid, TGt) */
-void parser_prod__AGtMethid__n_gt_61d(val* self, val* p0) {
-val* var_node /* var node: TGt */;
+/* method parser_prod#ALeMethid#n_le= for (self: ALeMethid, TLe) */
+void parser_prod__ALeMethid__n_le_61d(val* self, val* p0) {
+val* var_node /* var node: TLe */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AGtMethid___n_gt].val = var_node; /* _n_gt on <self:AGtMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TGt>*/;
+self->attrs[COLOR_parser_nodes__ALeMethid___n_le].val = var_node; /* _n_le on <self:ALeMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TLe>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AGtMethid#n_gt= for (self: Object, TGt) */
-void VIRTUAL_parser_prod__AGtMethid__n_gt_61d(val* self, val* p0) {
-parser_prod__AGtMethid__n_gt_61d(self, p0);
+/* method parser_prod#ALeMethid#n_le= for (self: Object, TLe) */
+void VIRTUAL_parser_prod__ALeMethid__n_le_61d(val* self, val* p0) {
+parser_prod__ALeMethid__n_le_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AGtMethid#visit_all for (self: AGtMethid, Visitor) */
-void parser_prod__AGtMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#ALeMethid#visit_all for (self: ALeMethid, Visitor) */
+void parser_prod__ALeMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TGt */;
+val* var /* : TLe */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AGtMethid___n_gt].val; /* _n_gt on <self:AGtMethid> */
+var = self->attrs[COLOR_parser_nodes__ALeMethid___n_le].val; /* _n_le on <self:ALeMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_gt", "src/parser/parser_prod.nit", 3688);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_le");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3574);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AGtMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AGtMethid__visit_all(val* self, val* p0) {
-parser_prod__AGtMethid__visit_all(self, p0);
+/* method parser_prod#ALeMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__ALeMethid__visit_all(val* self, val* p0) {
+parser_prod__ALeMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ALlMethid#empty_init for (self: ALlMethid) */
-void parser_prod__ALlMethid__empty_init(val* self) {
+/* method parser_prod#AGeMethid#empty_init for (self: AGeMethid) */
+void parser_prod__AGeMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#ALlMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ALlMethid__empty_init(val* self) {
-parser_prod__ALlMethid__empty_init(self);
+/* method parser_prod#AGeMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AGeMethid__empty_init(val* self) {
+parser_prod__AGeMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#ALlMethid#init_allmethid for (self: ALlMethid, nullable TLl) */
-void parser_prod__ALlMethid__init_allmethid(val* self, val* p0) {
-val* var_n_ll /* var n_ll: nullable TLl */;
-var_n_ll = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ALlMethid__empty_init]))(self) /* empty_init on <self:ALlMethid>*/;
-if (var_n_ll == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3699);
+/* method parser_prod#AGeMethid#init_agemethid for (self: AGeMethid, nullable TGe) */
+void parser_prod__AGeMethid__init_agemethid(val* self, val* p0) {
+val* var_n_ge /* var n_ge: nullable TGe */;
+var_n_ge = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AGeMethid__empty_init]))(self) /* empty_init on <self:AGeMethid>*/;
+if (var_n_ge == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3585);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ALlMethid___n_ll].val = var_n_ll; /* _n_ll on <self:ALlMethid> */
-if (var_n_ll == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3700);
+self->attrs[COLOR_parser_nodes__AGeMethid___n_ge].val = var_n_ge; /* _n_ge on <self:AGeMethid> */
+if (var_n_ge == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3586);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_ll->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_ll, self) /* parent= on <var_n_ll:nullable TLl>*/;
+((void (*)(val*, val*))(var_n_ge->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_ge, self) /* parent= on <var_n_ge:nullable TGe>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ALlMethid#init_allmethid for (self: Object, nullable TLl) */
-void VIRTUAL_parser_prod__ALlMethid__init_allmethid(val* self, val* p0) {
-parser_prod__ALlMethid__init_allmethid(self, p0);
+/* method parser_prod#AGeMethid#init_agemethid for (self: Object, nullable TGe) */
+void VIRTUAL_parser_prod__AGeMethid__init_agemethid(val* self, val* p0) {
+parser_prod__AGeMethid__init_agemethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ALlMethid#replace_child for (self: ALlMethid, ANode, nullable ANode) */
-void parser_prod__ALlMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AGeMethid#replace_child for (self: AGeMethid, ANode, nullable ANode) */
+void parser_prod__AGeMethid__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 /* : TLl */;
+val* var /* : TGe */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -3994,12 +4229,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__ALlMethid___n_ll].val; /* _n_ll on <self:ALlMethid> */
+var = self->attrs[COLOR_parser_nodes__AGeMethid___n_ge].val; /* _n_ge on <self:AGeMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_ll", "src/parser/parser_prod.nit", 3705);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_ge");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3591);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TLl>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TGe>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -4009,21 +4245,23 @@ 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 TLl */
-cltype = type_parser_nodes__TLl.color;
-idtype = type_parser_nodes__TLl.id;
+/* <var_new_child:nullable ANode(ANode)> isa TGe */
+cltype = type_parser_nodes__TGe.color;
+idtype = type_parser_nodes__TGe.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3708);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3594);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ALlMethid___n_ll].val = var_new_child; /* _n_ll on <self:ALlMethid> */
+self->attrs[COLOR_parser_nodes__AGeMethid___n_ge].val = var_new_child; /* _n_ge on <self:AGeMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3711);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3597);
 exit(1);
 }
 goto RET_LABEL;
@@ -4031,79 +4269,82 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ALlMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__ALlMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ALlMethid__replace_child(self, p0, p1);
+/* method parser_prod#AGeMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AGeMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AGeMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#ALlMethid#n_ll= for (self: ALlMethid, TLl) */
-void parser_prod__ALlMethid__n_ll_61d(val* self, val* p0) {
-val* var_node /* var node: TLl */;
+/* method parser_prod#AGeMethid#n_ge= for (self: AGeMethid, TGe) */
+void parser_prod__AGeMethid__n_ge_61d(val* self, val* p0) {
+val* var_node /* var node: TGe */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__ALlMethid___n_ll].val = var_node; /* _n_ll on <self:ALlMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TLl>*/;
+self->attrs[COLOR_parser_nodes__AGeMethid___n_ge].val = var_node; /* _n_ge on <self:AGeMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TGe>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ALlMethid#n_ll= for (self: Object, TLl) */
-void VIRTUAL_parser_prod__ALlMethid__n_ll_61d(val* self, val* p0) {
-parser_prod__ALlMethid__n_ll_61d(self, p0);
+/* method parser_prod#AGeMethid#n_ge= for (self: Object, TGe) */
+void VIRTUAL_parser_prod__AGeMethid__n_ge_61d(val* self, val* p0) {
+parser_prod__AGeMethid__n_ge_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ALlMethid#visit_all for (self: ALlMethid, Visitor) */
-void parser_prod__ALlMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#AGeMethid#visit_all for (self: AGeMethid, Visitor) */
+void parser_prod__AGeMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TLl */;
+val* var /* : TGe */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__ALlMethid___n_ll].val; /* _n_ll on <self:ALlMethid> */
+var = self->attrs[COLOR_parser_nodes__AGeMethid___n_ge].val; /* _n_ge on <self:AGeMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_ll", "src/parser/parser_prod.nit", 3726);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_ge");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3612);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ALlMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__ALlMethid__visit_all(val* self, val* p0) {
-parser_prod__ALlMethid__visit_all(self, p0);
+/* method parser_prod#AGeMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AGeMethid__visit_all(val* self, val* p0) {
+parser_prod__AGeMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AGgMethid#empty_init for (self: AGgMethid) */
-void parser_prod__AGgMethid__empty_init(val* self) {
+/* method parser_prod#ALtMethid#empty_init for (self: ALtMethid) */
+void parser_prod__ALtMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AGgMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AGgMethid__empty_init(val* self) {
-parser_prod__AGgMethid__empty_init(self);
+/* method parser_prod#ALtMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__ALtMethid__empty_init(val* self) {
+parser_prod__ALtMethid__empty_init(self);
 RET_LABEL:;
-}
-/* method parser_prod#AGgMethid#init_aggmethid for (self: AGgMethid, nullable TGg) */
-void parser_prod__AGgMethid__init_aggmethid(val* self, val* p0) {
-val* var_n_gg /* var n_gg: nullable TGg */;
-var_n_gg = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AGgMethid__empty_init]))(self) /* empty_init on <self:AGgMethid>*/;
-if (var_n_gg == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3737);
+}
+/* method parser_prod#ALtMethid#init_altmethid for (self: ALtMethid, nullable TLt) */
+void parser_prod__ALtMethid__init_altmethid(val* self, val* p0) {
+val* var_n_lt /* var n_lt: nullable TLt */;
+var_n_lt = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__ALtMethid__empty_init]))(self) /* empty_init on <self:ALtMethid>*/;
+if (var_n_lt == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3623);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AGgMethid___n_gg].val = var_n_gg; /* _n_gg on <self:AGgMethid> */
-if (var_n_gg == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3738);
+self->attrs[COLOR_parser_nodes__ALtMethid___n_lt].val = var_n_lt; /* _n_lt on <self:ALtMethid> */
+if (var_n_lt == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3624);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_gg->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_gg, self) /* parent= on <var_n_gg:nullable TGg>*/;
+((void (*)(val*, val*))(var_n_lt->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_lt, self) /* parent= on <var_n_lt:nullable TLt>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AGgMethid#init_aggmethid for (self: Object, nullable TGg) */
-void VIRTUAL_parser_prod__AGgMethid__init_aggmethid(val* self, val* p0) {
-parser_prod__AGgMethid__init_aggmethid(self, p0);
+/* method parser_prod#ALtMethid#init_altmethid for (self: Object, nullable TLt) */
+void VIRTUAL_parser_prod__ALtMethid__init_altmethid(val* self, val* p0) {
+parser_prod__ALtMethid__init_altmethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AGgMethid#replace_child for (self: AGgMethid, ANode, nullable ANode) */
-void parser_prod__AGgMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#ALtMethid#replace_child for (self: ALtMethid, ANode, nullable ANode) */
+void parser_prod__ALtMethid__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 /* : TGg */;
+val* var /* : TLt */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -4112,12 +4353,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AGgMethid___n_gg].val; /* _n_gg on <self:AGgMethid> */
+var = self->attrs[COLOR_parser_nodes__ALtMethid___n_lt].val; /* _n_lt on <self:ALtMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_gg", "src/parser/parser_prod.nit", 3743);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_lt");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3629);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TGg>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TLt>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -4127,21 +4369,23 @@ 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 TGg */
-cltype = type_parser_nodes__TGg.color;
-idtype = type_parser_nodes__TGg.id;
+/* <var_new_child:nullable ANode(ANode)> isa TLt */
+cltype = type_parser_nodes__TLt.color;
+idtype = type_parser_nodes__TLt.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3746);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3632);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AGgMethid___n_gg].val = var_new_child; /* _n_gg on <self:AGgMethid> */
+self->attrs[COLOR_parser_nodes__ALtMethid___n_lt].val = var_new_child; /* _n_lt on <self:ALtMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3749);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3635);
 exit(1);
 }
 goto RET_LABEL;
@@ -4149,113 +4393,97 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AGgMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AGgMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AGgMethid__replace_child(self, p0, p1);
+/* method parser_prod#ALtMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__ALtMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__ALtMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#AGgMethid#n_gg= for (self: AGgMethid, TGg) */
-void parser_prod__AGgMethid__n_gg_61d(val* self, val* p0) {
-val* var_node /* var node: TGg */;
+/* method parser_prod#ALtMethid#n_lt= for (self: ALtMethid, TLt) */
+void parser_prod__ALtMethid__n_lt_61d(val* self, val* p0) {
+val* var_node /* var node: TLt */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AGgMethid___n_gg].val = var_node; /* _n_gg on <self:AGgMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TGg>*/;
+self->attrs[COLOR_parser_nodes__ALtMethid___n_lt].val = var_node; /* _n_lt on <self:ALtMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TLt>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AGgMethid#n_gg= for (self: Object, TGg) */
-void VIRTUAL_parser_prod__AGgMethid__n_gg_61d(val* self, val* p0) {
-parser_prod__AGgMethid__n_gg_61d(self, p0);
+/* method parser_prod#ALtMethid#n_lt= for (self: Object, TLt) */
+void VIRTUAL_parser_prod__ALtMethid__n_lt_61d(val* self, val* p0) {
+parser_prod__ALtMethid__n_lt_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AGgMethid#visit_all for (self: AGgMethid, Visitor) */
-void parser_prod__AGgMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#ALtMethid#visit_all for (self: ALtMethid, Visitor) */
+void parser_prod__ALtMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TGg */;
+val* var /* : TLt */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AGgMethid___n_gg].val; /* _n_gg on <self:AGgMethid> */
+var = self->attrs[COLOR_parser_nodes__ALtMethid___n_lt].val; /* _n_lt on <self:ALtMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_gg", "src/parser/parser_prod.nit", 3764);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_lt");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3650);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AGgMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AGgMethid__visit_all(val* self, val* p0) {
-parser_prod__AGgMethid__visit_all(self, p0);
+/* method parser_prod#ALtMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__ALtMethid__visit_all(val* self, val* p0) {
+parser_prod__ALtMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ABraMethid#empty_init for (self: ABraMethid) */
-void parser_prod__ABraMethid__empty_init(val* self) {
+/* method parser_prod#AGtMethid#empty_init for (self: AGtMethid) */
+void parser_prod__AGtMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#ABraMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ABraMethid__empty_init(val* self) {
-parser_prod__ABraMethid__empty_init(self);
+/* method parser_prod#AGtMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AGtMethid__empty_init(val* self) {
+parser_prod__AGtMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#ABraMethid#init_abramethid for (self: ABraMethid, nullable TObra, nullable TCbra) */
-void parser_prod__ABraMethid__init_abramethid(val* self, val* p0, val* p1) {
-val* var_n_obra /* var n_obra: nullable TObra */;
-val* var_n_cbra /* var n_cbra: nullable TCbra */;
-var_n_obra = p0;
-var_n_cbra = p1;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ABraMethid__empty_init]))(self) /* empty_init on <self:ABraMethid>*/;
-if (var_n_obra == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3776);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__ABraMethid___n_obra].val = var_n_obra; /* _n_obra on <self:ABraMethid> */
-if (var_n_obra == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3777);
-exit(1);
-} else {
-((void (*)(val*, val*))(var_n_obra->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_obra, self) /* parent= on <var_n_obra:nullable TObra>*/;
-}
-if (var_n_cbra == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3778);
+/* method parser_prod#AGtMethid#init_agtmethid for (self: AGtMethid, nullable TGt) */
+void parser_prod__AGtMethid__init_agtmethid(val* self, val* p0) {
+val* var_n_gt /* var n_gt: nullable TGt */;
+var_n_gt = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AGtMethid__empty_init]))(self) /* empty_init on <self:AGtMethid>*/;
+if (var_n_gt == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3661);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ABraMethid___n_cbra].val = var_n_cbra; /* _n_cbra on <self:ABraMethid> */
-if (var_n_cbra == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3779);
+self->attrs[COLOR_parser_nodes__AGtMethid___n_gt].val = var_n_gt; /* _n_gt on <self:AGtMethid> */
+if (var_n_gt == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3662);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_cbra->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_cbra, self) /* parent= on <var_n_cbra:nullable TCbra>*/;
+((void (*)(val*, val*))(var_n_gt->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_gt, self) /* parent= on <var_n_gt:nullable TGt>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ABraMethid#init_abramethid for (self: Object, nullable TObra, nullable TCbra) */
-void VIRTUAL_parser_prod__ABraMethid__init_abramethid(val* self, val* p0, val* p1) {
-parser_prod__ABraMethid__init_abramethid(self, p0, p1);
+/* method parser_prod#AGtMethid#init_agtmethid for (self: Object, nullable TGt) */
+void VIRTUAL_parser_prod__AGtMethid__init_agtmethid(val* self, val* p0) {
+parser_prod__AGtMethid__init_agtmethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ABraMethid#replace_child for (self: ABraMethid, ANode, nullable ANode) */
-void parser_prod__ABraMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AGtMethid#replace_child for (self: AGtMethid, ANode, nullable ANode) */
+void parser_prod__AGtMethid__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 /* : TObra */;
+val* var /* : TGt */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : TCbra */;
-short int var6 /* : Bool */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__ABraMethid___n_obra].val; /* _n_obra on <self:ABraMethid> */
+var = self->attrs[COLOR_parser_nodes__AGtMethid___n_gt].val; /* _n_gt on <self:AGtMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_obra", "src/parser/parser_prod.nit", 3784);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_gt");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3667);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TObra>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TGt>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -4265,56 +4493,23 @@ 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 TObra */
-cltype = type_parser_nodes__TObra.color;
-idtype = type_parser_nodes__TObra.id;
+/* <var_new_child:nullable ANode(ANode)> isa TGt */
+cltype = type_parser_nodes__TGt.color;
+idtype = type_parser_nodes__TGt.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3787);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__ABraMethid___n_obra].val = var_new_child; /* _n_obra on <self:ABraMethid> */
-} else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3790);
-exit(1);
-}
-goto RET_LABEL;
-} else {
-}
-var5 = self->attrs[COLOR_parser_nodes__ABraMethid___n_cbra].val; /* _n_cbra on <self:ABraMethid> */
-if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_cbra", "src/parser/parser_prod.nit", 3794);
-exit(1);
-}
-var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:TCbra>*/;
-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 TCbra */
-cltype10 = type_parser_nodes__TCbra.color;
-idtype11 = type_parser_nodes__TCbra.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3797);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3670);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ABraMethid___n_cbra].val = var_new_child; /* _n_cbra on <self:ABraMethid> */
+self->attrs[COLOR_parser_nodes__AGtMethid___n_gt].val = var_new_child; /* _n_gt on <self:AGtMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3800);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3673);
 exit(1);
 }
 goto RET_LABEL;
@@ -4322,99 +4517,82 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ABraMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__ABraMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ABraMethid__replace_child(self, p0, p1);
-RET_LABEL:;
-}
-/* method parser_prod#ABraMethid#n_obra= for (self: ABraMethid, TObra) */
-void parser_prod__ABraMethid__n_obra_61d(val* self, val* p0) {
-val* var_node /* var node: TObra */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__ABraMethid___n_obra].val = var_node; /* _n_obra on <self:ABraMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TObra>*/;
-RET_LABEL:;
-}
-/* method parser_prod#ABraMethid#n_obra= for (self: Object, TObra) */
-void VIRTUAL_parser_prod__ABraMethid__n_obra_61d(val* self, val* p0) {
-parser_prod__ABraMethid__n_obra_61d(self, p0);
+/* method parser_prod#AGtMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AGtMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AGtMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#ABraMethid#n_cbra= for (self: ABraMethid, TCbra) */
-void parser_prod__ABraMethid__n_cbra_61d(val* self, val* p0) {
-val* var_node /* var node: TCbra */;
+/* method parser_prod#AGtMethid#n_gt= for (self: AGtMethid, TGt) */
+void parser_prod__AGtMethid__n_gt_61d(val* self, val* p0) {
+val* var_node /* var node: TGt */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__ABraMethid___n_cbra].val = var_node; /* _n_cbra on <self:ABraMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TCbra>*/;
+self->attrs[COLOR_parser_nodes__AGtMethid___n_gt].val = var_node; /* _n_gt on <self:AGtMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TGt>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ABraMethid#n_cbra= for (self: Object, TCbra) */
-void VIRTUAL_parser_prod__ABraMethid__n_cbra_61d(val* self, val* p0) {
-parser_prod__ABraMethid__n_cbra_61d(self, p0);
+/* method parser_prod#AGtMethid#n_gt= for (self: Object, TGt) */
+void VIRTUAL_parser_prod__AGtMethid__n_gt_61d(val* self, val* p0) {
+parser_prod__AGtMethid__n_gt_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ABraMethid#visit_all for (self: ABraMethid, Visitor) */
-void parser_prod__ABraMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#AGtMethid#visit_all for (self: AGtMethid, Visitor) */
+void parser_prod__AGtMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TObra */;
-val* var1 /* : TCbra */;
+val* var /* : TGt */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__ABraMethid___n_obra].val; /* _n_obra on <self:ABraMethid> */
+var = self->attrs[COLOR_parser_nodes__AGtMethid___n_gt].val; /* _n_gt on <self:AGtMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_obra", "src/parser/parser_prod.nit", 3820);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_gt");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3688);
 exit(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__ABraMethid___n_cbra].val; /* _n_cbra on <self:ABraMethid> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_cbra", "src/parser/parser_prod.nit", 3821);
-exit(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ABraMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__ABraMethid__visit_all(val* self, val* p0) {
-parser_prod__ABraMethid__visit_all(self, p0);
+/* method parser_prod#AGtMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AGtMethid__visit_all(val* self, val* p0) {
+parser_prod__AGtMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AStarshipMethid#empty_init for (self: AStarshipMethid) */
-void parser_prod__AStarshipMethid__empty_init(val* self) {
+/* method parser_prod#ALlMethid#empty_init for (self: ALlMethid) */
+void parser_prod__ALlMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AStarshipMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AStarshipMethid__empty_init(val* self) {
-parser_prod__AStarshipMethid__empty_init(self);
+/* method parser_prod#ALlMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__ALlMethid__empty_init(val* self) {
+parser_prod__ALlMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#AStarshipMethid#init_astarshipmethid for (self: AStarshipMethid, nullable TStarship) */
-void parser_prod__AStarshipMethid__init_astarshipmethid(val* self, val* p0) {
-val* var_n_starship /* var n_starship: nullable TStarship */;
-var_n_starship = p0;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AStarshipMethid__empty_init]))(self) /* empty_init on <self:AStarshipMethid>*/;
-if (var_n_starship == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3832);
+/* method parser_prod#ALlMethid#init_allmethid for (self: ALlMethid, nullable TLl) */
+void parser_prod__ALlMethid__init_allmethid(val* self, val* p0) {
+val* var_n_ll /* var n_ll: nullable TLl */;
+var_n_ll = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__ALlMethid__empty_init]))(self) /* empty_init on <self:ALlMethid>*/;
+if (var_n_ll == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3699);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AStarshipMethid___n_starship].val = var_n_starship; /* _n_starship on <self:AStarshipMethid> */
-if (var_n_starship == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3833);
+self->attrs[COLOR_parser_nodes__ALlMethid___n_ll].val = var_n_ll; /* _n_ll on <self:ALlMethid> */
+if (var_n_ll == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3700);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_starship->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_starship, self) /* parent= on <var_n_starship:nullable TStarship>*/;
+((void (*)(val*, val*))(var_n_ll->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_ll, self) /* parent= on <var_n_ll:nullable TLl>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AStarshipMethid#init_astarshipmethid for (self: Object, nullable TStarship) */
-void VIRTUAL_parser_prod__AStarshipMethid__init_astarshipmethid(val* self, val* p0) {
-parser_prod__AStarshipMethid__init_astarshipmethid(self, p0);
+/* method parser_prod#ALlMethid#init_allmethid for (self: Object, nullable TLl) */
+void VIRTUAL_parser_prod__ALlMethid__init_allmethid(val* self, val* p0) {
+parser_prod__ALlMethid__init_allmethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AStarshipMethid#replace_child for (self: AStarshipMethid, ANode, nullable ANode) */
-void parser_prod__AStarshipMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#ALlMethid#replace_child for (self: ALlMethid, ANode, nullable ANode) */
+void parser_prod__ALlMethid__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 /* : TStarship */;
+val* var /* : TLl */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
@@ -4423,12 +4601,13 @@ int cltype;
 int idtype;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AStarshipMethid___n_starship].val; /* _n_starship on <self:AStarshipMethid> */
+var = self->attrs[COLOR_parser_nodes__ALlMethid___n_ll].val; /* _n_ll on <self:ALlMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_starship", "src/parser/parser_prod.nit", 3838);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_ll");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3705);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TStarship>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TLl>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -4438,21 +4617,23 @@ 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 TStarship */
-cltype = type_parser_nodes__TStarship.color;
-idtype = type_parser_nodes__TStarship.id;
+/* <var_new_child:nullable ANode(ANode)> isa TLl */
+cltype = type_parser_nodes__TLl.color;
+idtype = type_parser_nodes__TLl.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3841);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3708);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AStarshipMethid___n_starship].val = var_new_child; /* _n_starship on <self:AStarshipMethid> */
+self->attrs[COLOR_parser_nodes__ALlMethid___n_ll].val = var_new_child; /* _n_ll on <self:ALlMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3844);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3711);
 exit(1);
 }
 goto RET_LABEL;
@@ -4460,113 +4641,97 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AStarshipMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AStarshipMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AStarshipMethid__replace_child(self, p0, p1);
+/* method parser_prod#ALlMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__ALlMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__ALlMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#AStarshipMethid#n_starship= for (self: AStarshipMethid, TStarship) */
-void parser_prod__AStarshipMethid__n_starship_61d(val* self, val* p0) {
-val* var_node /* var node: TStarship */;
+/* method parser_prod#ALlMethid#n_ll= for (self: ALlMethid, TLl) */
+void parser_prod__ALlMethid__n_ll_61d(val* self, val* p0) {
+val* var_node /* var node: TLl */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AStarshipMethid___n_starship].val = var_node; /* _n_starship on <self:AStarshipMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TStarship>*/;
+self->attrs[COLOR_parser_nodes__ALlMethid___n_ll].val = var_node; /* _n_ll on <self:ALlMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TLl>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AStarshipMethid#n_starship= for (self: Object, TStarship) */
-void VIRTUAL_parser_prod__AStarshipMethid__n_starship_61d(val* self, val* p0) {
-parser_prod__AStarshipMethid__n_starship_61d(self, p0);
+/* method parser_prod#ALlMethid#n_ll= for (self: Object, TLl) */
+void VIRTUAL_parser_prod__ALlMethid__n_ll_61d(val* self, val* p0) {
+parser_prod__ALlMethid__n_ll_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AStarshipMethid#visit_all for (self: AStarshipMethid, Visitor) */
-void parser_prod__AStarshipMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#ALlMethid#visit_all for (self: ALlMethid, Visitor) */
+void parser_prod__ALlMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TStarship */;
+val* var /* : TLl */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AStarshipMethid___n_starship].val; /* _n_starship on <self:AStarshipMethid> */
+var = self->attrs[COLOR_parser_nodes__ALlMethid___n_ll].val; /* _n_ll on <self:ALlMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_starship", "src/parser/parser_prod.nit", 3859);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_ll");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3726);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AStarshipMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AStarshipMethid__visit_all(val* self, val* p0) {
-parser_prod__AStarshipMethid__visit_all(self, p0);
+/* method parser_prod#ALlMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__ALlMethid__visit_all(val* self, val* p0) {
+parser_prod__ALlMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AAssignMethid#empty_init for (self: AAssignMethid) */
-void parser_prod__AAssignMethid__empty_init(val* self) {
+/* method parser_prod#AGgMethid#empty_init for (self: AGgMethid) */
+void parser_prod__AGgMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AAssignMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AAssignMethid__empty_init(val* self) {
-parser_prod__AAssignMethid__empty_init(self);
+/* method parser_prod#AGgMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AGgMethid__empty_init(val* self) {
+parser_prod__AGgMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#AAssignMethid#init_aassignmethid for (self: AAssignMethid, nullable TId, nullable TAssign) */
-void parser_prod__AAssignMethid__init_aassignmethid(val* self, val* p0, val* p1) {
-val* var_n_id /* var n_id: nullable TId */;
-val* var_n_assign /* var n_assign: nullable TAssign */;
-var_n_id = p0;
-var_n_assign = p1;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AAssignMethid__empty_init]))(self) /* empty_init on <self:AAssignMethid>*/;
-if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3871);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AAssignMethid___n_id].val = var_n_id; /* _n_id on <self:AAssignMethid> */
-if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3872);
-exit(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 TId>*/;
-}
-if (var_n_assign == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3873);
+/* method parser_prod#AGgMethid#init_aggmethid for (self: AGgMethid, nullable TGg) */
+void parser_prod__AGgMethid__init_aggmethid(val* self, val* p0) {
+val* var_n_gg /* var n_gg: nullable TGg */;
+var_n_gg = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AGgMethid__empty_init]))(self) /* empty_init on <self:AGgMethid>*/;
+if (var_n_gg == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3737);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AAssignMethid___n_assign].val = var_n_assign; /* _n_assign on <self:AAssignMethid> */
-if (var_n_assign == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3874);
+self->attrs[COLOR_parser_nodes__AGgMethid___n_gg].val = var_n_gg; /* _n_gg on <self:AGgMethid> */
+if (var_n_gg == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3738);
 exit(1);
 } else {
-((void (*)(val*, val*))(var_n_assign->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_assign, self) /* parent= on <var_n_assign:nullable TAssign>*/;
+((void (*)(val*, val*))(var_n_gg->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_gg, self) /* parent= on <var_n_gg:nullable TGg>*/;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AAssignMethid#init_aassignmethid for (self: Object, nullable TId, nullable TAssign) */
-void VIRTUAL_parser_prod__AAssignMethid__init_aassignmethid(val* self, val* p0, val* p1) {
-parser_prod__AAssignMethid__init_aassignmethid(self, p0, p1);
+/* method parser_prod#AGgMethid#init_aggmethid for (self: Object, nullable TGg) */
+void VIRTUAL_parser_prod__AGgMethid__init_aggmethid(val* self, val* p0) {
+parser_prod__AGgMethid__init_aggmethid(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AAssignMethid#replace_child for (self: AAssignMethid, ANode, nullable ANode) */
-void parser_prod__AAssignMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AGgMethid#replace_child for (self: AGgMethid, ANode, nullable ANode) */
+void parser_prod__AGgMethid__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 /* : TId */;
+val* var /* : TGg */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : TAssign */;
-short int var6 /* : Bool */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AAssignMethid___n_id].val; /* _n_id on <self:AAssignMethid> */
+var = self->attrs[COLOR_parser_nodes__AGgMethid___n_gg].val; /* _n_gg on <self:AGgMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 3879);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_gg");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3743);
 exit(1);
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TId>*/;
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TGg>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -4576,56 +4741,23 @@ 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 TId */
-cltype = type_parser_nodes__TId.color;
-idtype = type_parser_nodes__TId.id;
+/* <var_new_child:nullable ANode(ANode)> isa TGg */
+cltype = type_parser_nodes__TGg.color;
+idtype = type_parser_nodes__TGg.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3882);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AAssignMethid___n_id].val = var_new_child; /* _n_id on <self:AAssignMethid> */
-} else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3885);
-exit(1);
-}
-goto RET_LABEL;
-} else {
-}
-var5 = self->attrs[COLOR_parser_nodes__AAssignMethid___n_assign].val; /* _n_assign on <self:AAssignMethid> */
-if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_assign", "src/parser/parser_prod.nit", 3889);
-exit(1);
-}
-var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:TAssign>*/;
-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 TAssign */
-cltype10 = type_parser_nodes__TAssign.color;
-idtype11 = type_parser_nodes__TAssign.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3892);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3746);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AAssignMethid___n_assign].val = var_new_child; /* _n_assign on <self:AAssignMethid> */
+self->attrs[COLOR_parser_nodes__AGgMethid___n_gg].val = var_new_child; /* _n_gg on <self:AGgMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3895);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3749);
 exit(1);
 }
 goto RET_LABEL;
@@ -4633,122 +4765,94 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#AAssignMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AAssignMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AAssignMethid__replace_child(self, p0, p1);
-RET_LABEL:;
-}
-/* method parser_prod#AAssignMethid#n_id= for (self: AAssignMethid, TId) */
-void parser_prod__AAssignMethid__n_id_61d(val* self, val* p0) {
-val* var_node /* var node: TId */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AAssignMethid___n_id].val = var_node; /* _n_id on <self:AAssignMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TId>*/;
-RET_LABEL:;
-}
-/* method parser_prod#AAssignMethid#n_id= for (self: Object, TId) */
-void VIRTUAL_parser_prod__AAssignMethid__n_id_61d(val* self, val* p0) {
-parser_prod__AAssignMethid__n_id_61d(self, p0);
+/* method parser_prod#AGgMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AGgMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AGgMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#AAssignMethid#n_assign= for (self: AAssignMethid, TAssign) */
-void parser_prod__AAssignMethid__n_assign_61d(val* self, val* p0) {
-val* var_node /* var node: TAssign */;
+/* method parser_prod#AGgMethid#n_gg= for (self: AGgMethid, TGg) */
+void parser_prod__AGgMethid__n_gg_61d(val* self, val* p0) {
+val* var_node /* var node: TGg */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AAssignMethid___n_assign].val = var_node; /* _n_assign on <self:AAssignMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TAssign>*/;
+self->attrs[COLOR_parser_nodes__AGgMethid___n_gg].val = var_node; /* _n_gg on <self:AGgMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TGg>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AAssignMethid#n_assign= for (self: Object, TAssign) */
-void VIRTUAL_parser_prod__AAssignMethid__n_assign_61d(val* self, val* p0) {
-parser_prod__AAssignMethid__n_assign_61d(self, p0);
+/* method parser_prod#AGgMethid#n_gg= for (self: Object, TGg) */
+void VIRTUAL_parser_prod__AGgMethid__n_gg_61d(val* self, val* p0) {
+parser_prod__AGgMethid__n_gg_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AAssignMethid#visit_all for (self: AAssignMethid, Visitor) */
-void parser_prod__AAssignMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#AGgMethid#visit_all for (self: AGgMethid, Visitor) */
+void parser_prod__AGgMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TId */;
-val* var1 /* : TAssign */;
+val* var /* : TGg */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AAssignMethid___n_id].val; /* _n_id on <self:AAssignMethid> */
+var = self->attrs[COLOR_parser_nodes__AGgMethid___n_gg].val; /* _n_gg on <self:AGgMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 3915);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_gg");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3764);
 exit(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__AAssignMethid___n_assign].val; /* _n_assign on <self:AAssignMethid> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_assign", "src/parser/parser_prod.nit", 3916);
-exit(1);
-}
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AAssignMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AAssignMethid__visit_all(val* self, val* p0) {
-parser_prod__AAssignMethid__visit_all(self, p0);
+/* method parser_prod#AGgMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AGgMethid__visit_all(val* self, val* p0) {
+parser_prod__AGgMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#empty_init for (self: ABraassignMethid) */
-void parser_prod__ABraassignMethid__empty_init(val* self) {
+/* method parser_prod#ABraMethid#empty_init for (self: ABraMethid) */
+void parser_prod__ABraMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ABraassignMethid__empty_init(val* self) {
-parser_prod__ABraassignMethid__empty_init(self);
+/* method parser_prod#ABraMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__ABraMethid__empty_init(val* self) {
+parser_prod__ABraMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#init_abraassignmethid for (self: ABraassignMethid, nullable TObra, nullable TCbra, nullable TAssign) */
-void parser_prod__ABraassignMethid__init_abraassignmethid(val* self, val* p0, val* p1, val* p2) {
+/* method parser_prod#ABraMethid#init_abramethid for (self: ABraMethid, nullable TObra, nullable TCbra) */
+void parser_prod__ABraMethid__init_abramethid(val* self, val* p0, val* p1) {
 val* var_n_obra /* var n_obra: nullable TObra */;
 val* var_n_cbra /* var n_cbra: nullable TCbra */;
-val* var_n_assign /* var n_assign: nullable TAssign */;
 var_n_obra = p0;
 var_n_cbra = p1;
-var_n_assign = p2;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ABraassignMethid__empty_init]))(self) /* empty_init on <self:ABraassignMethid>*/;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__ABraMethid__empty_init]))(self) /* empty_init on <self:ABraMethid>*/;
 if (var_n_obra == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3929);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3776);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ABraassignMethid___n_obra].val = var_n_obra; /* _n_obra on <self:ABraassignMethid> */
+self->attrs[COLOR_parser_nodes__ABraMethid___n_obra].val = var_n_obra; /* _n_obra on <self:ABraMethid> */
 if (var_n_obra == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3930);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3777);
 exit(1);
 } else {
 ((void (*)(val*, val*))(var_n_obra->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_obra, self) /* parent= on <var_n_obra:nullable TObra>*/;
 }
 if (var_n_cbra == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3931);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3778);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ABraassignMethid___n_cbra].val = var_n_cbra; /* _n_cbra on <self:ABraassignMethid> */
+self->attrs[COLOR_parser_nodes__ABraMethid___n_cbra].val = var_n_cbra; /* _n_cbra on <self:ABraMethid> */
 if (var_n_cbra == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3932);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3779);
 exit(1);
 } else {
 ((void (*)(val*, val*))(var_n_cbra->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_cbra, self) /* parent= on <var_n_cbra:nullable TCbra>*/;
 }
-if (var_n_assign == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 3933);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__ABraassignMethid___n_assign].val = var_n_assign; /* _n_assign on <self:ABraassignMethid> */
-if (var_n_assign == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 3934);
-exit(1);
-} else {
-((void (*)(val*, val*))(var_n_assign->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_assign, self) /* parent= on <var_n_assign:nullable TAssign>*/;
-}
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#init_abraassignmethid for (self: Object, nullable TObra, nullable TCbra, nullable TAssign) */
-void VIRTUAL_parser_prod__ABraassignMethid__init_abraassignmethid(val* self, val* p0, val* p1, val* p2) {
-parser_prod__ABraassignMethid__init_abraassignmethid(self, p0, p1, p2);
+/* method parser_prod#ABraMethid#init_abramethid for (self: Object, nullable TObra, nullable TCbra) */
+void VIRTUAL_parser_prod__ABraMethid__init_abramethid(val* self, val* p0, val* p1) {
+parser_prod__ABraMethid__init_abramethid(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#replace_child for (self: ABraassignMethid, ANode, nullable ANode) */
-void parser_prod__ABraassignMethid__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#ABraMethid#replace_child for (self: ABraMethid, ANode, nullable ANode) */
+void parser_prod__ABraMethid__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 /* : TObra */;
@@ -4765,18 +4869,12 @@ short int var8 /* : Bool */;
 short int var9 /* : Bool */;
 int cltype10;
 int idtype11;
-val* var12 /* : TAssign */;
-short int var13 /* : Bool */;
-val* var14 /* : null */;
-short int var15 /* : Bool */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__ABraassignMethid___n_obra].val; /* _n_obra on <self:ABraassignMethid> */
+var = self->attrs[COLOR_parser_nodes__ABraMethid___n_obra].val; /* _n_obra on <self:ABraMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_obra", "src/parser/parser_prod.nit", 3939);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_obra");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3784);
 exit(1);
 }
 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TObra>*/;
@@ -4798,20 +4896,23 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3942);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3787);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ABraassignMethid___n_obra].val = var_new_child; /* _n_obra on <self:ABraassignMethid> */
+self->attrs[COLOR_parser_nodes__ABraMethid___n_obra].val = var_new_child; /* _n_obra on <self:ABraMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3945);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3790);
 exit(1);
 }
 goto RET_LABEL;
 } else {
 }
-var5 = self->attrs[COLOR_parser_nodes__ABraassignMethid___n_cbra].val; /* _n_cbra on <self:ABraassignMethid> */
+var5 = self->attrs[COLOR_parser_nodes__ABraMethid___n_cbra].val; /* _n_cbra on <self:ABraMethid> */
 if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_cbra", "src/parser/parser_prod.nit", 3949);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_cbra");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3794);
 exit(1);
 }
 var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:TCbra>*/;
@@ -4833,47 +4934,14 @@ var9 = 0;
 var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
 if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3952);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__ABraassignMethid___n_cbra].val = var_new_child; /* _n_cbra on <self:ABraassignMethid> */
-} else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3955);
-exit(1);
-}
-goto RET_LABEL;
-} else {
-}
-var12 = self->attrs[COLOR_parser_nodes__ABraassignMethid___n_assign].val; /* _n_assign on <self:ABraassignMethid> */
-if (var12 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_assign", "src/parser/parser_prod.nit", 3959);
-exit(1);
-}
-var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var_old_child) /* == on <var12:TAssign>*/;
-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 TAssign */
-cltype17 = type_parser_nodes__TAssign.color;
-idtype18 = type_parser_nodes__TAssign.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 3962);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3797);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ABraassignMethid___n_assign].val = var_new_child; /* _n_assign on <self:ABraassignMethid> */
+self->attrs[COLOR_parser_nodes__ABraMethid___n_cbra].val = var_new_child; /* _n_cbra on <self:ABraMethid> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 3965);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3800);
 exit(1);
 }
 goto RET_LABEL;
@@ -4881,302 +4949,264 @@ goto RET_LABEL;
 }
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__ABraassignMethid__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ABraassignMethid__replace_child(self, p0, p1);
+/* method parser_prod#ABraMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__ABraMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__ABraMethid__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#n_obra= for (self: ABraassignMethid, TObra) */
-void parser_prod__ABraassignMethid__n_obra_61d(val* self, val* p0) {
+/* method parser_prod#ABraMethid#n_obra= for (self: ABraMethid, TObra) */
+void parser_prod__ABraMethid__n_obra_61d(val* self, val* p0) {
 val* var_node /* var node: TObra */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__ABraassignMethid___n_obra].val = var_node; /* _n_obra on <self:ABraassignMethid> */
+self->attrs[COLOR_parser_nodes__ABraMethid___n_obra].val = var_node; /* _n_obra on <self:ABraMethid> */
 ((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TObra>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#n_obra= for (self: Object, TObra) */
-void VIRTUAL_parser_prod__ABraassignMethid__n_obra_61d(val* self, val* p0) {
-parser_prod__ABraassignMethid__n_obra_61d(self, p0);
+/* method parser_prod#ABraMethid#n_obra= for (self: Object, TObra) */
+void VIRTUAL_parser_prod__ABraMethid__n_obra_61d(val* self, val* p0) {
+parser_prod__ABraMethid__n_obra_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#n_cbra= for (self: ABraassignMethid, TCbra) */
-void parser_prod__ABraassignMethid__n_cbra_61d(val* self, val* p0) {
+/* method parser_prod#ABraMethid#n_cbra= for (self: ABraMethid, TCbra) */
+void parser_prod__ABraMethid__n_cbra_61d(val* self, val* p0) {
 val* var_node /* var node: TCbra */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__ABraassignMethid___n_cbra].val = var_node; /* _n_cbra on <self:ABraassignMethid> */
+self->attrs[COLOR_parser_nodes__ABraMethid___n_cbra].val = var_node; /* _n_cbra on <self:ABraMethid> */
 ((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TCbra>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#n_cbra= for (self: Object, TCbra) */
-void VIRTUAL_parser_prod__ABraassignMethid__n_cbra_61d(val* self, val* p0) {
-parser_prod__ABraassignMethid__n_cbra_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ABraassignMethid#n_assign= for (self: ABraassignMethid, TAssign) */
-void parser_prod__ABraassignMethid__n_assign_61d(val* self, val* p0) {
-val* var_node /* var node: TAssign */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__ABraassignMethid___n_assign].val = var_node; /* _n_assign on <self:ABraassignMethid> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TAssign>*/;
-RET_LABEL:;
-}
-/* method parser_prod#ABraassignMethid#n_assign= for (self: Object, TAssign) */
-void VIRTUAL_parser_prod__ABraassignMethid__n_assign_61d(val* self, val* p0) {
-parser_prod__ABraassignMethid__n_assign_61d(self, p0);
+/* method parser_prod#ABraMethid#n_cbra= for (self: Object, TCbra) */
+void VIRTUAL_parser_prod__ABraMethid__n_cbra_61d(val* self, val* p0) {
+parser_prod__ABraMethid__n_cbra_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#visit_all for (self: ABraassignMethid, Visitor) */
-void parser_prod__ABraassignMethid__visit_all(val* self, val* p0) {
+/* method parser_prod#ABraMethid#visit_all for (self: ABraMethid, Visitor) */
+void parser_prod__ABraMethid__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
 val* var /* : TObra */;
 val* var1 /* : TCbra */;
-val* var2 /* : TAssign */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__ABraassignMethid___n_obra].val; /* _n_obra on <self:ABraassignMethid> */
+var = self->attrs[COLOR_parser_nodes__ABraMethid___n_obra].val; /* _n_obra on <self:ABraMethid> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_obra", "src/parser/parser_prod.nit", 3990);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_obra");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3820);
 exit(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__ABraassignMethid___n_cbra].val; /* _n_cbra on <self:ABraassignMethid> */
+var1 = self->attrs[COLOR_parser_nodes__ABraMethid___n_cbra].val; /* _n_cbra on <self:ABraMethid> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_cbra", "src/parser/parser_prod.nit", 3991);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_cbra");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3821);
 exit(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__ABraassignMethid___n_assign].val; /* _n_assign on <self:ABraassignMethid> */
-if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_assign", "src/parser/parser_prod.nit", 3992);
-exit(1);
+RET_LABEL:;
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var2) /* enter_visit on <var_v:Visitor>*/;
+/* method parser_prod#ABraMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__ABraMethid__visit_all(val* self, val* p0) {
+parser_prod__ABraMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#ABraassignMethid#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__ABraassignMethid__visit_all(val* self, val* p0) {
-parser_prod__ABraassignMethid__visit_all(self, p0);
+/* method parser_prod#AStarshipMethid#empty_init for (self: AStarshipMethid) */
+void parser_prod__AStarshipMethid__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#ASignature#empty_init for (self: ASignature) */
-void parser_prod__ASignature__empty_init(val* self) {
+/* method parser_prod#AStarshipMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AStarshipMethid__empty_init(val* self) {
+parser_prod__AStarshipMethid__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#ASignature#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__ASignature__empty_init(val* self) {
-parser_prod__ASignature__empty_init(self);
+/* method parser_prod#AStarshipMethid#init_astarshipmethid for (self: AStarshipMethid, nullable TStarship) */
+void parser_prod__AStarshipMethid__init_astarshipmethid(val* self, val* p0) {
+val* var_n_starship /* var n_starship: nullable TStarship */;
+var_n_starship = p0;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AStarshipMethid__empty_init]))(self) /* empty_init on <self:AStarshipMethid>*/;
+if (var_n_starship == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3832);
+exit(1);
+}
+self->attrs[COLOR_parser_nodes__AStarshipMethid___n_starship].val = var_n_starship; /* _n_starship on <self:AStarshipMethid> */
+if (var_n_starship == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3833);
+exit(1);
+} else {
+((void (*)(val*, val*))(var_n_starship->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_starship, self) /* parent= on <var_n_starship:nullable TStarship>*/;
+}
 RET_LABEL:;
 }
-/* method parser_prod#ASignature#init_asignature for (self: ASignature, nullable TOpar, Collection[Object], nullable TCpar, nullable AType, Collection[Object]) */
-void parser_prod__ASignature__init_asignature(val* self, val* p0, val* p1, val* p2, val* p3, val* p4) {
-val* var_n_opar /* var n_opar: nullable TOpar */;
-val* var_n_params /* var n_params: Collection[Object] */;
-val* var_n_cpar /* var n_cpar: nullable TCpar */;
-val* var_n_type /* var n_type: nullable AType */;
-val* var_n_closure_decls /* var n_closure_decls: Collection[Object] */;
-val* var /* : null */;
+/* method parser_prod#AStarshipMethid#init_astarshipmethid for (self: Object, nullable TStarship) */
+void VIRTUAL_parser_prod__AStarshipMethid__init_astarshipmethid(val* self, val* p0) {
+parser_prod__AStarshipMethid__init_astarshipmethid(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AStarshipMethid#replace_child for (self: AStarshipMethid, ANode, nullable ANode) */
+void parser_prod__AStarshipMethid__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 /* : TStarship */;
 short int var1 /* : Bool */;
-val* var2 /* : Iterator[nullable Object] */;
+val* var2 /* : null */;
 short int var3 /* : Bool */;
-val* var4 /* : nullable Object */;
-val* var_n /* var n: Object */;
-short int var5 /* : Bool */;
+short int var4 /* : Bool */;
 int cltype;
 int idtype;
-val* var6 /* : ANodes[AParam] */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
-val* var9 /* : null */;
-short int var10 /* : Bool */;
-val* var11 /* : Iterator[nullable Object] */;
-short int var12 /* : Bool */;
-val* var13 /* : nullable Object */;
-val* var_n14 /* var n: Object */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
-val* var18 /* : ANodes[AClosureDecl] */;
-var_n_opar = p0;
-var_n_params = p1;
-var_n_cpar = p2;
-var_n_type = p3;
-var_n_closure_decls = p4;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__ASignature__empty_init]))(self) /* empty_init on <self:ASignature>*/;
-self->attrs[COLOR_parser_nodes__ASignature___n_opar].val = var_n_opar; /* _n_opar on <self:ASignature> */
-var = NULL;
-if (var_n_opar == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
+var_old_child = p0;
+var_new_child = p1;
+var = self->attrs[COLOR_parser_nodes__AStarshipMethid___n_starship].val; /* _n_starship on <self:AStarshipMethid> */
+if (var == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_starship");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3838);
+exit(1);
 }
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TStarship>*/;
 if (var1){
-((void (*)(val*, val*))(var_n_opar->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_opar, self) /* parent= on <var_n_opar:nullable TOpar(TOpar)>*/;
+var2 = NULL;
+if (var_new_child == NULL) {
+var3 = 0; /* is null */
 } else {
+var3 = 1; /* arg is null and recv is not */
 }
-var2 = ((val* (*)(val*))(var_n_params->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_n_params) /* iterator on <var_n_params: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 AParam */
-cltype = type_parser_nodes__AParam.color;
-idtype = type_parser_nodes__AParam.id;
-if(cltype >= var_n->type->table_size) {
-var5 = 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 TStarship */
+cltype = type_parser_nodes__TStarship.color;
+idtype = type_parser_nodes__TStarship.id;
+if(cltype >= var_new_child->type->table_size) {
+var4 = 0;
 } else {
-var5 = var_n->type->type_table[cltype] == idtype;
+var4 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4012);
+if (!var4) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3841);
 exit(1);
 }
-var6 = self->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
-if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_params", "src/parser/parser_prod.nit", 4013);
+self->attrs[COLOR_parser_nodes__AStarshipMethid___n_starship].val = var_new_child; /* _n_starship on <self:AStarshipMethid> */
+} else {
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3844);
 exit(1);
 }
-((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var6, var_n) /* add on <var6:ANodes[AParam]>*/;
-((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n, self) /* parent= on <var_n:Object(AParam)>*/;
-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;
-self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val = var_n_cpar; /* _n_cpar on <self:ASignature> */
-var7 = NULL;
-if (var_n_cpar == NULL) {
-var8 = 0; /* is null */
+goto RET_LABEL;
 } else {
-var8 = 1; /* arg is null and recv is not */
 }
-if (var8){
-((void (*)(val*, val*))(var_n_cpar->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_cpar, self) /* parent= on <var_n_cpar:nullable TCpar(TCpar)>*/;
-} else {
+RET_LABEL:;
+}
+/* method parser_prod#AStarshipMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AStarshipMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AStarshipMethid__replace_child(self, p0, p1);
+RET_LABEL:;
+}
+/* method parser_prod#AStarshipMethid#n_starship= for (self: AStarshipMethid, TStarship) */
+void parser_prod__AStarshipMethid__n_starship_61d(val* self, val* p0) {
+val* var_node /* var node: TStarship */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AStarshipMethid___n_starship].val = var_node; /* _n_starship on <self:AStarshipMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TStarship>*/;
+RET_LABEL:;
+}
+/* method parser_prod#AStarshipMethid#n_starship= for (self: Object, TStarship) */
+void VIRTUAL_parser_prod__AStarshipMethid__n_starship_61d(val* self, val* p0) {
+parser_prod__AStarshipMethid__n_starship_61d(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AStarshipMethid#visit_all for (self: AStarshipMethid, Visitor) */
+void parser_prod__AStarshipMethid__visit_all(val* self, val* p0) {
+val* var_v /* var v: Visitor */;
+val* var /* : TStarship */;
+var_v = p0;
+var = self->attrs[COLOR_parser_nodes__AStarshipMethid___n_starship].val; /* _n_starship on <self:AStarshipMethid> */
+if (var == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_starship");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3859);
+exit(1);
+}
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
+RET_LABEL:;
+}
+/* method parser_prod#AStarshipMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AStarshipMethid__visit_all(val* self, val* p0) {
+parser_prod__AStarshipMethid__visit_all(self, p0);
+RET_LABEL:;
 }
-self->attrs[COLOR_parser_nodes__ASignature___n_type].val = var_n_type; /* _n_type on <self:ASignature> */
-var9 = NULL;
-if (var_n_type == NULL) {
-var10 = 0; /* is null */
-} else {
-var10 = 1; /* arg is null and recv is not */
+/* method parser_prod#AAssignMethid#empty_init for (self: AAssignMethid) */
+void parser_prod__AAssignMethid__empty_init(val* self) {
+RET_LABEL:;
 }
-if (var10){
-((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 {
+/* method parser_prod#AAssignMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AAssignMethid__empty_init(val* self) {
+parser_prod__AAssignMethid__empty_init(self);
+RET_LABEL:;
 }
-var11 = ((val* (*)(val*))(var_n_closure_decls->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_n_closure_decls) /* iterator on <var_n_closure_decls:Collection[Object]>*/;
-for(;;) {
-var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[nullable Object]>*/;
-if(!var12) break;
-var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
-var_n14 = var13;
-/* <var_n14:Object> isa AClosureDecl */
-cltype16 = type_parser_nodes__AClosureDecl.color;
-idtype17 = type_parser_nodes__AClosureDecl.id;
-if(cltype16 >= var_n14->type->table_size) {
-var15 = 0;
-} else {
-var15 = var_n14->type->type_table[cltype16] == idtype17;
+/* method parser_prod#AAssignMethid#init_aassignmethid for (self: AAssignMethid, nullable TId, nullable TAssign) */
+void parser_prod__AAssignMethid__init_aassignmethid(val* self, val* p0, val* p1) {
+val* var_n_id /* var n_id: nullable TId */;
+val* var_n_assign /* var n_assign: nullable TAssign */;
+var_n_id = p0;
+var_n_assign = p1;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AAssignMethid__empty_init]))(self) /* empty_init on <self:AAssignMethid>*/;
+if (var_n_id == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3871);
+exit(1);
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4025);
+self->attrs[COLOR_parser_nodes__AAssignMethid___n_id].val = var_n_id; /* _n_id on <self:AAssignMethid> */
+if (var_n_id == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3872);
 exit(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 TId>*/;
 }
-var18 = self->attrs[COLOR_parser_nodes__ASignature___n_closure_decls].val; /* _n_closure_decls on <self:ASignature> */
-if (var18 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_closure_decls", "src/parser/parser_prod.nit", 4026);
+if (var_n_assign == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3873);
 exit(1);
 }
-((void (*)(val*, val*))(var18->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var18, var_n14) /* add on <var18:ANodes[AClosureDecl]>*/;
-((void (*)(val*, val*))(var_n14->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n14, self) /* parent= on <var_n14:Object(AClosureDecl)>*/;
-CONTINUE_label19: (void)0;
-((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[nullable Object]>*/;
+self->attrs[COLOR_parser_nodes__AAssignMethid___n_assign].val = var_n_assign; /* _n_assign on <self:AAssignMethid> */
+if (var_n_assign == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3874);
+exit(1);
+} else {
+((void (*)(val*, val*))(var_n_assign->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_assign, self) /* parent= on <var_n_assign:nullable TAssign>*/;
 }
-BREAK_label19: (void)0;
 RET_LABEL:;
 }
-/* method parser_prod#ASignature#init_asignature for (self: Object, nullable TOpar, Collection[Object], nullable TCpar, nullable AType, Collection[Object]) */
-void VIRTUAL_parser_prod__ASignature__init_asignature(val* self, val* p0, val* p1, val* p2, val* p3, val* p4) {
-parser_prod__ASignature__init_asignature(self, p0, p1, p2, p3, p4);
+/* method parser_prod#AAssignMethid#init_aassignmethid for (self: Object, nullable TId, nullable TAssign) */
+void VIRTUAL_parser_prod__AAssignMethid__init_aassignmethid(val* self, val* p0, val* p1) {
+parser_prod__AAssignMethid__init_aassignmethid(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#ASignature#replace_child for (self: ASignature, ANode, nullable ANode) */
-void parser_prod__ASignature__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AAssignMethid#replace_child for (self: AAssignMethid, ANode, nullable ANode) */
+void parser_prod__AAssignMethid__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 TOpar */;
+val* var /* : TId */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : null */;
-val* var6 /* : Range[Int] */;
-long var7 /* : Int */;
-val* var8 /* : ANodes[AParam] */;
-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[AParam] */;
-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[AParam] */;
-val* var25 /* : ANodes[AParam] */;
-val* var26 /* : nullable TCpar */;
-short int var27 /* : Bool */;
-val* var28 /* : null */;
-short int var29 /* : Bool */;
-short int var30 /* : Bool */;
-int cltype31;
-int idtype32;
-val* var33 /* : null */;
-val* var34 /* : nullable AType */;
-short int var35 /* : Bool */;
-val* var36 /* : null */;
-short int var37 /* : Bool */;
-short int var38 /* : Bool */;
-int cltype39;
-int idtype40;
-val* var41 /* : null */;
-val* var42 /* : Range[Int] */;
-long var43 /* : Int */;
-val* var44 /* : ANodes[AClosureDecl] */;
-long var45 /* : Int */;
-val* var46 /* : Discrete */;
-val* var47 /* : Discrete */;
-val* var48 /* : Iterator[nullable Object] */;
-short int var49 /* : Bool */;
-val* var50 /* : nullable Object */;
-long var_i51 /* var i: Int */;
-long var52 /* : Int */;
-val* var53 /* : ANodes[AClosureDecl] */;
-val* var54 /* : nullable Object */;
-short int var55 /* : Bool */;
-val* var56 /* : null */;
-short int var57 /* : Bool */;
-short int var58 /* : Bool */;
-int cltype59;
-int idtype60;
-val* var61 /* : ANodes[AClosureDecl] */;
-val* var62 /* : ANodes[AClosureDecl] */;
+val* var5 /* : TAssign */;
+short int var6 /* : Bool */;
+val* var7 /* : null */;
+short int var8 /* : Bool */;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__ASignature___n_opar].val; /* _n_opar on <self:ASignature> */
+var = self->attrs[COLOR_parser_nodes__AAssignMethid___n_id].val; /* _n_id on <self:AAssignMethid> */
 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 TOpar>*/;
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3879);
+exit(1);
 }
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TId>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -5186,544 +5216,574 @@ 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 TOpar */
-cltype = type_parser_nodes__TOpar.color;
-idtype = type_parser_nodes__TOpar.id;
+/* <var_new_child:nullable ANode(ANode)> isa TId */
+cltype = type_parser_nodes__TId.color;
+idtype = type_parser_nodes__TId.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4036);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3882);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ASignature___n_opar].val = var_new_child; /* _n_opar on <self:ASignature> */
+self->attrs[COLOR_parser_nodes__AAssignMethid___n_id].val = var_new_child; /* _n_id on <self:AAssignMethid> */
 } else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__ASignature___n_opar].val = var5; /* _n_opar on <self:ASignature> */
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3885);
+exit(1);
 }
 goto RET_LABEL;
 } else {
 }
-var6 = NEW_range__Range(&type_range__Rangekernel__Int);
-var7 = 0;
-var8 = self->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
-if (var8 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_params", "src/parser/parser_prod.nit", 4043);
-exit(1);
-}
-var9 = ((long (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__length]))(var8) /* length on <var8:ANodes[AParam]>*/;
-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]>*/;
-CHECK_NEW_range__Range(var6);
-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__ASignature___n_params].val; /* _n_params on <self:ASignature> */
-if (var16 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_params", "src/parser/parser_prod.nit", 4044);
+var5 = self->attrs[COLOR_parser_nodes__AAssignMethid___n_assign].val; /* _n_assign on <self:AAssignMethid> */
+if (var5 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_assign");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3889);
 exit(1);
 }
-var17 = ((val* (*)(val*, long))(var16->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var16, var_i) /* [] on <var16:ANodes[AParam]>*/;
-var18 = ((short int (*)(val*, val*))(var17->class->vft[COLOR_kernel__Object___61d_61d]))(var17, var_old_child) /* == on <var17:nullable Object(AParam)>*/;
-if (var18){
-var19 = NULL;
+var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:TAssign>*/;
+if (var6){
+var7 = NULL;
 if (var_new_child == NULL) {
-var20 = 0; /* is null */
+var8 = 0; /* is null */
 } else {
-var20 = 1; /* arg is null and recv is not */
+var8 = 1; /* arg is null and recv is not */
 }
-if (var20){
-/* <var_new_child:nullable ANode(ANode)> isa AParam */
-cltype22 = type_parser_nodes__AParam.color;
-idtype23 = type_parser_nodes__AParam.id;
-if(cltype22 >= var_new_child->type->table_size) {
-var21 = 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 TAssign */
+cltype10 = type_parser_nodes__TAssign.color;
+idtype11 = type_parser_nodes__TAssign.id;
+if(cltype10 >= var_new_child->type->table_size) {
+var9 = 0;
 } else {
-var21 = var_new_child->type->type_table[cltype22] == idtype23;
+var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4046);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3892);
 exit(1);
 }
-var24 = self->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
-if (var24 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_params", "src/parser/parser_prod.nit", 4047);
+self->attrs[COLOR_parser_nodes__AAssignMethid___n_assign].val = var_new_child; /* _n_assign on <self:AAssignMethid> */
+} else {
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3895);
 exit(1);
 }
-((void (*)(val*, long, val*))(var24->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var24, var_i, var_new_child) /* []= on <var24:ANodes[AParam]>*/;
-((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(AParam)>*/;
+goto RET_LABEL;
 } else {
-var25 = self->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
-if (var25 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_params", "src/parser/parser_prod.nit", 4050);
+}
+RET_LABEL:;
+}
+/* method parser_prod#AAssignMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AAssignMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AAssignMethid__replace_child(self, p0, p1);
+RET_LABEL:;
+}
+/* method parser_prod#AAssignMethid#n_id= for (self: AAssignMethid, TId) */
+void parser_prod__AAssignMethid__n_id_61d(val* self, val* p0) {
+val* var_node /* var node: TId */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AAssignMethid___n_id].val = var_node; /* _n_id on <self:AAssignMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TId>*/;
+RET_LABEL:;
+}
+/* method parser_prod#AAssignMethid#n_id= for (self: Object, TId) */
+void VIRTUAL_parser_prod__AAssignMethid__n_id_61d(val* self, val* p0) {
+parser_prod__AAssignMethid__n_id_61d(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AAssignMethid#n_assign= for (self: AAssignMethid, TAssign) */
+void parser_prod__AAssignMethid__n_assign_61d(val* self, val* p0) {
+val* var_node /* var node: TAssign */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AAssignMethid___n_assign].val = var_node; /* _n_assign on <self:AAssignMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TAssign>*/;
+RET_LABEL:;
+}
+/* method parser_prod#AAssignMethid#n_assign= for (self: Object, TAssign) */
+void VIRTUAL_parser_prod__AAssignMethid__n_assign_61d(val* self, val* p0) {
+parser_prod__AAssignMethid__n_assign_61d(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#AAssignMethid#visit_all for (self: AAssignMethid, Visitor) */
+void parser_prod__AAssignMethid__visit_all(val* self, val* p0) {
+val* var_v /* var v: Visitor */;
+val* var /* : TId */;
+val* var1 /* : TAssign */;
+var_v = p0;
+var = self->attrs[COLOR_parser_nodes__AAssignMethid___n_id].val; /* _n_id on <self:AAssignMethid> */
+if (var == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3915);
 exit(1);
 }
-((void (*)(val*, long))(var25->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var25, var_i) /* remove_at on <var25:ANodes[AParam]>*/;
+((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__AAssignMethid___n_assign].val; /* _n_assign on <self:AAssignMethid> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_assign");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3916);
+exit(1);
 }
-goto RET_LABEL;
-} else {
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on <var_v:Visitor>*/;
+RET_LABEL:;
 }
-CONTINUE_label: (void)0;
-((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
+/* method parser_prod#AAssignMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AAssignMethid__visit_all(val* self, val* p0) {
+parser_prod__AAssignMethid__visit_all(self, p0);
+RET_LABEL:;
+}
+/* method parser_prod#ABraassignMethid#empty_init for (self: ABraassignMethid) */
+void parser_prod__ABraassignMethid__empty_init(val* self) {
+RET_LABEL:;
+}
+/* method parser_prod#ABraassignMethid#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__ABraassignMethid__empty_init(val* self) {
+parser_prod__ABraassignMethid__empty_init(self);
+RET_LABEL:;
+}
+/* method parser_prod#ABraassignMethid#init_abraassignmethid for (self: ABraassignMethid, nullable TObra, nullable TCbra, nullable TAssign) */
+void parser_prod__ABraassignMethid__init_abraassignmethid(val* self, val* p0, val* p1, val* p2) {
+val* var_n_obra /* var n_obra: nullable TObra */;
+val* var_n_cbra /* var n_cbra: nullable TCbra */;
+val* var_n_assign /* var n_assign: nullable TAssign */;
+var_n_obra = p0;
+var_n_cbra = p1;
+var_n_assign = p2;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__ABraassignMethid__empty_init]))(self) /* empty_init on <self:ABraassignMethid>*/;
+if (var_n_obra == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3929);
+exit(1);
 }
-BREAK_label: (void)0;
-var26 = self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val; /* _n_cpar on <self:ASignature> */
-if (var26 == NULL) {
-var27 = 0; /* <var_old_child:ANode> cannot be null */
+self->attrs[COLOR_parser_nodes__ABraassignMethid___n_obra].val = var_n_obra; /* _n_obra on <self:ABraassignMethid> */
+if (var_n_obra == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3930);
+exit(1);
 } else {
-var27 = ((short int (*)(val*, val*))(var26->class->vft[COLOR_kernel__Object___61d_61d]))(var26, var_old_child) /* == on <var26:nullable TCpar>*/;
+((void (*)(val*, val*))(var_n_obra->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_obra, self) /* parent= on <var_n_obra:nullable TObra>*/;
 }
-if (var27){
-var28 = NULL;
-if (var_new_child == NULL) {
-var29 = 0; /* is null */
-} else {
-var29 = 1; /* arg is null and recv is not */
+if (var_n_cbra == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3931);
+exit(1);
 }
-if (var29){
-((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 TCpar */
-cltype31 = type_parser_nodes__TCpar.color;
-idtype32 = type_parser_nodes__TCpar.id;
-if(cltype31 >= var_new_child->type->table_size) {
-var30 = 0;
+self->attrs[COLOR_parser_nodes__ABraassignMethid___n_cbra].val = var_n_cbra; /* _n_cbra on <self:ABraassignMethid> */
+if (var_n_cbra == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3932);
+exit(1);
 } else {
-var30 = var_new_child->type->type_table[cltype31] == idtype32;
+((void (*)(val*, val*))(var_n_cbra->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_cbra, self) /* parent= on <var_n_cbra:nullable TCbra>*/;
 }
-if (!var30) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4058);
+if (var_n_assign == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3933);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val = var_new_child; /* _n_cpar on <self:ASignature> */
+self->attrs[COLOR_parser_nodes__ABraassignMethid___n_assign].val = var_n_assign; /* _n_assign on <self:ABraassignMethid> */
+if (var_n_assign == NULL) {
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3934);
+exit(1);
 } else {
-var33 = NULL;
-self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val = var33; /* _n_cpar on <self:ASignature> */
+((void (*)(val*, val*))(var_n_assign->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_assign, self) /* parent= on <var_n_assign:nullable TAssign>*/;
 }
-goto RET_LABEL;
-} else {
+RET_LABEL:;
 }
-var34 = self->attrs[COLOR_parser_nodes__ASignature___n_type].val; /* _n_type on <self:ASignature> */
-if (var34 == NULL) {
-var35 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var35 = ((short int (*)(val*, val*))(var34->class->vft[COLOR_kernel__Object___61d_61d]))(var34, var_old_child) /* == on <var34:nullable AType>*/;
+/* method parser_prod#ABraassignMethid#init_abraassignmethid for (self: Object, nullable TObra, nullable TCbra, nullable TAssign) */
+void VIRTUAL_parser_prod__ABraassignMethid__init_abraassignmethid(val* self, val* p0, val* p1, val* p2) {
+parser_prod__ABraassignMethid__init_abraassignmethid(self, p0, p1, p2);
+RET_LABEL:;
 }
-if (var35){
-var36 = NULL;
+/* method parser_prod#ABraassignMethid#replace_child for (self: ABraassignMethid, ANode, nullable ANode) */
+void parser_prod__ABraassignMethid__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 /* : TObra */;
+short int var1 /* : Bool */;
+val* var2 /* : null */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
+int cltype;
+int idtype;
+val* var5 /* : TCbra */;
+short int var6 /* : Bool */;
+val* var7 /* : null */;
+short int var8 /* : Bool */;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
+val* var12 /* : TAssign */;
+short int var13 /* : Bool */;
+val* var14 /* : null */;
+short int var15 /* : Bool */;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
+var_old_child = p0;
+var_new_child = p1;
+var = self->attrs[COLOR_parser_nodes__ABraassignMethid___n_obra].val; /* _n_obra on <self:ABraassignMethid> */
+if (var == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_obra");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3939);
+exit(1);
+}
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TObra>*/;
+if (var1){
+var2 = NULL;
 if (var_new_child == NULL) {
-var37 = 0; /* is null */
+var3 = 0; /* is null */
 } else {
-var37 = 1; /* arg is null and recv is not */
+var3 = 1; /* arg is null and recv is not */
 }
-if (var37){
+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 AType */
-cltype39 = type_parser_nodes__AType.color;
-idtype40 = type_parser_nodes__AType.id;
-if(cltype39 >= var_new_child->type->table_size) {
-var38 = 0;
+/* <var_new_child:nullable ANode(ANode)> isa TObra */
+cltype = type_parser_nodes__TObra.color;
+idtype = type_parser_nodes__TObra.id;
+if(cltype >= var_new_child->type->table_size) {
+var4 = 0;
 } else {
-var38 = var_new_child->type->type_table[cltype39] == idtype40;
+var4 = var_new_child->type->type_table[cltype] == idtype;
 }
-if (!var38) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4068);
+if (!var4) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3942);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__ASignature___n_type].val = var_new_child; /* _n_type on <self:ASignature> */
+self->attrs[COLOR_parser_nodes__ABraassignMethid___n_obra].val = var_new_child; /* _n_obra on <self:ABraassignMethid> */
 } else {
-var41 = NULL;
-self->attrs[COLOR_parser_nodes__ASignature___n_type].val = var41; /* _n_type on <self:ASignature> */
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3945);
+exit(1);
 }
 goto RET_LABEL;
 } else {
 }
-var42 = NEW_range__Range(&type_range__Rangekernel__Int);
-var43 = 0;
-var44 = self->attrs[COLOR_parser_nodes__ASignature___n_closure_decls].val; /* _n_closure_decls on <self:ASignature> */
-if (var44 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_closure_decls", "src/parser/parser_prod.nit", 4075);
+var5 = self->attrs[COLOR_parser_nodes__ABraassignMethid___n_cbra].val; /* _n_cbra on <self:ABraassignMethid> */
+if (var5 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_cbra");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3949);
 exit(1);
 }
-var45 = ((long (*)(val*))(var44->class->vft[COLOR_abstract_collection__Collection__length]))(var44) /* length on <var44:ANodes[AClosureDecl]>*/;
-var46 = BOX_kernel__Int(var43); /* autobox from Int to Discrete */
-var47 = BOX_kernel__Int(var45); /* autobox from Int to Discrete */
-((void (*)(val*, val*, val*))(var42->class->vft[COLOR_range__Range__without_last]))(var42, var46, var47) /* without_last on <var42:Range[Int]>*/;
-CHECK_NEW_range__Range(var42);
-var48 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Collection__iterator]))(var42) /* iterator on <var42:Range[Int]>*/;
-for(;;) {
-var49 = ((short int (*)(val*))(var48->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var48) /* is_ok on <var48:Iterator[nullable Object]>*/;
-if(!var49) break;
-var50 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_collection__Iterator__item]))(var48) /* item on <var48:Iterator[nullable Object]>*/;
-var52 = ((struct instance_kernel__Int*)var50)->value; /* autounbox from nullable Object to Int */;
-var_i51 = var52;
-var53 = self->attrs[COLOR_parser_nodes__ASignature___n_closure_decls].val; /* _n_closure_decls on <self:ASignature> */
-if (var53 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_closure_decls", "src/parser/parser_prod.nit", 4076);
-exit(1);
-}
-var54 = ((val* (*)(val*, long))(var53->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var53, var_i51) /* [] on <var53:ANodes[AClosureDecl]>*/;
-var55 = ((short int (*)(val*, val*))(var54->class->vft[COLOR_kernel__Object___61d_61d]))(var54, var_old_child) /* == on <var54:nullable Object(AClosureDecl)>*/;
-if (var55){
-var56 = NULL;
+var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:TCbra>*/;
+if (var6){
+var7 = NULL;
 if (var_new_child == NULL) {
-var57 = 0; /* is null */
+var8 = 0; /* is null */
 } else {
-var57 = 1; /* arg is null and recv is not */
+var8 = 1; /* arg is null and recv is not */
 }
-if (var57){
-/* <var_new_child:nullable ANode(ANode)> isa AClosureDecl */
-cltype59 = type_parser_nodes__AClosureDecl.color;
-idtype60 = type_parser_nodes__AClosureDecl.id;
-if(cltype59 >= var_new_child->type->table_size) {
-var58 = 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 TCbra */
+cltype10 = type_parser_nodes__TCbra.color;
+idtype11 = type_parser_nodes__TCbra.id;
+if(cltype10 >= var_new_child->type->table_size) {
+var9 = 0;
 } else {
-var58 = var_new_child->type->type_table[cltype59] == idtype60;
-}
-if (!var58) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4078);
-exit(1);
+var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
-var61 = self->attrs[COLOR_parser_nodes__ASignature___n_closure_decls].val; /* _n_closure_decls on <self:ASignature> */
-if (var61 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_closure_decls", "src/parser/parser_prod.nit", 4079);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3952);
 exit(1);
 }
-((void (*)(val*, long, val*))(var61->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var61, var_i51, var_new_child) /* []= on <var61:ANodes[AClosureDecl]>*/;
-((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(AClosureDecl)>*/;
+self->attrs[COLOR_parser_nodes__ABraassignMethid___n_cbra].val = var_new_child; /* _n_cbra on <self:ABraassignMethid> */
 } else {
-var62 = self->attrs[COLOR_parser_nodes__ASignature___n_closure_decls].val; /* _n_closure_decls on <self:ASignature> */
-if (var62 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_closure_decls", "src/parser/parser_prod.nit", 4082);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3955);
 exit(1);
 }
-((void (*)(val*, long))(var62->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var62, var_i51) /* remove_at on <var62:ANodes[AClosureDecl]>*/;
-}
 goto RET_LABEL;
 } else {
 }
-CONTINUE_label63: (void)0;
-((void (*)(val*))(var48->class->vft[COLOR_abstract_collection__Iterator__next]))(var48) /* next on <var48:Iterator[nullable Object]>*/;
-}
-BREAK_label63: (void)0;
-RET_LABEL:;
-}
-/* method parser_prod#ASignature#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__ASignature__replace_child(val* self, val* p0, val* p1) {
-parser_prod__ASignature__replace_child(self, p0, p1);
-RET_LABEL:;
-}
-/* method parser_prod#ASignature#n_opar= for (self: ASignature, nullable TOpar) */
-void parser_prod__ASignature__n_opar_61d(val* self, val* p0) {
-val* var_node /* var node: nullable TOpar */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__ASignature___n_opar].val = var_node; /* _n_opar on <self:ASignature> */
-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 TOpar(TOpar)>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#ASignature#n_opar= for (self: Object, nullable TOpar) */
-void VIRTUAL_parser_prod__ASignature__n_opar_61d(val* self, val* p0) {
-parser_prod__ASignature__n_opar_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ASignature#n_cpar= for (self: ASignature, nullable TCpar) */
-void parser_prod__ASignature__n_cpar_61d(val* self, val* p0) {
-val* var_node /* var node: nullable TCpar */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val = var_node; /* _n_cpar on <self:ASignature> */
-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 TCpar(TCpar)>*/;
-} else {
-}
-RET_LABEL:;
-}
-/* method parser_prod#ASignature#n_cpar= for (self: Object, nullable TCpar) */
-void VIRTUAL_parser_prod__ASignature__n_cpar_61d(val* self, val* p0) {
-parser_prod__ASignature__n_cpar_61d(self, p0);
-RET_LABEL:;
+var12 = self->attrs[COLOR_parser_nodes__ABraassignMethid___n_assign].val; /* _n_assign on <self:ABraassignMethid> */
+if (var12 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_assign");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3959);
+exit(1);
 }
-/* method parser_prod#ASignature#n_type= for (self: ASignature, nullable AType) */
-void parser_prod__ASignature__n_type_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AType */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__ASignature___n_type].val = var_node; /* _n_type on <self:ASignature> */
-var = NULL;
-if (var_node == NULL) {
-var1 = 0; /* is null */
+var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var_old_child) /* == on <var12:TAssign>*/;
+if (var13){
+var14 = NULL;
+if (var_new_child == NULL) {
+var15 = 0; /* is null */
 } else {
-var1 = 1; /* arg is null and recv is not */
+var15 = 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 AType(AType)>*/;
+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 TAssign */
+cltype17 = type_parser_nodes__TAssign.color;
+idtype18 = type_parser_nodes__TAssign.id;
+if(cltype17 >= var_new_child->type->table_size) {
+var16 = 0;
 } else {
+var16 = var_new_child->type->type_table[cltype17] == idtype18;
 }
-RET_LABEL:;
-}
-/* method parser_prod#ASignature#n_type= for (self: Object, nullable AType) */
-void VIRTUAL_parser_prod__ASignature__n_type_61d(val* self, val* p0) {
-parser_prod__ASignature__n_type_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#ASignature#visit_all for (self: ASignature, Visitor) */
-void parser_prod__ASignature__visit_all(val* self, val* p0) {
-val* var_v /* var v: Visitor */;
-val* var /* : nullable TOpar */;
-val* var1 /* : null */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable TOpar */;
-val* var4 /* : ANodes[AParam] */;
-val* var5 /* : Iterator[nullable Object] */;
-short int var6 /* : Bool */;
-val* var7 /* : nullable Object */;
-val* var_n /* var n: AParam */;
-val* var8 /* : nullable TCpar */;
-val* var9 /* : null */;
-short int var10 /* : Bool */;
-val* var11 /* : nullable TCpar */;
-val* var12 /* : nullable AType */;
-val* var13 /* : null */;
-short int var14 /* : Bool */;
-val* var15 /* : nullable AType */;
-val* var16 /* : ANodes[AClosureDecl] */;
-val* var17 /* : Iterator[nullable Object] */;
-short int var18 /* : Bool */;
-val* var19 /* : nullable Object */;
-val* var_n20 /* var n: AClosureDecl */;
-var_v = p0;
-var = self->attrs[COLOR_parser_nodes__ASignature___n_opar].val; /* _n_opar on <self:ASignature> */
-var1 = NULL;
-if (var == NULL) {
-var2 = 0; /* is null */
-} else {
-var2 = 1; /* arg is null and recv is not */
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3962);
+exit(1);
 }
-if (var2){
-var3 = self->attrs[COLOR_parser_nodes__ASignature___n_opar].val; /* _n_opar on <self:ASignature> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4115);
+self->attrs[COLOR_parser_nodes__ABraassignMethid___n_assign].val = var_new_child; /* _n_assign on <self:ABraassignMethid> */
+} else {
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3965);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
+goto RET_LABEL;
 } else {
 }
-var4 = self->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_params", "src/parser/parser_prod.nit", 4117);
-exit(1);
+RET_LABEL:;
 }
-var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:ANodes[AParam]>*/;
-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]>*/;
+/* method parser_prod#ABraassignMethid#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__ABraassignMethid__replace_child(val* self, val* p0, val* p1) {
+parser_prod__ABraassignMethid__replace_child(self, p0, p1);
+RET_LABEL:;
 }
-BREAK_label: (void)0;
-var8 = self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val; /* _n_cpar on <self:ASignature> */
-var9 = NULL;
-if (var8 == NULL) {
-var10 = 0; /* is null */
-} else {
-var10 = 1; /* arg is null and recv is not */
+/* method parser_prod#ABraassignMethid#n_obra= for (self: ABraassignMethid, TObra) */
+void parser_prod__ABraassignMethid__n_obra_61d(val* self, val* p0) {
+val* var_node /* var node: TObra */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__ABraassignMethid___n_obra].val = var_node; /* _n_obra on <self:ABraassignMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TObra>*/;
+RET_LABEL:;
 }
-if (var10){
-var11 = self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val; /* _n_cpar on <self:ASignature> */
-if (var11 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4121);
-exit(1);
+/* method parser_prod#ABraassignMethid#n_obra= for (self: Object, TObra) */
+void VIRTUAL_parser_prod__ABraassignMethid__n_obra_61d(val* self, val* p0) {
+parser_prod__ABraassignMethid__n_obra_61d(self, p0);
+RET_LABEL:;
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var11) /* enter_visit on <var_v:Visitor>*/;
-} else {
+/* method parser_prod#ABraassignMethid#n_cbra= for (self: ABraassignMethid, TCbra) */
+void parser_prod__ABraassignMethid__n_cbra_61d(val* self, val* p0) {
+val* var_node /* var node: TCbra */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__ABraassignMethid___n_cbra].val = var_node; /* _n_cbra on <self:ABraassignMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TCbra>*/;
+RET_LABEL:;
 }
-var12 = self->attrs[COLOR_parser_nodes__ASignature___n_type].val; /* _n_type on <self:ASignature> */
-var13 = NULL;
-if (var12 == NULL) {
-var14 = 0; /* is null */
-} else {
-var14 = 1; /* arg is null and recv is not */
+/* method parser_prod#ABraassignMethid#n_cbra= for (self: Object, TCbra) */
+void VIRTUAL_parser_prod__ABraassignMethid__n_cbra_61d(val* self, val* p0) {
+parser_prod__ABraassignMethid__n_cbra_61d(self, p0);
+RET_LABEL:;
 }
-if (var14){
-var15 = self->attrs[COLOR_parser_nodes__ASignature___n_type].val; /* _n_type on <self:ASignature> */
-if (var15 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4124);
-exit(1);
+/* method parser_prod#ABraassignMethid#n_assign= for (self: ABraassignMethid, TAssign) */
+void parser_prod__ABraassignMethid__n_assign_61d(val* self, val* p0) {
+val* var_node /* var node: TAssign */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__ABraassignMethid___n_assign].val = var_node; /* _n_assign on <self:ABraassignMethid> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TAssign>*/;
+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#ABraassignMethid#n_assign= for (self: Object, TAssign) */
+void VIRTUAL_parser_prod__ABraassignMethid__n_assign_61d(val* self, val* p0) {
+parser_prod__ABraassignMethid__n_assign_61d(self, p0);
+RET_LABEL:;
 }
-var16 = self->attrs[COLOR_parser_nodes__ASignature___n_closure_decls].val; /* _n_closure_decls on <self:ASignature> */
-if (var16 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_closure_decls", "src/parser/parser_prod.nit", 4126);
+/* method parser_prod#ABraassignMethid#visit_all for (self: ABraassignMethid, Visitor) */
+void parser_prod__ABraassignMethid__visit_all(val* self, val* p0) {
+val* var_v /* var v: Visitor */;
+val* var /* : TObra */;
+val* var1 /* : TCbra */;
+val* var2 /* : TAssign */;
+var_v = p0;
+var = self->attrs[COLOR_parser_nodes__ABraassignMethid___n_obra].val; /* _n_obra on <self:ABraassignMethid> */
+if (var == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_obra");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3990);
 exit(1);
 }
-var17 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Collection__iterator]))(var16) /* iterator on <var16:ANodes[AClosureDecl]>*/;
-for(;;) {
-var18 = ((short int (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var17) /* is_ok on <var17:Iterator[nullable Object]>*/;
-if(!var18) break;
-var19 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__item]))(var17) /* item on <var17:Iterator[nullable Object]>*/;
-var_n20 = var19;
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_n20) /* enter_visit on <var_v:Visitor>*/;
-CONTINUE_label21: (void)0;
-((void (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__next]))(var17) /* next on <var17:Iterator[nullable Object]>*/;
+((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__ABraassignMethid___n_cbra].val; /* _n_cbra on <self:ABraassignMethid> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_cbra");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3991);
+exit(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__ABraassignMethid___n_assign].val; /* _n_assign on <self:ABraassignMethid> */
+if (var2 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_assign");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 3992);
+exit(1);
 }
-BREAK_label21: (void)0;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var2) /* enter_visit on <var_v:Visitor>*/;
 RET_LABEL:;
 }
-/* method parser_prod#ASignature#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__ASignature__visit_all(val* self, val* p0) {
-parser_prod__ASignature__visit_all(self, p0);
+/* method parser_prod#ABraassignMethid#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__ABraassignMethid__visit_all(val* self, val* p0) {
+parser_prod__ABraassignMethid__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AParam#empty_init for (self: AParam) */
-void parser_prod__AParam__empty_init(val* self) {
+/* method parser_prod#ASignature#empty_init for (self: ASignature) */
+void parser_prod__ASignature__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AParam#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AParam__empty_init(val* self) {
-parser_prod__AParam__empty_init(self);
+/* method parser_prod#ASignature#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__ASignature__empty_init(val* self) {
+parser_prod__ASignature__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#AParam#init_aparam for (self: AParam, nullable TId, nullable AType, nullable TDotdotdot, nullable AAnnotations) */
-void parser_prod__AParam__init_aparam(val* self, val* p0, val* p1, val* p2, val* p3) {
-val* var_n_id /* var n_id: nullable TId */;
+/* method parser_prod#ASignature#init_asignature for (self: ASignature, nullable TOpar, Collection[Object], nullable TCpar, nullable AType) */
+void parser_prod__ASignature__init_asignature(val* self, val* p0, val* p1, val* p2, val* p3) {
+val* var_n_opar /* var n_opar: nullable TOpar */;
+val* var_n_params /* var n_params: Collection[Object] */;
+val* var_n_cpar /* var n_cpar: nullable TCpar */;
 val* var_n_type /* var n_type: nullable AType */;
-val* var_n_dotdotdot /* var n_dotdotdot: nullable TDotdotdot */;
-val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
 val* var /* : null */;
 short int var1 /* : Bool */;
-val* var2 /* : null */;
+val* var2 /* : Iterator[nullable Object] */;
 short int var3 /* : Bool */;
-val* var4 /* : null */;
+val* var4 /* : nullable Object */;
+val* var_n /* var n: Object */;
 short int var5 /* : Bool */;
-var_n_id = p0;
-var_n_type = p1;
-var_n_dotdotdot = p2;
-var_n_annotations = p3;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AParam__empty_init]))(self) /* empty_init on <self:AParam>*/;
-if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4142);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AParam___n_id].val = var_n_id; /* _n_id on <self:AParam> */
-if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 4143);
-exit(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 TId>*/;
-}
-self->attrs[COLOR_parser_nodes__AParam___n_type].val = var_n_type; /* _n_type on <self:AParam> */
+int cltype;
+int idtype;
+val* var6 /* : ANodes[AParam] */;
+val* var7 /* : null */;
+short int var8 /* : Bool */;
+val* var9 /* : null */;
+short int var10 /* : Bool */;
+var_n_opar = p0;
+var_n_params = p1;
+var_n_cpar = p2;
+var_n_type = p3;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__ASignature__empty_init]))(self) /* empty_init on <self:ASignature>*/;
+self->attrs[COLOR_parser_nodes__ASignature___n_opar].val = var_n_opar; /* _n_opar on <self:ASignature> */
 var = NULL;
-if (var_n_type == NULL) {
+if (var_n_opar == NULL) {
 var1 = 0; /* is null */
 } else {
 var1 = 1; /* arg is null and recv is not */
 }
 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)>*/;
+((void (*)(val*, val*))(var_n_opar->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_opar, self) /* parent= on <var_n_opar:nullable TOpar(TOpar)>*/;
 } else {
 }
-self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val = var_n_dotdotdot; /* _n_dotdotdot on <self:AParam> */
-var2 = NULL;
-if (var_n_dotdotdot == NULL) {
-var3 = 0; /* is null */
+var2 = ((val* (*)(val*))(var_n_params->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_n_params) /* iterator on <var_n_params: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 AParam */
+cltype = type_parser_nodes__AParam.color;
+idtype = type_parser_nodes__AParam.id;
+if(cltype >= var_n->type->table_size) {
+var5 = 0;
 } else {
-var3 = 1; /* arg is null and recv is not */
+var5 = var_n->type->type_table[cltype] == idtype;
 }
-if (var3){
-((void (*)(val*, val*))(var_n_dotdotdot->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_dotdotdot, self) /* parent= on <var_n_dotdotdot:nullable TDotdotdot(TDotdotdot)>*/;
+if (!var5) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4011);
+exit(1);
+}
+var6 = self->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
+if (var6 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_params");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4012);
+exit(1);
+}
+((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var6, var_n) /* add on <var6:ANodes[AParam]>*/;
+((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n, self) /* parent= on <var_n:Object(AParam)>*/;
+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;
+self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val = var_n_cpar; /* _n_cpar on <self:ASignature> */
+var7 = NULL;
+if (var_n_cpar == NULL) {
+var8 = 0; /* is null */
 } else {
+var8 = 1; /* arg is null and recv is not */
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:AParam> */
-var4 = NULL;
-if (var_n_annotations == NULL) {
-var5 = 0; /* is null */
+if (var8){
+((void (*)(val*, val*))(var_n_cpar->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_cpar, self) /* parent= on <var_n_cpar:nullable TCpar(TCpar)>*/;
 } 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)>*/;
+self->attrs[COLOR_parser_nodes__ASignature___n_type].val = var_n_type; /* _n_type on <self:ASignature> */
+var9 = NULL;
+if (var_n_type == NULL) {
+var10 = 0; /* is null */
+} else {
+var10 = 1; /* arg is null and recv is not */
+}
+if (var10){
+((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 {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AParam#init_aparam for (self: Object, nullable TId, nullable AType, nullable TDotdotdot, nullable AAnnotations) */
-void VIRTUAL_parser_prod__AParam__init_aparam(val* self, val* p0, val* p1, val* p2, val* p3) {
-parser_prod__AParam__init_aparam(self, p0, p1, p2, p3);
+/* method parser_prod#ASignature#init_asignature for (self: Object, nullable TOpar, Collection[Object], nullable TCpar, nullable AType) */
+void VIRTUAL_parser_prod__ASignature__init_asignature(val* self, val* p0, val* p1, val* p2, val* p3) {
+parser_prod__ASignature__init_asignature(self, p0, p1, p2, p3);
 RET_LABEL:;
 }
-/* method parser_prod#AParam#replace_child for (self: AParam, ANode, nullable ANode) */
-void parser_prod__AParam__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#ASignature#replace_child for (self: ASignature, ANode, nullable ANode) */
+void parser_prod__ASignature__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 /* : TId */;
+val* var /* : nullable TOpar */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : nullable AType */;
-short int var6 /* : Bool */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
-val* var12 /* : null */;
-val* var13 /* : nullable TDotdotdot */;
-short int var14 /* : Bool */;
-val* var15 /* : null */;
-short int var16 /* : Bool */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
-val* var20 /* : null */;
-val* var21 /* : nullable AAnnotations */;
-short int var22 /* : Bool */;
-val* var23 /* : null */;
-short int var24 /* : Bool */;
-short int var25 /* : Bool */;
-int cltype26;
-int idtype27;
+val* var5 /* : null */;
+val* var6 /* : Range[Int] */;
+long var7 /* : Int */;
+val* var8 /* : ANodes[AParam] */;
+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[AParam] */;
+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[AParam] */;
+val* var25 /* : ANodes[AParam] */;
+val* var26 /* : nullable TCpar */;
+short int var27 /* : Bool */;
 val* var28 /* : null */;
+short int var29 /* : Bool */;
+short int var30 /* : Bool */;
+int cltype31;
+int idtype32;
+val* var33 /* : null */;
+val* var34 /* : nullable AType */;
+short int var35 /* : Bool */;
+val* var36 /* : null */;
+short int var37 /* : Bool */;
+short int var38 /* : Bool */;
+int cltype39;
+int idtype40;
+val* var41 /* : null */;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AParam___n_id].val; /* _n_id on <self:AParam> */
+var = self->attrs[COLOR_parser_nodes__ASignature___n_opar].val; /* _n_opar on <self:ASignature> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 4160);
-exit(1);
+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 TOpar>*/;
 }
-var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TId>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -5733,158 +5793,186 @@ 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 TId */
-cltype = type_parser_nodes__TId.color;
-idtype = type_parser_nodes__TId.id;
+/* <var_new_child:nullable ANode(ANode)> isa TOpar */
+cltype = type_parser_nodes__TOpar.color;
+idtype = type_parser_nodes__TOpar.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4163);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4030);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AParam___n_id].val = var_new_child; /* _n_id on <self:AParam> */
+self->attrs[COLOR_parser_nodes__ASignature___n_opar].val = var_new_child; /* _n_opar on <self:ASignature> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 4166);
-exit(1);
+var5 = NULL;
+self->attrs[COLOR_parser_nodes__ASignature___n_opar].val = var5; /* _n_opar on <self:ASignature> */
 }
 goto RET_LABEL;
 } else {
 }
-var5 = self->attrs[COLOR_parser_nodes__AParam___n_type].val; /* _n_type on <self:AParam> */
-if (var5 == NULL) {
-var6 = 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>*/;
+var6 = NEW_range__Range(&type_range__Rangekernel__Int);
+var7 = 0;
+var8 = self->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
+if (var8 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_params");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4037);
+exit(1);
 }
-if (var6){
-var7 = NULL;
+var9 = ((long (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__length]))(var8) /* length on <var8:ANodes[AParam]>*/;
+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]>*/;
+CHECK_NEW_range__Range(var6);
+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__ASignature___n_params].val; /* _n_params on <self:ASignature> */
+if (var16 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_params");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4038);
+exit(1);
+}
+var17 = ((val* (*)(val*, long))(var16->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var16, var_i) /* [] on <var16:ANodes[AParam]>*/;
+var18 = ((short int (*)(val*, val*))(var17->class->vft[COLOR_kernel__Object___61d_61d]))(var17, var_old_child) /* == on <var17:nullable Object(AParam)>*/;
+if (var18){
+var19 = NULL;
 if (var_new_child == NULL) {
-var8 = 0; /* is null */
+var20 = 0; /* is null */
 } else {
-var8 = 1; /* arg is null and recv is not */
+var20 = 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;
+if (var20){
+/* <var_new_child:nullable ANode(ANode)> isa AParam */
+cltype22 = type_parser_nodes__AParam.color;
+idtype23 = type_parser_nodes__AParam.id;
+if(cltype22 >= var_new_child->type->table_size) {
+var21 = 0;
 } else {
-var9 = var_new_child->type->type_table[cltype10] == idtype11;
+var21 = var_new_child->type->type_table[cltype22] == idtype23;
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4173);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4040);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AParam___n_type].val = var_new_child; /* _n_type on <self:AParam> */
+var24 = self->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
+if (var24 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_params");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4041);
+exit(1);
+}
+((void (*)(val*, long, val*))(var24->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var24, var_i, var_new_child) /* []= on <var24:ANodes[AParam]>*/;
+((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(AParam)>*/;
 } else {
-var12 = NULL;
-self->attrs[COLOR_parser_nodes__AParam___n_type].val = var12; /* _n_type on <self:AParam> */
+var25 = self->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
+if (var25 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_params");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4044);
+exit(1);
+}
+((void (*)(val*, long))(var25->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var25, var_i) /* remove_at on <var25:ANodes[AParam]>*/;
 }
 goto RET_LABEL;
 } else {
 }
-var13 = self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val; /* _n_dotdotdot on <self:AParam> */
-if (var13 == NULL) {
-var14 = 0; /* <var_old_child:ANode> cannot be null */
+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 = self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val; /* _n_cpar on <self:ASignature> */
+if (var26 == NULL) {
+var27 = 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 TDotdotdot>*/;
+var27 = ((short int (*)(val*, val*))(var26->class->vft[COLOR_kernel__Object___61d_61d]))(var26, var_old_child) /* == on <var26:nullable TCpar>*/;
 }
-if (var14){
-var15 = NULL;
+if (var27){
+var28 = NULL;
 if (var_new_child == NULL) {
-var16 = 0; /* is null */
+var29 = 0; /* is null */
 } else {
-var16 = 1; /* arg is null and recv is not */
+var29 = 1; /* arg is null and recv is not */
 }
-if (var16){
+if (var29){
 ((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 TDotdotdot */
-cltype18 = type_parser_nodes__TDotdotdot.color;
-idtype19 = type_parser_nodes__TDotdotdot.id;
-if(cltype18 >= var_new_child->type->table_size) {
-var17 = 0;
+/* <var_new_child:nullable ANode(ANode)> isa TCpar */
+cltype31 = type_parser_nodes__TCpar.color;
+idtype32 = type_parser_nodes__TCpar.id;
+if(cltype31 >= var_new_child->type->table_size) {
+var30 = 0;
 } else {
-var17 = var_new_child->type->type_table[cltype18] == idtype19;
+var30 = var_new_child->type->type_table[cltype31] == idtype32;
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4183);
+if (!var30) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4052);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val = var_new_child; /* _n_dotdotdot on <self:AParam> */
+self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val = var_new_child; /* _n_cpar on <self:ASignature> */
 } else {
-var20 = NULL;
-self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val = var20; /* _n_dotdotdot on <self:AParam> */
+var33 = NULL;
+self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val = var33; /* _n_cpar on <self:ASignature> */
 }
 goto RET_LABEL;
 } else {
 }
-var21 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AParam> */
-if (var21 == NULL) {
-var22 = 0; /* <var_old_child:ANode> cannot be null */
+var34 = self->attrs[COLOR_parser_nodes__ASignature___n_type].val; /* _n_type on <self:ASignature> */
+if (var34 == NULL) {
+var35 = 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 AAnnotations>*/;
+var35 = ((short int (*)(val*, val*))(var34->class->vft[COLOR_kernel__Object___61d_61d]))(var34, var_old_child) /* == on <var34:nullable AType>*/;
 }
-if (var22){
-var23 = NULL;
+if (var35){
+var36 = NULL;
 if (var_new_child == NULL) {
-var24 = 0; /* is null */
+var37 = 0; /* is null */
 } else {
-var24 = 1; /* arg is null and recv is not */
+var37 = 1; /* arg is null and recv is not */
 }
-if (var24){
+if (var37){
 ((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 */
-cltype26 = type_parser_nodes__AAnnotations.color;
-idtype27 = type_parser_nodes__AAnnotations.id;
-if(cltype26 >= var_new_child->type->table_size) {
-var25 = 0;
+/* <var_new_child:nullable ANode(ANode)> isa AType */
+cltype39 = type_parser_nodes__AType.color;
+idtype40 = type_parser_nodes__AType.id;
+if(cltype39 >= var_new_child->type->table_size) {
+var38 = 0;
 } else {
-var25 = var_new_child->type->type_table[cltype26] == idtype27;
+var38 = var_new_child->type->type_table[cltype39] == idtype40;
 }
-if (!var25) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4193);
+if (!var38) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4062);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:AParam> */
+self->attrs[COLOR_parser_nodes__ASignature___n_type].val = var_new_child; /* _n_type on <self:ASignature> */
 } else {
-var28 = NULL;
-self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var28; /* _n_annotations on <self:AParam> */
+var41 = NULL;
+self->attrs[COLOR_parser_nodes__ASignature___n_type].val = var41; /* _n_type on <self:ASignature> */
 }
 goto RET_LABEL;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AParam#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AParam__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AParam__replace_child(self, p0, p1);
-RET_LABEL:;
-}
-/* method parser_prod#AParam#n_id= for (self: AParam, TId) */
-void parser_prod__AParam__n_id_61d(val* self, val* p0) {
-val* var_node /* var node: TId */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AParam___n_id].val = var_node; /* _n_id on <self:AParam> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TId>*/;
-RET_LABEL:;
-}
-/* method parser_prod#AParam#n_id= for (self: Object, TId) */
-void VIRTUAL_parser_prod__AParam__n_id_61d(val* self, val* p0) {
-parser_prod__AParam__n_id_61d(self, p0);
+/* method parser_prod#ASignature#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__ASignature__replace_child(val* self, val* p0, val* p1) {
+parser_prod__ASignature__replace_child(self, p0, p1);
 RET_LABEL:;
 }
-/* method parser_prod#AParam#n_type= for (self: AParam, nullable AType) */
-void parser_prod__AParam__n_type_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AType */;
+/* method parser_prod#ASignature#n_opar= for (self: ASignature, nullable TOpar) */
+void parser_prod__ASignature__n_opar_61d(val* self, val* p0) {
+val* var_node /* var node: nullable TOpar */;
 val* var /* : null */;
 short int var1 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AParam___n_type].val = var_node; /* _n_type on <self:AParam> */
+self->attrs[COLOR_parser_nodes__ASignature___n_opar].val = var_node; /* _n_opar on <self:ASignature> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -5892,23 +5980,23 @@ var1 = 0; /* is null */
 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 AType(AType)>*/;
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TOpar(TOpar)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AParam#n_type= for (self: Object, nullable AType) */
-void VIRTUAL_parser_prod__AParam__n_type_61d(val* self, val* p0) {
-parser_prod__AParam__n_type_61d(self, p0);
+/* method parser_prod#ASignature#n_opar= for (self: Object, nullable TOpar) */
+void VIRTUAL_parser_prod__ASignature__n_opar_61d(val* self, val* p0) {
+parser_prod__ASignature__n_opar_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AParam#n_dotdotdot= for (self: AParam, nullable TDotdotdot) */
-void parser_prod__AParam__n_dotdotdot_61d(val* self, val* p0) {
-val* var_node /* var node: nullable TDotdotdot */;
+/* method parser_prod#ASignature#n_cpar= for (self: ASignature, nullable TCpar) */
+void parser_prod__ASignature__n_cpar_61d(val* self, val* p0) {
+val* var_node /* var node: nullable TCpar */;
 val* var /* : null */;
 short int var1 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val = var_node; /* _n_dotdotdot on <self:AParam> */
+self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val = var_node; /* _n_cpar on <self:ASignature> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -5916,23 +6004,23 @@ var1 = 0; /* is null */
 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 TDotdotdot(TDotdotdot)>*/;
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TCpar(TCpar)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AParam#n_dotdotdot= for (self: Object, nullable TDotdotdot) */
-void VIRTUAL_parser_prod__AParam__n_dotdotdot_61d(val* self, val* p0) {
-parser_prod__AParam__n_dotdotdot_61d(self, p0);
+/* method parser_prod#ASignature#n_cpar= for (self: Object, nullable TCpar) */
+void VIRTUAL_parser_prod__ASignature__n_cpar_61d(val* self, val* p0) {
+parser_prod__ASignature__n_cpar_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AParam#n_annotations= for (self: AParam, nullable AAnnotations) */
-void parser_prod__AParam__n_annotations_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AAnnotations */;
+/* method parser_prod#ASignature#n_type= for (self: ASignature, nullable AType) */
+void parser_prod__ASignature__n_type_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AType */;
 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:AParam> */
+self->attrs[COLOR_parser_nodes__ASignature___n_type].val = var_node; /* _n_type on <self:ASignature> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -5940,231 +6028,235 @@ var1 = 0; /* is null */
 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)>*/;
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AType(AType)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AParam#n_annotations= for (self: Object, nullable AAnnotations) */
-void VIRTUAL_parser_prod__AParam__n_annotations_61d(val* self, val* p0) {
-parser_prod__AParam__n_annotations_61d(self, p0);
+/* method parser_prod#ASignature#n_type= for (self: Object, nullable AType) */
+void VIRTUAL_parser_prod__ASignature__n_type_61d(val* self, val* p0) {
+parser_prod__ASignature__n_type_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AParam#visit_all for (self: AParam, Visitor) */
-void parser_prod__AParam__visit_all(val* self, val* p0) {
+/* method parser_prod#ASignature#visit_all for (self: ASignature, Visitor) */
+void parser_prod__ASignature__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : TId */;
-val* var1 /* : nullable AType */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-val* var4 /* : nullable AType */;
-val* var5 /* : nullable TDotdotdot */;
-val* var6 /* : null */;
-short int var7 /* : Bool */;
-val* var8 /* : nullable TDotdotdot */;
-val* var9 /* : nullable AAnnotations */;
-val* var10 /* : null */;
-short int var11 /* : Bool */;
-val* var12 /* : nullable AAnnotations */;
+val* var /* : nullable TOpar */;
+val* var1 /* : null */;
+short int var2 /* : Bool */;
+val* var3 /* : nullable TOpar */;
+val* var4 /* : ANodes[AParam] */;
+val* var5 /* : Iterator[nullable Object] */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Object */;
+val* var_n /* var n: AParam */;
+val* var8 /* : nullable TCpar */;
+val* var9 /* : null */;
+short int var10 /* : Bool */;
+val* var11 /* : nullable TCpar */;
+val* var12 /* : nullable AType */;
+val* var13 /* : null */;
+short int var14 /* : Bool */;
+val* var15 /* : nullable AType */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AParam___n_id].val; /* _n_id on <self:AParam> */
+var = self->attrs[COLOR_parser_nodes__ASignature___n_opar].val; /* _n_opar on <self:ASignature> */
+var1 = NULL;
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 4232);
+var2 = 0; /* is null */
+} else {
+var2 = 1; /* arg is null and recv is not */
+}
+if (var2){
+var3 = self->attrs[COLOR_parser_nodes__ASignature___n_opar].val; /* _n_opar on <self:ASignature> */
+if (var3 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4097);
 exit(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__AParam___n_type].val; /* _n_type on <self:AParam> */
-var2 = NULL;
-if (var1 == NULL) {
-var3 = 0; /* is null */
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
 } else {
-var3 = 1; /* arg is null and recv is not */
 }
-if (var3){
-var4 = self->attrs[COLOR_parser_nodes__AParam___n_type].val; /* _n_type on <self:AParam> */
+var4 = self->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
 if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4234);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_params");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4099);
 exit(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 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:ANodes[AParam]>*/;
+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]>*/;
 }
-var5 = self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val; /* _n_dotdotdot on <self:AParam> */
-var6 = NULL;
-if (var5 == NULL) {
-var7 = 0; /* is null */
+BREAK_label: (void)0;
+var8 = self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val; /* _n_cpar on <self:ASignature> */
+var9 = NULL;
+if (var8 == NULL) {
+var10 = 0; /* is null */
 } else {
-var7 = 1; /* arg is null and recv is not */
+var10 = 1; /* arg is null and recv is not */
 }
-if (var7){
-var8 = self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val; /* _n_dotdotdot on <self:AParam> */
-if (var8 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4237);
+if (var10){
+var11 = self->attrs[COLOR_parser_nodes__ASignature___n_cpar].val; /* _n_cpar on <self:ASignature> */
+if (var11 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4103);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var11) /* enter_visit on <var_v:Visitor>*/;
 } else {
 }
-var9 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AParam> */
-var10 = NULL;
-if (var9 == NULL) {
-var11 = 0; /* is null */
+var12 = self->attrs[COLOR_parser_nodes__ASignature___n_type].val; /* _n_type on <self:ASignature> */
+var13 = NULL;
+if (var12 == NULL) {
+var14 = 0; /* is null */
 } else {
-var11 = 1; /* arg is null and recv is not */
+var14 = 1; /* arg is null and recv is not */
 }
-if (var11){
-var12 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AParam> */
-if (var12 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4240);
+if (var14){
+var15 = self->attrs[COLOR_parser_nodes__ASignature___n_type].val; /* _n_type on <self:ASignature> */
+if (var15 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4106);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var12) /* enter_visit on <var_v:Visitor>*/;
+((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#AParam#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AParam__visit_all(val* self, val* p0) {
-parser_prod__AParam__visit_all(self, p0);
+/* method parser_prod#ASignature#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__ASignature__visit_all(val* self, val* p0) {
+parser_prod__ASignature__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#empty_init for (self: AClosureDecl) */
-void parser_prod__AClosureDecl__empty_init(val* self) {
+/* method parser_prod#AParam#empty_init for (self: AParam) */
+void parser_prod__AParam__empty_init(val* self) {
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AClosureDecl__empty_init(val* self) {
-parser_prod__AClosureDecl__empty_init(self);
+/* method parser_prod#AParam#empty_init for (self: Object) */
+void VIRTUAL_parser_prod__AParam__empty_init(val* self) {
+parser_prod__AParam__empty_init(self);
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#init_aclosuredecl for (self: AClosureDecl, nullable TKwbreak, nullable TBang, nullable TId, nullable ASignature, nullable AExpr) */
-void parser_prod__AClosureDecl__init_aclosuredecl(val* self, val* p0, val* p1, val* p2, val* p3, val* p4) {
-val* var_n_kwbreak /* var n_kwbreak: nullable TKwbreak */;
-val* var_n_bang /* var n_bang: nullable TBang */;
+/* method parser_prod#AParam#init_aparam for (self: AParam, nullable TId, nullable AType, nullable TDotdotdot, nullable AAnnotations) */
+void parser_prod__AParam__init_aparam(val* self, val* p0, val* p1, val* p2, val* p3) {
 val* var_n_id /* var n_id: nullable TId */;
-val* var_n_signature /* var n_signature: nullable ASignature */;
-val* var_n_expr /* var n_expr: nullable AExpr */;
+val* var_n_type /* var n_type: nullable AType */;
+val* var_n_dotdotdot /* var n_dotdotdot: nullable TDotdotdot */;
+val* var_n_annotations /* var n_annotations: nullable AAnnotations */;
 val* var /* : null */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
-var_n_kwbreak = p0;
-var_n_bang = p1;
-var_n_id = p2;
-var_n_signature = p3;
-var_n_expr = p4;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AClosureDecl__empty_init]))(self) /* empty_init on <self:AClosureDecl>*/;
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_kwbreak].val = var_n_kwbreak; /* _n_kwbreak on <self:AClosureDecl> */
-var = NULL;
-if (var_n_kwbreak == NULL) {
-var1 = 0; /* is null */
-} else {
-var1 = 1; /* arg is null and recv is not */
-}
-if (var1){
-((void (*)(val*, val*))(var_n_kwbreak->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwbreak, self) /* parent= on <var_n_kwbreak:nullable TKwbreak(TKwbreak)>*/;
-} else {
-}
-if (var_n_bang == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4260);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_bang].val = var_n_bang; /* _n_bang on <self:AClosureDecl> */
-if (var_n_bang == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 4261);
-exit(1);
-} else {
-((void (*)(val*, val*))(var_n_bang->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_bang, self) /* parent= on <var_n_bang:nullable TBang>*/;
-}
+val* var4 /* : null */;
+short int var5 /* : Bool */;
+var_n_id = p0;
+var_n_type = p1;
+var_n_dotdotdot = p2;
+var_n_annotations = p3;
+((void (*)(val*))(self->class->vft[COLOR_parser_prod__AParam__empty_init]))(self) /* empty_init on <self:AParam>*/;
 if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4262);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4121);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_id].val = var_n_id; /* _n_id on <self:AClosureDecl> */
+self->attrs[COLOR_parser_nodes__AParam___n_id].val = var_n_id; /* _n_id on <self:AParam> */
 if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 4263);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4122);
 exit(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 TId>*/;
 }
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4264);
-exit(1);
+self->attrs[COLOR_parser_nodes__AParam___n_type].val = var_n_type; /* _n_type on <self:AParam> */
+var = NULL;
+if (var_n_type == NULL) {
+var1 = 0; /* is null */
+} else {
+var1 = 1; /* arg is null and recv is not */
 }
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_signature].val = var_n_signature; /* _n_signature on <self:AClosureDecl> */
-if (var_n_signature == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 4265);
-exit(1);
+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 {
-((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__AClosureDecl___n_expr].val = var_n_expr; /* _n_expr on <self:AClosureDecl> */
+self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val = var_n_dotdotdot; /* _n_dotdotdot on <self:AParam> */
 var2 = NULL;
-if (var_n_expr == NULL) {
+if (var_n_dotdotdot == NULL) {
 var3 = 0; /* is null */
 } else {
 var3 = 1; /* arg is null and recv is not */
 }
 if (var3){
-((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)>*/;
+((void (*)(val*, val*))(var_n_dotdotdot->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_dotdotdot, self) /* parent= on <var_n_dotdotdot:nullable TDotdotdot(TDotdotdot)>*/;
+} else {
+}
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_n_annotations; /* _n_annotations on <self:AParam> */
+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#AClosureDecl#init_aclosuredecl for (self: Object, nullable TKwbreak, nullable TBang, nullable TId, nullable ASignature, nullable AExpr) */
-void VIRTUAL_parser_prod__AClosureDecl__init_aclosuredecl(val* self, val* p0, val* p1, val* p2, val* p3, val* p4) {
-parser_prod__AClosureDecl__init_aclosuredecl(self, p0, p1, p2, p3, p4);
+/* method parser_prod#AParam#init_aparam for (self: Object, nullable TId, nullable AType, nullable TDotdotdot, nullable AAnnotations) */
+void VIRTUAL_parser_prod__AParam__init_aparam(val* self, val* p0, val* p1, val* p2, val* p3) {
+parser_prod__AParam__init_aparam(self, p0, p1, p2, p3);
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#replace_child for (self: AClosureDecl, ANode, nullable ANode) */
-void parser_prod__AClosureDecl__replace_child(val* self, val* p0, val* p1) {
+/* method parser_prod#AParam#replace_child for (self: AParam, ANode, nullable ANode) */
+void parser_prod__AParam__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 TKwbreak */;
+val* var /* : TId */;
 short int var1 /* : Bool */;
 val* var2 /* : null */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
 int cltype;
 int idtype;
-val* var5 /* : null */;
-val* var6 /* : TBang */;
-short int var7 /* : Bool */;
-val* var8 /* : null */;
+val* var5 /* : nullable AType */;
+short int var6 /* : Bool */;
+val* var7 /* : null */;
+short int var8 /* : Bool */;
 short int var9 /* : Bool */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var13 /* : TId */;
+int cltype10;
+int idtype11;
+val* var12 /* : null */;
+val* var13 /* : nullable TDotdotdot */;
 short int var14 /* : Bool */;
 val* var15 /* : null */;
 short int var16 /* : Bool */;
 short int var17 /* : Bool */;
 int cltype18;
 int idtype19;
-val* var20 /* : ASignature */;
-short int var21 /* : Bool */;
-val* var22 /* : null */;
-short int var23 /* : Bool */;
+val* var20 /* : null */;
+val* var21 /* : nullable AAnnotations */;
+short int var22 /* : Bool */;
+val* var23 /* : null */;
 short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
-val* var27 /* : nullable AExpr */;
-short int var28 /* : Bool */;
-val* var29 /* : null */;
-short int var30 /* : Bool */;
-short int var31 /* : Bool */;
-int cltype32;
-int idtype33;
-val* var34 /* : null */;
+short int var25 /* : Bool */;
+int cltype26;
+int idtype27;
+val* var28 /* : null */;
 var_old_child = p0;
 var_new_child = p1;
-var = self->attrs[COLOR_parser_nodes__AClosureDecl___n_kwbreak].val; /* _n_kwbreak on <self:AClosureDecl> */
+var = self->attrs[COLOR_parser_nodes__AParam___n_id].val; /* _n_id on <self:AParam> */
 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 TKwbreak>*/;
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4139);
+exit(1);
 }
+var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TId>*/;
 if (var1){
 var2 = NULL;
 if (var_new_child == NULL) {
@@ -6174,67 +6266,70 @@ 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 TKwbreak */
-cltype = type_parser_nodes__TKwbreak.color;
-idtype = type_parser_nodes__TKwbreak.id;
+/* <var_new_child:nullable ANode(ANode)> isa TId */
+cltype = type_parser_nodes__TId.color;
+idtype = type_parser_nodes__TId.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4277);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4142);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_kwbreak].val = var_new_child; /* _n_kwbreak on <self:AClosureDecl> */
+self->attrs[COLOR_parser_nodes__AParam___n_id].val = var_new_child; /* _n_id on <self:AParam> */
 } else {
-var5 = NULL;
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_kwbreak].val = var5; /* _n_kwbreak on <self:AClosureDecl> */
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4145);
+exit(1);
 }
 goto RET_LABEL;
 } else {
 }
-var6 = self->attrs[COLOR_parser_nodes__AClosureDecl___n_bang].val; /* _n_bang on <self:AClosureDecl> */
-if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_bang", "src/parser/parser_prod.nit", 4284);
-exit(1);
+var5 = self->attrs[COLOR_parser_nodes__AParam___n_type].val; /* _n_type on <self:AParam> */
+if (var5 == NULL) {
+var6 = 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>*/;
 }
-var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:TBang>*/;
-if (var7){
-var8 = NULL;
+if (var6){
+var7 = NULL;
 if (var_new_child == NULL) {
-var9 = 0; /* is null */
+var8 = 0; /* is null */
 } else {
-var9 = 1; /* arg is null and recv is not */
+var8 = 1; /* arg is null and recv is not */
 }
-if (var9){
+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 TBang */
-cltype11 = type_parser_nodes__TBang.color;
-idtype12 = type_parser_nodes__TBang.id;
-if(cltype11 >= var_new_child->type->table_size) {
-var10 = 0;
+/* <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 {
-var10 = var_new_child->type->type_table[cltype11] == idtype12;
+var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4287);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4152);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_bang].val = var_new_child; /* _n_bang on <self:AClosureDecl> */
+self->attrs[COLOR_parser_nodes__AParam___n_type].val = var_new_child; /* _n_type on <self:AParam> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 4290);
-exit(1);
+var12 = NULL;
+self->attrs[COLOR_parser_nodes__AParam___n_type].val = var12; /* _n_type on <self:AParam> */
 }
 goto RET_LABEL;
 } else {
 }
-var13 = self->attrs[COLOR_parser_nodes__AClosureDecl___n_id].val; /* _n_id on <self:AClosureDecl> */
+var13 = self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val; /* _n_dotdotdot on <self:AParam> */
 if (var13 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 4294);
-exit(1);
+var14 = 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 TDotdotdot>*/;
 }
-var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_kernel__Object___61d_61d]))(var13, var_old_child) /* == on <var13:TId>*/;
 if (var14){
 var15 = NULL;
 if (var_new_child == NULL) {
@@ -6244,110 +6339,90 @@ 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 TId */
-cltype18 = type_parser_nodes__TId.color;
-idtype19 = type_parser_nodes__TId.id;
+/* <var_new_child:nullable ANode(ANode)> isa TDotdotdot */
+cltype18 = type_parser_nodes__TDotdotdot.color;
+idtype19 = type_parser_nodes__TDotdotdot.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 (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4297);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4162);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_id].val = var_new_child; /* _n_id on <self:AClosureDecl> */
+self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val = var_new_child; /* _n_dotdotdot on <self:AParam> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 4300);
-exit(1);
+var20 = NULL;
+self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val = var20; /* _n_dotdotdot on <self:AParam> */
 }
 goto RET_LABEL;
 } else {
 }
-var20 = self->attrs[COLOR_parser_nodes__AClosureDecl___n_signature].val; /* _n_signature on <self:AClosureDecl> */
-if (var20 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_signature", "src/parser/parser_prod.nit", 4304);
-exit(1);
+var21 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AParam> */
+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 AAnnotations>*/;
 }
-var21 = ((short int (*)(val*, val*))(var20->class->vft[COLOR_kernel__Object___61d_61d]))(var20, var_old_child) /* == on <var20:ASignature>*/;
-if (var21){
-var22 = NULL;
+if (var22){
+var23 = NULL;
 if (var_new_child == NULL) {
-var23 = 0; /* is null */
+var24 = 0; /* is null */
 } else {
-var23 = 1; /* arg is null and recv is not */
+var24 = 1; /* arg is null and recv is not */
 }
-if (var23){
+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 ASignature */
-cltype25 = type_parser_nodes__ASignature.color;
-idtype26 = type_parser_nodes__ASignature.id;
-if(cltype25 >= var_new_child->type->table_size) {
-var24 = 0;
+/* <var_new_child:nullable ANode(ANode)> isa AAnnotations */
+cltype26 = type_parser_nodes__AAnnotations.color;
+idtype27 = type_parser_nodes__AAnnotations.id;
+if(cltype26 >= var_new_child->type->table_size) {
+var25 = 0;
 } else {
-var24 = var_new_child->type->type_table[cltype25] == idtype26;
+var25 = var_new_child->type->type_table[cltype26] == idtype27;
 }
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4307);
+if (!var25) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4172);
 exit(1);
 }
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_signature].val = var_new_child; /* _n_signature on <self:AClosureDecl> */
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:AParam> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 4310);
-exit(1);
+var28 = NULL;
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var28; /* _n_annotations on <self:AParam> */
 }
 goto RET_LABEL;
 } else {
 }
-var27 = self->attrs[COLOR_parser_nodes__AClosureDecl___n_expr].val; /* _n_expr on <self:AClosureDecl> */
-if (var27 == NULL) {
-var28 = 0; /* <var_old_child:ANode> cannot be null */
-} else {
-var28 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var_old_child) /* == on <var27:nullable AExpr>*/;
-}
-if (var28){
-var29 = NULL;
-if (var_new_child == NULL) {
-var30 = 0; /* is null */
-} else {
-var30 = 1; /* arg is null and recv is not */
-}
-if (var30){
-((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 */
-cltype32 = type_parser_nodes__AExpr.color;
-idtype33 = type_parser_nodes__AExpr.id;
-if(cltype32 >= var_new_child->type->table_size) {
-var31 = 0;
-} else {
-var31 = var_new_child->type->type_table[cltype32] == idtype33;
-}
-if (!var31) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4317);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_expr].val = var_new_child; /* _n_expr on <self:AClosureDecl> */
-} else {
-var34 = NULL;
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_expr].val = var34; /* _n_expr on <self:AClosureDecl> */
+RET_LABEL:;
 }
-goto RET_LABEL;
-} else {
+/* method parser_prod#AParam#replace_child for (self: Object, ANode, nullable ANode) */
+void VIRTUAL_parser_prod__AParam__replace_child(val* self, val* p0, val* p1) {
+parser_prod__AParam__replace_child(self, p0, p1);
+RET_LABEL:;
 }
+/* method parser_prod#AParam#n_id= for (self: AParam, TId) */
+void parser_prod__AParam__n_id_61d(val* self, val* p0) {
+val* var_node /* var node: TId */;
+var_node = p0;
+self->attrs[COLOR_parser_nodes__AParam___n_id].val = var_node; /* _n_id on <self:AParam> */
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TId>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#replace_child for (self: Object, ANode, nullable ANode) */
-void VIRTUAL_parser_prod__AClosureDecl__replace_child(val* self, val* p0, val* p1) {
-parser_prod__AClosureDecl__replace_child(self, p0, p1);
+/* method parser_prod#AParam#n_id= for (self: Object, TId) */
+void VIRTUAL_parser_prod__AParam__n_id_61d(val* self, val* p0) {
+parser_prod__AParam__n_id_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#n_kwbreak= for (self: AClosureDecl, nullable TKwbreak) */
-void parser_prod__AClosureDecl__n_kwbreak_61d(val* self, val* p0) {
-val* var_node /* var node: nullable TKwbreak */;
+/* method parser_prod#AParam#n_type= for (self: AParam, nullable AType) */
+void parser_prod__AParam__n_type_61d(val* self, val* p0) {
+val* var_node /* var node: nullable AType */;
 val* var /* : null */;
 short int var1 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_kwbreak].val = var_node; /* _n_kwbreak on <self:AClosureDecl> */
+self->attrs[COLOR_parser_nodes__AParam___n_type].val = var_node; /* _n_type on <self:AParam> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -6355,62 +6430,47 @@ var1 = 0; /* is null */
 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 TKwbreak(TKwbreak)>*/;
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable AType(AType)>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#n_kwbreak= for (self: Object, nullable TKwbreak) */
-void VIRTUAL_parser_prod__AClosureDecl__n_kwbreak_61d(val* self, val* p0) {
-parser_prod__AClosureDecl__n_kwbreak_61d(self, p0);
-RET_LABEL:;
-}
-/* method parser_prod#AClosureDecl#n_bang= for (self: AClosureDecl, TBang) */
-void parser_prod__AClosureDecl__n_bang_61d(val* self, val* p0) {
-val* var_node /* var node: TBang */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_bang].val = var_node; /* _n_bang on <self:AClosureDecl> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TBang>*/;
-RET_LABEL:;
-}
-/* method parser_prod#AClosureDecl#n_bang= for (self: Object, TBang) */
-void VIRTUAL_parser_prod__AClosureDecl__n_bang_61d(val* self, val* p0) {
-parser_prod__AClosureDecl__n_bang_61d(self, p0);
+/* method parser_prod#AParam#n_type= for (self: Object, nullable AType) */
+void VIRTUAL_parser_prod__AParam__n_type_61d(val* self, val* p0) {
+parser_prod__AParam__n_type_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#n_id= for (self: AClosureDecl, TId) */
-void parser_prod__AClosureDecl__n_id_61d(val* self, val* p0) {
-val* var_node /* var node: TId */;
+/* method parser_prod#AParam#n_dotdotdot= for (self: AParam, nullable TDotdotdot) */
+void parser_prod__AParam__n_dotdotdot_61d(val* self, val* p0) {
+val* var_node /* var node: nullable TDotdotdot */;
+val* var /* : null */;
+short int var1 /* : Bool */;
 var_node = p0;
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_id].val = var_node; /* _n_id on <self:AClosureDecl> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:TId>*/;
-RET_LABEL:;
+self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val = var_node; /* _n_dotdotdot on <self:AParam> */
+var = NULL;
+if (var_node == NULL) {
+var1 = 0; /* is null */
+} else {
+var1 = 1; /* arg is null and recv is not */
 }
-/* method parser_prod#AClosureDecl#n_id= for (self: Object, TId) */
-void VIRTUAL_parser_prod__AClosureDecl__n_id_61d(val* self, val* p0) {
-parser_prod__AClosureDecl__n_id_61d(self, p0);
-RET_LABEL:;
+if (var1){
+((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:nullable TDotdotdot(TDotdotdot)>*/;
+} else {
 }
-/* method parser_prod#AClosureDecl#n_signature= for (self: AClosureDecl, ASignature) */
-void parser_prod__AClosureDecl__n_signature_61d(val* self, val* p0) {
-val* var_node /* var node: ASignature */;
-var_node = p0;
-self->attrs[COLOR_parser_nodes__AClosureDecl___n_signature].val = var_node; /* _n_signature on <self:AClosureDecl> */
-((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_node, self) /* parent= on <var_node:ASignature>*/;
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#n_signature= for (self: Object, ASignature) */
-void VIRTUAL_parser_prod__AClosureDecl__n_signature_61d(val* self, val* p0) {
-parser_prod__AClosureDecl__n_signature_61d(self, p0);
+/* method parser_prod#AParam#n_dotdotdot= for (self: Object, nullable TDotdotdot) */
+void VIRTUAL_parser_prod__AParam__n_dotdotdot_61d(val* self, val* p0) {
+parser_prod__AParam__n_dotdotdot_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#n_expr= for (self: AClosureDecl, nullable AExpr) */
-void parser_prod__AClosureDecl__n_expr_61d(val* self, val* p0) {
-val* var_node /* var node: nullable AExpr */;
+/* method parser_prod#AParam#n_annotations= for (self: AParam, nullable AAnnotations) */
+void parser_prod__AParam__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__AClosureDecl___n_expr].val = var_node; /* _n_expr on <self:AClosureDecl> */
+self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_node; /* _n_annotations on <self:AParam> */
 var = NULL;
 if (var_node == NULL) {
 var1 = 0; /* is null */
@@ -6418,86 +6478,96 @@ var1 = 0; /* is null */
 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 AExpr(AExpr)>*/;
+((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#AClosureDecl#n_expr= for (self: Object, nullable AExpr) */
-void VIRTUAL_parser_prod__AClosureDecl__n_expr_61d(val* self, val* p0) {
-parser_prod__AClosureDecl__n_expr_61d(self, p0);
+/* method parser_prod#AParam#n_annotations= for (self: Object, nullable AAnnotations) */
+void VIRTUAL_parser_prod__AParam__n_annotations_61d(val* self, val* p0) {
+parser_prod__AParam__n_annotations_61d(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#visit_all for (self: AClosureDecl, Visitor) */
-void parser_prod__AClosureDecl__visit_all(val* self, val* p0) {
+/* method parser_prod#AParam#visit_all for (self: AParam, Visitor) */
+void parser_prod__AParam__visit_all(val* self, val* p0) {
 val* var_v /* var v: Visitor */;
-val* var /* : nullable TKwbreak */;
-val* var1 /* : null */;
-short int var2 /* : Bool */;
-val* var3 /* : nullable TKwbreak */;
-val* var4 /* : TBang */;
-val* var5 /* : TId */;
-val* var6 /* : ASignature */;
-val* var7 /* : nullable AExpr */;
-val* var8 /* : null */;
-short int var9 /* : Bool */;
-val* var10 /* : nullable AExpr */;
+val* var /* : TId */;
+val* var1 /* : nullable AType */;
+val* var2 /* : null */;
+short int var3 /* : Bool */;
+val* var4 /* : nullable AType */;
+val* var5 /* : nullable TDotdotdot */;
+val* var6 /* : null */;
+short int var7 /* : Bool */;
+val* var8 /* : nullable TDotdotdot */;
+val* var9 /* : nullable AAnnotations */;
+val* var10 /* : null */;
+short int var11 /* : Bool */;
+val* var12 /* : nullable AAnnotations */;
 var_v = p0;
-var = self->attrs[COLOR_parser_nodes__AClosureDecl___n_kwbreak].val; /* _n_kwbreak on <self:AClosureDecl> */
-var1 = NULL;
+var = self->attrs[COLOR_parser_nodes__AParam___n_id].val; /* _n_id on <self:AParam> */
 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__AClosureDecl___n_kwbreak].val; /* _n_kwbreak on <self:AClosureDecl> */
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4360);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4211);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
+((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__AParam___n_type].val; /* _n_type on <self:AParam> */
+var2 = NULL;
+if (var1 == NULL) {
+var3 = 0; /* is null */
 } else {
+var3 = 1; /* arg is null and recv is not */
 }
-var4 = self->attrs[COLOR_parser_nodes__AClosureDecl___n_bang].val; /* _n_bang on <self:AClosureDecl> */
+if (var3){
+var4 = self->attrs[COLOR_parser_nodes__AParam___n_type].val; /* _n_type on <self:AParam> */
 if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_bang", "src/parser/parser_prod.nit", 4362);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4213);
 exit(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__AClosureDecl___n_id].val; /* _n_id on <self:AClosureDecl> */
+} else {
+}
+var5 = self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val; /* _n_dotdotdot on <self:AParam> */
+var6 = NULL;
 if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 4363);
-exit(1);
+var7 = 0; /* is null */
+} else {
+var7 = 1; /* arg is null and recv is not */
 }
-((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__AClosureDecl___n_signature].val; /* _n_signature on <self:AClosureDecl> */
-if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_signature", "src/parser/parser_prod.nit", 4364);
+if (var7){
+var8 = self->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val; /* _n_dotdotdot on <self:AParam> */
+if (var8 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4216);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var6) /* enter_visit on <var_v:Visitor>*/;
-var7 = self->attrs[COLOR_parser_nodes__AClosureDecl___n_expr].val; /* _n_expr on <self:AClosureDecl> */
-var8 = NULL;
-if (var7 == NULL) {
-var9 = 0; /* is null */
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
 } else {
-var9 = 1; /* arg is null and recv is not */
 }
-if (var9){
-var10 = self->attrs[COLOR_parser_nodes__AClosureDecl___n_expr].val; /* _n_expr on <self:AClosureDecl> */
-if (var10 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4366);
+var9 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AParam> */
+var10 = NULL;
+if (var9 == NULL) {
+var11 = 0; /* is null */
+} else {
+var11 = 1; /* arg is null and recv is not */
+}
+if (var11){
+var12 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AParam> */
+if (var12 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4219);
 exit(1);
 }
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var10) /* enter_visit on <var_v:Visitor>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var12) /* enter_visit on <var_v:Visitor>*/;
 } else {
 }
 RET_LABEL:;
 }
-/* method parser_prod#AClosureDecl#visit_all for (self: Object, Visitor) */
-void VIRTUAL_parser_prod__AClosureDecl__visit_all(val* self, val* p0) {
-parser_prod__AClosureDecl__visit_all(self, p0);
+/* method parser_prod#AParam#visit_all for (self: Object, Visitor) */
+void VIRTUAL_parser_prod__AParam__visit_all(val* self, val* p0) {
+parser_prod__AParam__visit_all(self, p0);
 RET_LABEL:;
 }
 /* method parser_prod#AType#empty_init for (self: AType) */
@@ -6544,12 +6614,14 @@ if (var1){
 } else {
 }
 if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4385);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4238);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AType___n_id].val = var_n_id; /* _n_id on <self:AType> */
 if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 4386);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4239);
 exit(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>*/;
@@ -6569,12 +6641,14 @@ var5 = 0;
 var5 = var_n->type->type_table[cltype] == idtype;
 }
 if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4388);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4241);
 exit(1);
 }
 var6 = self->attrs[COLOR_parser_nodes__AType___n_types].val; /* _n_types on <self:AType> */
 if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_types", "src/parser/parser_prod.nit", 4389);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_types");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4242);
 exit(1);
 }
 ((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var6, var_n) /* add on <var6:ANodes[AType]>*/;
@@ -6675,7 +6749,8 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4403);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4256);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AType___n_kwnullable].val = var_new_child; /* _n_kwnullable on <self:AType> */
@@ -6688,7 +6763,8 @@ goto RET_LABEL;
 }
 var6 = self->attrs[COLOR_parser_nodes__AType___n_id].val; /* _n_id on <self:AType> */
 if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 4410);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4263);
 exit(1);
 }
 var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var_old_child) /* == on <var6:TClassid>*/;
@@ -6710,12 +6786,14 @@ var10 = 0;
 var10 = var_new_child->type->type_table[cltype11] == idtype12;
 }
 if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4413);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4266);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AType___n_id].val = var_new_child; /* _n_id on <self:AType> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 4416);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4269);
 exit(1);
 }
 goto RET_LABEL;
@@ -6725,7 +6803,8 @@ var13 = NEW_range__Range(&type_range__Rangekernel__Int);
 var14 = 0;
 var15 = self->attrs[COLOR_parser_nodes__AType___n_types].val; /* _n_types on <self:AType> */
 if (var15 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_types", "src/parser/parser_prod.nit", 4420);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_types");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4273);
 exit(1);
 }
 var16 = ((long (*)(val*))(var15->class->vft[COLOR_abstract_collection__Collection__length]))(var15) /* length on <var15:ANodes[AType]>*/;
@@ -6742,7 +6821,8 @@ var22 = ((struct instance_kernel__Int*)var21)->value; /* autounbox from nullable
 var_i = var22;
 var23 = self->attrs[COLOR_parser_nodes__AType___n_types].val; /* _n_types on <self:AType> */
 if (var23 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_types", "src/parser/parser_prod.nit", 4421);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_types");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4274);
 exit(1);
 }
 var24 = ((val* (*)(val*, long))(var23->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var23, var_i) /* [] on <var23:ANodes[AType]>*/;
@@ -6764,12 +6844,14 @@ var28 = 0;
 var28 = var_new_child->type->type_table[cltype29] == idtype30;
 }
 if (!var28) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4423);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4276);
 exit(1);
 }
 var31 = self->attrs[COLOR_parser_nodes__AType___n_types].val; /* _n_types on <self:AType> */
 if (var31 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_types", "src/parser/parser_prod.nit", 4424);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_types");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4277);
 exit(1);
 }
 ((void (*)(val*, long, val*))(var31->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var31, var_i, var_new_child) /* []= on <var31:ANodes[AType]>*/;
@@ -6777,7 +6859,8 @@ exit(1);
 } else {
 var32 = self->attrs[COLOR_parser_nodes__AType___n_types].val; /* _n_types on <self:AType> */
 if (var32 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_types", "src/parser/parser_prod.nit", 4427);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_types");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4280);
 exit(1);
 }
 ((void (*)(val*, long))(var32->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var32, var_i) /* remove_at on <var32:ANodes[AType]>*/;
@@ -6813,7 +6896,8 @@ var37 = 0;
 var37 = var_new_child->type->type_table[cltype38] == idtype39;
 }
 if (!var37) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4435);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4288);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:AType> */
@@ -6920,7 +7004,8 @@ var2 = 1; /* arg is null and recv is not */
 if (var2){
 var3 = self->attrs[COLOR_parser_nodes__AType___n_kwnullable].val; /* _n_kwnullable on <self:AType> */
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4468);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4321);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
@@ -6928,13 +7013,15 @@ exit(1);
 }
 var4 = self->attrs[COLOR_parser_nodes__AType___n_id].val; /* _n_id on <self:AType> */
 if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 4470);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4323);
 exit(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__AType___n_types].val; /* _n_types on <self:AType> */
 if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_types", "src/parser/parser_prod.nit", 4471);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_types");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4324);
 exit(1);
 }
 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:ANodes[AType]>*/;
@@ -6958,7 +7045,8 @@ var11 = 1; /* arg is null and recv is not */
 if (var11){
 var12 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AType> */
 if (var12 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4475);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4328);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var12) /* enter_visit on <var_v:Visitor>*/;
@@ -6988,23 +7076,27 @@ var_n_kwlabel = p0;
 var_n_id = p1;
 ((void (*)(val*))(self->class->vft[COLOR_parser_prod__ALabel__empty_init]))(self) /* empty_init on <self:ALabel>*/;
 if (var_n_kwlabel == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4488);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4341);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ALabel___n_kwlabel].val = var_n_kwlabel; /* _n_kwlabel on <self:ALabel> */
 if (var_n_kwlabel == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 4489);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4342);
 exit(1);
 } else {
 ((void (*)(val*, val*))(var_n_kwlabel->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwlabel, self) /* parent= on <var_n_kwlabel:nullable TKwlabel>*/;
 }
 if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4490);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4343);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ALabel___n_id].val = var_n_id; /* _n_id on <self:ALabel> */
 if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 4491);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4344);
 exit(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 TId>*/;
@@ -7038,7 +7130,8 @@ var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__ALabel___n_kwlabel].val; /* _n_kwlabel on <self:ALabel> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwlabel", "src/parser/parser_prod.nit", 4496);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwlabel");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4349);
 exit(1);
 }
 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwlabel>*/;
@@ -7060,12 +7153,14 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4499);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4352);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ALabel___n_kwlabel].val = var_new_child; /* _n_kwlabel on <self:ALabel> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 4502);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4355);
 exit(1);
 }
 goto RET_LABEL;
@@ -7073,7 +7168,8 @@ goto RET_LABEL;
 }
 var5 = self->attrs[COLOR_parser_nodes__ALabel___n_id].val; /* _n_id on <self:ALabel> */
 if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 4506);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4359);
 exit(1);
 }
 var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:TId>*/;
@@ -7095,12 +7191,14 @@ var9 = 0;
 var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
 if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4509);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4362);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ALabel___n_id].val = var_new_child; /* _n_id on <self:ALabel> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 4512);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4365);
 exit(1);
 }
 goto RET_LABEL;
@@ -7147,13 +7245,15 @@ val* var1 /* : TId */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__ALabel___n_kwlabel].val; /* _n_kwlabel on <self:ALabel> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwlabel", "src/parser/parser_prod.nit", 4532);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwlabel");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4385);
 exit(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__ALabel___n_id].val; /* _n_id on <self:ALabel> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 4533);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4386);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on <var_v:Visitor>*/;
@@ -7205,12 +7305,14 @@ var3 = 0;
 var3 = var_n->type->type_table[cltype] == idtype;
 }
 if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4546);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4399);
 exit(1);
 }
 var4 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
 if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_expr", "src/parser/parser_prod.nit", 4547);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_expr");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4400);
 exit(1);
 }
 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, var_n) /* add on <var4:ANodes[AExpr]>*/;
@@ -7276,7 +7378,8 @@ var = NEW_range__Range(&type_range__Rangekernel__Int);
 var1 = 0;
 var2 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
 if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_expr", "src/parser/parser_prod.nit", 4558);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_expr");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4411);
 exit(1);
 }
 var3 = ((long (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__length]))(var2) /* length on <var2:ANodes[AExpr]>*/;
@@ -7293,7 +7396,8 @@ var9 = ((struct instance_kernel__Int*)var8)->value; /* autounbox from nullable O
 var_i = var9;
 var10 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
 if (var10 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_expr", "src/parser/parser_prod.nit", 4559);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_expr");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4412);
 exit(1);
 }
 var11 = ((val* (*)(val*, long))(var10->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var10, var_i) /* [] on <var10:ANodes[AExpr]>*/;
@@ -7315,12 +7419,14 @@ var15 = 0;
 var15 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4561);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4414);
 exit(1);
 }
 var16 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
 if (var16 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_expr", "src/parser/parser_prod.nit", 4562);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_expr");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4415);
 exit(1);
 }
 ((void (*)(val*, long, val*))(var16->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var16, var_i, var_new_child) /* []= on <var16:ANodes[AExpr]>*/;
@@ -7328,7 +7434,8 @@ exit(1);
 } else {
 var17 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
 if (var17 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_expr", "src/parser/parser_prod.nit", 4565);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_expr");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4418);
 exit(1);
 }
 ((void (*)(val*, long))(var17->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(var17, var_i) /* remove_at on <var17:ANodes[AExpr]>*/;
@@ -7364,7 +7471,8 @@ var22 = 0;
 var22 = var_new_child->type->type_table[cltype23] == idtype24;
 }
 if (!var22) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4573);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4426);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ABlockExpr___n_kwend].val = var_new_child; /* _n_kwend on <self:ABlockExpr> */
@@ -7421,7 +7529,8 @@ val* var7 /* : nullable TKwend */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_expr", "src/parser/parser_prod.nit", 4593);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_expr");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4446);
 exit(1);
 }
 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:ANodes[AExpr]>*/;
@@ -7445,7 +7554,8 @@ var6 = 1; /* arg is null and recv is not */
 if (var6){
 var7 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_kwend].val; /* _n_kwend on <self:ABlockExpr> */
 if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4597);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4450);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
@@ -7491,23 +7601,27 @@ var_n_expr = p4;
 var_n_annotations = p5;
 ((void (*)(val*))(self->class->vft[COLOR_parser_prod__AVardeclExpr__empty_init]))(self) /* empty_init on <self:AVardeclExpr>*/;
 if (var_n_kwvar == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4614);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4467);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AVardeclExpr___n_kwvar].val = var_n_kwvar; /* _n_kwvar on <self:AVardeclExpr> */
 if (var_n_kwvar == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 4615);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4468);
 exit(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>*/;
 }
 if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4616);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4469);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AVardeclExpr___n_id].val = var_n_id; /* _n_id on <self:AVardeclExpr> */
 if (var_n_id == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 4617);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4470);
 exit(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 TId>*/;
@@ -7617,7 +7731,8 @@ var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AVardeclExpr___n_kwvar].val; /* _n_kwvar on <self:AVardeclExpr> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwvar", "src/parser/parser_prod.nit", 4638);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwvar");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4491);
 exit(1);
 }
 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwvar>*/;
@@ -7639,12 +7754,14 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4641);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4494);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AVardeclExpr___n_kwvar].val = var_new_child; /* _n_kwvar on <self:AVardeclExpr> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 4644);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4497);
 exit(1);
 }
 goto RET_LABEL;
@@ -7652,7 +7769,8 @@ goto RET_LABEL;
 }
 var5 = self->attrs[COLOR_parser_nodes__AVardeclExpr___n_id].val; /* _n_id on <self:AVardeclExpr> */
 if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 4648);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4501);
 exit(1);
 }
 var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:TId>*/;
@@ -7674,12 +7792,14 @@ var9 = 0;
 var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
 if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4651);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4504);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AVardeclExpr___n_id].val = var_new_child; /* _n_id on <self:AVardeclExpr> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 4654);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4507);
 exit(1);
 }
 goto RET_LABEL;
@@ -7709,7 +7829,8 @@ var16 = 0;
 var16 = var_new_child->type->type_table[cltype17] == idtype18;
 }
 if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4661);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4514);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AVardeclExpr___n_type].val = var_new_child; /* _n_type on <self:AVardeclExpr> */
@@ -7744,7 +7865,8 @@ var24 = 0;
 var24 = var_new_child->type->type_table[cltype25] == idtype26;
 }
 if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4671);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4524);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AVardeclExpr___n_assign].val = var_new_child; /* _n_assign on <self:AVardeclExpr> */
@@ -7779,7 +7901,8 @@ var32 = 0;
 var32 = var_new_child->type->type_table[cltype33] == idtype34;
 }
 if (!var32) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4681);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4534);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AVardeclExpr___n_expr].val = var_new_child; /* _n_expr on <self:AVardeclExpr> */
@@ -7814,7 +7937,8 @@ var40 = 0;
 var40 = var_new_child->type->type_table[cltype41] == idtype42;
 }
 if (!var40) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4691);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4544);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__Prod___n_annotations].val = var_new_child; /* _n_annotations on <self:AVardeclExpr> */
@@ -7978,13 +8102,15 @@ val* var17 /* : nullable AAnnotations */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AVardeclExpr___n_kwvar].val; /* _n_kwvar on <self:AVardeclExpr> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwvar", "src/parser/parser_prod.nit", 4742);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwvar");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4595);
 exit(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__AVardeclExpr___n_id].val; /* _n_id on <self:AVardeclExpr> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_id", "src/parser/parser_prod.nit", 4743);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_id");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4596);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on <var_v:Visitor>*/;
@@ -7998,7 +8124,8 @@ var4 = 1; /* arg is null and recv is not */
 if (var4){
 var5 = self->attrs[COLOR_parser_nodes__AVardeclExpr___n_type].val; /* _n_type on <self:AVardeclExpr> */
 if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4745);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4598);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var5) /* enter_visit on <var_v:Visitor>*/;
@@ -8014,7 +8141,8 @@ var8 = 1; /* arg is null and recv is not */
 if (var8){
 var9 = self->attrs[COLOR_parser_nodes__AVardeclExpr___n_assign].val; /* _n_assign on <self:AVardeclExpr> */
 if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4748);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4601);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var9) /* enter_visit on <var_v:Visitor>*/;
@@ -8030,7 +8158,8 @@ var12 = 1; /* arg is null and recv is not */
 if (var12){
 var13 = self->attrs[COLOR_parser_nodes__AVardeclExpr___n_expr].val; /* _n_expr on <self:AVardeclExpr> */
 if (var13 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4751);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4604);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var13) /* enter_visit on <var_v:Visitor>*/;
@@ -8046,7 +8175,8 @@ var16 = 1; /* arg is null and recv is not */
 if (var16){
 var17 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:AVardeclExpr> */
 if (var17 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4754);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4607);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var17) /* enter_visit on <var_v:Visitor>*/;
@@ -8154,7 +8284,8 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4782);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4635);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AReturnExpr___n_kwreturn].val = var_new_child; /* _n_kwreturn on <self:AReturnExpr> */
@@ -8189,7 +8320,8 @@ var10 = 0;
 var10 = var_new_child->type->type_table[cltype11] == idtype12;
 }
 if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4792);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4645);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AReturnExpr___n_expr].val = var_new_child; /* _n_expr on <self:AReturnExpr> */
@@ -8277,7 +8409,8 @@ var2 = 1; /* arg is null and recv is not */
 if (var2){
 var3 = self->attrs[COLOR_parser_nodes__AReturnExpr___n_kwreturn].val; /* _n_kwreturn on <self:AReturnExpr> */
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4820);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4673);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
@@ -8293,7 +8426,8 @@ var6 = 1; /* arg is null and recv is not */
 if (var6){
 var7 = self->attrs[COLOR_parser_nodes__AReturnExpr___n_expr].val; /* _n_expr on <self:AReturnExpr> */
 if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4823);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4676);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
@@ -8329,12 +8463,14 @@ var_n_label = p1;
 var_n_expr = p2;
 ((void (*)(val*))(self->class->vft[COLOR_parser_prod__ABreakExpr__empty_init]))(self) /* empty_init on <self:ABreakExpr>*/;
 if (var_n_kwbreak == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4837);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4690);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ABreakExpr___n_kwbreak].val = var_n_kwbreak; /* _n_kwbreak on <self:ABreakExpr> */
 if (var_n_kwbreak == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 4838);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4691);
 exit(1);
 } else {
 ((void (*)(val*, val*))(var_n_kwbreak->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwbreak, self) /* parent= on <var_n_kwbreak:nullable TKwbreak>*/;
@@ -8399,7 +8535,8 @@ var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__ABreakExpr___n_kwbreak].val; /* _n_kwbreak on <self:ABreakExpr> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwbreak", "src/parser/parser_prod.nit", 4851);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwbreak");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4704);
 exit(1);
 }
 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwbreak>*/;
@@ -8421,12 +8558,14 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4854);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4707);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ABreakExpr___n_kwbreak].val = var_new_child; /* _n_kwbreak on <self:ABreakExpr> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 4857);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4710);
 exit(1);
 }
 goto RET_LABEL;
@@ -8456,7 +8595,8 @@ var9 = 0;
 var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
 if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4864);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4717);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ALabelable___n_label].val = var_new_child; /* _n_label on <self:ABreakExpr> */
@@ -8491,7 +8631,8 @@ var17 = 0;
 var17 = var_new_child->type->type_table[cltype18] == idtype19;
 }
 if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4874);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4727);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ABreakExpr___n_expr].val = var_new_child; /* _n_expr on <self:ABreakExpr> */
@@ -8585,7 +8726,8 @@ val* var8 /* : nullable AExpr */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__ABreakExpr___n_kwbreak].val; /* _n_kwbreak on <self:ABreakExpr> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwbreak", "src/parser/parser_prod.nit", 4906);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwbreak");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4759);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
@@ -8599,7 +8741,8 @@ var3 = 1; /* arg is null and recv is not */
 if (var3){
 var4 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on <self:ABreakExpr> */
 if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4908);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4761);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var4) /* enter_visit on <var_v:Visitor>*/;
@@ -8615,7 +8758,8 @@ var7 = 1; /* arg is null and recv is not */
 if (var7){
 var8 = self->attrs[COLOR_parser_nodes__ABreakExpr___n_expr].val; /* _n_expr on <self:ABreakExpr> */
 if (var8 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4911);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4764);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
@@ -8643,12 +8787,14 @@ val* var_n_kwabort /* var n_kwabort: nullable TKwabort */;
 var_n_kwabort = p0;
 ((void (*)(val*))(self->class->vft[COLOR_parser_prod__AAbortExpr__empty_init]))(self) /* empty_init on <self:AAbortExpr>*/;
 if (var_n_kwabort == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 4923);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4776);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AAbortExpr___n_kwabort].val = var_n_kwabort; /* _n_kwabort on <self:AAbortExpr> */
 if (var_n_kwabort == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 4924);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4777);
 exit(1);
 } else {
 ((void (*)(val*, val*))(var_n_kwabort->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwabort, self) /* parent= on <var_n_kwabort:nullable TKwabort>*/;
@@ -8675,7 +8821,8 @@ var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AAbortExpr___n_kwabort].val; /* _n_kwabort on <self:AAbortExpr> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwabort", "src/parser/parser_prod.nit", 4929);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwabort");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4782);
 exit(1);
 }
 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwabort>*/;
@@ -8697,12 +8844,14 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4932);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4785);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AAbortExpr___n_kwabort].val = var_new_child; /* _n_kwabort on <self:AAbortExpr> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 4935);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4788);
 exit(1);
 }
 goto RET_LABEL;
@@ -8735,7 +8884,8 @@ val* var /* : TKwabort */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AAbortExpr___n_kwabort].val; /* _n_kwabort on <self:AAbortExpr> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwabort", "src/parser/parser_prod.nit", 4950);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwabort");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4803);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
@@ -8864,7 +9014,8 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4982);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4835);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AContinueExpr___n_kwcontinue].val = var_new_child; /* _n_kwcontinue on <self:AContinueExpr> */
@@ -8899,7 +9050,8 @@ var10 = 0;
 var10 = var_new_child->type->type_table[cltype11] == idtype12;
 }
 if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 4992);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4845);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ALabelable___n_label].val = var_new_child; /* _n_label on <self:AContinueExpr> */
@@ -8934,7 +9086,8 @@ var18 = 0;
 var18 = var_new_child->type->type_table[cltype19] == idtype20;
 }
 if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 5002);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4855);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AContinueExpr___n_expr].val = var_new_child; /* _n_expr on <self:AContinueExpr> */
@@ -9050,7 +9203,8 @@ var2 = 1; /* arg is null and recv is not */
 if (var2){
 var3 = self->attrs[COLOR_parser_nodes__AContinueExpr___n_kwcontinue].val; /* _n_kwcontinue on <self:AContinueExpr> */
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5037);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4890);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var3) /* enter_visit on <var_v:Visitor>*/;
@@ -9066,7 +9220,8 @@ var6 = 1; /* arg is null and recv is not */
 if (var6){
 var7 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on <self:AContinueExpr> */
 if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5040);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4893);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var7) /* enter_visit on <var_v:Visitor>*/;
@@ -9082,7 +9237,8 @@ var10 = 1; /* arg is null and recv is not */
 if (var10){
 var11 = self->attrs[COLOR_parser_nodes__AContinueExpr___n_expr].val; /* _n_expr on <self:AContinueExpr> */
 if (var11 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5043);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4896);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var11) /* enter_visit on <var_v:Visitor>*/;
@@ -9118,12 +9274,14 @@ var_n_block = p1;
 var_n_label = p2;
 ((void (*)(val*))(self->class->vft[COLOR_parser_prod__ADoExpr__empty_init]))(self) /* empty_init on <self:ADoExpr>*/;
 if (var_n_kwdo == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5057);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4910);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ADoExpr___n_kwdo].val = var_n_kwdo; /* _n_kwdo on <self:ADoExpr> */
 if (var_n_kwdo == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 5058);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4911);
 exit(1);
 } else {
 ((void (*)(val*, val*))(var_n_kwdo->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwdo, self) /* parent= on <var_n_kwdo:nullable TKwdo>*/;
@@ -9188,7 +9346,8 @@ var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__ADoExpr___n_kwdo].val; /* _n_kwdo on <self:ADoExpr> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwdo", "src/parser/parser_prod.nit", 5071);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwdo");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4924);
 exit(1);
 }
 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwdo>*/;
@@ -9210,12 +9369,14 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 5074);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4927);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ADoExpr___n_kwdo].val = var_new_child; /* _n_kwdo on <self:ADoExpr> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 5077);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4930);
 exit(1);
 }
 goto RET_LABEL;
@@ -9245,7 +9406,8 @@ var9 = 0;
 var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
 if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 5084);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4937);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ADoExpr___n_block].val = var_new_child; /* _n_block on <self:ADoExpr> */
@@ -9280,7 +9442,8 @@ var17 = 0;
 var17 = var_new_child->type->type_table[cltype18] == idtype19;
 }
 if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 5094);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4947);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__ALabelable___n_label].val = var_new_child; /* _n_label on <self:ADoExpr> */
@@ -9374,7 +9537,8 @@ val* var8 /* : nullable ALabel */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__ADoExpr___n_kwdo].val; /* _n_kwdo on <self:ADoExpr> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwdo", "src/parser/parser_prod.nit", 5126);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwdo");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4979);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var) /* enter_visit on <var_v:Visitor>*/;
@@ -9388,7 +9552,8 @@ var3 = 1; /* arg is null and recv is not */
 if (var3){
 var4 = self->attrs[COLOR_parser_nodes__ADoExpr___n_block].val; /* _n_block on <self:ADoExpr> */
 if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5128);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4981);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var4) /* enter_visit on <var_v:Visitor>*/;
@@ -9404,7 +9569,8 @@ var7 = 1; /* arg is null and recv is not */
 if (var7){
 var8 = self->attrs[COLOR_parser_nodes__ALabelable___n_label].val; /* _n_label on <self:ADoExpr> */
 if (var8 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5131);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4984);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var8) /* enter_visit on <var_v:Visitor>*/;
@@ -9442,23 +9608,27 @@ var_n_then = p2;
 var_n_else = p3;
 ((void (*)(val*))(self->class->vft[COLOR_parser_prod__AIfExpr__empty_init]))(self) /* empty_init on <self:AIfExpr>*/;
 if (var_n_kwif == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5146);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 4999);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AIfExpr___n_kwif].val = var_n_kwif; /* _n_kwif on <self:AIfExpr> */
 if (var_n_kwif == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 5147);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5000);
 exit(1);
 } else {
 ((void (*)(val*, val*))(var_n_kwif->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwif, self) /* parent= on <var_n_kwif:nullable TKwif>*/;
 }
 if (var_n_expr == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5148);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5001);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val = var_n_expr; /* _n_expr on <self:AIfExpr> */
 if (var_n_expr == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 5149);
+fprintf(stderr, "Runtime error: %s", "Reciever is null");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5002);
 exit(1);
 } else {
 ((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>*/;
@@ -9530,7 +9700,8 @@ var_old_child = p0;
 var_new_child = p1;
 var = self->attrs[COLOR_parser_nodes__AIfExpr___n_kwif].val; /* _n_kwif on <self:AIfExpr> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwif", "src/parser/parser_prod.nit", 5162);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwif");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5015);
 exit(1);
 }
 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_kernel__Object___61d_61d]))(var, var_old_child) /* == on <var:TKwif>*/;
@@ -9552,12 +9723,14 @@ var4 = 0;
 var4 = var_new_child->type->type_table[cltype] == idtype;
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 5165);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5018);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AIfExpr___n_kwif].val = var_new_child; /* _n_kwif on <self:AIfExpr> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 5168);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5021);
 exit(1);
 }
 goto RET_LABEL;
@@ -9565,7 +9738,8 @@ goto RET_LABEL;
 }
 var5 = self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val; /* _n_expr on <self:AIfExpr> */
 if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_expr", "src/parser/parser_prod.nit", 5172);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_expr");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5025);
 exit(1);
 }
 var6 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_old_child) /* == on <var5:AExpr>*/;
@@ -9587,12 +9761,14 @@ var9 = 0;
 var9 = var_new_child->type->type_table[cltype10] == idtype11;
 }
 if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 5175);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5028);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val = var_new_child; /* _n_expr on <self:AIfExpr> */
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/parser/parser_prod.nit", 5178);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5031);
 exit(1);
 }
 goto RET_LABEL;
@@ -9622,7 +9798,8 @@ var16 = 0;
 var16 = var_new_child->type->type_table[cltype17] == idtype18;
 }
 if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 5185);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5038);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AIfExpr___n_then].val = var_new_child; /* _n_then on <self:AIfExpr> */
@@ -9657,7 +9834,8 @@ var24 = 0;
 var24 = var_new_child->type->type_table[cltype25] == idtype26;
 }
 if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser_prod.nit", 5195);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5048);
 exit(1);
 }
 self->attrs[COLOR_parser_nodes__AIfExpr___n_else].val = var_new_child; /* _n_else on <self:AIfExpr> */
@@ -9765,13 +9943,15 @@ val* var9 /* : nullable AExpr */;
 var_v = p0;
 var = self->attrs[COLOR_parser_nodes__AIfExpr___n_kwif].val; /* _n_kwif on <self:AIfExpr> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_kwif", "src/parser/parser_prod.nit", 5232);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_kwif");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5085);
 exit(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__AIfExpr___n_expr].val; /* _n_expr on <self:AIfExpr> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _n_expr", "src/parser/parser_prod.nit", 5233);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_expr");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5086);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var1) /* enter_visit on <var_v:Visitor>*/;
@@ -9785,7 +9965,8 @@ var4 = 1; /* arg is null and recv is not */
 if (var4){
 var5 = self->attrs[COLOR_parser_nodes__AIfExpr___n_then].val; /* _n_then on <self:AIfExpr> */
 if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5235);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5088);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var5) /* enter_visit on <var_v:Visitor>*/;
@@ -9801,7 +9982,8 @@ var8 = 1; /* arg is null and recv is not */
 if (var8){
 var9 = self->attrs[COLOR_parser_nodes__AIfExpr___n_else].val; /* _n_else on <self:AIfExpr> */
 if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5238);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser_prod.nit", 5091);
 exit(1);
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var9) /* enter_visit on <var_v:Visitor>*/;
@@ -9814,100 +9996,3 @@ void VIRTUAL_parser_prod__AIfExpr__visit_all(val* self, val* p0) {
 parser_prod__AIfExpr__visit_all(self, p0);
 RET_LABEL:;
 }
-/* method parser_prod#AIfexprExpr#empty_init for (self: AIfexprExpr) */
-void parser_prod__AIfexprExpr__empty_init(val* self) {
-RET_LABEL:;
-}
-/* method parser_prod#AIfexprExpr#empty_init for (self: Object) */
-void VIRTUAL_parser_prod__AIfexprExpr__empty_init(val* self) {
-parser_prod__AIfexprExpr__empty_init(self);
-RET_LABEL:;
-}
-/* method parser_prod#AIfexprExpr#init_aifexprexpr for (self: AIfexprExpr, nullable TKwif, nullable AExpr, nullable TKwthen, nullable AExpr, nullable TKwelse, nullable AExpr) */
-void parser_prod__AIfexprExpr__init_aifexprexpr(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5) {
-val* var_n_kwif /* var n_kwif: nullable TKwif */;
-val* var_n_expr /* var n_expr: nullable AExpr */;
-val* var_n_kwthen /* var n_kwthen: nullable TKwthen */;
-val* var_n_then /* var n_then: nullable AExpr */;
-val* var_n_kwelse /* var n_kwelse: nullable TKwelse */;
-val* var_n_else /* var n_else: nullable AExpr */;
-var_n_kwif = p0;
-var_n_expr = p1;
-var_n_kwthen = p2;
-var_n_then = p3;
-var_n_kwelse = p4;
-var_n_else = p5;
-((void (*)(val*))(self->class->vft[COLOR_parser_prod__AIfexprExpr__empty_init]))(self) /* empty_init on <self:AIfexprExpr>*/;
-if (var_n_kwif == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5255);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AIfexprExpr___n_kwif].val = var_n_kwif; /* _n_kwif on <self:AIfexprExpr> */
-if (var_n_kwif == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 5256);
-exit(1);
-} else {
-((void (*)(val*, val*))(var_n_kwif->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwif, self) /* parent= on <var_n_kwif:nullable TKwif>*/;
-}
-if (var_n_expr == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5257);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AIfexprExpr___n_expr].val = var_n_expr; /* _n_expr on <self:AIfexprExpr> */
-if (var_n_expr == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 5258);
-exit(1);
-} else {
-((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>*/;
-}
-if (var_n_kwthen == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5259);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AIfexprExpr___n_kwthen].val = var_n_kwthen; /* _n_kwthen on <self:AIfexprExpr> */
-if (var_n_kwthen == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 5260);
-exit(1);
-} else {
-((void (*)(val*, val*))(var_n_kwthen->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwthen, self) /* parent= on <var_n_kwthen:nullable TKwthen>*/;
-}
-if (var_n_then == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5261);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AIfexprExpr___n_then].val = var_n_then; /* _n_then on <self:AIfexprExpr> */
-if (var_n_then == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 5262);
-exit(1);
-} else {
-((void (*)(val*, val*))(var_n_then->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_then, self) /* parent= on <var_n_then:nullable AExpr>*/;
-}
-if (var_n_kwelse == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5263);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AIfexprExpr___n_kwelse].val = var_n_kwelse; /* _n_kwelse on <self:AIfexprExpr> */
-if (var_n_kwelse == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 5264);
-exit(1);
-} else {
-((void (*)(val*, val*))(var_n_kwelse->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_kwelse, self) /* parent= on <var_n_kwelse:nullable TKwelse>*/;
-}
-if (var_n_else == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/parser/parser_prod.nit", 5265);
-exit(1);
-}
-self->attrs[COLOR_parser_nodes__AIfexprExpr___n_else].val = var_n_else; /* _n_else on <self:AIfexprExpr> */
-if (var_n_else == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/parser/parser_prod.nit", 5266);
-exit(1);
-} else {
-((void (*)(val*, val*))(var_n_else->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_n_else, self) /* parent= on <var_n_else:nullable AExpr>*/;
-}
-RET_LABEL:;
-}
-/* method parser_prod#AIfexprExpr#init_aifexprexpr for (self: Object, nullable TKwif, nullable AExpr, nullable TKwthen, nullable AExpr, nullable TKwelse, nullable AExpr) */
-void VIRTUAL_parser_prod__AIfexprExpr__init_aifexprexpr(val* self, val* p0, val* p1, val* p2, val* p3, val* p4, val* p5) {
-parser_prod__AIfexprExpr__init_aifexprexpr(self, p0, p1, p2, p3, p4, p5);
-RET_LABEL:;
-}