c_src: update
[nit.git] / c_src / transform.sep.1.c
index 8fa971e..5b1e109 100644 (file)
@@ -1,37 +1,4 @@
 #include "transform.sep.0.h"
-/* method transform#ToolContext#transform_phase for (self: ToolContext): Phase */
-val* transform__ToolContext__transform_phase(val* self) {
-val* var /* : Phase */;
-val* var1 /* : Phase */;
-var1 = self->attrs[COLOR_transform__ToolContext___64dtransform_phase].val; /* @transform_phase on <self:ToolContext> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @transform_phase");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 24);
-show_backtrace(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method transform#ToolContext#transform_phase for (self: Object): Phase */
-val* VIRTUAL_transform__ToolContext__transform_phase(val* self) {
-val* var /* : Phase */;
-val* var1 /* : Phase */;
-var1 = transform__ToolContext__transform_phase(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method transform#ToolContext#transform_phase= for (self: ToolContext, Phase) */
-void transform__ToolContext__transform_phase_61d(val* self, val* p0) {
-self->attrs[COLOR_transform__ToolContext___64dtransform_phase].val = p0; /* @transform_phase on <self:ToolContext> */
-RET_LABEL:;
-}
-/* method transform#ToolContext#transform_phase= for (self: Object, Phase) */
-void VIRTUAL_transform__ToolContext__transform_phase_61d(val* self, val* p0) {
-transform__ToolContext__transform_phase_61d(self, p0);
-RET_LABEL:;
-}
 /* method transform#TransformPhase#process_npropdef for (self: TransformPhase, APropdef) */
 void transform__TransformPhase__process_npropdef(val* self, val* p0) {
 val* var_npropdef /* var npropdef: APropdef */;
@@ -41,61 +8,51 @@ val* var1 /* : ASTValidationVisitor */;
 val* var_val /* var val: nullable Object */;
 var_npropdef = p0;
 var = NEW_transform__TransformVisitor(&type_transform__TransformVisitor);
-((void (*)(val*, val*, val*))(var->class->vft[COLOR_transform__TransformVisitor__init]))(var, self, var_npropdef) /* init on <var:TransformVisitor>*/;
+{
+transform__TransformVisitor__init(var, self, var_npropdef); /* Direct call transform#TransformVisitor#init on <var:TransformVisitor>*/
+}
 var_v = var;
-((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_npropdef) /* enter_visit on <var_v:TransformVisitor>*/;
+{
+parser_nodes__Visitor__enter_visit(var_v, var_npropdef); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:TransformVisitor>*/
+}
 var1 = NEW_astvalidation__ASTValidationVisitor(&type_astvalidation__ASTValidationVisitor);
-((void (*)(val*))(var1->class->vft[COLOR_astvalidation__ASTValidationVisitor__init]))(var1) /* init on <var1:ASTValidationVisitor>*/;
-var_val = var1;
-((void (*)(val*, val*))(var_val->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_val, var_npropdef) /* enter_visit on <var_val:nullable Object(ASTValidationVisitor)>*/;
-RET_LABEL:;
+{
+{ /* Inline parser_nodes#Visitor#init (var1) on <var1:ASTValidationVisitor> */
+RET_LABEL2:(void)0;
 }
-/* method transform#TransformPhase#process_npropdef for (self: Object, APropdef) */
-void VIRTUAL_transform__TransformPhase__process_npropdef(val* self, val* p0) {
-transform__TransformPhase__process_npropdef(self, p0);
-RET_LABEL:;
 }
-/* method transform#TransformVisitor#phase for (self: TransformVisitor): TransformPhase */
-val* transform__TransformVisitor__phase(val* self) {
-val* var /* : TransformPhase */;
-val* var1 /* : TransformPhase */;
-var1 = self->attrs[COLOR_transform__TransformVisitor___64dphase].val; /* @phase on <self:TransformVisitor> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @phase");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 45);
-show_backtrace(1);
+var_val = var1;
+{
+parser_nodes__Visitor__enter_visit(var_val, var_npropdef); /* Direct call parser_nodes#Visitor#enter_visit on <var_val:nullable Object(ASTValidationVisitor)>*/
 }
-var = var1;
 RET_LABEL:;
-return var;
 }
-/* method transform#TransformVisitor#phase for (self: Object): TransformPhase */
-val* VIRTUAL_transform__TransformVisitor__phase(val* self) {
-val* var /* : TransformPhase */;
-val* var1 /* : TransformPhase */;
-var1 = transform__TransformVisitor__phase(self);
-var = var1;
+/* method transform#TransformPhase#process_npropdef for (self: Object, APropdef) */
+void VIRTUAL_transform__TransformPhase__process_npropdef(val* self, val* p0) {
+transform__TransformPhase__process_npropdef(self, p0); /* Direct call transform#TransformPhase#process_npropdef on <self:Object(TransformPhase)>*/
 RET_LABEL:;
-return var;
 }
 /* method transform#TransformVisitor#phase= for (self: TransformVisitor, TransformPhase) */
 void transform__TransformVisitor__phase_61d(val* self, val* p0) {
-self->attrs[COLOR_transform__TransformVisitor___64dphase].val = p0; /* @phase on <self:TransformVisitor> */
+self->attrs[COLOR_transform__TransformVisitor___phase].val = p0; /* _phase on <self:TransformVisitor> */
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#phase= for (self: Object, TransformPhase) */
 void VIRTUAL_transform__TransformVisitor__phase_61d(val* self, val* p0) {
-transform__TransformVisitor__phase_61d(self, p0);
+{ /* Inline transform#TransformVisitor#phase= (self,p0) on <self:Object(TransformVisitor)> */
+self->attrs[COLOR_transform__TransformVisitor___phase].val = p0; /* _phase on <self:Object(TransformVisitor)> */
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#mmodule for (self: TransformVisitor): MModule */
 val* transform__TransformVisitor__mmodule(val* self) {
 val* var /* : MModule */;
 val* var1 /* : MModule */;
-var1 = self->attrs[COLOR_transform__TransformVisitor___64dmmodule].val; /* @mmodule on <self:TransformVisitor> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 46);
+var1 = self->attrs[COLOR_transform__TransformVisitor___mmodule].val; /* _mmodule on <self:TransformVisitor> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 46);
 show_backtrace(1);
 }
 var = var1;
@@ -106,29 +63,42 @@ return var;
 val* VIRTUAL_transform__TransformVisitor__mmodule(val* self) {
 val* var /* : MModule */;
 val* var1 /* : MModule */;
-var1 = transform__TransformVisitor__mmodule(self);
+val* var3 /* : MModule */;
+{ /* Inline transform#TransformVisitor#mmodule (self) on <self:Object(TransformVisitor)> */
+var3 = self->attrs[COLOR_transform__TransformVisitor___mmodule].val; /* _mmodule on <self:Object(TransformVisitor)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 46);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
 var = var1;
 RET_LABEL:;
 return var;
 }
 /* method transform#TransformVisitor#mmodule= for (self: TransformVisitor, MModule) */
 void transform__TransformVisitor__mmodule_61d(val* self, val* p0) {
-self->attrs[COLOR_transform__TransformVisitor___64dmmodule].val = p0; /* @mmodule on <self:TransformVisitor> */
+self->attrs[COLOR_transform__TransformVisitor___mmodule].val = p0; /* _mmodule on <self:TransformVisitor> */
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#mmodule= for (self: Object, MModule) */
 void VIRTUAL_transform__TransformVisitor__mmodule_61d(val* self, val* p0) {
-transform__TransformVisitor__mmodule_61d(self, p0);
+{ /* Inline transform#TransformVisitor#mmodule= (self,p0) on <self:Object(TransformVisitor)> */
+self->attrs[COLOR_transform__TransformVisitor___mmodule].val = p0; /* _mmodule on <self:Object(TransformVisitor)> */
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#mclassdef for (self: TransformVisitor): MClassDef */
 val* transform__TransformVisitor__mclassdef(val* self) {
 val* var /* : MClassDef */;
 val* var1 /* : MClassDef */;
-var1 = self->attrs[COLOR_transform__TransformVisitor___64dmclassdef].val; /* @mclassdef on <self:TransformVisitor> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdef");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 47);
+var1 = self->attrs[COLOR_transform__TransformVisitor___mclassdef].val; /* _mclassdef on <self:TransformVisitor> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 47);
 show_backtrace(1);
 }
 var = var1;
@@ -139,29 +109,42 @@ return var;
 val* VIRTUAL_transform__TransformVisitor__mclassdef(val* self) {
 val* var /* : MClassDef */;
 val* var1 /* : MClassDef */;
-var1 = transform__TransformVisitor__mclassdef(self);
+val* var3 /* : MClassDef */;
+{ /* Inline transform#TransformVisitor#mclassdef (self) on <self:Object(TransformVisitor)> */
+var3 = self->attrs[COLOR_transform__TransformVisitor___mclassdef].val; /* _mclassdef on <self:Object(TransformVisitor)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 47);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
 var = var1;
 RET_LABEL:;
 return var;
 }
 /* method transform#TransformVisitor#mclassdef= for (self: TransformVisitor, MClassDef) */
 void transform__TransformVisitor__mclassdef_61d(val* self, val* p0) {
-self->attrs[COLOR_transform__TransformVisitor___64dmclassdef].val = p0; /* @mclassdef on <self:TransformVisitor> */
+self->attrs[COLOR_transform__TransformVisitor___mclassdef].val = p0; /* _mclassdef on <self:TransformVisitor> */
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#mclassdef= for (self: Object, MClassDef) */
 void VIRTUAL_transform__TransformVisitor__mclassdef_61d(val* self, val* p0) {
-transform__TransformVisitor__mclassdef_61d(self, p0);
+{ /* Inline transform#TransformVisitor#mclassdef= (self,p0) on <self:Object(TransformVisitor)> */
+self->attrs[COLOR_transform__TransformVisitor___mclassdef].val = p0; /* _mclassdef on <self:Object(TransformVisitor)> */
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#mpropdef for (self: TransformVisitor): MPropDef */
 val* transform__TransformVisitor__mpropdef(val* self) {
 val* var /* : MPropDef */;
 val* var1 /* : MPropDef */;
-var1 = self->attrs[COLOR_transform__TransformVisitor___64dmpropdef].val; /* @mpropdef on <self:TransformVisitor> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdef");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 48);
+var1 = self->attrs[COLOR_transform__TransformVisitor___mpropdef].val; /* _mpropdef on <self:TransformVisitor> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 48);
 show_backtrace(1);
 }
 var = var1;
@@ -172,29 +155,42 @@ return var;
 val* VIRTUAL_transform__TransformVisitor__mpropdef(val* self) {
 val* var /* : MPropDef */;
 val* var1 /* : MPropDef */;
-var1 = transform__TransformVisitor__mpropdef(self);
+val* var3 /* : MPropDef */;
+{ /* Inline transform#TransformVisitor#mpropdef (self) on <self:Object(TransformVisitor)> */
+var3 = self->attrs[COLOR_transform__TransformVisitor___mpropdef].val; /* _mpropdef on <self:Object(TransformVisitor)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 48);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
 var = var1;
 RET_LABEL:;
 return var;
 }
 /* method transform#TransformVisitor#mpropdef= for (self: TransformVisitor, MPropDef) */
 void transform__TransformVisitor__mpropdef_61d(val* self, val* p0) {
-self->attrs[COLOR_transform__TransformVisitor___64dmpropdef].val = p0; /* @mpropdef on <self:TransformVisitor> */
+self->attrs[COLOR_transform__TransformVisitor___mpropdef].val = p0; /* _mpropdef on <self:TransformVisitor> */
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#mpropdef= for (self: Object, MPropDef) */
 void VIRTUAL_transform__TransformVisitor__mpropdef_61d(val* self, val* p0) {
-transform__TransformVisitor__mpropdef_61d(self, p0);
+{ /* Inline transform#TransformVisitor#mpropdef= (self,p0) on <self:Object(TransformVisitor)> */
+self->attrs[COLOR_transform__TransformVisitor___mpropdef].val = p0; /* _mpropdef on <self:Object(TransformVisitor)> */
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#builder for (self: TransformVisitor): ASTBuilder */
 val* transform__TransformVisitor__builder(val* self) {
 val* var /* : ASTBuilder */;
 val* var1 /* : ASTBuilder */;
-var1 = self->attrs[COLOR_transform__TransformVisitor___64dbuilder].val; /* @builder on <self:TransformVisitor> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @builder");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 49);
+var1 = self->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <self:TransformVisitor> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
 show_backtrace(1);
 }
 var = var1;
@@ -205,19 +201,32 @@ return var;
 val* VIRTUAL_transform__TransformVisitor__builder(val* self) {
 val* var /* : ASTBuilder */;
 val* var1 /* : ASTBuilder */;
-var1 = transform__TransformVisitor__builder(self);
+val* var3 /* : ASTBuilder */;
+{ /* Inline transform#TransformVisitor#builder (self) on <self:Object(TransformVisitor)> */
+var3 = self->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <self:Object(TransformVisitor)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
 var = var1;
 RET_LABEL:;
 return var;
 }
 /* method transform#TransformVisitor#builder= for (self: TransformVisitor, ASTBuilder) */
 void transform__TransformVisitor__builder_61d(val* self, val* p0) {
-self->attrs[COLOR_transform__TransformVisitor___64dbuilder].val = p0; /* @builder on <self:TransformVisitor> */
+self->attrs[COLOR_transform__TransformVisitor___builder].val = p0; /* _builder on <self:TransformVisitor> */
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#builder= for (self: Object, ASTBuilder) */
 void VIRTUAL_transform__TransformVisitor__builder_61d(val* self, val* p0) {
-transform__TransformVisitor__builder_61d(self, p0);
+{ /* Inline transform#TransformVisitor#builder= (self,p0) on <self:Object(TransformVisitor)> */
+self->attrs[COLOR_transform__TransformVisitor___builder].val = p0; /* _builder on <self:Object(TransformVisitor)> */
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#init for (self: TransformVisitor, TransformPhase, APropdef) */
@@ -225,44 +234,182 @@ void transform__TransformVisitor__init(val* self, val* p0, val* p1) {
 val* var_phase /* var phase: TransformPhase */;
 val* var_npropdef /* var npropdef: APropdef */;
 val* var /* : nullable MPropDef */;
-val* var1 /* : MPropDef */;
-val* var2 /* : MClassDef */;
-val* var3 /* : MClassDef */;
-val* var4 /* : MModule */;
-val* var5 /* : ASTBuilder */;
-val* var6 /* : MModule */;
-val* var7 /* : MPropDef */;
-val* var8 /* : MClassDef */;
-val* var9 /* : MClassType */;
+val* var4 /* : nullable MPropDef */;
+val* var6 /* : MPropDef */;
+val* var8 /* : MPropDef */;
+val* var9 /* : MClassDef */;
+val* var11 /* : MClassDef */;
+val* var13 /* : MClassDef */;
+val* var15 /* : MClassDef */;
+val* var16 /* : MModule */;
+val* var18 /* : MModule */;
+val* var20 /* : ASTBuilder */;
+val* var21 /* : MModule */;
+val* var23 /* : MModule */;
+val* var24 /* : MPropDef */;
+val* var26 /* : MPropDef */;
+val* var27 /* : MClassDef */;
+val* var29 /* : MClassDef */;
+val* var30 /* : MClassType */;
+val* var32 /* : MClassType */;
+{
+{ /* Inline parser_nodes#Visitor#init (self) on <self:TransformVisitor> */
+RET_LABEL1:(void)0;
+}
+}
 var_phase = p0;
 var_npropdef = p1;
-((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on <self:TransformVisitor>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_transform__TransformVisitor__phase_61d]))(self, var_phase) /* phase= on <self:TransformVisitor>*/;
-var = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(var_npropdef) /* mpropdef on <var_npropdef:APropdef>*/;
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 54);
+{
+{ /* Inline transform#TransformVisitor#phase= (self,var_phase) on <self:TransformVisitor> */
+self->attrs[COLOR_transform__TransformVisitor___phase].val = var_phase; /* _phase on <self:TransformVisitor> */
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef> */
+var4 = var_npropdef->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef> */
+var = var4;
+RET_LABEL3:(void)0;
+}
+}
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 54);
+show_backtrace(1);
+}
+{
+{ /* Inline transform#TransformVisitor#mpropdef= (self,var) on <self:TransformVisitor> */
+self->attrs[COLOR_transform__TransformVisitor___mpropdef].val = var; /* _mpropdef on <self:TransformVisitor> */
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline transform#TransformVisitor#mpropdef (self) on <self:TransformVisitor> */
+var8 = self->attrs[COLOR_transform__TransformVisitor___mpropdef].val; /* _mpropdef on <self:TransformVisitor> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 48);
 show_backtrace(1);
 }
-((void (*)(val*, val*))(self->class->vft[COLOR_transform__TransformVisitor__mpropdef_61d]))(self, var) /* mpropdef= on <self:TransformVisitor>*/;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mpropdef]))(self) /* mpropdef on <self:TransformVisitor>*/;
-var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MPropDef__mclassdef]))(var1) /* mclassdef on <var1:MPropDef>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_transform__TransformVisitor__mclassdef_61d]))(self, var2) /* mclassdef= on <self:TransformVisitor>*/;
-var3 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mclassdef]))(self) /* mclassdef on <self:TransformVisitor>*/;
-var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__mmodule]))(var3) /* mmodule on <var3:MClassDef>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_transform__TransformVisitor__mmodule_61d]))(self, var4) /* mmodule= on <self:TransformVisitor>*/;
-var5 = NEW_astbuilder__ASTBuilder(&type_astbuilder__ASTBuilder);
-var6 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mmodule]))(self) /* mmodule on <self:TransformVisitor>*/;
-var7 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mpropdef]))(self) /* mpropdef on <self:TransformVisitor>*/;
-var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MPropDef__mclassdef]))(var7) /* mclassdef on <var7:MPropDef>*/;
-var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MClassDef__bound_mtype]))(var8) /* bound_mtype on <var8:MClassDef>*/;
-((void (*)(val*, val*, val*))(var5->class->vft[COLOR_astbuilder__ASTBuilder__init]))(var5, var6, var9) /* init on <var5:ASTBuilder>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_transform__TransformVisitor__builder_61d]))(self, var5) /* builder= on <self:TransformVisitor>*/;
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+{
+{ /* Inline model#MPropDef#mclassdef (var6) on <var6:MPropDef> */
+var11 = var6->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var6:MPropDef> */
+if (unlikely(var11 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
+show_backtrace(1);
+}
+var9 = var11;
+RET_LABEL10:(void)0;
+}
+}
+{
+{ /* Inline transform#TransformVisitor#mclassdef= (self,var9) on <self:TransformVisitor> */
+self->attrs[COLOR_transform__TransformVisitor___mclassdef].val = var9; /* _mclassdef on <self:TransformVisitor> */
+RET_LABEL12:(void)0;
+}
+}
+{
+{ /* Inline transform#TransformVisitor#mclassdef (self) on <self:TransformVisitor> */
+var15 = self->attrs[COLOR_transform__TransformVisitor___mclassdef].val; /* _mclassdef on <self:TransformVisitor> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 47);
+show_backtrace(1);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#mmodule (var13) on <var13:MClassDef> */
+var18 = var13->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var13:MClassDef> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 471);
+show_backtrace(1);
+}
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+{
+{ /* Inline transform#TransformVisitor#mmodule= (self,var16) on <self:TransformVisitor> */
+self->attrs[COLOR_transform__TransformVisitor___mmodule].val = var16; /* _mmodule on <self:TransformVisitor> */
+RET_LABEL19:(void)0;
+}
+}
+var20 = NEW_astbuilder__ASTBuilder(&type_astbuilder__ASTBuilder);
+{
+{ /* Inline transform#TransformVisitor#mmodule (self) on <self:TransformVisitor> */
+var23 = self->attrs[COLOR_transform__TransformVisitor___mmodule].val; /* _mmodule on <self:TransformVisitor> */
+if (unlikely(var23 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 46);
+show_backtrace(1);
+}
+var21 = var23;
+RET_LABEL22:(void)0;
+}
+}
+{
+{ /* Inline transform#TransformVisitor#mpropdef (self) on <self:TransformVisitor> */
+var26 = self->attrs[COLOR_transform__TransformVisitor___mpropdef].val; /* _mpropdef on <self:TransformVisitor> */
+if (unlikely(var26 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 48);
+show_backtrace(1);
+}
+var24 = var26;
+RET_LABEL25:(void)0;
+}
+}
+{
+{ /* Inline model#MPropDef#mclassdef (var24) on <var24:MPropDef> */
+var29 = var24->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var24:MPropDef> */
+if (unlikely(var29 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
+show_backtrace(1);
+}
+var27 = var29;
+RET_LABEL28:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#bound_mtype (var27) on <var27:MClassDef> */
+var32 = var27->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var27:MClassDef> */
+if (unlikely(var32 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
+PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
+show_backtrace(1);
+}
+var30 = var32;
+RET_LABEL31:(void)0;
+}
+}
+{
+{ /* Inline astbuilder#ASTBuilder#init (var20,var21,var30) on <var20:ASTBuilder> */
+var20->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val = var21; /* _mmodule on <var20:ASTBuilder> */
+var20->attrs[COLOR_astbuilder__ASTBuilder___anchor].val = var30; /* _anchor on <var20:ASTBuilder> */
+RET_LABEL33:(void)0;
+}
+}
+{
+{ /* Inline transform#TransformVisitor#builder= (self,var20) on <self:TransformVisitor> */
+self->attrs[COLOR_transform__TransformVisitor___builder].val = var20; /* _builder on <self:TransformVisitor> */
+RET_LABEL34:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#init for (self: Object, TransformPhase, APropdef) */
 void VIRTUAL_transform__TransformVisitor__init(val* self, val* p0, val* p1) {
-transform__TransformVisitor__init(self, p0, p1);
+transform__TransformVisitor__init(self, p0, p1); /* Direct call transform#TransformVisitor#init on <self:Object(TransformVisitor)>*/
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#visit for (self: TransformVisitor, ANode) */
@@ -284,72 +431,18 @@ if (var){
 goto RET_LABEL;
 } else {
 }
+{
 ((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__visit_all]))(var_node, self) /* visit_all on <var_node:ANode>*/;
+}
+{
 ((void (*)(val*, val*))(var_node->class->vft[COLOR_transform__ANode__accept_transform_visitor]))(var_node, self) /* accept_transform_visitor on <var_node:ANode>*/;
+}
 RET_LABEL:;
 }
 /* method transform#TransformVisitor#visit for (self: Object, ANode) */
 void VIRTUAL_transform__TransformVisitor__visit(val* self, val* p0) {
-transform__TransformVisitor__visit(self, p0);
-RET_LABEL:;
-}
-/* method transform#TransformVisitor#get_class for (self: TransformVisitor, AExpr, String): MClass */
-val* transform__TransformVisitor__get_class(val* self, val* p0, val* p1) {
-val* var /* : MClass */;
-val* var_location /* var location: AExpr */;
-val* var_name /* var name: String */;
-val* var1 /* : MModule */;
-val* var2 /* : MClass */;
-var_location = p0;
-var_name = p1;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mmodule]))(self) /* mmodule on <self:TransformVisitor>*/;
-var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__MModule__get_primitive_class]))(var1, var_name) /* get_primitive_class on <var1:MModule>*/;
-var = var2;
-goto RET_LABEL;
+transform__TransformVisitor__visit(self, p0); /* Direct call transform#TransformVisitor#visit on <self:Object(TransformVisitor)>*/
 RET_LABEL:;
-return var;
-}
-/* method transform#TransformVisitor#get_class for (self: Object, AExpr, String): MClass */
-val* VIRTUAL_transform__TransformVisitor__get_class(val* self, val* p0, val* p1) {
-val* var /* : MClass */;
-val* var1 /* : MClass */;
-var1 = transform__TransformVisitor__get_class(self, p0, p1);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method transform#TransformVisitor#get_method for (self: TransformVisitor, AExpr, String, MClass): MMethod */
-val* transform__TransformVisitor__get_method(val* self, val* p0, val* p1, val* p2) {
-val* var /* : MMethod */;
-val* var_location /* var location: AExpr */;
-val* var_name /* var name: String */;
-val* var_recv /* var recv: MClass */;
-val* var1 /* : TransformPhase */;
-val* var2 /* : ToolContext */;
-val* var3 /* : ModelBuilder */;
-val* var4 /* : MModule */;
-val* var5 /* : MMethod */;
-var_location = p0;
-var_name = p1;
-var_recv = p2;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__phase]))(self) /* phase on <self:TransformVisitor>*/;
-var2 = ((val* (*)(val*))(var1->class->vft[COLOR_phase__Phase__toolcontext]))(var1) /* toolcontext on <var1:TransformPhase>*/;
-var3 = ((val* (*)(val*))(var2->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var2) /* modelbuilder on <var2:ToolContext>*/;
-var4 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mmodule]))(self) /* mmodule on <self:TransformVisitor>*/;
-var5 = ((val* (*)(val*, val*, val*, val*, val*))(var3->class->vft[COLOR_modelbuilder__ModelBuilder__force_get_primitive_method]))(var3, var_location, var_name, var_recv, var4) /* force_get_primitive_method on <var3:ModelBuilder>*/;
-var = var5;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method transform#TransformVisitor#get_method for (self: Object, AExpr, String, MClass): MMethod */
-val* VIRTUAL_transform__TransformVisitor__get_method(val* self, val* p0, val* p1, val* p2) {
-val* var /* : MMethod */;
-val* var1 /* : MMethod */;
-var1 = transform__TransformVisitor__get_method(self, p0, p1, p2);
-var = var1;
-RET_LABEL:;
-return var;
 }
 /* method transform#ANode#accept_transform_visitor for (self: ANode, TransformVisitor) */
 void transform__ANode__accept_transform_visitor(val* self, val* p0) {
@@ -359,7 +452,11 @@ RET_LABEL:;
 }
 /* method transform#ANode#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__ANode__accept_transform_visitor(val* self, val* p0) {
-transform__ANode__accept_transform_visitor(self, p0);
+val* var_v /* var v: TransformVisitor */;
+{ /* Inline transform#ANode#accept_transform_visitor (self,p0) on <self:Object(ANode)> */
+var_v = p0;
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method transform#AVardeclExpr#accept_transform_visitor for (self: AVardeclExpr, TransformVisitor) */
@@ -369,12 +466,20 @@ val* var /* : nullable AExpr */;
 val* var_nexpr /* var nexpr: nullable AExpr */;
 val* var1 /* : null */;
 short int var2 /* : Bool */;
-val* var3 /* : ASTBuilder */;
-val* var4 /* : nullable Variable */;
-val* var5 /* : AVarAssignExpr */;
+short int var3 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var5 /* : Bool */;
+short int var7 /* : Bool */;
+val* var8 /* : ASTBuilder */;
+val* var10 /* : ASTBuilder */;
+val* var11 /* : nullable Variable */;
+val* var13 /* : nullable Variable */;
+val* var14 /* : AVarAssignExpr */;
 val* var_nvar /* var nvar: AVarAssignExpr */;
 var_v = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_expr]))(self) /* n_expr on <self:AVardeclExpr>*/;
