c_src: update
[nit.git] / c_src / astbuilder.sep.1.c
index 27d505b..c029bca 100644 (file)
@@ -3,10 +3,10 @@
 val* astbuilder__ASTBuilder__mmodule(val* self) {
 val* var /* : MModule */;
 val* var1 /* : MModule */;
-var1 = self->attrs[COLOR_astbuilder__ASTBuilder___64dmmodule].val; /* @mmodule on <self:ASTBuilder> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 25);
+var1 = self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val; /* _mmodule on <self:ASTBuilder> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "src/astbuilder.nit", 25);
 show_backtrace(1);
 }
 var = var1;
@@ -17,26 +17,26 @@ return var;
 val* VIRTUAL_astbuilder__ASTBuilder__mmodule(val* self) {
 val* var /* : MModule */;
 val* var1 /* : MModule */;
-var1 = astbuilder__ASTBuilder__mmodule(self);
-var = var1;
-RET_LABEL:;
-return var;
+val* var3 /* : MModule */;
+{ /* Inline astbuilder#ASTBuilder#mmodule (self) on <self:Object(ASTBuilder)> */
+var3 = self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val; /* _mmodule on <self:Object(ASTBuilder)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "src/astbuilder.nit", 25);
+show_backtrace(1);
 }
-/* method astbuilder#ASTBuilder#mmodule= for (self: ASTBuilder, MModule) */
-void astbuilder__ASTBuilder__mmodule_61d(val* self, val* p0) {
-self->attrs[COLOR_astbuilder__ASTBuilder___64dmmodule].val = p0; /* @mmodule on <self:ASTBuilder> */
-RET_LABEL:;
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-/* method astbuilder#ASTBuilder#mmodule= for (self: Object, MModule) */
-void VIRTUAL_astbuilder__ASTBuilder__mmodule_61d(val* self, val* p0) {
-astbuilder__ASTBuilder__mmodule_61d(self, p0);
+var = var1;
 RET_LABEL:;
+return var;
 }
 /* method astbuilder#ASTBuilder#anchor for (self: ASTBuilder): nullable MClassType */
 val* astbuilder__ASTBuilder__anchor(val* self) {
 val* var /* : nullable MClassType */;
 val* var1 /* : nullable MClassType */;
-var1 = self->attrs[COLOR_astbuilder__ASTBuilder___64danchor].val; /* @anchor on <self:ASTBuilder> */
+var1 = self->attrs[COLOR_astbuilder__ASTBuilder___anchor].val; /* _anchor on <self:ASTBuilder> */
 var = var1;
 RET_LABEL:;
 return var;
@@ -45,49 +45,72 @@ return var;
 val* VIRTUAL_astbuilder__ASTBuilder__anchor(val* self) {
 val* var /* : nullable MClassType */;
 val* var1 /* : nullable MClassType */;
-var1 = astbuilder__ASTBuilder__anchor(self);
+val* var3 /* : nullable MClassType */;
+{ /* Inline astbuilder#ASTBuilder#anchor (self) on <self:Object(ASTBuilder)> */
+var3 = self->attrs[COLOR_astbuilder__ASTBuilder___anchor].val; /* _anchor on <self:Object(ASTBuilder)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method astbuilder#ASTBuilder#anchor= for (self: ASTBuilder, nullable MClassType) */
-void astbuilder__ASTBuilder__anchor_61d(val* self, val* p0) {
-self->attrs[COLOR_astbuilder__ASTBuilder___64danchor].val = p0; /* @anchor on <self:ASTBuilder> */
-RET_LABEL:;
-}
-/* method astbuilder#ASTBuilder#anchor= for (self: Object, nullable MClassType) */
-void VIRTUAL_astbuilder__ASTBuilder__anchor_61d(val* self, val* p0) {
-astbuilder__ASTBuilder__anchor_61d(self, p0);
-RET_LABEL:;
-}
 /* method astbuilder#ASTBuilder#make_int for (self: ASTBuilder, Int): AIntExpr */
 val* astbuilder__ASTBuilder__make_int(val* self, long p0) {
 val* var /* : AIntExpr */;
 long var_value /* var value: Int */;
-val* var1 /* : AIntExpr */;
+val* var1 /* : ADecIntExpr */;
 val* var2 /* : MModule */;
+val* var4 /* : MModule */;
 static val* varonce;
-val* var3 /* : String */;
-char* var4 /* : NativeString */;
-long var5 /* : Int */;
-val* var6 /* : String */;
-val* var7 /* : MClass */;
-val* var8 /* : MClassType */;
+val* var5 /* : String */;
+char* var6 /* : NativeString */;
+long var7 /* : Int */;
+val* var8 /* : FlatString */;
+val* var9 /* : MClass */;
+val* var10 /* : MClassType */;
+val* var12 /* : MClassType */;
 var_value = p0;
-var1 = NEW_parser_nodes__AIntExpr(&type_parser_nodes__AIntExpr);
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_astbuilder__ASTBuilder__mmodule]))(self) /* mmodule on <self:ASTBuilder>*/;
+var1 = NEW_parser_nodes__ADecIntExpr(&type_parser_nodes__ADecIntExpr);
+{
+{ /* Inline astbuilder#ASTBuilder#mmodule (self) on <self:ASTBuilder> */
+var4 = self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val; /* _mmodule on <self:ASTBuilder> */
+if (unlikely(var4 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "src/astbuilder.nit", 25);
+show_backtrace(1);
+}
+var2 = var4;
+RET_LABEL3:(void)0;
+}
+}
 if (varonce) {
-var3 = varonce;
+var5 = varonce;
 } else {
-var4 = "Int";
-var5 = 3;
-var6 = string__NativeString__to_s_with_length(var4, var5);
-var3 = var6;
-varonce = var3;
-}
-var7 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_model__MModule__get_primitive_class]))(var2, var3) /* get_primitive_class on <var2:MModule>*/;
-var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClass__mclass_type]))(var7) /* mclass_type on <var7:MClass>*/;
-((void (*)(val*, long, val*))(var1->class->vft[COLOR_astbuilder__AIntExpr__make]))(var1, var_value, var8) /* make on <var1:AIntExpr>*/;
+var6 = "Int";
+var7 = 3;
+var8 = string__NativeString__to_s_with_length(var6, var7);
+var5 = var8;
+varonce = var5;
+}
+{
+var9 = model__MModule__get_primitive_class(var2, var5);
+}
+{
+{ /* Inline model#MClass#mclass_type (var9) on <var9:MClass> */
+var12 = var9->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var9:MClass> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
+show_backtrace(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+{
+astbuilder__ADecIntExpr__make(var1, var_value, var10); /* Direct call astbuilder#ADecIntExpr#make on <var1:ADecIntExpr>*/
+}
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
@@ -102,91 +125,52 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method astbuilder#ASTBuilder#make_new for (self: ASTBuilder, MClassType, MMethod, nullable Array[AExpr]): ANewExpr */
-val* astbuilder__ASTBuilder__make_new(val* self, val* p0, val* p1, val* p2) {
+/* method astbuilder#ASTBuilder#make_new for (self: ASTBuilder, CallSite, nullable Array[AExpr]): ANewExpr */
+val* astbuilder__ASTBuilder__make_new(val* self, val* p0, val* p1) {
 val* var /* : ANewExpr */;
-val* var_mtype /* var mtype: MClassType */;
-val* var_constructor /* var constructor: MMethod */;
+val* var_callsite /* var callsite: CallSite */;
 val* var_args /* var args: nullable Array[AExpr] */;
 val* var1 /* : ANewExpr */;
-var_mtype = p0;
-var_constructor = p1;
-var_args = p2;
+var_callsite = p0;
+var_args = p1;
 var1 = NEW_parser_nodes__ANewExpr(&type_parser_nodes__ANewExpr);
-((void (*)(val*, val*, val*, val*))(var1->class->vft[COLOR_astbuilder__ANewExpr__make]))(var1, var_mtype, var_constructor, var_args) /* make on <var1:ANewExpr>*/;
+{
+astbuilder__ANewExpr__make(var1, var_callsite, var_args); /* Direct call astbuilder#ANewExpr#make on <var1:ANewExpr>*/
+}
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method astbuilder#ASTBuilder#make_new for (self: Object, MClassType, MMethod, nullable Array[AExpr]): ANewExpr */
-val* VIRTUAL_astbuilder__ASTBuilder__make_new(val* self, val* p0, val* p1, val* p2) {
+/* method astbuilder#ASTBuilder#make_new for (self: Object, CallSite, nullable Array[AExpr]): ANewExpr */
+val* VIRTUAL_astbuilder__ASTBuilder__make_new(val* self, val* p0, val* p1) {
 val* var /* : ANewExpr */;
 val* var1 /* : ANewExpr */;
-var1 = astbuilder__ASTBuilder__make_new(self, p0, p1, p2);
+var1 = astbuilder__ASTBuilder__make_new(self, p0, p1);
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method astbuilder#ASTBuilder#make_call for (self: ASTBuilder, AExpr, MMethod, nullable Array[AExpr]): ACallExpr */
+/* method astbuilder#ASTBuilder#make_call for (self: ASTBuilder, AExpr, CallSite, nullable Array[AExpr]): ACallExpr */
 val* astbuilder__ASTBuilder__make_call(val* self, val* p0, val* p1, val* p2) {
 val* var /* : ACallExpr */;
 val* var_recv /* var recv: AExpr */;
-val* var_mmethod /* var mmethod: MMethod */;
+val* var_callsite /* var callsite: CallSite */;
 val* var_args /* var args: nullable Array[AExpr] */;
-val* var1 /* : MPropDef */;
-val* var2 /* : nullable MSignature */;
-val* var3 /* : nullable MType */;
-val* var_mtype /* var mtype: nullable MType */;
-val* var4 /* : null */;
-short int var5 /* : Bool */;
-val* var6 /* : nullable MType */;
-val* var7 /* : nullable MClassType */;
-val* var8 /* : MModule */;
-short int var9 /* : Bool */;
-val* var10 /* : MType */;
-val* var11 /* : ACallExpr */;
+val* var1 /* : ACallExpr */;
 var_recv = p0;
-var_mmethod = p1;
+var_callsite = p1;
 var_args = p2;
-var1 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
-var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MMethodDef__msignature]))(var1) /* msignature on <var1:MPropDef(MMethodDef)>*/;
-if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 47);
-show_backtrace(1);
-} else {
-var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MSignature__return_mtype]))(var2) /* return_mtype on <var2:nullable MSignature>*/;
+var1 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
+{
+astbuilder__ACallExpr__make(var1, var_recv, var_callsite, var_args); /* Direct call astbuilder#ACallExpr#make on <var1:ACallExpr>*/
 }
-var_mtype = var3;
-var4 = NULL;
-if (var_mtype == NULL) {
-var5 = 0; /* is null */
-} else {
-var5 = 1; /* arg is null and recv is not */
-}
-if (var5){
-var6 = ((val* (*)(val*))(var_recv->class->vft[COLOR_typing__AExpr__mtype]))(var_recv) /* mtype on <var_recv:AExpr>*/;
-if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 48);
-show_backtrace(1);
-}
-var7 = ((val* (*)(val*))(self->class->vft[COLOR_astbuilder__ASTBuilder__anchor]))(self) /* anchor on <self:ASTBuilder>*/;
-var8 = ((val* (*)(val*))(self->class->vft[COLOR_astbuilder__ASTBuilder__mmodule]))(self) /* mmodule on <self:ASTBuilder>*/;
-var9 = 1;
-var10 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var6, var7, var8, var9) /* resolve_for on <var_mtype:nullable MType(MType)>*/;
-var_mtype = var10;
-} else {
-}
-var11 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
-((void (*)(val*, val*, val*, val*, val*))(var11->class->vft[COLOR_astbuilder__ACallExpr__make]))(var11, var_recv, var_mmethod, var_args, var_mtype) /* make on <var11:ACallExpr>*/;
-var = var11;
+var = var1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method astbuilder#ASTBuilder#make_call for (self: Object, AExpr, MMethod, nullable Array[AExpr]): ACallExpr */
+/* method astbuilder#ASTBuilder#make_call for (self: Object, AExpr, CallSite, nullable Array[AExpr]): ACallExpr */
 val* VIRTUAL_astbuilder__ASTBuilder__make_call(val* self, val* p0, val* p1, val* p2) {
 val* var /* : ACallExpr */;
 val* var1 /* : ACallExpr */;
@@ -200,7 +184,9 @@ val* astbuilder__ASTBuilder__make_block(val* self) {
 val* var /* : ABlockExpr */;
 val* var1 /* : ABlockExpr */;
 var1 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
-((void (*)(val*))(var1->class->vft[COLOR_astbuilder__ABlockExpr__make]))(var1) /* make on <var1:ABlockExpr>*/;
+{
+astbuilder__ABlockExpr__make(var1); /* Direct call astbuilder#ABlockExpr#make on <var1:ABlockExpr>*/
+}
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
@@ -224,7 +210,9 @@ val* var1 /* : AVarExpr */;
 var_variable = p0;
 var_mtype = p1;
 var1 = NEW_parser_nodes__AVarExpr(&type_parser_nodes__AVarExpr);
-((void (*)(val*, val*, val*))(var1->class->vft[COLOR_astbuilder__AVarExpr__make]))(var1, var_variable, var_mtype) /* make on <var1:AVarExpr>*/;
+{
+astbuilder__AVarExpr__make(var1, var_variable, var_mtype); /* Direct call astbuilder#AVarExpr#make on <var1:AVarExpr>*/
+}
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
@@ -248,7 +236,9 @@ val* var1 /* : AVarAssignExpr */;
 var_variable = p0;
 var_value = p1;
 var1 = NEW_parser_nodes__AVarAssignExpr(&type_parser_nodes__AVarAssignExpr);
-((void (*)(val*, val*, val*))(var1->class->vft[COLOR_astbuilder__AVarAssignExpr__make]))(var1, var_variable, var_value) /* make on <var1:AVarAssignExpr>*/;
+{
+astbuilder__AVarAssignExpr__make(var1, var_variable, var_value); /* Direct call astbuilder#AVarAssignExpr#make on <var1:AVarAssignExpr>*/
+}
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
@@ -270,37 +260,69 @@ val* var_recv /* var recv: AExpr */;
 val* var_attribute /* var attribute: MAttribute */;
 val* var1 /* : MPropDef */;
 val* var2 /* : nullable MType */;
-val* var3 /* : nullable MType */;
-val* var4 /* : nullable MClassType */;
-val* var5 /* : MModule */;
-short int var6 /* : Bool */;
-val* var7 /* : MType */;
+val* var4 /* : nullable MType */;
+val* var5 /* : nullable MType */;
+val* var6 /* : nullable MClassType */;
+val* var8 /* : nullable MClassType */;
+val* var9 /* : MModule */;
+val* var11 /* : MModule */;
+short int var12 /* : Bool */;
+val* var13 /* : MType */;
 val* var_mtype /* var mtype: MType */;
-val* var8 /* : AAttrExpr */;
+val* var14 /* : AAttrExpr */;
 var_recv = p0;
 var_attribute = p1;
-var1 = ((val* (*)(val*))(var_attribute->class->vft[COLOR_model__MProperty__intro]))(var_attribute) /* intro on <var_attribute:MAttribute>*/;
-var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var1) /* static_mtype on <var1:MPropDef(MAttributeDef)>*/;
-var3 = ((val* (*)(val*))(var_recv->class->vft[COLOR_typing__AExpr__mtype]))(var_recv) /* mtype on <var_recv:AExpr>*/;
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 73);
+{
+var1 = model__MProperty__intro(var_attribute);
+}
+{
+{ /* Inline model#MAttributeDef#static_mtype (var1) on <var1:MPropDef(MAttributeDef)> */
+var4 = var1->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <var1:MPropDef(MAttributeDef)> */
+var2 = var4;
+RET_LABEL3:(void)0;
+}
+}
+{
+var5 = ((val* (*)(val*))(var_recv->class->vft[COLOR_typing__AExpr__mtype]))(var_recv) /* mtype on <var_recv:AExpr>*/;
+}
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/astbuilder.nit", 71);
+show_backtrace(1);
+}
+{
+{ /* Inline astbuilder#ASTBuilder#anchor (self) on <self:ASTBuilder> */
+var8 = self->attrs[COLOR_astbuilder__ASTBuilder___anchor].val; /* _anchor on <self:ASTBuilder> */
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+{
+{ /* Inline astbuilder#ASTBuilder#mmodule (self) on <self:ASTBuilder> */
+var11 = self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val; /* _mmodule on <self:ASTBuilder> */
+if (unlikely(var11 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "src/astbuilder.nit", 25);
 show_backtrace(1);
 }
-var4 = ((val* (*)(val*))(self->class->vft[COLOR_astbuilder__ASTBuilder__anchor]))(self) /* anchor on <self:ASTBuilder>*/;
-var5 = ((val* (*)(val*))(self->class->vft[COLOR_astbuilder__ASTBuilder__mmodule]))(self) /* mmodule on <self:ASTBuilder>*/;
-var6 = 1;
+var9 = var11;
+RET_LABEL10:(void)0;
+}
+}
+var12 = 1;
 if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 73);
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "src/astbuilder.nit", 71);
 show_backtrace(1);
 } else {
-var7 = ((val* (*)(val*, val*, val*, val*, short int))(var2->class->vft[COLOR_model__MType__resolve_for]))(var2, var3, var4, var5, var6) /* resolve_for on <var2:nullable MType>*/;
+var13 = ((val* (*)(val*, val*, val*, val*, short int))(var2->class->vft[COLOR_model__MType__resolve_for]))(var2, var5, var6, var9, var12) /* resolve_for on <var2:nullable MType>*/;
+}
+var_mtype = var13;
+var14 = NEW_parser_nodes__AAttrExpr(&type_parser_nodes__AAttrExpr);
+{
+astbuilder__AAttrExpr__make(var14, var_recv, var_attribute, var_mtype); /* Direct call astbuilder#AAttrExpr#make on <var14:AAttrExpr>*/
 }