+{
+var = parser_nodes__AVardeclExpr__n_expr(self);
+}
 var_nexpr = var;
 var1 = NULL;
 if (var_nexpr == NULL) {
@@ -382,115 +487,220 @@ var2 = 1; /* is null */
 } else {
 var2 = 0; /* arg is null but recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#== (var_nexpr,var1) on <var_nexpr:nullable AExpr> */
+var_other = var1;
+{
+{ /* Inline kernel#Object#is_same_instance (var_nexpr,var_other) on <var_nexpr:nullable AExpr(AExpr)> */
+var7 = var_nexpr == var_other;
+var5 = var7;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+}
+var3 = var5;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
+}
+var2 = var3;
+}
 if (var2){
-((void (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__detach]))(self) /* detach on <self:AVardeclExpr>*/;
 } else {
-var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var4 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVardeclExpr__variable]))(self) /* variable on <self:AVardeclExpr>*/;
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 99);
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var10 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+{ /* Inline scope#AVardeclExpr#variable (self) on <self:AVardeclExpr> */
+var13 = self->attrs[COLOR_scope__AVardeclExpr___variable].val; /* _variable on <self:AVardeclExpr> */
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+if (unlikely(var11 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 100);
 show_backtrace(1);
 }
-var5 = ((val* (*)(val*, val*, val*))(var3->class->vft[COLOR_astbuilder__ASTBuilder__make_var_assign]))(var3, var4, var_nexpr) /* make_var_assign on <var3:ASTBuilder>*/;
-var_nvar = var5;
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nvar) /* replace_with on <self:AVardeclExpr>*/;
+{
+var14 = astbuilder__ASTBuilder__make_var_assign(var8, var11, var_nexpr);
+}
+var_nvar = var14;
+{
+parser_nodes__Prod__replace_with(self, var_nvar); /* Direct call parser_nodes#Prod#replace_with on <self:AVardeclExpr>*/
+}
 }
 RET_LABEL:;
 }
 /* method transform#AVardeclExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__AVardeclExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AVardeclExpr__accept_transform_visitor(self, p0);
+transform__AVardeclExpr__accept_transform_visitor(self, p0); /* Direct call transform#AVardeclExpr#accept_transform_visitor on <self:Object(AVardeclExpr)>*/
 RET_LABEL:;
 }
 /* method transform#AIfexprExpr#accept_transform_visitor for (self: AIfexprExpr, TransformVisitor) */
 void transform__AIfexprExpr__accept_transform_visitor(val* self, val* p0) {
 val* var_v /* var v: TransformVisitor */;
 val* var /* : ASTBuilder */;
-val* var1 /* : AExpr */;
-val* var2 /* : nullable MType */;
-val* var3 /* : AIfExpr */;
+val* var2 /* : ASTBuilder */;
+val* var3 /* : AExpr */;
+val* var4 /* : nullable MType */;
+val* var6 /* : nullable MType */;
+val* var7 /* : AIfExpr */;
 val* var_nif /* var nif: AIfExpr */;
-val* var4 /* : nullable AExpr */;
-val* var5 /* : AExpr */;
-val* var6 /* : nullable AExpr */;
-val* var7 /* : AExpr */;
+val* var8 /* : nullable AExpr */;
+val* var9 /* : AExpr */;
+val* var10 /* : nullable AExpr */;
+val* var11 /* : AExpr */;
 var_v = p0;
-var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_expr]))(self) /* n_expr on <self:AIfexprExpr>*/;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AIfexprExpr>*/;
-var3 = ((val* (*)(val*, val*, val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_if]))(var, var1, var2) /* make_if on <var:ASTBuilder>*/;
-var_nif = var3;
-var4 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(var_nif) /* n_then on <var_nif:AIfExpr>*/;
-var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_then]))(self) /* n_then on <self:AIfexprExpr>*/;
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 112);
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var2 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+var3 = parser_nodes__AIfexprExpr__n_expr(self);
+}
+{
+{ /* Inline typing#AExpr#mtype (self) on <self:AIfexprExpr> */
+var6 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AIfexprExpr> */
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+var7 = astbuilder__ASTBuilder__make_if(var, var3, var4);
+}
+var_nif = var7;
+{
+var8 = parser_nodes__AIfExpr__n_then(var_nif);
+}
+{
+var9 = parser_nodes__AIfexprExpr__n_then(self);
+}
+if (var8 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 113);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var4->class->vft[COLOR_astbuilder__AExpr__add]))(var4, var5) /* add on <var4:nullable AExpr>*/;
+((void (*)(val*, val*))(var8->class->vft[COLOR_astbuilder__AExpr__add]))(var8, var9) /* add on <var8:nullable AExpr>*/;
+}
+{
+var10 = parser_nodes__AIfExpr__n_else(var_nif);
 }