-var_mtype = var7;
-var8 = NEW_parser_nodes__AAttrExpr(&type_parser_nodes__AAttrExpr);
-((void (*)(val*, val*, val*, val*))(var8->class->vft[COLOR_astbuilder__AAttrExpr__make]))(var8, var_recv, var_attribute, var_mtype) /* make on <var8:AAttrExpr>*/;
-var = var8;
+var = var14;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -325,7 +347,9 @@ var_recv = p0;
 var_attribute = p1;
 var_value = p2;
 var1 = NEW_parser_nodes__AAttrAssignExpr(&type_parser_nodes__AAttrAssignExpr);
-((void (*)(val*, val*, val*, val*))(var1->class->vft[COLOR_astbuilder__AAttrAssignExpr__make]))(var1, var_recv, var_attribute, var_value) /* make on <var1:AAttrAssignExpr>*/;
+{
+astbuilder__AAttrAssignExpr__make(var1, var_recv, var_attribute, var_value); /* Direct call astbuilder#AAttrAssignExpr#make on <var1:AAttrAssignExpr>*/
+}
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
@@ -340,26 +364,6 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method astbuilder#ASTBuilder#make_do for (self: ASTBuilder): ADoExpr */
-val* astbuilder__ASTBuilder__make_do(val* self) {
-val* var /* : ADoExpr */;
-val* var1 /* : ADoExpr */;
-var1 = NEW_parser_nodes__ADoExpr(&type_parser_nodes__ADoExpr);
-((void (*)(val*))(var1->class->vft[COLOR_astbuilder__ADoExpr__make]))(var1) /* make on <var1:ADoExpr>*/;
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method astbuilder#ASTBuilder#make_do for (self: Object): ADoExpr */
-val* VIRTUAL_astbuilder__ASTBuilder__make_do(val* self) {
-val* var /* : ADoExpr */;
-val* var1 /* : ADoExpr */;
-var1 = astbuilder__ASTBuilder__make_do(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
 /* method astbuilder#ASTBuilder#make_if for (self: ASTBuilder, AExpr, nullable MType): AIfExpr */
 val* astbuilder__ASTBuilder__make_if(val* self, val* p0, val* p1) {
 val* var /* : AIfExpr */;
@@ -369,7 +373,9 @@ val* var1 /* : AIfExpr */;
 var_condition = p0;
 var_mtype = p1;
 var1 = NEW_parser_nodes__AIfExpr(&type_parser_nodes__AIfExpr);
-((void (*)(val*, val*, val*))(var1->class->vft[COLOR_astbuilder__AIfExpr__make]))(var1, var_condition, var_mtype) /* make on <var1:AIfExpr>*/;
+{
+astbuilder__AIfExpr__make(var1, var_condition, var_mtype); /* Direct call astbuilder#AIfExpr#make on <var1:AIfExpr>*/
+}
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
@@ -386,91 +392,181 @@ return var;
 }
 /* method astbuilder#ASTBuilder#init for (self: ASTBuilder, MModule, nullable MClassType) */
 void astbuilder__ASTBuilder__init(val* self, val* p0, val* p1) {
-self->attrs[COLOR_astbuilder__ASTBuilder___64dmmodule].val = p0; /* @mmodule on <self:ASTBuilder> */
-self->attrs[COLOR_astbuilder__ASTBuilder___64danchor].val = p1; /* @anchor on <self:ASTBuilder> */
+self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val = p0; /* _mmodule on <self:ASTBuilder> */
+self->attrs[COLOR_astbuilder__ASTBuilder___anchor].val = p1; /* _anchor on <self:ASTBuilder> */
 RET_LABEL:;
 }
 /* method astbuilder#ASTBuilder#init for (self: Object, MModule, nullable MClassType) */
 void VIRTUAL_astbuilder__ASTBuilder__init(val* self, val* p0, val* p1) {
-astbuilder__ASTBuilder__init(self, p0, p1);
+{ /* Inline astbuilder#ASTBuilder#init (self,p0,p1) on <self:Object(ASTBuilder)> */
+self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val = p0; /* _mmodule on <self:Object(ASTBuilder)> */
+self->attrs[COLOR_astbuilder__ASTBuilder___anchor].val = p1; /* _anchor on <self:Object(ASTBuilder)> */
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method astbuilder#AExpr#make_var_read for (self: AExpr): AVarExpr */
 val* astbuilder__AExpr__make_var_read(val* self) {
 val* var /* : AVarExpr */;
 val* var1 /* : nullable Variable */;
+val* var3 /* : nullable Variable */;
 val* var_variable /* var variable: nullable Variable */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-val* var4 /* : nullable ANode */;
-val* var5 /* : null */;
+val* var4 /* : null */;
+short int var5 /* : Bool */;
 short int var6 /* : Bool */;
-val* var7 /* : AExpr */;
+val* var_other /* var other: nullable Object */;
+short int var8 /* : Bool */;
+short int var10 /* : Bool */;
+val* var11 /* : nullable ANode */;
+val* var13 /* : nullable ANode */;
+val* var14 /* : null */;
+short int var15 /* : Bool */;
+short int var16 /* : Bool */;
+val* var_other18 /* var other: nullable Object */;
+short int var19 /* : Bool */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+val* var22 /* : AExpr */;
 val* var_place /* var place: AExpr */;
-val* var8 /* : Variable */;
+val* var23 /* : Variable */;
 static val* varonce;
-val* var9 /* : String */;
-char* var10 /* : NativeString */;
-long var11 /* : Int */;
-val* var12 /* : String */;
-val* var13 /* : nullable MType */;
-val* var14 /* : AVarAssignExpr */;
+val* var24 /* : String */;
+char* var25 /* : NativeString */;
+long var26 /* : Int */;
+val* var27 /* : FlatString */;
+val* var29 /* : nullable MType */;
+val* var31 /* : AVarAssignExpr */;
 val* var_nvar /* var nvar: AVarAssignExpr */;
-val* var15 /* : AVarExpr */;
-val* var16 /* : nullable MType */;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_astbuilder__AExpr__variable_cache]))(self) /* variable_cache on <self:AExpr>*/;
+val* var33 /* : AVarExpr */;
+val* var34 /* : nullable MType */;
+val* var36 /* : nullable MType */;
+{
+{ /* Inline astbuilder#AExpr#variable_cache (self) on <self:AExpr> */
+var3 = self->attrs[COLOR_astbuilder__AExpr___variable_cache].val; /* _variable_cache on <self:AExpr> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
 var_variable = var1;
-var2 = NULL;
+var4 = NULL;
 if (var_variable == NULL) {
-var3 = 1; /* is null */
+var5 = 1; /* is null */
 } else {
-var3 = 0; /* arg is null but recv is not */
+var5 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_variable,var4) on <var_variable:nullable Variable> */
+var_other = var4;
+{
+{ /* Inline kernel#Object#is_same_instance (var_variable,var_other) on <var_variable:nullable Variable(Variable)> */
+var10 = var_variable == var_other;
+var8 = var10;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
+}
+}
+var6 = var8;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
 }
-if (var3){
-var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:AExpr>*/;
-var5 = NULL;
-if (var4 == NULL) {
-var6 = 0; /* is null */
+var5 = var6;
+}
+if (var5){
+{
+{ /* Inline parser_nodes#ANode#parent (self) on <self:AExpr> */
+var13 = self->attrs[COLOR_parser_nodes__ANode___parent].val; /* _parent on <self:AExpr> */
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+var14 = NULL;
+if (var11 == NULL) {
+var15 = 0; /* is null */
 } else {
-var6 = 1; /* arg is null and recv is not */
+var15 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var11,var14) on <var11:nullable ANode> */
+var_other18 = var14;
+{
+var20 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___61d_61d]))(var11, var_other18) /* == on <var11:nullable ANode(ANode)>*/;
+var19 = var20;
+}
+var21 = !var19;
+var16 = var21;
+goto RET_LABEL17;
+RET_LABEL17:(void)0;
+}
+var15 = var16;
 }
-if (!var6) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 107);
+if (unlikely(!var15)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "src/astbuilder.nit", 105);
 show_backtrace(1);
 }