-var6 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(var_nif) /* n_else on <var_nif:AIfExpr>*/;
-var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_else]))(self) /* n_else on <self:AIfexprExpr>*/;
-if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 113);
+{
+var11 = parser_nodes__AIfexprExpr__n_else(self);
+}
+if (var10 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 114);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var6->class->vft[COLOR_astbuilder__AExpr__add]))(var6, var7) /* add on <var6:nullable AExpr>*/;
+((void (*)(val*, val*))(var10->class->vft[COLOR_astbuilder__AExpr__add]))(var10, var11) /* add on <var10:nullable AExpr>*/;
+}
+{
+parser_nodes__Prod__replace_with(self, var_nif); /* Direct call parser_nodes#Prod#replace_with on <self:AIfexprExpr>*/
 }
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nif) /* replace_with on <self:AIfexprExpr>*/;
 RET_LABEL:;
 }
 /* method transform#AIfexprExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__AIfexprExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AIfexprExpr__accept_transform_visitor(self, p0);
+transform__AIfexprExpr__accept_transform_visitor(self, p0); /* Direct call transform#AIfexprExpr#accept_transform_visitor on <self:Object(AIfexprExpr)>*/
 RET_LABEL:;
 }
 /* method transform#AOrExpr#accept_transform_visitor for (self: AOrExpr, TransformVisitor) */
 void transform__AOrExpr__accept_transform_visitor(val* self, val* p0) {
 val* var_v /* var v: TransformVisitor */;
 val* var /* : ASTBuilder */;
-val* var1 /* : AExpr */;
-val* var2 /* : nullable MType */;
-val* var3 /* : AIfExpr */;
+val* var2 /* : ASTBuilder */;
+val* var3 /* : AExpr */;
+val* var4 /* : nullable MType */;
+val* var6 /* : nullable MType */;
+val* var7 /* : AIfExpr */;
 val* var_nif /* var nif: AIfExpr */;
-val* var4 /* : nullable AExpr */;
-val* var5 /* : AExpr */;
-val* var6 /* : AVarExpr */;
-val* var7 /* : nullable AExpr */;
-val* var8 /* : AExpr */;
+val* var8 /* : nullable AExpr */;
+val* var9 /* : AExpr */;
+val* var10 /* : AVarExpr */;
+val* var11 /* : nullable AExpr */;
+val* var12 /* : AExpr */;
 var_v = p0;
-var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr]))(self) /* n_expr on <self:AOrExpr>*/;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AOrExpr>*/;
-var3 = ((val* (*)(val*, val*, val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_if]))(var, var1, var2) /* make_if on <var:ASTBuilder>*/;
-var_nif = var3;
-var4 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(var_nif) /* n_then on <var_nif:AIfExpr>*/;
-var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr]))(self) /* n_expr on <self:AOrExpr>*/;
-var6 = ((val* (*)(val*))(var5->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var5) /* make_var_read on <var5:AExpr>*/;
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 124);
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var2 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+var3 = parser_nodes__AOrExpr__n_expr(self);
+}
+{
+{ /* Inline typing#AExpr#mtype (self) on <self:AOrExpr> */
+var6 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AOrExpr> */
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+var7 = astbuilder__ASTBuilder__make_if(var, var3, var4);
+}
+var_nif = var7;
+{
+var8 = parser_nodes__AIfExpr__n_then(var_nif);
+}
+{
+var9 = parser_nodes__AOrExpr__n_expr(self);
+}
+{
+var10 = astbuilder__AExpr__make_var_read(var9);
+}
+if (var8 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 125);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var4->class->vft[COLOR_astbuilder__AExpr__add]))(var4, var6) /* add on <var4:nullable AExpr>*/;
+((void (*)(val*, val*))(var8->class->vft[COLOR_astbuilder__AExpr__add]))(var8, var10) /* add on <var8:nullable AExpr>*/;
+}
+{
+var11 = parser_nodes__AIfExpr__n_else(var_nif);
+}
+{
+var12 = parser_nodes__AOrExpr__n_expr2(self);
 }
-var7 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(var_nif) /* n_else on <var_nif:AIfExpr>*/;
-var8 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr2]))(self) /* n_expr2 on <self:AOrExpr>*/;
-if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 125);
+if (var11 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 126);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var7->class->vft[COLOR_astbuilder__AExpr__add]))(var7, var8) /* add on <var7:nullable AExpr>*/;
+((void (*)(val*, val*))(var11->class->vft[COLOR_astbuilder__AExpr__add]))(var11, var12) /* add on <var11:nullable AExpr>*/;
+}
+{
+parser_nodes__Prod__replace_with(self, var_nif); /* Direct call parser_nodes#Prod#replace_with on <self:AOrExpr>*/
 }
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nif) /* replace_with on <self:AOrExpr>*/;
 RET_LABEL:;
 }
 /* method transform#AOrExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__AOrExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AOrExpr__accept_transform_visitor(self, p0);
+transform__AOrExpr__accept_transform_visitor(self, p0); /* Direct call transform#AOrExpr#accept_transform_visitor on <self:Object(AOrExpr)>*/
 RET_LABEL:;
 }
 /* method transform#AImpliesExpr#accept_transform_visitor for (self: AImpliesExpr, TransformVisitor) */
@@ -501,53 +711,92 @@ RET_LABEL:;
 }
 /* method transform#AImpliesExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__AImpliesExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AImpliesExpr__accept_transform_visitor(self, p0);
+val* var_v /* var v: TransformVisitor */;
+{ /* Inline transform#AImpliesExpr#accept_transform_visitor (self,p0) on <self:Object(AImpliesExpr)> */
+var_v = p0;
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method transform#AAndExpr#accept_transform_visitor for (self: AAndExpr, TransformVisitor) */
 void transform__AAndExpr__accept_transform_visitor(val* self, val* p0) {
 val* var_v /* var v: TransformVisitor */;
 val* var /* : ASTBuilder */;
-val* var1 /* : AExpr */;
-val* var2 /* : nullable MType */;
-val* var3 /* : AIfExpr */;
+val* var2 /* : ASTBuilder */;
+val* var3 /* : AExpr */;
+val* var4 /* : nullable MType */;
+val* var6 /* : nullable MType */;
+val* var7 /* : AIfExpr */;
 val* var_nif /* var nif: AIfExpr */;
-val* var4 /* : nullable AExpr */;
-val* var5 /* : AExpr */;
-val* var6 /* : nullable AExpr */;
-val* var7 /* : AExpr */;
-val* var8 /* : AVarExpr */;
+val* var8 /* : nullable AExpr */;
+val* var9 /* : AExpr */;
+val* var10 /* : nullable AExpr */;
+val* var11 /* : AExpr */;
+val* var12 /* : AVarExpr */;
 var_v = p0;
-var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr]))(self) /* n_expr on <self:AAndExpr>*/;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AAndExpr>*/;
-var3 = ((val* (*)(val*, val*, val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_if]))(var, var1, var2) /* make_if on <var:ASTBuilder>*/;
-var_nif = var3;
-var4 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(var_nif) /* n_then on <var_nif:AIfExpr>*/;
-var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr2]))(self) /* n_expr2 on <self:AAndExpr>*/;
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 143);
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var2 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+var3 = parser_nodes__AAndExpr__n_expr(self);
+}
+{
+{ /* Inline typing#AExpr#mtype (self) on <self:AAndExpr> */
+var6 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AAndExpr> */
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+var7 = astbuilder__ASTBuilder__make_if(var, var3, var4);
+}
+var_nif = var7;
+{
+var8 = parser_nodes__AIfExpr__n_then(var_nif);
+}
+{
+var9 = parser_nodes__AAndExpr__n_expr2(self);
+}
+if (var8 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 144);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var4->class->vft[COLOR_astbuilder__AExpr__add]))(var4, var5) /* add on <var4:nullable AExpr>*/;
-}
-var6 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(var_nif) /* n_else on <var_nif:AIfExpr>*/;
-var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr]))(self) /* n_expr on <self:AAndExpr>*/;
-var8 = ((val* (*)(val*))(var7->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var7) /* make_var_read on <var7:AExpr>*/;
-if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 144);
+((void (*)(val*, val*))(var8->class->vft[COLOR_astbuilder__AExpr__add]))(var8, var9) /* add on <var8:nullable AExpr>*/;
+}
+{
+var10 = parser_nodes__AIfExpr__n_else(var_nif);
+}
+{
+var11 = parser_nodes__AAndExpr__n_expr(self);
+}
+{
+var12 = astbuilder__AExpr__make_var_read(var11);
+}
+if (var10 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 145);
 show_backtrace(1);
 } else {
-((void (*)(val*, val*))(var6->class->vft[COLOR_astbuilder__AExpr__add]))(var6, var8) /* add on <var6:nullable AExpr>*/;
+((void (*)(val*, val*))(var10->class->vft[COLOR_astbuilder__AExpr__add]))(var10, var12) /* add on <var10:nullable AExpr>*/;
+}
+{
+parser_nodes__Prod__replace_with(self, var_nif); /* Direct call parser_nodes#Prod#replace_with on <self:AAndExpr>*/
 }
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nif) /* replace_with on <self:AAndExpr>*/;
 RET_LABEL:;
 }
 /* method transform#AAndExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__AAndExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AAndExpr__accept_transform_visitor(self, p0);
+transform__AAndExpr__accept_transform_visitor(self, p0); /* Direct call transform#AAndExpr#accept_transform_visitor on <self:Object(AAndExpr)>*/
 RET_LABEL:;
 }
 /* method transform#AWhileExpr#accept_transform_visitor for (self: AWhileExpr, TransformVisitor) */