-var7 = ((val* (*)(val*))(self->class->vft[COLOR_astbuilder__AExpr__detach_with_placeholder]))(self) /* detach_with_placeholder on <self:AExpr>*/;
-var_place = var7;
-var8 = NEW_scope__Variable(&type_scope__Variable);
+{
+var22 = astbuilder__AExpr__detach_with_placeholder(self);
+}
+var_place = var22;
+var23 = NEW_scope__Variable(&type_scope__Variable);
 if (varonce) {
-var9 = varonce;
+var24 = varonce;
 } else {
-var10 = "";
-var11 = 0;
-var12 = string__NativeString__to_s_with_length(var10, var11);
-var9 = var12;
-varonce = var9;
-}
-((void (*)(val*, val*))(var8->class->vft[COLOR_scope__Variable__init]))(var8, var9) /* init on <var8:Variable>*/;
-var_variable = var8;
-var13 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AExpr>*/;
-((void (*)(val*, val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type_61d]))(var_variable, var13) /* declared_type= on <var_variable:nullable Variable(Variable)>*/;
-var14 = NEW_parser_nodes__AVarAssignExpr(&type_parser_nodes__AVarAssignExpr);
-((void (*)(val*, val*, val*))(var14->class->vft[COLOR_astbuilder__AVarAssignExpr__make]))(var14, var_variable, self) /* make on <var14:AVarAssignExpr>*/;
-var_nvar = var14;
-((void (*)(val*, val*))(var_place->class->vft[COLOR_parser_nodes__ANode__replace_with]))(var_place, var_nvar) /* replace_with on <var_place:AExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_astbuilder__AExpr__variable_cache_61d]))(self, var_variable) /* variable_cache= on <self:AExpr>*/;
+var25 = "";
+var26 = 0;
+var27 = string__NativeString__to_s_with_length(var25, var26);
+var24 = var27;
+varonce = var24;
+}
+{
+{ /* Inline scope#Variable#init (var23,var24) on <var23:Variable> */
+var23->attrs[COLOR_scope__Variable___name].val = var24; /* _name on <var23:Variable> */
+RET_LABEL28:(void)0;
+}
+}
+var_variable = var23;
+{
+var29 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AExpr>*/;
+}
+{
+{ /* Inline typing#Variable#declared_type= (var_variable,var29) on <var_variable:nullable Variable(Variable)> */
+var_variable->attrs[COLOR_typing__Variable___declared_type].val = var29; /* _declared_type on <var_variable:nullable Variable(Variable)> */
+RET_LABEL30:(void)0;
+}
+}
+var31 = NEW_parser_nodes__AVarAssignExpr(&type_parser_nodes__AVarAssignExpr);
+{
+astbuilder__AVarAssignExpr__make(var31, var_variable, self); /* Direct call astbuilder#AVarAssignExpr#make on <var31:AVarAssignExpr>*/
+}
+var_nvar = var31;
+{
+parser_nodes__Prod__replace_with(var_place, var_nvar); /* Direct call parser_nodes#Prod#replace_with on <var_place:AExpr>*/
+}
+{
+{ /* Inline astbuilder#AExpr#variable_cache= (self,var_variable) on <self:AExpr> */
+self->attrs[COLOR_astbuilder__AExpr___variable_cache].val = var_variable; /* _variable_cache on <self:AExpr> */
+RET_LABEL32:(void)0;
+}
+}
 } else {
 }