@@ -558,7 +807,11 @@ RET_LABEL:;
 }
 /* method transform#AWhileExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__AWhileExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AWhileExpr__accept_transform_visitor(self, p0);
+val* var_v /* var v: TransformVisitor */;
+{ /* Inline transform#AWhileExpr#accept_transform_visitor (self,p0) on <self:Object(AWhileExpr)> */
+var_v = p0;
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method transform#AForExpr#accept_transform_visitor for (self: AForExpr, TransformVisitor) */
@@ -569,511 +822,374 @@ RET_LABEL:;
 }
 /* method transform#AForExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__AForExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AForExpr__accept_transform_visitor(self, p0);
+val* var_v /* var v: TransformVisitor */;
+{ /* Inline transform#AForExpr#accept_transform_visitor (self,p0) on <self:Object(AForExpr)> */
+var_v = p0;
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
 /* method transform#AArrayExpr#accept_transform_visitor for (self: AArrayExpr, TransformVisitor) */
 void transform__AArrayExpr__accept_transform_visitor(val* self, val* p0) {
 val* var_v /* var v: TransformVisitor */;
-val* var /* : nullable MType */;
-short int var1 /* : Bool */;
-int cltype;
-int idtype;
-const char* var_class_name;
-val* var_mtype /* var mtype: MClassType */;
+val* var /* : ASTBuilder */;
 val* var2 /* : ASTBuilder */;
 val* var3 /* : ABlockExpr */;
 val* var_nblock /* var nblock: ABlockExpr */;
-static val* varonce;
-val* var4 /* : String */;
-char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : String */;
-val* var8 /* : MClass */;
-val* var9 /* : MMethod */;
-val* var_meth /* var meth: MMethod */;
-val* var10 /* : ASTBuilder */;
-val* var11 /* : ASTBuilder */;
-val* var12 /* : AExprs */;
-val* var13 /* : ANodes[AExpr] */;
-long var14 /* : Int */;
-val* var15 /* : AIntExpr */;
-val* var16 /* : Array[AIntExpr] */;
-long var17 /* : Int */;
-val* var18 /* : NativeArray[AIntExpr] */;
-val* var19 /* : ANewExpr */;
+val* var4 /* : ASTBuilder */;
+val* var6 /* : ASTBuilder */;
+val* var7 /* : nullable CallSite */;
+val* var9 /* : nullable CallSite */;
+val* var10 /* : Array[AIntExpr] */;
+long var11 /* : Int */;
+val* var_ /* var : Array[AIntExpr] */;
+val* var12 /* : ASTBuilder */;
+val* var14 /* : ASTBuilder */;
+val* var15 /* : AExprs */;
+val* var16 /* : ANodes[AExpr] */;
+val* var18 /* : ANodes[AExpr] */;
+long var19 /* : Int */;
+val* var20 /* : AIntExpr */;
+val* var21 /* : ANewExpr */;
 val* var_nnew /* var nnew: ANewExpr */;
-static val* varonce20;
-val* var21 /* : String */;
-char* var22 /* : NativeString */;
-long var23 /* : Int */;
-val* var24 /* : String */;
-val* var25 /* : MClass */;
-val* var26 /* : MMethod */;
-val* var_madd /* var madd: MMethod */;
-val* var27 /* : AExprs */;
-val* var28 /* : ANodes[AExpr] */;
-val* var29 /* : Iterator[nullable Object] */;
-short int var30 /* : Bool */;
-val* var31 /* : nullable Object */;
+val* var22 /* : AExprs */;
+val* var23 /* : ANodes[AExpr] */;
+val* var25 /* : ANodes[AExpr] */;
+val* var26 /* : Iterator[ANode] */;
+short int var27 /* : Bool */;
+val* var28 /* : nullable Object */;
 val* var_nexpr /* var nexpr: AExpr */;
-val* var32 /* : ASTBuilder */;
-val* var33 /* : AVarExpr */;
-val* var34 /* : Array[AExpr] */;
-long var35 /* : Int */;
-val* var36 /* : NativeArray[AExpr] */;
-val* var37 /* : ACallExpr */;
+val* var29 /* : ASTBuilder */;
+val* var31 /* : ASTBuilder */;
+val* var32 /* : AVarExpr */;
+val* var33 /* : nullable CallSite */;
+val* var35 /* : nullable CallSite */;
+val* var36 /* : Array[AExpr] */;
+long var37 /* : Int */;
+val* var_38 /* var : Array[AExpr] */;
+val* var39 /* : ACallExpr */;
 val* var_nadd /* var nadd: ACallExpr */;
-val* var38 /* : AVarExpr */;
+val* var40 /* : AVarExpr */;
 val* var_nres /* var nres: AVarExpr */;
 var_v = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AArrayExpr>*/;
-/* <var:nullable MType> isa MClassType */
-cltype = type_model__MClassType.color;
-idtype = type_model__MClassType.id;
-if(var == NULL) {
-var1 = 0;
-} else {
-if(cltype >= var->type->table_size) {
-var1 = 0;
-} else {
-var1 = var->type->type_table[cltype] == idtype;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var2 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
 }
 }
-if (!var1) {
-var_class_name = var == NULL ? "null" : var->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 173);
-show_backtrace(1);
+{
+var3 = astbuilder__ASTBuilder__make_block(var);
 }
-var_mtype = var;
-var2 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var3 = ((val* (*)(val*))(var2->class->vft[COLOR_astbuilder__ASTBuilder__make_block]))(var2) /* make_block on <var2:ASTBuilder>*/;
 var_nblock = var3;
-if (varonce) {
-var4 = varonce;
-} else {
-var5 = "with_capacity";
-var6 = 13;
-var7 = string__NativeString__to_s_with_length(var5, var6);
-var4 = var7;
-varonce = var4;
-}
-var8 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
-var9 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var4, var8) /* get_method on <var_v:TransformVisitor>*/;
-var_meth = var9;
-var10 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var12 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AArrayExpr__n_exprs]))(self) /* n_exprs on <self:AArrayExpr>*/;
-var13 = ((val* (*)(val*))(var12->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var12) /* n_exprs on <var12:AExprs>*/;
-var14 = ((long (*)(val*))(var13->class->vft[COLOR_abstract_collection__Collection__length]))(var13) /* length on <var13:ANodes[AExpr]>*/;
-var15 = ((val* (*)(val*, long))(var11->class->vft[COLOR_astbuilder__ASTBuilder__make_int]))(var11, var14) /* make_int on <var11:ASTBuilder>*/;
-var16 = NEW_array__Array(&type_array__Arrayparser_nodes__AIntExpr);
-{ /* var16 = array_instance Array[AIntExpr] */
-var17 = 1;
-var18 = NEW_array__NativeArray(var17, &type_array__NativeArrayparser_nodes__AIntExpr);
-((struct instance_array__NativeArray*)var18)->values[0] = (val*) var15;
-((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[AIntExpr]>*/;
-}
-var19 = ((val* (*)(val*, val*, val*, val*))(var10->class->vft[COLOR_astbuilder__ASTBuilder__make_new]))(var10, var_mtype, var_meth, var16) /* make_new on <var10:ASTBuilder>*/;
-var_nnew = var19;
-((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nnew) /* add on <var_nblock:ABlockExpr>*/;
-if (varonce20) {
-var21 = varonce20;
-} else {
-var22 = "push";
-var23 = 4;
-var24 = string__NativeString__to_s_with_length(var22, var23);
-var21 = var24;
-varonce20 = var21;
-}
-var25 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
-var26 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var21, var25) /* get_method on <var_v:TransformVisitor>*/;
-var_madd = var26;
-var27 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AArrayExpr__n_exprs]))(self) /* n_exprs on <self:AArrayExpr>*/;
-var28 = ((val* (*)(val*))(var27->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var27) /* n_exprs on <var27:AExprs>*/;
-var29 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__iterator]))(var28) /* iterator on <var28:ANodes[AExpr]>*/;
-for(;;) {
-var30 = ((short int (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var29) /* is_ok on <var29:Iterator[nullable Object]>*/;
-if(!var30) break;
-var31 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__item]))(var29) /* item on <var29:Iterator[nullable Object]>*/;
-var_nexpr = var31;
-var32 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var33 = ((val* (*)(val*))(var_nnew->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_nnew) /* make_var_read on <var_nnew:ANewExpr>*/;
-var34 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
-{ /* var34 = array_instance Array[AExpr] */
-var35 = 1;
-var36 = NEW_array__NativeArray(var35, &type_array__NativeArrayparser_nodes__AExpr);
-((struct instance_array__NativeArray*)var36)->values[0] = (val*) var_nexpr;
-((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[AExpr]>*/;
-}
-var37 = ((val* (*)(val*, val*, val*, val*))(var32->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var32, var33, var_madd, var34) /* make_call on <var32:ASTBuilder>*/;
-var_nadd = var37;
-((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nadd) /* add on <var_nblock:ABlockExpr>*/;
-CONTINUE_label: (void)0;
-((void (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__next]))(var29) /* next on <var29:Iterator[nullable Object]>*/;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var6 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
 }
-BREAK_label: (void)0;
-var38 = ((val* (*)(val*))(var_nnew->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_nnew) /* make_var_read on <var_nnew:ANewExpr>*/;
-var_nres = var38;
-((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nres) /* add on <var_nblock:ABlockExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nblock) /* replace_with on <self:AArrayExpr>*/;
-RET_LABEL:;
+var4 = var6;
+RET_LABEL5:(void)0;
 }
-/* method transform#AArrayExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
-void VIRTUAL_transform__AArrayExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AArrayExpr__accept_transform_visitor(self, p0);
-RET_LABEL:;
 }
-/* method transform#ASuperstringExpr#accept_transform_visitor for (self: ASuperstringExpr, TransformVisitor) */
-void transform__ASuperstringExpr__accept_transform_visitor(val* self, val* p0) {
-val* var_v /* var v: TransformVisitor */;
-val* var /* : ASTBuilder */;
-val* var1 /* : ABlockExpr */;
-val* var_nblock /* var nblock: ABlockExpr */;
-static val* varonce;
-val* var2 /* : String */;
-char* var3 /* : NativeString */;
-long var4 /* : Int */;
-val* var5 /* : String */;
-val* var6 /* : MClass */;
-static val* varonce7;
-val* var8 /* : String */;
-char* var9 /* : NativeString */;
-long var10 /* : Int */;
-val* var11 /* : String */;
-val* var12 /* : MClass */;
-val* var13 /* : MClassType */;
-val* var14 /* : Array[MClassType] */;
-long var15 /* : Int */;
-val* var16 /* : NativeArray[MClassType] */;
-val* var17 /* : MClassType */;
-val* var_arraytype /* var arraytype: MClassType */;
-static val* varonce18;
-val* var19 /* : String */;
-char* var20 /* : NativeString */;
-long var21 /* : Int */;
-val* var22 /* : String */;
-val* var23 /* : MClass */;
-val* var24 /* : MMethod */;
-val* var_meth /* var meth: MMethod */;
-val* var25 /* : ASTBuilder */;
-val* var26 /* : ASTBuilder */;
-val* var27 /* : ANodes[AExpr] */;
-long var28 /* : Int */;
-val* var29 /* : AIntExpr */;
-val* var30 /* : Array[AIntExpr] */;
-long var31 /* : Int */;
-val* var32 /* : NativeArray[AIntExpr] */;
-val* var33 /* : ANewExpr */;
-val* var_nnew /* var nnew: ANewExpr */;
-static val* varonce34;
-val* var35 /* : String */;
-char* var36 /* : NativeString */;
-long var37 /* : Int */;
-val* var38 /* : String */;
-val* var39 /* : MClass */;
-val* var40 /* : MMethod */;
-val* var_madd /* var madd: MMethod */;
-val* var41 /* : ANodes[AExpr] */;
-val* var42 /* : Iterator[nullable Object] */;
-short int var43 /* : Bool */;
-val* var44 /* : nullable Object */;
-val* var_nexpr /* var nexpr: AExpr */;
-val* var45 /* : ASTBuilder */;
-val* var46 /* : AVarExpr */;
-val* var47 /* : Array[AExpr] */;
-long var48 /* : Int */;
-val* var49 /* : NativeArray[AExpr] */;
-val* var50 /* : ACallExpr */;
-val* var_nadd /* var nadd: ACallExpr */;
-static val* varonce51;
-val* var52 /* : String */;
-char* var53 /* : NativeString */;
-long var54 /* : Int */;
-val* var55 /* : String */;
-val* var56 /* : MClass */;
-val* var57 /* : MMethod */;
-val* var_mtos /* var mtos: MMethod */;
-val* var58 /* : ASTBuilder */;
-val* var59 /* : AVarExpr */;
-val* var60 /* : null */;
-val* var61 /* : ACallExpr */;
-val* var_ntos /* var ntos: ACallExpr */;
-var_v = p0;
-var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var1 = ((val* (*)(val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_block]))(var) /* make_block on <var:ASTBuilder>*/;
-var_nblock = var1;
-if (varonce) {
-var2 = varonce;
-} else {
-var3 = "Array";
-var4 = 5;
-var5 = string__NativeString__to_s_with_length(var3, var4);
-var2 = var5;
-varonce = var2;
-}
-var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_class]))(var_v, self, var2) /* get_class on <var_v:TransformVisitor>*/;
-if (varonce7) {
-var8 = varonce7;
-} else {
-var9 = "Object";
-var10 = 6;
-var11 = string__NativeString__to_s_with_length(var9, var10);
-var8 = var11;
-varonce7 = var8;
-}
-var12 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_class]))(var_v, self, var8) /* get_class on <var_v:TransformVisitor>*/;
-var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClass__mclass_type]))(var12) /* mclass_type on <var12:MClass>*/;
-var14 = NEW_array__Array(&type_array__Arraymodel__MClassType);
-{ /* var14 = array_instance Array[MClassType] */
-var15 = 1;
-var16 = NEW_array__NativeArray(var15, &type_array__NativeArraymodel__MClassType);
-((struct instance_array__NativeArray*)var16)->values[0] = (val*) var13;
-((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[MClassType]>*/;
-}
-var17 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_model__MClass__get_mtype]))(var6, var14) /* get_mtype on <var6:MClass>*/;
-var_arraytype = var17;
-if (varonce18) {
-var19 = varonce18;
-} else {
-var20 = "with_capacity";
-var21 = 13;
-var22 = string__NativeString__to_s_with_length(var20, var21);
-var19 = var22;
-varonce18 = var19;
-}
-var23 = ((val* (*)(val*))(var_arraytype->class->vft[COLOR_model__MClassType__mclass]))(var_arraytype) /* mclass on <var_arraytype:MClassType>*/;
-var24 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var19, var23) /* get_method on <var_v:TransformVisitor>*/;
-var_meth = var24;
-var25 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var26 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var27 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperstringExpr__n_exprs]))(self) /* n_exprs on <self:ASuperstringExpr>*/;
-var28 = ((long (*)(val*))(var27->class->vft[COLOR_abstract_collection__Collection__length]))(var27) /* length on <var27:ANodes[AExpr]>*/;
-var29 = ((val* (*)(val*, long))(var26->class->vft[COLOR_astbuilder__ASTBuilder__make_int]))(var26, var28) /* make_int on <var26:ASTBuilder>*/;
-var30 = NEW_array__Array(&type_array__Arrayparser_nodes__AIntExpr);
-{ /* var30 = array_instance Array[AIntExpr] */
-var31 = 1;
-var32 = NEW_array__NativeArray(var31, &type_array__NativeArrayparser_nodes__AIntExpr);
-((struct instance_array__NativeArray*)var32)->values[0] = (val*) var29;
-((void (*)(val*, val*, long))(var30->class->vft[COLOR_array__Array__with_native]))(var30, var32, var31) /* with_native on <var30:Array[AIntExpr]>*/;
-}
-var33 = ((val* (*)(val*, val*, val*, val*))(var25->class->vft[COLOR_astbuilder__ASTBuilder__make_new]))(var25, var_arraytype, var_meth, var30) /* make_new on <var25:ASTBuilder>*/;
-var_nnew = var33;
-((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nnew) /* add on <var_nblock:ABlockExpr>*/;
-if (varonce34) {
-var35 = varonce34;
-} else {
-var36 = "add";
-var37 = 3;
-var38 = string__NativeString__to_s_with_length(var36, var37);
-var35 = var38;
-varonce34 = var35;
-}
-var39 = ((val* (*)(val*))(var_arraytype->class->vft[COLOR_model__MClassType__mclass]))(var_arraytype) /* mclass on <var_arraytype:MClassType>*/;
-var40 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var35, var39) /* get_method on <var_v:TransformVisitor>*/;
-var_madd = var40;
-var41 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperstringExpr__n_exprs]))(self) /* n_exprs on <self:ASuperstringExpr>*/;
-var42 = ((val* (*)(val*))(var41->class->vft[COLOR_abstract_collection__Collection__iterator]))(var41) /* iterator on <var41:ANodes[AExpr]>*/;
+{
+{ /* Inline typing#AArrayExpr#with_capacity_callsite (self) on <self:AArrayExpr> */
+var9 = self->attrs[COLOR_typing__AArrayExpr___with_capacity_callsite].val; /* _with_capacity_callsite on <self:AArrayExpr> */
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+if (unlikely(var7 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 176);
+show_backtrace(1);
+}
+var10 = NEW_array__Array(&type_array__Arrayparser_nodes__AIntExpr);
+var11 = 1;
+{
+array__Array__with_capacity(var10, var11); /* Direct call array#Array#with_capacity on <var10:Array[AIntExpr]>*/
+}
+var_ = var10;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var14 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var14 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var12 = var14;
+RET_LABEL13:(void)0;
+}
+}
+{
+var15 = parser_nodes__AArrayExpr__n_exprs(self);
+}
+{
+{ /* Inline parser_nodes#AExprs#n_exprs (var15) on <var15:AExprs> */
+var18 = var15->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var15:AExprs> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
+PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
+show_backtrace(1);
+}
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+{
+var19 = parser_nodes__ANodes__length(var16);
+}
+{
+var20 = astbuilder__ASTBuilder__make_int(var12, var19);
+}
+{
+array__AbstractArray__push(var_, var20); /* Direct call array#AbstractArray#push on <var_:Array[AIntExpr]>*/
+}
+{
+var21 = astbuilder__ASTBuilder__make_new(var4, var7, var_);
+}
+var_nnew = var21;
+{
+astbuilder__ABlockExpr__add(var_nblock, var_nnew); /* Direct call astbuilder#ABlockExpr#add on <var_nblock:ABlockExpr>*/
+}
+{
+var22 = parser_nodes__AArrayExpr__n_exprs(self);
+}
+{
+{ /* Inline parser_nodes#AExprs#n_exprs (var22) on <var22:AExprs> */
+var25 = var22->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var22:AExprs> */
+if (unlikely(var25 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
+PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
+show_backtrace(1);
+}
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+{
+var26 = parser_nodes__ANodes__iterator(var23);
+}
 for(;;) {
-var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
-if(!var43) break;
-var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
-var_nexpr = var44;
-var45 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var46 = ((val* (*)(val*))(var_nnew->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_nnew) /* make_var_read on <var_nnew:ANewExpr>*/;
-var47 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
-{ /* var47 = array_instance Array[AExpr] */
-var48 = 1;
-var49 = NEW_array__NativeArray(var48, &type_array__NativeArrayparser_nodes__AExpr);
-((struct instance_array__NativeArray*)var49)->values[0] = (val*) var_nexpr;
-((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[AExpr]>*/;
-}
-var50 = ((val* (*)(val*, val*, val*, val*))(var45->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var45, var46, var_madd, var47) /* make_call on <var45:ASTBuilder>*/;
-var_nadd = var50;
-((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nadd) /* add on <var_nblock:ABlockExpr>*/;
+{
+var27 = ((short int (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var26) /* is_ok on <var26:Iterator[ANode]>*/;
+}
+if(!var27) break;
+{
+var28 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__item]))(var26) /* item on <var26:Iterator[ANode]>*/;
+}
+var_nexpr = var28;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var31 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var31 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var29 = var31;
+RET_LABEL30:(void)0;
+}
+}
+{
+var32 = astbuilder__AExpr__make_var_read(var_nnew);
+}
+{
+{ /* Inline typing#AArrayExpr#push_callsite (self) on <self:AArrayExpr> */
+var35 = self->attrs[COLOR_typing__AArrayExpr___push_callsite].val; /* _push_callsite on <self:AArrayExpr> */
+var33 = var35;
+RET_LABEL34:(void)0;
+}
+}
+if (unlikely(var33 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 180);
+show_backtrace(1);
+}
+var36 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
+var37 = 1;
+{
+array__Array__with_capacity(var36, var37); /* Direct call array#Array#with_capacity on <var36:Array[AExpr]>*/
+}
+var_38 = var36;
+{
+array__AbstractArray__push(var_38, var_nexpr); /* Direct call array#AbstractArray#push on <var_38:Array[AExpr]>*/
+}
+{
+var39 = astbuilder__ASTBuilder__make_call(var29, var32, var33, var_38);
+}
+var_nadd = var39;
+{
+astbuilder__ABlockExpr__add(var_nblock, var_nadd); /* Direct call astbuilder#ABlockExpr#add on <var_nblock:ABlockExpr>*/
+}
 CONTINUE_label: (void)0;
-((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
+{
+((void (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__next]))(var26) /* next on <var26:Iterator[ANode]>*/;
+}
 }
 BREAK_label: (void)0;
-if (varonce51) {
-var52 = varonce51;
-} else {
-var53 = "to_s";
-var54 = 4;
-var55 = string__NativeString__to_s_with_length(var53, var54);
-var52 = var55;
-varonce51 = var52;
-}
-var56 = ((val* (*)(val*))(var_arraytype->class->vft[COLOR_model__MClassType__mclass]))(var_arraytype) /* mclass on <var_arraytype:MClassType>*/;
-var57 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var52, var56) /* get_method on <var_v:TransformVisitor>*/;
-var_mtos = var57;
-var58 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var59 = ((val* (*)(val*))(var_nnew->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_nnew) /* make_var_read on <var_nnew:ANewExpr>*/;
-var60 = NULL;
-var61 = ((val* (*)(val*, val*, val*, val*))(var58->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var58, var59, var_mtos, var60) /* make_call on <var58:ASTBuilder>*/;
-var_ntos = var61;
-((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_ntos) /* add on <var_nblock:ABlockExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nblock) /* replace_with on <self:ASuperstringExpr>*/;
+{
+var40 = astbuilder__AExpr__make_var_read(var_nnew);
+}
+var_nres = var40;
+{
+astbuilder__ABlockExpr__add(var_nblock, var_nres); /* Direct call astbuilder#ABlockExpr#add on <var_nblock:ABlockExpr>*/
+}
+{
+parser_nodes__Prod__replace_with(self, var_nblock); /* Direct call parser_nodes#Prod#replace_with on <self:AArrayExpr>*/
+}
 RET_LABEL:;
 }
-/* method transform#ASuperstringExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
-void VIRTUAL_transform__ASuperstringExpr__accept_transform_visitor(val* self, val* p0) {
-transform__ASuperstringExpr__accept_transform_visitor(self, p0);
+/* method transform#AArrayExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
+void VIRTUAL_transform__AArrayExpr__accept_transform_visitor(val* self, val* p0) {
+transform__AArrayExpr__accept_transform_visitor(self, p0); /* Direct call transform#AArrayExpr#accept_transform_visitor on <self:Object(AArrayExpr)>*/
 RET_LABEL:;
 }
 /* method transform#ACrangeExpr#accept_transform_visitor for (self: ACrangeExpr, TransformVisitor) */
 void transform__ACrangeExpr__accept_transform_visitor(val* self, val* p0) {
 val* var_v /* var v: TransformVisitor */;
-val* var /* : nullable MType */;
-short int var1 /* : Bool */;
-int cltype;
-int idtype;
-const char* var_class_name;
-val* var_mtype /* var mtype: MClassType */;
-static val* varonce;
-val* var2 /* : String */;
-char* var3 /* : NativeString */;
-long var4 /* : Int */;
-val* var5 /* : String */;
-val* var6 /* : MClass */;
-val* var7 /* : MMethod */;
-val* var_meth /* var meth: MMethod */;
-val* var8 /* : ASTBuilder */;
+val* var /* : ASTBuilder */;
+val* var2 /* : ASTBuilder */;
+val* var3 /* : nullable CallSite */;
+val* var5 /* : nullable CallSite */;
+val* var6 /* : Array[AExpr] */;
+long var7 /* : Int */;
+val* var_ /* var : Array[AExpr] */;
+val* var8 /* : AExpr */;
 val* var9 /* : AExpr */;
-val* var10 /* : AExpr */;
-val* var11 /* : Array[AExpr] */;
-long var12 /* : Int */;
-val* var13 /* : NativeArray[AExpr] */;
-val* var14 /* : ANewExpr */;
+val* var10 /* : ANewExpr */;
 var_v = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:ACrangeExpr>*/;
-/* <var:nullable MType> isa MClassType */
-cltype = type_model__MClassType.color;
-idtype = type_model__MClassType.id;
-if(var == NULL) {
-var1 = 0;
-} else {
-if(cltype >= var->type->table_size) {
-var1 = 0;
-} else {
-var1 = var->type->type_table[cltype] == idtype;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var2 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline typing#ARangeExpr#init_callsite (self) on <self:ACrangeExpr> */
+var5 = self->attrs[COLOR_typing__ARangeExpr___init_callsite].val; /* _init_callsite on <self:ACrangeExpr> */
+var3 = var5;
+RET_LABEL4:(void)0;
 }
 }
-if (!var1) {
-var_class_name = var == NULL ? "null" : var->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 227);
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 194);
 show_backtrace(1);
 }
-var_mtype = var;
-if (varonce) {
-var2 = varonce;
-} else {
-var3 = "init";
-var4 = 4;
-var5 = string__NativeString__to_s_with_length(var3, var4);
-var2 = var5;
-varonce = var2;
-}
-var6 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
-var7 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var2, var6) /* get_method on <var_v:TransformVisitor>*/;
-var_meth = var7;
-var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var9 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr]))(self) /* n_expr on <self:ACrangeExpr>*/;
-var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr2]))(self) /* n_expr2 on <self:ACrangeExpr>*/;
-var11 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
-{ /* var11 = array_instance Array[AExpr] */
-var12 = 2;
-var13 = NEW_array__NativeArray(var12, &type_array__NativeArrayparser_nodes__AExpr);
-((struct instance_array__NativeArray*)var13)->values[0] = (val*) var9;
-((struct instance_array__NativeArray*)var13)->values[1] = (val*) var10;
-((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[AExpr]>*/;
-}
-var14 = ((val* (*)(val*, val*, val*, val*))(var8->class->vft[COLOR_astbuilder__ASTBuilder__make_new]))(var8, var_mtype, var_meth, var11) /* make_new on <var8:ASTBuilder>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var14) /* replace_with on <self:ACrangeExpr>*/;
+var6 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
+var7 = 2;
+{
+array__Array__with_capacity(var6, var7); /* Direct call array#Array#with_capacity on <var6:Array[AExpr]>*/
+}
+var_ = var6;
+{
+var8 = parser_nodes__ARangeExpr__n_expr(self);
+}
+{
+array__AbstractArray__push(var_, var8); /* Direct call array#AbstractArray#push on <var_:Array[AExpr]>*/
+}
+{
+var9 = parser_nodes__ARangeExpr__n_expr2(self);
+}
+{
+array__AbstractArray__push(var_, var9); /* Direct call array#AbstractArray#push on <var_:Array[AExpr]>*/
+}
+{
+var10 = astbuilder__ASTBuilder__make_new(var, var3, var_);
+}
+{
+parser_nodes__Prod__replace_with(self, var10); /* Direct call parser_nodes#Prod#replace_with on <self:ACrangeExpr>*/
+}
 RET_LABEL:;
 }
 /* method transform#ACrangeExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__ACrangeExpr__accept_transform_visitor(val* self, val* p0) {
-transform__ACrangeExpr__accept_transform_visitor(self, p0);
+transform__ACrangeExpr__accept_transform_visitor(self, p0); /* Direct call transform#ACrangeExpr#accept_transform_visitor on <self:Object(ACrangeExpr)>*/
 RET_LABEL:;
 }
 /* method transform#AOrangeExpr#accept_transform_visitor for (self: AOrangeExpr, TransformVisitor) */
 void transform__AOrangeExpr__accept_transform_visitor(val* self, val* p0) {
 val* var_v /* var v: TransformVisitor */;
-val* var /* : nullable MType */;
-short int var1 /* : Bool */;
-int cltype;
-int idtype;
-const char* var_class_name;
-val* var_mtype /* var mtype: MClassType */;
-static val* varonce;
-val* var2 /* : String */;
-char* var3 /* : NativeString */;
-long var4 /* : Int */;
-val* var5 /* : String */;
-val* var6 /* : MClass */;
-val* var7 /* : MMethod */;
-val* var_meth /* var meth: MMethod */;
-val* var8 /* : ASTBuilder */;
+val* var /* : ASTBuilder */;
+val* var2 /* : ASTBuilder */;
+val* var3 /* : nullable CallSite */;
+val* var5 /* : nullable CallSite */;
+val* var6 /* : Array[AExpr] */;
+long var7 /* : Int */;
+val* var_ /* var : Array[AExpr] */;
+val* var8 /* : AExpr */;
 val* var9 /* : AExpr */;
-val* var10 /* : AExpr */;
-val* var11 /* : Array[AExpr] */;
-long var12 /* : Int */;
-val* var13 /* : NativeArray[AExpr] */;
-val* var14 /* : ANewExpr */;
+val* var10 /* : ANewExpr */;
 var_v = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AOrangeExpr>*/;
-/* <var:nullable MType> isa MClassType */
-cltype = type_model__MClassType.color;
-idtype = type_model__MClassType.id;
-if(var == NULL) {
-var1 = 0;
-} else {
-if(cltype >= var->type->table_size) {
-var1 = 0;
-} else {
-var1 = var->type->type_table[cltype] == idtype;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var2 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
 }
+{
+{ /* Inline typing#ARangeExpr#init_callsite (self) on <self:AOrangeExpr> */
+var5 = self->attrs[COLOR_typing__ARangeExpr___init_callsite].val; /* _init_callsite on <self:AOrangeExpr> */
+var3 = var5;
+RET_LABEL4:(void)0;
 }
-if (!var1) {
-var_class_name = var == NULL ? "null" : var->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 238);
+}
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 202);
 show_backtrace(1);
 }
-var_mtype = var;
-if (varonce) {
-var2 = varonce;
-} else {
-var3 = "without_last";
-var4 = 12;
-var5 = string__NativeString__to_s_with_length(var3, var4);
-var2 = var5;
-varonce = var2;
-}
-var6 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
-var7 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var2, var6) /* get_method on <var_v:TransformVisitor>*/;
-var_meth = var7;
-var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var9 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr]))(self) /* n_expr on <self:AOrangeExpr>*/;
-var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr2]))(self) /* n_expr2 on <self:AOrangeExpr>*/;
-var11 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
-{ /* var11 = array_instance Array[AExpr] */
-var12 = 2;
-var13 = NEW_array__NativeArray(var12, &type_array__NativeArrayparser_nodes__AExpr);
-((struct instance_array__NativeArray*)var13)->values[0] = (val*) var9;
-((struct instance_array__NativeArray*)var13)->values[1] = (val*) var10;
-((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[AExpr]>*/;
-}
-var14 = ((val* (*)(val*, val*, val*, val*))(var8->class->vft[COLOR_astbuilder__ASTBuilder__make_new]))(var8, var_mtype, var_meth, var11) /* make_new on <var8:ASTBuilder>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var14) /* replace_with on <self:AOrangeExpr>*/;
+var6 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
+var7 = 2;
+{
+array__Array__with_capacity(var6, var7); /* Direct call array#Array#with_capacity on <var6:Array[AExpr]>*/
+}
+var_ = var6;
+{
+var8 = parser_nodes__ARangeExpr__n_expr(self);
+}
+{
+array__AbstractArray__push(var_, var8); /* Direct call array#AbstractArray#push on <var_:Array[AExpr]>*/
+}
+{
+var9 = parser_nodes__ARangeExpr__n_expr2(self);
+}
+{
+array__AbstractArray__push(var_, var9); /* Direct call array#AbstractArray#push on <var_:Array[AExpr]>*/
+}
+{
+var10 = astbuilder__ASTBuilder__make_new(var, var3, var_);
+}
+{
+parser_nodes__Prod__replace_with(self, var10); /* Direct call parser_nodes#Prod#replace_with on <self:AOrangeExpr>*/
+}
 RET_LABEL:;
 }
 /* method transform#AOrangeExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__AOrangeExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AOrangeExpr__accept_transform_visitor(self, p0);
+transform__AOrangeExpr__accept_transform_visitor(self, p0); /* Direct call transform#AOrangeExpr#accept_transform_visitor on <self:Object(AOrangeExpr)>*/
 RET_LABEL:;
 }
 /* method transform#AParExpr#accept_transform_visitor for (self: AParExpr, TransformVisitor) */
@@ -1081,288 +1197,554 @@ void transform__AParExpr__accept_transform_visitor(val* self, val* p0) {
 val* var_v /* var v: TransformVisitor */;
 val* var /* : AExpr */;
 var_v = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AProxyExpr__n_expr]))(self) /* n_expr on <self:AParExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var) /* replace_with on <self:AParExpr>*/;