-var15 = NEW_parser_nodes__AVarExpr(&type_parser_nodes__AVarExpr);
-var16 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:nullable Variable(Variable)>*/;
-if (var16 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 115);
+var33 = NEW_parser_nodes__AVarExpr(&type_parser_nodes__AVarExpr);
+{
+{ /* Inline typing#Variable#declared_type (var_variable) on <var_variable:nullable Variable(Variable)> */
+var36 = var_variable->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <var_variable:nullable Variable(Variable)> */
+var34 = var36;
+RET_LABEL35:(void)0;
+}
+}
+if (unlikely(var34 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/astbuilder.nit", 113);
 show_backtrace(1);
 }
-((void (*)(val*, val*, val*))(var15->class->vft[COLOR_astbuilder__AVarExpr__make]))(var15, var_variable, var16) /* make on <var15:AVarExpr>*/;
-var = var15;
+{
+astbuilder__AVarExpr__make(var33, var_variable, var34); /* Direct call astbuilder#AVarExpr#make on <var33:AVarExpr>*/
+}
+var = var33;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -488,7 +584,7 @@ return var;
 val* astbuilder__AExpr__variable_cache(val* self) {
 val* var /* : nullable Variable */;
 val* var1 /* : nullable Variable */;
-var1 = self->attrs[COLOR_astbuilder__AExpr___64dvariable_cache].val; /* @variable_cache on <self:AExpr> */
+var1 = self->attrs[COLOR_astbuilder__AExpr___variable_cache].val; /* _variable_cache on <self:AExpr> */
 var = var1;
 RET_LABEL:;
 return var;
@@ -497,19 +593,27 @@ return var;
 val* VIRTUAL_astbuilder__AExpr__variable_cache(val* self) {
 val* var /* : nullable Variable */;
 val* var1 /* : nullable Variable */;
-var1 = astbuilder__AExpr__variable_cache(self);
+val* var3 /* : nullable Variable */;
+{ /* Inline astbuilder#AExpr#variable_cache (self) on <self:Object(AExpr)> */
+var3 = self->attrs[COLOR_astbuilder__AExpr___variable_cache].val; /* _variable_cache on <self:Object(AExpr)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
 var = var1;
 RET_LABEL:;
 return var;
 }
 /* method astbuilder#AExpr#variable_cache= for (self: AExpr, nullable Variable) */
 void astbuilder__AExpr__variable_cache_61d(val* self, val* p0) {
-self->attrs[COLOR_astbuilder__AExpr___64dvariable_cache].val = p0; /* @variable_cache on <self:AExpr> */
+self->attrs[COLOR_astbuilder__AExpr___variable_cache].val = p0; /* _variable_cache on <self:AExpr> */
 RET_LABEL:;
 }
 /* method astbuilder#AExpr#variable_cache= for (self: Object, nullable Variable) */
 void VIRTUAL_astbuilder__AExpr__variable_cache_61d(val* self, val* p0) {
-astbuilder__AExpr__variable_cache_61d(self, p0);
+{ /* Inline astbuilder#AExpr#variable_cache= (self,p0) on <self:Object(AExpr)> */
+self->attrs[COLOR_astbuilder__AExpr___variable_cache].val = p0; /* _variable_cache on <self:Object(AExpr)> */
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method astbuilder#AExpr#detach_with_placeholder for (self: AExpr): AExpr */
@@ -518,9 +622,13 @@ val* var /* : AExpr */;
 val* var1 /* : APlaceholderExpr */;
 val* var_h /* var h: APlaceholderExpr */;
 var1 = NEW_astbuilder__APlaceholderExpr(&type_astbuilder__APlaceholderExpr);
-((void (*)(val*))(var1->class->vft[COLOR_astbuilder__APlaceholderExpr__make]))(var1) /* make on <var1:APlaceholderExpr>*/;
+{
+astbuilder__APlaceholderExpr__make(var1); /* Direct call astbuilder#APlaceholderExpr#make on <var1:APlaceholderExpr>*/
+}
 var_h = var1;
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_h) /* replace_with on <self:AExpr>*/;
+{
+parser_nodes__Prod__replace_with(self, var_h); /* Direct call parser_nodes#Prod#replace_with on <self:AExpr>*/
+}
 var = var_h;
 goto RET_LABEL;
 RET_LABEL:;
@@ -539,127 +647,73 @@ return var;
 void astbuilder__AExpr__add(val* self, val* p0) {
 val* var_expr /* var expr: AExpr */;
 var_expr = p0;
-fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 147);
+PRINT_ERROR("Runtime error: %s", "Aborted");
+PRINT_ERROR(" (%s:%d)\n", "src/astbuilder.nit", 145);
 show_backtrace(1);
 RET_LABEL:;
 }
 /* method astbuilder#AExpr#add for (self: Object, AExpr) */
 void VIRTUAL_astbuilder__AExpr__add(val* self, val* p0) {
-astbuilder__AExpr__add(self, p0);
+astbuilder__AExpr__add(self, p0); /* Direct call astbuilder#AExpr#add on <self:Object(AExpr)>*/
 RET_LABEL:;
 }
 /* method astbuilder#APlaceholderExpr#make for (self: APlaceholderExpr) */
 void astbuilder__APlaceholderExpr__make(val* self) {
-((void (*)(val*))(self->class->vft[COLOR_parser_nodes__AExpr__init]))(self) /* init on <self:APlaceholderExpr>*/;
+{
+{ /* Inline parser_nodes#ANode#init (self) on <self:APlaceholderExpr> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method astbuilder#APlaceholderExpr#make for (self: Object) */
 void VIRTUAL_astbuilder__APlaceholderExpr__make(val* self) {
-astbuilder__APlaceholderExpr__make(self);
+astbuilder__APlaceholderExpr__make(self); /* Direct call astbuilder#APlaceholderExpr#make on <self:Object(APlaceholderExpr)>*/
 RET_LABEL:;
 }
 /* method astbuilder#ABlockExpr#make for (self: ABlockExpr) */
 void astbuilder__ABlockExpr__make(val* self) {
 short int var /* : Bool */;
 var = 1;
-((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var) /* is_typed= on <self:ABlockExpr>*/;
+{
+{ /* Inline typing#AExpr#is_typed= (self,var) on <self:ABlockExpr> */
+self->attrs[COLOR_typing__AExpr___is_typed].s = var; /* _is_typed on <self:ABlockExpr> */
+RET_LABEL1:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method astbuilder#ABlockExpr#make for (self: Object) */
 void VIRTUAL_astbuilder__ABlockExpr__make(val* self) {
-astbuilder__ABlockExpr__make(self);
+astbuilder__ABlockExpr__make(self); /* Direct call astbuilder#ABlockExpr#make on <self:Object(ABlockExpr)>*/
 RET_LABEL:;
 }
 /* method astbuilder#ABlockExpr#add for (self: ABlockExpr, AExpr) */
 void astbuilder__ABlockExpr__add(val* self, val* p0) {
 val* var_expr /* var expr: AExpr */;
 val* var /* : ANodes[AExpr] */;
+val* var2 /* : ANodes[AExpr] */;
 var_expr = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
-((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, var_expr) /* add on <var:ANodes[AExpr]>*/;
-RET_LABEL:;
+{
+{ /* Inline parser_nodes#ABlockExpr#n_expr (self) on <self:ABlockExpr> */
+var2 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
+PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 1424);
+show_backtrace(1);
 }
-/* method astbuilder#ABlockExpr#add for (self: Object, AExpr) */
-void VIRTUAL_astbuilder__ABlockExpr__add(val* self, val* p0) {
-astbuilder__ABlockExpr__add(self, p0);
-RET_LABEL:;
-}
-/* method astbuilder#ADoExpr#make for (self: ADoExpr) */
-void astbuilder__ADoExpr__make(val* self) {
-val* var /* : TKwdo */;
-val* var1 /* : EscapeMark */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-var = NEW_parser_nodes__TKwdo(&type_parser_nodes__TKwdo);
-((void (*)(val*))(var->class->vft[COLOR_parser_nodes__TKwdo__init]))(var) /* init on <var:TKwdo>*/;
-self->attrs[COLOR_parser_nodes__ADoExpr___n_kwdo].val = var; /* _n_kwdo on <self:ADoExpr> */
-var1 = NEW_scope__EscapeMark(&type_scope__EscapeMark);
-var2 = NULL;
-var3 = 0;
-((void (*)(val*, val*, short int))(var1->class->vft[COLOR_scope__EscapeMark__init]))(var1, var2, var3) /* init on <var1:EscapeMark>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_scope__ADoExpr__escapemark_61d]))(self, var1) /* escapemark= on <self:ADoExpr>*/;
-RET_LABEL:;
-}
-/* method astbuilder#ADoExpr#make for (self: Object) */
-void VIRTUAL_astbuilder__ADoExpr__make(val* self) {
-astbuilder__ADoExpr__make(self);
-RET_LABEL:;
-}
-/* method astbuilder#ADoExpr#make_break for (self: ADoExpr): ABreakExpr */
-val* astbuilder__ADoExpr__make_break(val* self) {
-val* var /* : ABreakExpr */;
-val* var1 /* : nullable EscapeMark */;
-val* var_escapemark /* var escapemark: nullable EscapeMark */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-val* var4 /* : EscapeMark */;
-val* var5 /* : null */;
-short int var6 /* : Bool */;
-val* var7 /* : ABreakExpr */;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ADoExpr__escapemark]))(self) /* escapemark on <self:ADoExpr>*/;
-var_escapemark = var1;
-var2 = NULL;
-if (var_escapemark == NULL) {
-var3 = 1; /* is null */
-} else {
-var3 = 0; /* arg is null but recv is not */
-}
-if (var3){
-var4 = NEW_scope__EscapeMark(&type_scope__EscapeMark);
-var5 = NULL;
-var6 = 0;
-((void (*)(val*, val*, short int))(var4->class->vft[COLOR_scope__EscapeMark__init]))(var4, var5, var6) /* init on <var4:EscapeMark>*/;
-var_escapemark = var4;
-((void (*)(val*, val*))(self->class->vft[COLOR_scope__ADoExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on <self:ADoExpr>*/;
-} else {
+var = var2;
+RET_LABEL1:(void)0;
 }
-var7 = NEW_parser_nodes__ABreakExpr(&type_parser_nodes__ABreakExpr);
-((void (*)(val*, val*))(var7->class->vft[COLOR_astbuilder__ABreakExpr__make]))(var7, var_escapemark) /* make on <var7:ABreakExpr>*/;
-var = var7;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
 }
-/* method astbuilder#ADoExpr#make_break for (self: Object): ABreakExpr */
-val* VIRTUAL_astbuilder__ADoExpr__make_break(val* self) {
-val* var /* : ABreakExpr */;
-val* var1 /* : ABreakExpr */;
-var1 = astbuilder__ADoExpr__make_break(self);
-var = var1;
-RET_LABEL:;
-return var;
+{
+abstract_collection__Sequence__add(var, var_expr); /* Direct call abstract_collection#Sequence#add on <var:ANodes[AExpr]>*/
 }
-/* method astbuilder#ABreakExpr#make for (self: ABreakExpr, EscapeMark) */
-void astbuilder__ABreakExpr__make(val* self, val* p0) {
-val* var_escapemark /* var escapemark: EscapeMark */;
-var_escapemark = p0;
-((void (*)(val*, val*))(self->class->vft[COLOR_scope__ABreakExpr__escapemark_61d]))(self, var_escapemark) /* escapemark= on <self:ABreakExpr>*/;
 RET_LABEL:;
 }
-/* method astbuilder#ABreakExpr#make for (self: Object, EscapeMark) */
-void VIRTUAL_astbuilder__ABreakExpr__make(val* self, val* p0) {
-astbuilder__ABreakExpr__make(self, p0);
+/* method astbuilder#ABlockExpr#add for (self: Object, AExpr) */
+void VIRTUAL_astbuilder__ABlockExpr__add(val* self, val* p0) {
+astbuilder__ABlockExpr__add(self, p0); /* Direct call astbuilder#ABlockExpr#add on <self:Object(ABlockExpr)>*/
 RET_LABEL:;
 }
 /* method astbuilder#AIfExpr#make for (self: AIfExpr, AExpr, nullable MType) */
@@ -667,219 +721,365 @@ void astbuilder__AIfExpr__make(val* self, val* p0, val* p1) {
 val* var_condition /* var condition: AExpr */;
 val* var_mtype /* var mtype: nullable MType */;
 val* var /* : TKwif */;
-val* var1 /* : AExpr */;
-val* var2 /* : ABlockExpr */;
-val* var3 /* : ABlockExpr */;
-short int var4 /* : Bool */;
+val* var2 /* : AExpr */;
+val* var4 /* : ABlockExpr */;
+val* var5 /* : ABlockExpr */;
+short int var7 /* : Bool */;
 var_condition = p0;
 var_mtype = p1;
 var = NEW_parser_nodes__TKwif(&type_parser_nodes__TKwif);
-((void (*)(val*))(var->class->vft[COLOR_parser_nodes__TKwif__init]))(var) /* init on <var:TKwif>*/;
+{
+{ /* Inline parser_nodes#ANode#init (var) on <var:TKwif> */
+RET_LABEL1:(void)0;
+}
+}
 self->attrs[COLOR_parser_nodes__AIfExpr___n_kwif].val = var; /* _n_kwif on <self:AIfExpr> */
 self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val = var_condition; /* _n_expr on <self:AIfExpr> */
-var1 = self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val; /* _n_expr on <self:AIfExpr> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _n_expr");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 208);
+var2 = self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val; /* _n_expr on <self:AIfExpr> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
+PRINT_ERROR(" (%s:%d)\n", "src/astbuilder.nit", 206);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(var1->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var1, self) /* parent= on <var1:AExpr>*/;
-var2 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
-((void (*)(val*))(var2->class->vft[COLOR_astbuilder__ABlockExpr__make]))(var2) /* make on <var2:ABlockExpr>*/;
-self->attrs[COLOR_parser_nodes__AIfExpr___n_then].val = var2; /* _n_then on <self:AIfExpr> */
-var3 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
-((void (*)(val*))(var3->class->vft[COLOR_astbuilder__ABlockExpr__make]))(var3) /* make on <var3:ABlockExpr>*/;
-self->attrs[COLOR_parser_nodes__AIfExpr___n_else].val = var3; /* _n_else on <self:AIfExpr> */
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_mtype) /* mtype= on <self:AIfExpr>*/;
-var4 = 1;
-((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:AIfExpr>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var2,self) on <var2:AExpr> */
+var2->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var2:AExpr> */
+RET_LABEL3:(void)0;
+}
+}
+var4 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
+{
+astbuilder__ABlockExpr__make(var4); /* Direct call astbuilder#ABlockExpr#make on <var4:ABlockExpr>*/
+}
+self->attrs[COLOR_parser_nodes__AIfExpr___n_then].val = var4; /* _n_then on <self:AIfExpr> */
+var5 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
+{
+astbuilder__ABlockExpr__make(var5); /* Direct call astbuilder#ABlockExpr#make on <var5:ABlockExpr>*/
+}
+self->attrs[COLOR_parser_nodes__AIfExpr___n_else].val = var5; /* _n_else on <self:AIfExpr> */
+{
+{ /* Inline typing#AExpr#mtype= (self,var_mtype) on <self:AIfExpr> */
+self->attrs[COLOR_typing__AExpr___mtype].val = var_mtype; /* _mtype on <self:AIfExpr> */
+RET_LABEL6:(void)0;
+}
+}
+var7 = 1;
+{
+{ /* Inline typing#AExpr#is_typed= (self,var7) on <self:AIfExpr> */
+self->attrs[COLOR_typing__AExpr___is_typed].s = var7; /* _is_typed on <self:AIfExpr> */
+RET_LABEL8:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method astbuilder#AIfExpr#make for (self: Object, AExpr, nullable MType) */
 void VIRTUAL_astbuilder__AIfExpr__make(val* self, val* p0, val* p1) {
-astbuilder__AIfExpr__make(self, p0, p1);
+astbuilder__AIfExpr__make(self, p0, p1); /* Direct call astbuilder#AIfExpr#make on <self:Object(AIfExpr)>*/
 RET_LABEL:;
 }
 /* method astbuilder#AType#make for (self: AType) */
 void astbuilder__AType__make(val* self) {
 val* var /* : TClassid */;
 var = NEW_parser_nodes__TClassid(&type_parser_nodes__TClassid);
-((void (*)(val*))(var->class->vft[COLOR_parser_nodes__TClassid__init]))(var) /* init on <var:TClassid>*/;
+{
+{ /* Inline parser_nodes#ANode#init (var) on <var:TClassid> */
+RET_LABEL1:(void)0;
+}
+}
 self->attrs[COLOR_parser_nodes__AType___n_id].val = var; /* _n_id on <self:AType> */
 RET_LABEL:;
 }
 /* method astbuilder#AType#make for (self: Object) */
 void VIRTUAL_astbuilder__AType__make(val* self) {
-astbuilder__AType__make(self);
+astbuilder__AType__make(self); /* Direct call astbuilder#AType#make on <self:Object(AType)>*/
 RET_LABEL:;
 }
-/* method astbuilder#AIntExpr#make for (self: AIntExpr, Int, MType) */
-void astbuilder__AIntExpr__make(val* self, long p0, val* p1) {
+/* method astbuilder#ADecIntExpr#make for (self: ADecIntExpr, Int, MType) */
+void astbuilder__ADecIntExpr__make(val* self, long p0, val* p1) {
 long var_value /* var value: Int */;
 val* var_t /* var t: MType */;
 val* var /* : nullable Int */;
-val* var1 /* : TNumber */;
+val* var2 /* : TNumber */;
 var_value = p0;
 var_t = p1;
+{
+{ /* Inline literal#AIntExpr#value= (self,var_value) on <self:ADecIntExpr> */
 var = BOX_kernel__Int(var_value); /* autobox from Int to nullable Int */
-((void (*)(val*, val*))(self->class->vft[COLOR_literal__AIntExpr__value_61d]))(self, var) /* value= on <self:AIntExpr>*/;
-var1 = NEW_parser_nodes__TNumber(&type_parser_nodes__TNumber);
-((void (*)(val*))(var1->class->vft[COLOR_parser_nodes__TNumber__init]))(var1) /* init on <var1:TNumber>*/;
-self->attrs[COLOR_parser_nodes__AIntExpr___n_number].val = var1; /* _n_number on <self:AIntExpr> */
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_t) /* mtype= on <self:AIntExpr>*/;
+self->attrs[COLOR_literal__AIntExpr___value].val = var; /* _value on <self:ADecIntExpr> */
+RET_LABEL1:(void)0;
+}
+}
+var2 = NEW_parser_nodes__TNumber(&type_parser_nodes__TNumber);
+{
+{ /* Inline parser_nodes#ANode#init (var2) on <var2:TNumber> */
+RET_LABEL3:(void)0;
+}
+}
+self->attrs[COLOR_parser_nodes__ADecIntExpr___n_number].val = var2; /* _n_number on <self:ADecIntExpr> */
+{
+{ /* Inline typing#AExpr#mtype= (self,var_t) on <self:ADecIntExpr> */
+self->attrs[COLOR_typing__AExpr___mtype].val = var_t; /* _mtype on <self:ADecIntExpr> */
+RET_LABEL4:(void)0;
+}
+}
 RET_LABEL:;
 }
-/* method astbuilder#AIntExpr#make for (self: Object, Int, MType) */
-void VIRTUAL_astbuilder__AIntExpr__make(val* self, long p0, val* p1) {
-astbuilder__AIntExpr__make(self, p0, p1);
+/* method astbuilder#ADecIntExpr#make for (self: Object, Int, MType) */
+void VIRTUAL_astbuilder__ADecIntExpr__make(val* self, long p0, val* p1) {
+astbuilder__ADecIntExpr__make(self, p0, p1); /* Direct call astbuilder#ADecIntExpr#make on <self:Object(ADecIntExpr)>*/
 RET_LABEL:;
 }
-/* method astbuilder#ANewExpr#make for (self: ANewExpr, MClassType, MMethod, nullable Array[AExpr]) */
-void astbuilder__ANewExpr__make(val* self, val* p0, val* p1, val* p2) {
-val* var_mtype /* var mtype: MClassType */;
-val* var_mmethod /* var mmethod: MMethod */;
+/* method astbuilder#ANewExpr#make for (self: ANewExpr, CallSite, nullable Array[AExpr]) */
+void astbuilder__ANewExpr__make(val* self, val* p0, val* p1) {
+val* var_callsite /* var callsite: CallSite */;
 val* var_args /* var args: nullable Array[AExpr] */;
 val* var /* : TKwnew */;
-val* var1 /* : AType */;
-val* var2 /* : AListExprs */;
-val* var3 /* : null */;
-short int var4 /* : Bool */;
-val* var5 /* : AExprs */;
-val* var6 /* : ANodes[AExpr] */;
-val* var7 /* : CallSite */;
+val* var2 /* : AType */;
+val* var3 /* : AListExprs */;
+val* var4 /* : null */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var8 /* : Bool */;
-val* var9 /* : MPropDef */;
-val* var10 /* : MPropDef */;
-val* var11 /* : nullable MSignature */;
-short int var12 /* : Bool */;
-var_mtype = p0;
-var_mmethod = p1;
-var_args = p2;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+val* var11 /* : AExprs */;
+val* var12 /* : ANodes[AExpr] */;
+val* var14 /* : ANodes[AExpr] */;
+val* var16 /* : MType */;
+val* var18 /* : MType */;
+short int var20 /* : Bool */;
+var_callsite = p0;
+var_args = p1;
 var = NEW_parser_nodes__TKwnew(&type_parser_nodes__TKwnew);
-((void (*)(val*))(var->class->vft[COLOR_parser_nodes__TKwnew__init]))(var) /* init on <var:TKwnew>*/;
+{
+{ /* Inline parser_nodes#ANode#init (var) on <var:TKwnew> */
+RET_LABEL1:(void)0;
+}
+}
 self->attrs[COLOR_parser_nodes__ANewExpr___n_kwnew].val = var; /* _n_kwnew on <self:ANewExpr> */
-var1 = NEW_parser_nodes__AType(&type_parser_nodes__AType);
-((void (*)(val*))(var1->class->vft[COLOR_astbuilder__AType__make]))(var1) /* make on <var1:AType>*/;
-self->attrs[COLOR_parser_nodes__ANewExpr___n_type].val = var1; /* _n_type on <self:ANewExpr> */
-var2 = NEW_parser_nodes__AListExprs(&type_parser_nodes__AListExprs);
-((void (*)(val*))(var2->class->vft[COLOR_parser_nodes__AListExprs__init]))(var2) /* init on <var2:AListExprs>*/;
-self->attrs[COLOR_parser_nodes__ANewExpr___n_args].val = var2; /* _n_args on <self:ANewExpr> */
-var3 = NULL;
+var2 = NEW_parser_nodes__AType(&type_parser_nodes__AType);
+{
+astbuilder__AType__make(var2); /* Direct call astbuilder#AType#make on <var2:AType>*/
+}
+self->attrs[COLOR_parser_nodes__ANewExpr___n_type].val = var2; /* _n_type on <self:ANewExpr> */
+var3 = NEW_parser_nodes__AListExprs(&type_parser_nodes__AListExprs);
+{
+parser_nodes__AExprs__init(var3); /* Direct call parser_nodes#AExprs#init on <var3:AListExprs>*/
+}
+self->attrs[COLOR_parser_nodes__ANewExpr___n_args].val = var3; /* _n_args on <self:ANewExpr> */
+var4 = NULL;
 if (var_args == NULL) {
-var4 = 0; /* is null */
+var5 = 0; /* is null */
 } else {
-var4 = 1; /* arg is null and recv is not */
+var5 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_args,var4) on <var_args:nullable Array[AExpr]> */
+var_other = var4;
+{
+var9 = ((short int (*)(val*, val*))(var_args->class->vft[COLOR_kernel__Object___61d_61d]))(var_args, var_other) /* == on <var_args:nullable Array[AExpr](Array[AExpr])>*/;
+var8 = var9;
+}
+var10 = !var8;
+var6 = var10;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
+}
+var5 = var6;
+}
+if (var5){
+{
+var11 = parser_nodes__ANewExpr__n_args(self);
+}
+{
+{ /* Inline parser_nodes#AExprs#n_exprs (var11) on <var11:AExprs> */
+var14 = var11->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var11:AExprs> */
+if (unlikely(var14 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
+PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
+show_backtrace(1);
+}
+var12 = var14;
+RET_LABEL13:(void)0;
+}
+}
+{
+abstract_collection__SimpleCollection__add_all(var12, var_args); /* Direct call abstract_collection#SimpleCollection#add_all on <var12:ANodes[AExpr]>*/
 }
-if (var4){
-var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANewExpr__n_args]))(self) /* n_args on <self:ANewExpr>*/;
-var6 = ((val* (*)(val*))(var5->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var5) /* n_exprs on <var5:AExprs>*/;
-((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var6, var_args) /* add_all on <var6:ANodes[AExpr]>*/;
 } else {
 }
-var7 = NEW_typing__CallSite(&type_typing__CallSite);
-var8 = 1;
-var9 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
-var10 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
-var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MMethodDef__msignature]))(var10) /* msignature on <var10:MPropDef(MMethodDef)>*/;
-if (var11 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 241);
+{
+{ /* Inline typing#ANewExpr#callsite= (self,var_callsite) on <self:ANewExpr> */
+self->attrs[COLOR_typing__ANewExpr___callsite].val = var_callsite; /* _callsite on <self:ANewExpr> */
+RET_LABEL15:(void)0;
+}
+}
+{
+{ /* Inline typing#CallSite#recv (var_callsite) on <var_callsite:CallSite> */
+var18 = var_callsite->attrs[COLOR_typing__CallSite___recv].val; /* _recv on <var_callsite:CallSite> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
+PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 408);
 show_backtrace(1);
 }
-var12 = 0;
-((void (*)(val*, val*, val*, short int, val*, val*, val*, short int))(var7->class->vft[COLOR_typing__CallSite__init]))(var7, self, var_mtype, var8, var_mmethod, var9, var11, var12) /* init on <var7:CallSite>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__ANewExpr__callsite_61d]))(self, var7) /* callsite= on <self:ANewExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_mtype) /* mtype= on <self:ANewExpr>*/;
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+{
+{ /* Inline typing#AExpr#mtype= (self,var16) on <self:ANewExpr> */
+self->attrs[COLOR_typing__AExpr___mtype].val = var16; /* _mtype on <self:ANewExpr> */
+RET_LABEL19:(void)0;
+}
+}
+var20 = 1;
+{
+{ /* Inline typing#AExpr#is_typed= (self,var20) on <self:ANewExpr> */
+self->attrs[COLOR_typing__AExpr___is_typed].s = var20; /* _is_typed on <self:ANewExpr> */
+RET_LABEL21:(void)0;
+}
+}
 RET_LABEL:;
 }
-/* method astbuilder#ANewExpr#make for (self: Object, MClassType, MMethod, nullable Array[AExpr]) */
-void VIRTUAL_astbuilder__ANewExpr__make(val* self, val* p0, val* p1, val* p2) {
-astbuilder__ANewExpr__make(self, p0, p1, p2);
+/* method astbuilder#ANewExpr#make for (self: Object, CallSite, nullable Array[AExpr]) */
+void VIRTUAL_astbuilder__ANewExpr__make(val* self, val* p0, val* p1) {
+astbuilder__ANewExpr__make(self, p0, p1); /* Direct call astbuilder#ANewExpr#make on <self:Object(ANewExpr)>*/
 RET_LABEL:;
 }
-/* method astbuilder#ACallExpr#make for (self: ACallExpr, AExpr, MMethod, nullable Array[AExpr], nullable MType) */
-void astbuilder__ACallExpr__make(val* self, val* p0, val* p1, val* p2, val* p3) {
+/* method astbuilder#ACallExpr#make for (self: ACallExpr, AExpr, CallSite, nullable Array[AExpr]) */
+void astbuilder__ACallExpr__make(val* self, val* p0, val* p1, val* p2) {
 val* var_recv /* var recv: AExpr */;
-val* var_mmethod /* var mmethod: MMethod */;
+val* var_callsite /* var callsite: CallSite */;
 val* var_args /* var args: nullable Array[AExpr] */;
-val* var_t /* var t: nullable MType */;
-val* var /* : Array[AExpr] */;
-val* var1 /* : Array[AExpr] */;
-val* var2 /* : AListExprs */;
-val* var3 /* : TId */;
-val* var4 /* : null */;
+val* var /* : AListExprs */;
+val* var1 /* : TId */;
+val* var3 /* : null */;
+short int var4 /* : Bool */;
 short int var5 /* : Bool */;
-val* var6 /* : AExprs */;
-val* var7 /* : ANodes[AExpr] */;
-val* var8 /* : nullable MType */;
+val* var_other /* var other: nullable Object */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
+short int var9 /* : Bool */;
+val* var10 /* : AExprs */;
+val* var11 /* : ANodes[AExpr] */;
+val* var13 /* : ANodes[AExpr] */;
+val* var14 /* : nullable MType */;
 val* var_mtype /* var mtype: MType */;
-val* var9 /* : CallSite */;
-short int var10 /* : Bool */;
-val* var11 /* : MPropDef */;
-val* var12 /* : MPropDef */;
-val* var13 /* : nullable MSignature */;
-short int var14 /* : Bool */;
-short int var15 /* : Bool */;
+val* var16 /* : MSignature */;
+val* var18 /* : MSignature */;
+val* var19 /* : nullable MType */;
+val* var21 /* : nullable MType */;
+short int var23 /* : Bool */;
 var_recv = p0;
-var_mmethod = p1;
+var_callsite = p1;
 var_args = p2;
-var_t = p3;
 self->attrs[COLOR_parser_nodes__ASendExpr___n_expr].val = var_recv; /* _n_expr on <self:ACallExpr> */
-((void (*)(val*, val*))(var_recv->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_recv, self) /* parent= on <var_recv:AExpr>*/;
-if (var_args!=NULL) {
-var = var_args;
-} else {
-var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
-((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[AExpr]>*/;
-var = var1;
+var = NEW_parser_nodes__AListExprs(&type_parser_nodes__AListExprs);
+{
+parser_nodes__AExprs__init(var); /* Direct call parser_nodes#AExprs#init on <var:AListExprs>*/
 }
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments_61d]))(self, var) /* raw_arguments= on <self:ACallExpr>*/;
-var2 = NEW_parser_nodes__AListExprs(&type_parser_nodes__AListExprs);
-((void (*)(val*))(var2->class->vft[COLOR_parser_nodes__AListExprs__init]))(var2) /* init on <var2:AListExprs>*/;
-self->attrs[COLOR_parser_nodes__ACallFormExpr___n_args].val = var2; /* _n_args on <self:ACallExpr> */
-var3 = NEW_parser_nodes__TId(&type_parser_nodes__TId);
-((void (*)(val*))(var3->class->vft[COLOR_parser_nodes__TId__init]))(var3) /* init on <var3:TId>*/;
-self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val = var3; /* _n_id on <self:ACallExpr> */
-var4 = NULL;
+self->attrs[COLOR_parser_nodes__ACallFormExpr___n_args].val = var; /* _n_args on <self:ACallExpr> */
+var1 = NEW_parser_nodes__TId(&type_parser_nodes__TId);
+{
+{ /* Inline parser_nodes#ANode#init (var1) on <var1:TId> */
+RET_LABEL2:(void)0;
+}
+}
+self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val = var1; /* _n_id on <self:ACallExpr> */
+var3 = NULL;
 if (var_args == NULL) {
-var5 = 0; /* is null */
+var4 = 0; /* is null */
 } else {
-var5 = 1; /* arg is null and recv is not */
+var4 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_args,var3) on <var_args:nullable Array[AExpr]> */
+var_other = var3;
+{
+var8 = ((short int (*)(val*, val*))(var_args->class->vft[COLOR_kernel__Object___61d_61d]))(var_args, var_other) /* == on <var_args:nullable Array[AExpr](Array[AExpr])>*/;
+var7 = var8;
+}
+var9 = !var7;
+var5 = var9;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+var4 = var5;
+}
+if (var4){
+{
+var10 = parser_nodes__ACallFormExpr__n_args(self);
+}
+{
+{ /* Inline parser_nodes#AExprs#n_exprs (var10) on <var10:AExprs> */
+var13 = var10->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var10:AExprs> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
+PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
+show_backtrace(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+{
+abstract_collection__SimpleCollection__add_all(var11, var_args); /* Direct call abstract_collection#SimpleCollection#add_all on <var11:ANodes[AExpr]>*/
 }
-if (var5){
-var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallExpr>*/;
-var7 = ((val* (*)(val*))(var6->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var6) /* n_exprs on <var6:AExprs>*/;
-((void (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var7, var_args) /* add_all on <var7:ANodes[AExpr]>*/;
 } else {
 }
-var8 = ((val* (*)(val*))(var_recv->class->vft[COLOR_typing__AExpr__mtype]))(var_recv) /* mtype on <var_recv:AExpr>*/;
-if (var8 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 257);
+{
+var14 = ((val* (*)(val*))(var_recv->class->vft[COLOR_typing__AExpr__mtype]))(var_recv) /* mtype on <var_recv:AExpr>*/;
+}
+if (unlikely(var14 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/astbuilder.nit", 254);
 show_backtrace(1);
 }
-var_mtype = var8;
-var9 = NEW_typing__CallSite(&type_typing__CallSite);
-var10 = 1;
-var11 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
-var12 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
-var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MMethodDef__msignature]))(var12) /* msignature on <var12:MPropDef(MMethodDef)>*/;
-if (var13 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/astbuilder.nit", 258);
+var_mtype = var14;
+{
+{ /* Inline typing#ASendExpr#callsite= (self,var_callsite) on <self:ACallExpr> */
+self->attrs[COLOR_typing__ASendExpr___callsite].val = var_callsite; /* _callsite on <self:ACallExpr> */
+RET_LABEL15:(void)0;
+}
+}
+{
+{ /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:CallSite> */
+var18 = var_callsite->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <var_callsite:CallSite> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
+PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 429);
 show_backtrace(1);
 }
-var14 = 0;
-((void (*)(val*, val*, val*, short int, val*, val*, val*, short int))(var9->class->vft[COLOR_typing__CallSite__init]))(var9, self, var_mtype, var10, var_mmethod, var11, var13, var14) /* init on <var9:CallSite>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__callsite_61d]))(self, var9) /* callsite= on <self:ACallExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_t) /* mtype= on <self:ACallExpr>*/;
-var15 = 1;
-((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var15) /* is_typed= on <self:ACallExpr>*/;
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+{
+{ /* Inline model#MSignature#return_mtype (var16) on <var16:MSignature> */
+var21 = var16->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var16:MSignature> */
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+{
+{ /* Inline typing#AExpr#mtype= (self,var19) on <self:ACallExpr> */
+self->attrs[COLOR_typing__AExpr___mtype].val = var19; /* _mtype on <self:ACallExpr> */
+RET_LABEL22:(void)0;
+}
+}
+var23 = 1;
+{
+{ /* Inline typing#AExpr#is_typed= (self,var23) on <self:ACallExpr> */
+self->attrs[COLOR_typing__AExpr___is_typed].s = var23; /* _is_typed on <self:ACallExpr> */
+RET_LABEL24:(void)0;
+}
+}
 RET_LABEL:;
 }
-/* method astbuilder#ACallExpr#make for (self: Object, AExpr, MMethod, nullable Array[AExpr], nullable MType) */
-void VIRTUAL_astbuilder__ACallExpr__make(val* self, val* p0, val* p1, val* p2, val* p3) {
-astbuilder__ACallExpr__make(self, p0, p1, p2, p3);
+/* method astbuilder#ACallExpr#make for (self: Object, AExpr, CallSite, nullable Array[AExpr]) */
+void VIRTUAL_astbuilder__ACallExpr__make(val* self, val* p0, val* p1, val* p2) {
+astbuilder__ACallExpr__make(self, p0, p1, p2); /* Direct call astbuilder#ACallExpr#make on <self:Object(ACallExpr)>*/
 RET_LABEL:;
 }
 /* method astbuilder#AAttrExpr#make for (self: AAttrExpr, AExpr, MAttribute, MType) */
@@ -892,17 +1092,36 @@ var_recv = p0;
 var_attribute = p1;
 var_t = p2;
 self->attrs[COLOR_parser_nodes__AAttrFormExpr___n_expr].val = var_recv; /* _n_expr on <self:AAttrExpr> */
-((void (*)(val*, val*))(var_recv->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_recv, self) /* parent= on <var_recv:AExpr>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_recv,self) on <var_recv:AExpr> */
+var_recv->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_recv:AExpr> */
+RET_LABEL1:(void)0;
+}
+}
 var = NEW_parser_nodes__TAttrid(&type_parser_nodes__TAttrid);
-((void (*)(val*))(var->class->vft[COLOR_parser_nodes__TAttrid__init]))(var) /* init on <var:TAttrid>*/;
+{
+{ /* Inline parser_nodes#ANode#init (var) on <var:TAttrid> */
+RET_LABEL2:(void)0;
+}
+}
 self->attrs[COLOR_parser_nodes__AAttrFormExpr___n_id].val = var; /* _n_id on <self:AAttrExpr> */
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__mproperty_61d]))(self, var_attribute) /* mproperty= on <self:AAttrExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_t) /* mtype= on <self:AAttrExpr>*/;
+{
+{ /* Inline typing#AAttrFormExpr#mproperty= (self,var_attribute) on <self:AAttrExpr> */
+self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val = var_attribute; /* _mproperty on <self:AAttrExpr> */
+RET_LABEL3:(void)0;
+}
+}
+{
+{ /* Inline typing#AExpr#mtype= (self,var_t) on <self:AAttrExpr> */
+self->attrs[COLOR_typing__AExpr___mtype].val = var_t; /* _mtype on <self:AAttrExpr> */
+RET_LABEL4:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method astbuilder#AAttrExpr#make for (self: Object, AExpr, MAttribute, MType) */
 void VIRTUAL_astbuilder__AAttrExpr__make(val* self, val* p0, val* p1, val* p2) {
-astbuilder__AAttrExpr__make(self, p0, p1, p2);
+astbuilder__AAttrExpr__make(self, p0, p1, p2); /* Direct call astbuilder#AAttrExpr#make on <self:Object(AAttrExpr)>*/
 RET_LABEL:;
 }
 /* method astbuilder#AAttrAssignExpr#make for (self: AAttrAssignExpr, AExpr, MAttribute, AExpr) */
@@ -911,29 +1130,59 @@ val* var_recv /* var recv: AExpr */;
 val* var_attribute /* var attribute: MAttribute */;
 val* var_value /* var value: AExpr */;
 val* var /* : TAttrid */;
-val* var1 /* : TAssign */;
-val* var2 /* : nullable MType */;
+val* var4 /* : TAssign */;
+val* var7 /* : nullable MType */;
 var_recv = p0;
 var_attribute = p1;
 var_value = p2;
 self->attrs[COLOR_parser_nodes__AAttrFormExpr___n_expr].val = var_recv; /* _n_expr on <self:AAttrAssignExpr> */
-((void (*)(val*, val*))(var_recv->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_recv, self) /* parent= on <var_recv:AExpr>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_recv,self) on <var_recv:AExpr> */
+var_recv->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_recv:AExpr> */
+RET_LABEL1:(void)0;
+}
+}
 var = NEW_parser_nodes__TAttrid(&type_parser_nodes__TAttrid);
-((void (*)(val*))(var->class->vft[COLOR_parser_nodes__TAttrid__init]))(var) /* init on <var:TAttrid>*/;
+{
+{ /* Inline parser_nodes#ANode#init (var) on <var:TAttrid> */
+RET_LABEL2:(void)0;
+}
+}
 self->attrs[COLOR_parser_nodes__AAttrFormExpr___n_id].val = var; /* _n_id on <self:AAttrAssignExpr> */
 self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_value].val = var_value; /* _n_value on <self:AAttrAssignExpr> */
-((void (*)(val*, val*))(var_value->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_value, self) /* parent= on <var_value:AExpr>*/;
-var1 = NEW_parser_nodes__TAssign(&type_parser_nodes__TAssign);
-((void (*)(val*))(var1->class->vft[COLOR_parser_nodes__TAssign__init]))(var1) /* init on <var1:TAssign>*/;
-self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_assign].val = var1; /* _n_assign on <self:AAttrAssignExpr> */
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__AAttrFormExpr__mproperty_61d]))(self, var_attribute) /* mproperty= on <self:AAttrAssignExpr>*/;
-var2 = ((val* (*)(val*))(var_value->class->vft[COLOR_typing__AExpr__mtype]))(var_value) /* mtype on <var_value:AExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:AAttrAssignExpr>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_value,self) on <var_value:AExpr> */
+var_value->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_value:AExpr> */
+RET_LABEL3:(void)0;
+}
+}
+var4 = NEW_parser_nodes__TAssign(&type_parser_nodes__TAssign);
+{
+{ /* Inline parser_nodes#ANode#init (var4) on <var4:TAssign> */
+RET_LABEL5:(void)0;
+}
+}
+self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_assign].val = var4; /* _n_assign on <self:AAttrAssignExpr> */
+{
+{ /* Inline typing#AAttrFormExpr#mproperty= (self,var_attribute) on <self:AAttrAssignExpr> */
+self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val = var_attribute; /* _mproperty on <self:AAttrAssignExpr> */
+RET_LABEL6:(void)0;
+}
+}
+{
+var7 = ((val* (*)(val*))(var_value->class->vft[COLOR_typing__AExpr__mtype]))(var_value) /* mtype on <var_value:AExpr>*/;
+}
+{
+{ /* Inline typing#AExpr#mtype= (self,var7) on <self:AAttrAssignExpr> */
+self->attrs[COLOR_typing__AExpr___mtype].val = var7; /* _mtype on <self:AAttrAssignExpr> */
+RET_LABEL8:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method astbuilder#AAttrAssignExpr#make for (self: Object, AExpr, MAttribute, AExpr) */
 void VIRTUAL_astbuilder__AAttrAssignExpr__make(val* self, val* p0, val* p1, val* p2) {
-astbuilder__AAttrAssignExpr__make(self, p0, p1, p2);
+astbuilder__AAttrAssignExpr__make(self, p0, p1, p2); /* Direct call astbuilder#AAttrAssignExpr#make on <self:Object(AAttrAssignExpr)>*/
 RET_LABEL:;
 }
 /* method astbuilder#AVarExpr#make for (self: AVarExpr, Variable, MType) */
@@ -944,15 +1193,29 @@ val* var /* : TId */;
 var_v = p0;
 var_mtype = p1;
 var = NEW_parser_nodes__TId(&type_parser_nodes__TId);
-((void (*)(val*))(var->class->vft[COLOR_parser_nodes__TId__init]))(var) /* init on <var:TId>*/;
+{
+{ /* Inline parser_nodes#ANode#init (var) on <var:TId> */
+RET_LABEL1:(void)0;
+}
+}
 self->attrs[COLOR_parser_nodes__AVarFormExpr___n_id].val = var; /* _n_id on <self:AVarExpr> */
-((void (*)(val*, val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable_61d]))(self, var_v) /* variable= on <self:AVarExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_mtype) /* mtype= on <self:AVarExpr>*/;
+{
+{ /* Inline scope#AVarFormExpr#variable= (self,var_v) on <self:AVarExpr> */
+self->attrs[COLOR_scope__AVarFormExpr___variable].val = var_v; /* _variable on <self:AVarExpr> */
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline typing#AExpr#mtype= (self,var_mtype) on <self:AVarExpr> */
+self->attrs[COLOR_typing__AExpr___mtype].val = var_mtype; /* _mtype on <self:AVarExpr> */
+RET_LABEL3:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method astbuilder#AVarExpr#make for (self: Object, Variable, MType) */
 void VIRTUAL_astbuilder__AVarExpr__make(val* self, val* p0, val* p1) {
-astbuilder__AVarExpr__make(self, p0, p1);
+astbuilder__AVarExpr__make(self, p0, p1); /* Direct call astbuilder#AVarExpr#make on <self:Object(AVarExpr)>*/
 RET_LABEL:;
 }
 /* method astbuilder#AVarAssignExpr#make for (self: AVarAssignExpr, Variable, AExpr) */
@@ -960,25 +1223,50 @@ void astbuilder__AVarAssignExpr__make(val* self, val* p0, val* p1) {
 val* var_v /* var v: Variable */;
 val* var_value /* var value: AExpr */;
 val* var /* : TId */;
-val* var1 /* : TAssign */;
-val* var2 /* : nullable MType */;
+val* var3 /* : TAssign */;
+val* var6 /* : nullable MType */;
 var_v = p0;
 var_value = p1;
 var = NEW_parser_nodes__TId(&type_parser_nodes__TId);
-((void (*)(val*))(var->class->vft[COLOR_parser_nodes__TId__init]))(var) /* init on <var:TId>*/;
+{
+{ /* Inline parser_nodes#ANode#init (var) on <var:TId> */
+RET_LABEL1:(void)0;
+}
+}
 self->attrs[COLOR_parser_nodes__AVarFormExpr___n_id].val = var; /* _n_id on <self:AVarAssignExpr> */
 self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_value].val = var_value; /* _n_value on <self:AVarAssignExpr> */
-((void (*)(val*, val*))(var_value->class->vft[COLOR_parser_nodes__ANode__parent_61d]))(var_value, self) /* parent= on <var_value:AExpr>*/;
-var1 = NEW_parser_nodes__TAssign(&type_parser_nodes__TAssign);
-((void (*)(val*))(var1->class->vft[COLOR_parser_nodes__TAssign__init]))(var1) /* init on <var1:TAssign>*/;
-self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_assign].val = var1; /* _n_assign on <self:AVarAssignExpr> */
-((void (*)(val*, val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable_61d]))(self, var_v) /* variable= on <self:AVarAssignExpr>*/;
-var2 = ((val* (*)(val*))(var_value->class->vft[COLOR_typing__AExpr__mtype]))(var_value) /* mtype on <var_value:AExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:AVarAssignExpr>*/;
+{
+{ /* Inline parser_nodes#ANode#parent= (var_value,self) on <var_value:AExpr> */
+var_value->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_value:AExpr> */
+RET_LABEL2:(void)0;
+}
+}
+var3 = NEW_parser_nodes__TAssign(&type_parser_nodes__TAssign);
+{
+{ /* Inline parser_nodes#ANode#init (var3) on <var3:TAssign> */
+RET_LABEL4:(void)0;
+}
+}
+self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_assign].val = var3; /* _n_assign on <self:AVarAssignExpr> */
+{
+{ /* Inline scope#AVarFormExpr#variable= (self,var_v) on <self:AVarAssignExpr> */
+self->attrs[COLOR_scope__AVarFormExpr___variable].val = var_v; /* _variable on <self:AVarAssignExpr> */
+RET_LABEL5:(void)0;
+}
+}
+{
+var6 = ((val* (*)(val*))(var_value->class->vft[COLOR_typing__AExpr__mtype]))(var_value) /* mtype on <var_value:AExpr>*/;
+}
+{
+{ /* Inline typing#AExpr#mtype= (self,var6) on <self:AVarAssignExpr> */
+self->attrs[COLOR_typing__AExpr___mtype].val = var6; /* _mtype on <self:AVarAssignExpr> */
+RET_LABEL7:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method astbuilder#AVarAssignExpr#make for (self: Object, Variable, AExpr) */
 void VIRTUAL_astbuilder__AVarAssignExpr__make(val* self, val* p0, val* p1) {
-astbuilder__AVarAssignExpr__make(self, p0, p1);
+astbuilder__AVarAssignExpr__make(self, p0, p1); /* Direct call astbuilder#AVarAssignExpr#make on <self:Object(AVarAssignExpr)>*/
 RET_LABEL:;
 }