+{
+var = parser_nodes__AProxyExpr__n_expr(self);
+}
+{
+parser_nodes__Prod__replace_with(self, var); /* Direct call parser_nodes#Prod#replace_with on <self:AParExpr>*/
+}
 RET_LABEL:;
 }
 /* method transform#AParExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__AParExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AParExpr__accept_transform_visitor(self, p0);
+transform__AParExpr__accept_transform_visitor(self, p0); /* Direct call transform#AParExpr#accept_transform_visitor on <self:Object(AParExpr)>*/
 RET_LABEL:;
 }
 /* method transform#ASendReassignFormExpr#accept_transform_visitor for (self: ASendReassignFormExpr, TransformVisitor) */
 void transform__ASendReassignFormExpr__accept_transform_visitor(val* self, val* p0) {
 val* var_v /* var v: TransformVisitor */;
 val* var /* : ASTBuilder */;
-val* var1 /* : ABlockExpr */;
+val* var2 /* : ASTBuilder */;
+val* var3 /* : ABlockExpr */;
 val* var_nblock /* var nblock: ABlockExpr */;
-val* var2 /* : AExpr */;
-val* var3 /* : Array[AExpr] */;
+val* var4 /* : AExpr */;
+val* var5 /* : Array[AExpr] */;
 val* var_read_args /* var read_args: Array[AExpr] */;
-val* var4 /* : Array[AExpr] */;
+val* var6 /* : Array[AExpr] */;
 val* var_write_args /* var write_args: Array[AExpr] */;
-val* var5 /* : nullable Array[AExpr] */;
-val* var6 /* : Iterator[nullable Object] */;
-short int var7 /* : Bool */;
-val* var8 /* : nullable Object */;
+val* var7 /* : Array[AExpr] */;
+val* var8 /* : ArrayIterator[nullable Object] */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable Object */;
 val* var_a /* var a: AExpr */;
-val* var9 /* : AVarExpr */;
-val* var10 /* : AVarExpr */;
-val* var11 /* : ASTBuilder */;
-val* var12 /* : AExpr */;
-val* var13 /* : AVarExpr */;
-val* var14 /* : nullable CallSite */;
-val* var15 /* : MMethod */;
-val* var16 /* : ACallExpr */;
-val* var_nread /* var nread: ACallExpr */;
-val* var17 /* : ASTBuilder */;
+val* var11 /* : AVarExpr */;
+val* var12 /* : AVarExpr */;
+val* var13 /* : ASTBuilder */;
+val* var15 /* : ASTBuilder */;
+val* var16 /* : AExpr */;
+val* var17 /* : AVarExpr */;
 val* var18 /* : nullable CallSite */;
-val* var19 /* : MMethod */;
-val* var20 /* : AExpr */;
-val* var21 /* : Array[AExpr] */;
-long var22 /* : Int */;
-val* var23 /* : NativeArray[AExpr] */;
-val* var24 /* : ACallExpr */;
+val* var20 /* : nullable CallSite */;
+val* var21 /* : ACallExpr */;
+val* var_nread /* var nread: ACallExpr */;
+val* var22 /* : ASTBuilder */;
+val* var24 /* : ASTBuilder */;
+val* var25 /* : nullable CallSite */;
+val* var27 /* : nullable CallSite */;
+val* var28 /* : Array[AExpr] */;
+long var29 /* : Int */;
+val* var_ /* var : Array[AExpr] */;
+val* var30 /* : AExpr */;
+val* var31 /* : ACallExpr */;
 val* var_nnewvalue /* var nnewvalue: ACallExpr */;
-val* var25 /* : ASTBuilder */;
-val* var26 /* : AExpr */;
-val* var27 /* : AVarExpr */;
-val* var28 /* : nullable CallSite */;
-val* var29 /* : MMethod */;
-val* var30 /* : ACallExpr */;
+val* var32 /* : ASTBuilder */;
+val* var34 /* : ASTBuilder */;
+val* var35 /* : AExpr */;
+val* var36 /* : AVarExpr */;
+val* var37 /* : nullable CallSite */;
+val* var39 /* : nullable CallSite */;
+val* var40 /* : ACallExpr */;
 val* var_nwrite /* var nwrite: ACallExpr */;
 var_v = p0;
-var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var1 = ((val* (*)(val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_block]))(var) /* make_block on <var:ASTBuilder>*/;
-var_nblock = var1;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
-((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var2) /* add on <var_nblock:ABlockExpr>*/;
-var3 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
-((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on <var3:Array[AExpr]>*/;
-var_read_args = var3;
-var4 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
-((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[AExpr]>*/;
-var_write_args = var4;
-var5 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments]))(self) /* raw_arguments on <self:ASendReassignFormExpr>*/;
-if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 268);
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var2 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
 show_backtrace(1);
 }
-var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:nullable Array[AExpr](Array[AExpr])>*/;
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+var3 = astbuilder__ASTBuilder__make_block(var);
+}
+var_nblock = var3;
+{
+var4 = parser_nodes__ASendExpr__n_expr(self);
+}
+{
+astbuilder__ABlockExpr__add(var_nblock, var4); /* Direct call astbuilder#ABlockExpr#add on <var_nblock:ABlockExpr>*/
+}
+var5 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
+{
+array__Array__init(var5); /* Direct call array#Array#init on <var5:Array[AExpr]>*/
+}
+var_read_args = var5;
+var6 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
+{
+array__Array__init(var6); /* Direct call array#Array#init on <var6:Array[AExpr]>*/
+}
+var_write_args = var6;
+{
+var7 = typing__ASendExpr__raw_arguments(self);
+}
+{
+var8 = array__AbstractArrayRead__iterator(var7);
+}
 for(;;) {
-var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
-if(!var7) break;
-var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
-var_a = var8;
-((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_a) /* add on <var_nblock:ABlockExpr>*/;
-var9 = ((val* (*)(val*))(var_a->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_a) /* make_var_read on <var_a:AExpr>*/;
-((void (*)(val*, val*))(var_read_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_read_args, var9) /* add on <var_read_args:Array[AExpr]>*/;
-var10 = ((val* (*)(val*))(var_a->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_a) /* make_var_read on <var_a:AExpr>*/;
-((void (*)(val*, val*))(var_write_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_write_args, var10) /* add on <var_write_args:Array[AExpr]>*/;
+{
+var9 = array__ArrayIterator__is_ok(var8);
+}
+if(!var9) break;
+{
+var10 = array__ArrayIterator__item(var8);
+}
+var_a = var10;
+{
+astbuilder__ABlockExpr__add(var_nblock, var_a); /* Direct call astbuilder#ABlockExpr#add on <var_nblock:ABlockExpr>*/
+}
+{
+var11 = astbuilder__AExpr__make_var_read(var_a);
+}
+{
+array__Array__add(var_read_args, var11); /* Direct call array#Array#add on <var_read_args:Array[AExpr]>*/
+}
+{
+var12 = astbuilder__AExpr__make_var_read(var_a);
+}
+{
+array__Array__add(var_write_args, var12); /* Direct call array#Array#add on <var_write_args:Array[AExpr]>*/
+}
 CONTINUE_label: (void)0;
-((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
+{
+array__ArrayIterator__next(var8); /* Direct call array#ArrayIterator#next on <var8:ArrayIterator[nullable Object]>*/
+}
 }
 BREAK_label: (void)0;
-var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var12 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
-var13 = ((val* (*)(val*))(var12->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var12) /* make_var_read on <var12:AExpr>*/;
-var14 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__callsite]))(self) /* callsite on <self:ASendReassignFormExpr>*/;
-if (var14 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 274);
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var15 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
 show_backtrace(1);
-} else {
-var15 = ((val* (*)(val*))(var14->class->vft[COLOR_typing__CallSite__mproperty]))(var14) /* mproperty on <var14:nullable CallSite>*/;
-}
-var16 = ((val* (*)(val*, val*, val*, val*))(var11->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var11, var13, var15, var_read_args) /* make_call on <var11:ASTBuilder>*/;
-var_nread = var16;
-var17 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var18 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite]))(self) /* reassign_callsite on <self:ASendReassignFormExpr>*/;
-if (var18 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 276);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+{
+var16 = parser_nodes__ASendExpr__n_expr(self);
+}
+{
+var17 = astbuilder__AExpr__make_var_read(var16);
+}
+{
+{ /* Inline typing#ASendExpr#callsite (self) on <self:ASendReassignFormExpr> */
+var20 = self->attrs[COLOR_typing__ASendExpr___callsite].val; /* _callsite on <self:ASendReassignFormExpr> */
+var18 = var20;
+RET_LABEL19:(void)0;
+}
+}
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 235);
 show_backtrace(1);
-} else {
-var19 = ((val* (*)(val*))(var18->class->vft[COLOR_typing__CallSite__mproperty]))(var18) /* mproperty on <var18:nullable CallSite>*/;
-}
-var20 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:ASendReassignFormExpr>*/;
-var21 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
-{ /* var21 = array_instance Array[AExpr] */
-var22 = 1;
-var23 = NEW_array__NativeArray(var22, &type_array__NativeArrayparser_nodes__AExpr);
-((struct instance_array__NativeArray*)var23)->values[0] = (val*) var20;
-((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[AExpr]>*/;
-}
-var24 = ((val* (*)(val*, val*, val*, val*))(var17->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var17, var_nread, var19, var21) /* make_call on <var17:ASTBuilder>*/;
-var_nnewvalue = var24;
-((void (*)(val*, val*))(var_write_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_write_args, var_nnewvalue) /* add on <var_write_args:Array[AExpr]>*/;
-var25 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var26 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
-var27 = ((val* (*)(val*))(var26->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var26) /* make_var_read on <var26:AExpr>*/;
-var28 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendReassignFormExpr__write_callsite]))(self) /* write_callsite on <self:ASendReassignFormExpr>*/;
-if (var28 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 279);
+}
+{
+var21 = astbuilder__ASTBuilder__make_call(var13, var17, var18, var_read_args);
+}
+var_nread = var21;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var24 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var24 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
 show_backtrace(1);
-} else {
-var29 = ((val* (*)(val*))(var28->class->vft[COLOR_typing__CallSite__mproperty]))(var28) /* mproperty on <var28:nullable CallSite>*/;
 }
-var30 = ((val* (*)(val*, val*, val*, val*))(var25->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var25, var27, var29, var_write_args) /* make_call on <var25:ASTBuilder>*/;
-var_nwrite = var30;
-((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nwrite) /* add on <var_nblock:ABlockExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nblock) /* replace_with on <self:ASendReassignFormExpr>*/;
+var22 = var24;
+RET_LABEL23:(void)0;
+}
+}
+{
+{ /* Inline typing#AReassignFormExpr#reassign_callsite (self) on <self:ASendReassignFormExpr> */
+var27 = self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on <self:ASendReassignFormExpr> */
+var25 = var27;
+RET_LABEL26:(void)0;
+}
+}
+if (unlikely(var25 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 237);
+show_backtrace(1);
+}
+var28 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
+var29 = 1;
+{
+array__Array__with_capacity(var28, var29); /* Direct call array#Array#with_capacity on <var28:Array[AExpr]>*/
+}
+var_ = var28;
+{
+var30 = parser_nodes__AReassignFormExpr__n_value(self);
+}
+{
+array__AbstractArray__push(var_, var30); /* Direct call array#AbstractArray#push on <var_:Array[AExpr]>*/
+}
+{
+var31 = astbuilder__ASTBuilder__make_call(var22, var_nread, var25, var_);
+}
+var_nnewvalue = var31;
+{
+array__Array__add(var_write_args, var_nnewvalue); /* Direct call array#Array#add on <var_write_args:Array[AExpr]>*/
+}
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var34 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var34 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var32 = var34;
+RET_LABEL33:(void)0;
+}
+}
+{
+var35 = parser_nodes__ASendExpr__n_expr(self);
+}
+{
+var36 = astbuilder__AExpr__make_var_read(var35);
+}
+{
+{ /* Inline typing#ASendReassignFormExpr#write_callsite (self) on <self:ASendReassignFormExpr> */
+var39 = self->attrs[COLOR_typing__ASendReassignFormExpr___write_callsite].val; /* _write_callsite on <self:ASendReassignFormExpr> */
+var37 = var39;
+RET_LABEL38:(void)0;
+}
+}
+if (unlikely(var37 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 240);
+show_backtrace(1);
+}
+{
+var40 = astbuilder__ASTBuilder__make_call(var32, var36, var37, var_write_args);
+}
+var_nwrite = var40;
+{
+astbuilder__ABlockExpr__add(var_nblock, var_nwrite); /* Direct call astbuilder#ABlockExpr#add on <var_nblock:ABlockExpr>*/
+}
+{
+parser_nodes__Prod__replace_with(self, var_nblock); /* Direct call parser_nodes#Prod#replace_with on <self:ASendReassignFormExpr>*/
+}
 RET_LABEL:;
 }
 /* method transform#ASendReassignFormExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__ASendReassignFormExpr__accept_transform_visitor(val* self, val* p0) {
-transform__ASendReassignFormExpr__accept_transform_visitor(self, p0);
+transform__ASendReassignFormExpr__accept_transform_visitor(self, p0); /* Direct call transform#ASendReassignFormExpr#accept_transform_visitor on <self:Object(ASendReassignFormExpr)>*/
 RET_LABEL:;
 }
 /* method transform#AVarReassignExpr#accept_transform_visitor for (self: AVarReassignExpr, TransformVisitor) */
 void transform__AVarReassignExpr__accept_transform_visitor(val* self, val* p0) {
 val* var_v /* var v: TransformVisitor */;
 val* var /* : nullable Variable */;
+val* var2 /* : nullable Variable */;
 val* var_variable /* var variable: Variable */;
-val* var1 /* : ASTBuilder */;
-val* var2 /* : nullable MType */;
-val* var3 /* : AVarExpr */;
+val* var3 /* : ASTBuilder */;
+val* var5 /* : ASTBuilder */;
+val* var6 /* : nullable MType */;
+val* var8 /* : nullable MType */;
+val* var9 /* : AVarExpr */;
 val* var_nread /* var nread: AVarExpr */;
-val* var4 /* : ASTBuilder */;
-val* var5 /* : nullable CallSite */;
-val* var6 /* : MMethod */;
-val* var7 /* : AExpr */;
-val* var8 /* : Array[AExpr] */;
-long var9 /* : Int */;
-val* var10 /* : NativeArray[AExpr] */;
-val* var11 /* : ACallExpr */;
-val* var_nnewvalue /* var nnewvalue: ACallExpr */;
+val* var10 /* : ASTBuilder */;
 val* var12 /* : ASTBuilder */;
-val* var13 /* : AVarAssignExpr */;
+val* var13 /* : nullable CallSite */;
+val* var15 /* : nullable CallSite */;
+val* var16 /* : Array[AExpr] */;
+long var17 /* : Int */;
+val* var_ /* var : Array[AExpr] */;
+val* var18 /* : AExpr */;
+val* var19 /* : ACallExpr */;
+val* var_nnewvalue /* var nnewvalue: ACallExpr */;
+val* var20 /* : ASTBuilder */;
+val* var22 /* : ASTBuilder */;
+val* var23 /* : AVarAssignExpr */;
 val* var_nwrite /* var nwrite: AVarAssignExpr */;
 var_v = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarReassignExpr>*/;
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 290);
+{
+{ /* Inline scope#AVarFormExpr#variable (self) on <self:AVarReassignExpr> */
+var2 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on <self:AVarReassignExpr> */
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 251);
 show_backtrace(1);
 }
 var_variable = var;
-var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__read_type]))(self) /* read_type on <self:AVarReassignExpr>*/;
-if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 292);
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var5 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
 show_backtrace(1);
 }
-var3 = ((val* (*)(val*, val*, val*))(var1->class->vft[COLOR_astbuilder__ASTBuilder__make_var_read]))(var1, var_variable, var2) /* make_var_read on <var1:ASTBuilder>*/;
-var_nread = var3;
-var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var5 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite]))(self) /* reassign_callsite on <self:AVarReassignExpr>*/;
-if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 294);
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+{ /* Inline typing#AReassignFormExpr#read_type (self) on <self:AVarReassignExpr> */
+var8 = self->attrs[COLOR_typing__AReassignFormExpr___read_type].val; /* _read_type on <self:AVarReassignExpr> */
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 253);
 show_backtrace(1);
-} else {
-var6 = ((val* (*)(val*))(var5->class->vft[COLOR_typing__CallSite__mproperty]))(var5) /* mproperty on <var5:nullable CallSite>*/;
-}
-var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:AVarReassignExpr>*/;
-var8 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
-{ /* var8 = array_instance Array[AExpr] */
-var9 = 1;
-var10 = NEW_array__NativeArray(var9, &type_array__NativeArrayparser_nodes__AExpr);
-((struct instance_array__NativeArray*)var10)->values[0] = (val*) var7;
-((void (*)(val*, val*, long))(var8->class->vft[COLOR_array__Array__with_native]))(var8, var10, var9) /* with_native on <var8:Array[AExpr]>*/;
-}
-var11 = ((val* (*)(val*, val*, val*, val*))(var4->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var4, var_nread, var6, var8) /* make_call on <var4:ASTBuilder>*/;
-var_nnewvalue = var11;
-var12 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var13 = ((val* (*)(val*, val*, val*))(var12->class->vft[COLOR_astbuilder__ASTBuilder__make_var_assign]))(var12, var_variable, var_nnewvalue) /* make_var_assign on <var12:ASTBuilder>*/;
-var_nwrite = var13;
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nwrite) /* replace_with on <self:AVarReassignExpr>*/;
+}
+{
+var9 = astbuilder__ASTBuilder__make_var_read(var3, var_variable, var6);
+}
+var_nread = var9;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var12 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+{
+{ /* Inline typing#AReassignFormExpr#reassign_callsite (self) on <self:AVarReassignExpr> */
+var15 = self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on <self:AVarReassignExpr> */
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 255);
+show_backtrace(1);
+}
+var16 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
+var17 = 1;
+{
+array__Array__with_capacity(var16, var17); /* Direct call array#Array#with_capacity on <var16:Array[AExpr]>*/
+}
+var_ = var16;
+{
+var18 = parser_nodes__AReassignFormExpr__n_value(self);
+}
+{
+array__AbstractArray__push(var_, var18); /* Direct call array#AbstractArray#push on <var_:Array[AExpr]>*/
+}
+{
+var19 = astbuilder__ASTBuilder__make_call(var10, var_nread, var13, var_);
+}
+var_nnewvalue = var19;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var22 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var22 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+{
+var23 = astbuilder__ASTBuilder__make_var_assign(var20, var_variable, var_nnewvalue);
+}
+var_nwrite = var23;
+{
+parser_nodes__Prod__replace_with(self, var_nwrite); /* Direct call parser_nodes#Prod#replace_with on <self:AVarReassignExpr>*/
+}
 RET_LABEL:;
 }
 /* method transform#AVarReassignExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__AVarReassignExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AVarReassignExpr__accept_transform_visitor(self, p0);
+transform__AVarReassignExpr__accept_transform_visitor(self, p0); /* Direct call transform#AVarReassignExpr#accept_transform_visitor on <self:Object(AVarReassignExpr)>*/
 RET_LABEL:;
 }
 /* method transform#AAttrReassignExpr#accept_transform_visitor for (self: AAttrReassignExpr, TransformVisitor) */
 void transform__AAttrReassignExpr__accept_transform_visitor(val* self, val* p0) {
 val* var_v /* var v: TransformVisitor */;
 val* var /* : ASTBuilder */;
-val* var1 /* : ABlockExpr */;
+val* var2 /* : ASTBuilder */;
+val* var3 /* : ABlockExpr */;
 val* var_nblock /* var nblock: ABlockExpr */;
-val* var2 /* : AExpr */;
-val* var3 /* : nullable MAttribute */;
+val* var4 /* : AExpr */;
+val* var5 /* : nullable MAttribute */;
+val* var7 /* : nullable MAttribute */;
 val* var_attribute /* var attribute: MAttribute */;
-val* var4 /* : ASTBuilder */;
-val* var5 /* : AExpr */;
-val* var6 /* : AVarExpr */;
-val* var7 /* : AAttrExpr */;
-val* var_nread /* var nread: AAttrExpr */;
 val* var8 /* : ASTBuilder */;
-val* var9 /* : nullable CallSite */;
-val* var10 /* : MMethod */;
+val* var10 /* : ASTBuilder */;
 val* var11 /* : AExpr */;
-val* var12 /* : Array[AExpr] */;
-long var13 /* : Int */;
-val* var14 /* : NativeArray[AExpr] */;
-val* var15 /* : ACallExpr */;
-val* var_nnewvalue /* var nnewvalue: ACallExpr */;
+val* var12 /* : AVarExpr */;
+val* var13 /* : AAttrExpr */;
+val* var_nread /* var nread: AAttrExpr */;
+val* var14 /* : ASTBuilder */;
 val* var16 /* : ASTBuilder */;
-val* var17 /* : AExpr */;
-val* var18 /* : AVarExpr */;
-val* var19 /* : AAttrAssignExpr */;
+val* var17 /* : nullable CallSite */;
+val* var19 /* : nullable CallSite */;
+val* var20 /* : Array[AExpr] */;
+long var21 /* : Int */;
+val* var_ /* var : Array[AExpr] */;
+val* var22 /* : AExpr */;
+val* var23 /* : ACallExpr */;
+val* var_nnewvalue /* var nnewvalue: ACallExpr */;
+val* var24 /* : ASTBuilder */;
+val* var26 /* : ASTBuilder */;
+val* var27 /* : AExpr */;
+val* var28 /* : AVarExpr */;
+val* var29 /* : AAttrAssignExpr */;
 val* var_nwrite /* var nwrite: AAttrAssignExpr */;
 var_v = p0;
-var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var1 = ((val* (*)(val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_block]))(var) /* make_block on <var:ASTBuilder>*/;
-var_nblock = var1;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrReassignExpr>*/;
-((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var2) /* add on <var_nblock:ABlockExpr>*/;
-var3 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__mproperty]))(self) /* mproperty on <self:AAttrReassignExpr>*/;
-if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 307);
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var2 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+var3 = astbuilder__ASTBuilder__make_block(var);
+}
+var_nblock = var3;
+{
+var4 = parser_nodes__AAttrFormExpr__n_expr(self);
+}
+{
+astbuilder__ABlockExpr__add(var_nblock, var4); /* Direct call astbuilder#ABlockExpr#add on <var_nblock:ABlockExpr>*/
+}
+{
+{ /* Inline typing#AAttrFormExpr#mproperty (self) on <self:AAttrReassignExpr> */
+var7 = self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val; /* _mproperty on <self:AAttrReassignExpr> */
+var5 = var7;
+RET_LABEL6:(void)0;
+}
+}
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 268);
 show_backtrace(1);
 }
-var_attribute = var3;
-var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrReassignExpr>*/;
-var6 = ((val* (*)(val*))(var5->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var5) /* make_var_read on <var5:AExpr>*/;
-var7 = ((val* (*)(val*, val*, val*))(var4->class->vft[COLOR_astbuilder__ASTBuilder__make_attr_read]))(var4, var6, var_attribute) /* make_attr_read on <var4:ASTBuilder>*/;
-var_nread = var7;
-var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var9 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite]))(self) /* reassign_callsite on <self:AAttrReassignExpr>*/;
-if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Receiver is null");
-fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 310);
+var_attribute = var5;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var10 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
 show_backtrace(1);
-} else {
-var10 = ((val* (*)(val*))(var9->class->vft[COLOR_typing__CallSite__mproperty]))(var9) /* mproperty on <var9:nullable CallSite>*/;
-}
-var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:AAttrReassignExpr>*/;
-var12 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
-{ /* var12 = array_instance Array[AExpr] */
-var13 = 1;
-var14 = NEW_array__NativeArray(var13, &type_array__NativeArrayparser_nodes__AExpr);
-((struct instance_array__NativeArray*)var14)->values[0] = (val*) var11;
-((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[AExpr]>*/;
-}
-var15 = ((val* (*)(val*, val*, val*, val*))(var8->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var8, var_nread, var10, var12) /* make_call on <var8:ASTBuilder>*/;
-var_nnewvalue = var15;
-var16 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
-var17 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrReassignExpr>*/;
-var18 = ((val* (*)(val*))(var17->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var17) /* make_var_read on <var17:AExpr>*/;
-var19 = ((val* (*)(val*, val*, val*, val*))(var16->class->vft[COLOR_astbuilder__ASTBuilder__make_attr_assign]))(var16, var18, var_attribute, var_nnewvalue) /* make_attr_assign on <var16:ASTBuilder>*/;
-var_nwrite = var19;
-((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nwrite) /* add on <var_nblock:ABlockExpr>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nblock) /* replace_with on <self:AAttrReassignExpr>*/;
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+var11 = parser_nodes__AAttrFormExpr__n_expr(self);
+}
+{
+var12 = astbuilder__AExpr__make_var_read(var11);
+}
+{
+var13 = astbuilder__ASTBuilder__make_attr_read(var8, var12, var_attribute);
+}
+var_nread = var13;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var16 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var16 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var14 = var16;
+RET_LABEL15:(void)0;
+}
+}
+{
+{ /* Inline typing#AReassignFormExpr#reassign_callsite (self) on <self:AAttrReassignExpr> */
+var19 = self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on <self:AAttrReassignExpr> */
+var17 = var19;
+RET_LABEL18:(void)0;
+}
+}
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 271);
+show_backtrace(1);
+}
+var20 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
+var21 = 1;
+{
+array__Array__with_capacity(var20, var21); /* Direct call array#Array#with_capacity on <var20:Array[AExpr]>*/
+}
+var_ = var20;
+{
+var22 = parser_nodes__AReassignFormExpr__n_value(self);
+}
+{
+array__AbstractArray__push(var_, var22); /* Direct call array#AbstractArray#push on <var_:Array[AExpr]>*/
+}
+{
+var23 = astbuilder__ASTBuilder__make_call(var14, var_nread, var17, var_);
+}
+var_nnewvalue = var23;
+{
+{ /* Inline transform#TransformVisitor#builder (var_v) on <var_v:TransformVisitor> */
+var26 = var_v->attrs[COLOR_transform__TransformVisitor___builder].val; /* _builder on <var_v:TransformVisitor> */
+if (unlikely(var26 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _builder");
+PRINT_ERROR(" (%s:%d)\n", "src/transform.nit", 49);
+show_backtrace(1);
+}
+var24 = var26;
+RET_LABEL25:(void)0;
+}
+}
+{
+var27 = parser_nodes__AAttrFormExpr__n_expr(self);
+}
+{
+var28 = astbuilder__AExpr__make_var_read(var27);
+}
+{
+var29 = astbuilder__ASTBuilder__make_attr_assign(var24, var28, var_attribute, var_nnewvalue);
+}
+var_nwrite = var29;
+{
+astbuilder__ABlockExpr__add(var_nblock, var_nwrite); /* Direct call astbuilder#ABlockExpr#add on <var_nblock:ABlockExpr>*/
+}
+{
+parser_nodes__Prod__replace_with(self, var_nblock); /* Direct call parser_nodes#Prod#replace_with on <self:AAttrReassignExpr>*/
+}
 RET_LABEL:;
 }
 /* method transform#AAttrReassignExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
 void VIRTUAL_transform__AAttrReassignExpr__accept_transform_visitor(val* self, val* p0) {
-transform__AAttrReassignExpr__accept_transform_visitor(self, p0);
+transform__AAttrReassignExpr__accept_transform_visitor(self, p0); /* Direct call transform#AAttrReassignExpr#accept_transform_visitor on <self:Object(AAttrReassignExpr)>*/
 RET_LABEL:;
 }