regern c_src
[nit.git] / c_src / nit__flow.sep.1.c
index e561cf8..5aac71c 100644 (file)
@@ -7,7 +7,7 @@ var1 = self->attrs[COLOR_nit__flow__ToolContext___flow_phase].val; /* _flow_phas
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flow_phase");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 23);
-show_backtrace(1);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -24,8 +24,8 @@ var_npropdef = p0;
 var2 = self->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <self:FlowPhase> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 201);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -44,7 +44,7 @@ var1 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /*
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -63,7 +63,7 @@ var1 = self->attrs[COLOR_nit__flow__FlowVisitor___toolcontext].val; /* _toolcont
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 39);
-show_backtrace(1);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -82,9 +82,8 @@ val* var3 /* : FlowContext */;
 val* var5 /* : FlowContext */;
 val* var6 /* : FlowContext */;
 val* var8 /* : FlowContext */;
-short int var9 /* : Bool */;
 {
-((void (*)(val* self))(self->class->vft[COLOR_nit__flow___nit__flow__FlowVisitor___standard__kernel__Object__init]))(self) /* init on <self:FlowVisitor>*/;
+((void(*)(val* self))(self->class->vft[COLOR_nit__flow___nit__flow__FlowVisitor___standard__kernel__Object__init]))(self); /* init on <self:FlowVisitor>*/
 }
 {
 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
@@ -92,7 +91,7 @@ var2 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
-show_backtrace(1);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -104,7 +103,7 @@ var5 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /*
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -119,17 +118,16 @@ var8 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /*
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
 }
 }
-var9 = 1;
 {
-{ /* Inline flow#FlowContext#is_start= (var6,var9) on <var6:FlowContext> */
-var6->attrs[COLOR_nit__flow__FlowContext___is_start].s = var9; /* _is_start on <var6:FlowContext> */
-RET_LABEL10:(void)0;
+{ /* Inline flow#FlowContext#is_start= (var6,1) on <var6:FlowContext> */
+var6->attrs[COLOR_nit__flow__FlowContext___is_start].s = 1; /* _is_start on <var6:FlowContext> */
+RET_LABEL9:(void)0;
 }
 }
 RET_LABEL:;
@@ -153,56 +151,53 @@ void nit__flow___nit__flow__FlowVisitor___nit__parser_nodes__Visitor__visit(val*
 val* var_node /* var node: ANode */;
 val* var /* : nullable ANode */;
 val* var2 /* : nullable ANode */;
-val* var3 /* : null */;
+short int var3 /* : Bool */;
 short int var4 /* : Bool */;
-short int var5 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var7 /* : Bool */;
-short int var9 /* : Bool */;
-val* var11 /* : FlowContext */;
-val* var13 /* : FlowContext */;
-val* var14 /* : nullable ANode */;
-val* var16 /* : nullable ANode */;
-val* var17 /* : null */;
-short int var18 /* : Bool */;
+short int var6 /* : Bool */;
+short int var8 /* : Bool */;
+val* var10 /* : FlowContext */;
+val* var12 /* : FlowContext */;
+val* var13 /* : nullable ANode */;
+val* var15 /* : nullable ANode */;
+short int var16 /* : Bool */;
+short int var17 /* : Bool */;
 short int var19 /* : Bool */;
 short int var21 /* : Bool */;
-short int var23 /* : Bool */;
+val* var22 /* : FlowContext */;
 val* var24 /* : FlowContext */;
-val* var26 /* : FlowContext */;
-short int var28 /* : Bool */;
+short int var26 /* : Bool */;
 int cltype;
 int idtype;
+val* var27 /* : FlowContext */;
 val* var29 /* : FlowContext */;
-val* var31 /* : FlowContext */;
 val* var_flow /* var flow: FlowContext */;
-short int var33 /* : Bool */;
+short int var31 /* : Bool */;
+val* var32 /* : FlowContext */;
 val* var34 /* : FlowContext */;
-val* var36 /* : FlowContext */;
-short int var37 /* : Bool */;
-val* var_other39 /* var other: nullable Object */;
-short int var40 /* : Bool */;
-short int var41 /* : Bool */;
+short int var35 /* : Bool */;
+val* var_other37 /* var other: nullable Object */;
+short int var38 /* : Bool */;
+short int var39 /* : Bool */;
 short int var_ /* var : Bool */;
+val* var40 /* : FlowContext */;
 val* var42 /* : FlowContext */;
-val* var44 /* : FlowContext */;
+short int var43 /* : Bool */;
 short int var45 /* : Bool */;
-short int var47 /* : Bool */;
-short int var48 /* : Bool */;
-val* var49 /* : FlowContext */;
+short int var46 /* : Bool */;
+val* var47 /* : FlowContext */;
+val* var48 /* : FlowContext */;
 val* var50 /* : FlowContext */;
-val* var52 /* : FlowContext */;
 static val* varonce;
-val* var53 /* : String */;
-char* var54 /* : NativeString */;
-long var55 /* : Int */;
-val* var56 /* : FlatString */;
-val* var58 /* : nullable ANode */;
-val* var60 /* : nullable ANode */;
+val* var51 /* : String */;
+char* var52 /* : NativeString */;
+val* var53 /* : FlatString */;
+val* var55 /* : nullable ANode */;
+val* var57 /* : nullable ANode */;
+short int var58 /* : Bool */;
+short int var59 /* : Bool */;
 short int var61 /* : Bool */;
-short int var62 /* : Bool */;
-short int var64 /* : Bool */;
-short int var66 /* : Bool */;
+short int var63 /* : Bool */;
 var_node = p0;
 {
 { /* Inline flow#FlowVisitor#first (self) on <self:FlowVisitor> */
@@ -211,215 +206,212 @@ var = var2;
 RET_LABEL1:(void)0;
 }
 }
-var3 = NULL;
 if (var == NULL) {
-var4 = 1; /* is null */
+var3 = 1; /* is null */
 } else {
-var4 = 0; /* arg is null but recv is not */
+var3 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var,var3) on <var:nullable ANode> */
-var_other = var3;
+{ /* Inline kernel#Object#== (var,((val*)NULL)) on <var:nullable ANode> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var,var_other) on <var:nullable ANode(ANode)> */
-var9 = var == var_other;
-var7 = var9;
-goto RET_LABEL8;
-RET_LABEL8:(void)0;
+var8 = var == var_other;
+var6 = var8;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
 }
 }
-var5 = var7;
-goto RET_LABEL6;
-RET_LABEL6:(void)0;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-var4 = var5;
+var3 = var4;
 }
-if (var4){
+if (var3){
 {
 { /* Inline flow#FlowVisitor#first= (self,var_node) on <self:FlowVisitor> */
 self->attrs[COLOR_nit__flow__FlowVisitor___first].val = var_node; /* _first on <self:FlowVisitor> */
-RET_LABEL10:(void)0;
+RET_LABEL9:(void)0;
 }
 }
 } else {
 }
 {
 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
-var13 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
-if (unlikely(var13 == NULL)) {
+var12 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
+if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
-var11 = var13;
-RET_LABEL12:(void)0;
+var10 = var12;
+RET_LABEL11:(void)0;
 }
 }
 {
-{ /* Inline flow#FlowContext#node (var11) on <var11:FlowContext> */
-var16 = var11->attrs[COLOR_nit__flow__FlowContext___node].val; /* _node on <var11:FlowContext> */
-var14 = var16;
-RET_LABEL15:(void)0;
+{ /* Inline flow#FlowContext#node (var10) on <var10:FlowContext> */
+var15 = var10->attrs[COLOR_nit__flow__FlowContext___node].val; /* _node on <var10:FlowContext> */
+var13 = var15;
+RET_LABEL14:(void)0;
 }
 }
-var17 = NULL;
-if (var14 == NULL) {
-var18 = 1; /* is null */
+if (var13 == NULL) {
+var16 = 1; /* is null */
 } else {
-var18 = 0; /* arg is null but recv is not */
+var16 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var14,var17) on <var14:nullable ANode> */
-var_other = var17;
+{ /* Inline kernel#Object#== (var13,((val*)NULL)) on <var13:nullable ANode> */
+var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var14,var_other) on <var14:nullable ANode(ANode)> */
-var23 = var14 == var_other;
-var21 = var23;
-goto RET_LABEL22;
-RET_LABEL22:(void)0;
-}
-}
+{ /* Inline kernel#Object#is_same_instance (var13,var_other) on <var13:nullable ANode(ANode)> */
+var21 = var13 == var_other;
 var19 = var21;
 goto RET_LABEL20;
 RET_LABEL20:(void)0;
 }
-var18 = var19;
 }
-if (var18){
+var17 = var19;
+goto RET_LABEL18;
+RET_LABEL18:(void)0;
+}
+var16 = var17;
+}
+if (var16){
 {
 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
-var26 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
-if (unlikely(var26 == NULL)) {
+var24 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
+if (unlikely(var24 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var22 = var24;
+RET_LABEL23:(void)0;
 }
 }
 {
-{ /* Inline flow#FlowContext#node= (var24,var_node) on <var24:FlowContext> */
-var24->attrs[COLOR_nit__flow__FlowContext___node].val = var_node; /* _node on <var24:FlowContext> */
-RET_LABEL27:(void)0;
+{ /* Inline flow#FlowContext#node= (var22,var_node) on <var22:FlowContext> */
+var22->attrs[COLOR_nit__flow__FlowContext___node].val = var_node; /* _node on <var22:FlowContext> */
+RET_LABEL25:(void)0;
 }
 }
 } else {
 }
 {
-((void (*)(val* self, val* p0))(var_node->class->vft[COLOR_nit__flow__ANode__accept_flow_visitor]))(var_node, self) /* accept_flow_visitor on <var_node:ANode>*/;
+((void(*)(val* self, val* p0))(var_node->class->vft[COLOR_nit__flow__ANode__accept_flow_visitor]))(var_node, self); /* accept_flow_visitor on <var_node:ANode>*/
 }
 /* <var_node:ANode> isa AExpr */
 cltype = type_nit__AExpr.color;
 idtype = type_nit__AExpr.id;
 if(cltype >= var_node->type->table_size) {
-var28 = 0;
+var26 = 0;
 } else {
-var28 = var_node->type->type_table[cltype] == idtype;
+var26 = var_node->type->type_table[cltype] == idtype;
 }
-if (var28){
+if (var26){
 {
 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
-var31 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
-if (unlikely(var31 == NULL)) {
+var29 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
+if (unlikely(var29 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
-var29 = var31;
-RET_LABEL30:(void)0;
+var27 = var29;
+RET_LABEL28:(void)0;
 }
 }
-var_flow = var29;
+var_flow = var27;
 {
 { /* Inline flow#AExpr#after_flow_context= (var_node,var_flow) on <var_node:ANode(AExpr)> */
 var_node->attrs[COLOR_nit__flow__AExpr___after_flow_context].val = var_flow; /* _after_flow_context on <var_node:ANode(AExpr)> */
-RET_LABEL32:(void)0;
+RET_LABEL30:(void)0;
 }
 }
 {
 { /* Inline flow#FlowContext#when_true (var_flow) on <var_flow:FlowContext> */
-var36 = var_flow->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_flow:FlowContext> */
-if (unlikely(var36 == NULL)) {
+var34 = var_flow->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_flow:FlowContext> */
+if (unlikely(var34 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
-var34 = var36;
-RET_LABEL35:(void)0;
+var32 = var34;
+RET_LABEL33:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#!= (var34,var_flow) on <var34:FlowContext> */
-var_other39 = var_flow;
+{ /* Inline kernel#Object#!= (var32,var_flow) on <var32:FlowContext> */
+var_other37 = var_flow;
 {
-var40 = ((short int (*)(val* self, val* p0))(var34->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var34, var_other39) /* == on <var34:FlowContext>*/;
+var38 = ((short int(*)(val* self, val* p0))(var32->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var32, var_other37); /* == on <var32:FlowContext>*/
 }
-var41 = !var40;
-var37 = var41;
-goto RET_LABEL38;
-RET_LABEL38:(void)0;
+var39 = !var38;
+var35 = var39;
+goto RET_LABEL36;
+RET_LABEL36:(void)0;
 }
 }
-var_ = var37;
-if (var37){
-var33 = var_;
+var_ = var35;
+if (var35){
+var31 = var_;
 } else {
 {
 { /* Inline flow#FlowContext#when_false (var_flow) on <var_flow:FlowContext> */
-var44 = var_flow->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_flow:FlowContext> */
-if (unlikely(var44 == NULL)) {
+var42 = var_flow->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_flow:FlowContext> */
+if (unlikely(var42 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
-var42 = var44;
-RET_LABEL43:(void)0;
+var40 = var42;
+RET_LABEL41:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#!= (var42,var_flow) on <var42:FlowContext> */
-var_other39 = var_flow;
+{ /* Inline kernel#Object#!= (var40,var_flow) on <var40:FlowContext> */
+var_other37 = var_flow;
 {
-var47 = ((short int (*)(val* self, val* p0))(var42->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var42, var_other39) /* == on <var42:FlowContext>*/;
+var45 = ((short int(*)(val* self, val* p0))(var40->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var40, var_other37); /* == on <var40:FlowContext>*/
 }
-var48 = !var47;
-var45 = var48;
-goto RET_LABEL46;
-RET_LABEL46:(void)0;
+var46 = !var45;
+var43 = var46;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
 }
 }
-var33 = var45;
+var31 = var43;
 }
-if (var33){
+if (var31){
 {
-var49 = nit__flow___nit__flow__FlowVisitor___make_sub_flow(self);
+var47 = nit__flow___nit__flow__FlowVisitor___make_sub_flow(self);
 }
 {
 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
-var52 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
-if (unlikely(var52 == NULL)) {
+var50 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
+if (unlikely(var50 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
-var50 = var52;
-RET_LABEL51:(void)0;
+var48 = var50;
+RET_LABEL49:(void)0;
 }
 }
-if (varonce) {
-var53 = varonce;
+if (likely(varonce!=NULL)) {
+var51 = varonce;
 } else {
-var54 = "AUTOSUB";
-var55 = 7;
-var56 = standard___standard__NativeString___to_s_with_length(var54, var55);
-var53 = var56;
-varonce = var53;
+var52 = "AUTOSUB";
+var53 = standard___standard__NativeString___to_s_with_length(var52, 7l);
+var51 = var53;
+varonce = var51;
 }
 {
-{ /* Inline flow#FlowContext#name= (var50,var53) on <var50:FlowContext> */
-var50->attrs[COLOR_nit__flow__FlowContext___name].val = var53; /* _name on <var50:FlowContext> */
-RET_LABEL57:(void)0;
+{ /* Inline flow#FlowContext#name= (var48,var51) on <var48:FlowContext> */
+var48->attrs[COLOR_nit__flow__FlowContext___name].val = var51; /* _name on <var48:FlowContext> */
+RET_LABEL54:(void)0;
 }
 }
 } else {
@@ -428,31 +420,31 @@ RET_LABEL57:(void)0;
 }
 {
 { /* Inline flow#FlowVisitor#first (self) on <self:FlowVisitor> */
-var60 = self->attrs[COLOR_nit__flow__FlowVisitor___first].val; /* _first on <self:FlowVisitor> */
-var58 = var60;
-RET_LABEL59:(void)0;
+var57 = self->attrs[COLOR_nit__flow__FlowVisitor___first].val; /* _first on <self:FlowVisitor> */
+var55 = var57;
+RET_LABEL56:(void)0;
 }
 }
-if (var58 == NULL) {
-var61 = 0; /* <var_node:ANode> cannot be null */
+if (var55 == NULL) {
+var58 = 0; /* <var_node:ANode> cannot be null */
 } else {
-{ /* Inline kernel#Object#== (var58,var_node) on <var58:nullable ANode> */
+{ /* Inline kernel#Object#== (var55,var_node) on <var55:nullable ANode> */
 var_other = var_node;
 {
-{ /* Inline kernel#Object#is_same_instance (var58,var_other) on <var58:nullable ANode(ANode)> */
-var66 = var58 == var_other;
-var64 = var66;
-goto RET_LABEL65;
-RET_LABEL65:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var55,var_other) on <var55:nullable ANode(ANode)> */
+var63 = var55 == var_other;
+var61 = var63;
+goto RET_LABEL62;
+RET_LABEL62:(void)0;
 }
 }
-var62 = var64;
-goto RET_LABEL63;
-RET_LABEL63:(void)0;
+var59 = var61;
+goto RET_LABEL60;
+RET_LABEL60:(void)0;
 }
-var61 = var62;
+var58 = var59;
 }
-if (var61){
+if (var58){
 } else {
 }
 RET_LABEL:;
@@ -477,7 +469,7 @@ RET_LABEL2:(void)0;
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 73);
-show_backtrace(1);
+fatal_exit(1);
 }
 var = var1;
 goto RET_LABEL;
@@ -492,7 +484,7 @@ var1 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
-show_backtrace(1);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -522,7 +514,7 @@ var5 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
-show_backtrace(1);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -550,7 +542,7 @@ var12 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /*
 if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var10 = var12;
 RET_LABEL11:(void)0;
@@ -596,7 +588,7 @@ var5 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
-show_backtrace(1);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -661,7 +653,7 @@ var5 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
-show_backtrace(1);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -727,27 +719,25 @@ val* var11 /* : nullable ANode */;
 static val* varonce;
 val* var13 /* : String */;
 char* var14 /* : NativeString */;
-long var15 /* : Int */;
-val* var16 /* : FlatString */;
-val* var18 /* : FlowContext */;
+val* var15 /* : FlatString */;
+val* var17 /* : FlowContext */;
 val* var_false_flow /* var false_flow: FlowContext */;
-val* var20 /* : Array[FlowContext] */;
-val* var22 /* : Array[FlowContext] */;
-val* var23 /* : nullable ANode */;
-val* var25 /* : nullable ANode */;
-static val* varonce27;
-val* var28 /* : String */;
-char* var29 /* : NativeString */;
-long var30 /* : Int */;
-val* var31 /* : FlatString */;
-val* var33 /* : FlowContext */;
+val* var19 /* : Array[FlowContext] */;
+val* var21 /* : Array[FlowContext] */;
+val* var22 /* : nullable ANode */;
+val* var24 /* : nullable ANode */;
+static val* varonce26;
+val* var27 /* : String */;
+char* var28 /* : NativeString */;
+val* var29 /* : FlatString */;
+val* var31 /* : FlowContext */;
 {
 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
 var3 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -767,7 +757,7 @@ var8 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
-show_backtrace(1);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -792,78 +782,76 @@ RET_LABEL12:(void)0;
 {
 nit___nit__FlowContext___add_previous(var_true_flow, var_orig_flow); /* Direct call flow#FlowContext#add_previous on <var_true_flow:FlowContext>*/
 }
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var13 = varonce;
 } else {
 var14 = "TRUE";
-var15 = 4;
-var16 = standard___standard__NativeString___to_s_with_length(var14, var15);
-var13 = var16;
+var15 = standard___standard__NativeString___to_s_with_length(var14, 4l);
+var13 = var15;
 varonce = var13;
 }
 {
 { /* Inline flow#FlowContext#name= (var_true_flow,var13) on <var_true_flow:FlowContext> */
 var_true_flow->attrs[COLOR_nit__flow__FlowContext___name].val = var13; /* _name on <var_true_flow:FlowContext> */
-RET_LABEL17:(void)0;
+RET_LABEL16:(void)0;
 }
 }
-var18 = NEW_nit__FlowContext(&type_nit__FlowContext);
+var17 = NEW_nit__FlowContext(&type_nit__FlowContext);
 {
-{ /* Inline kernel#Object#init (var18) on <var18:FlowContext> */
-RET_LABEL19:(void)0;
+{ /* Inline kernel#Object#init (var17) on <var17:FlowContext> */
+RET_LABEL18:(void)0;
 }
 }
-var_false_flow = var18;
+var_false_flow = var17;
 {
 { /* Inline flow#FlowVisitor#flows (self) on <self:FlowVisitor> */
-var22 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
-if (unlikely(var22 == NULL)) {
+var21 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self:FlowVisitor> */
+if (unlikely(var21 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
-show_backtrace(1);
+fatal_exit(1);
 }
-var20 = var22;
-RET_LABEL21:(void)0;
+var19 = var21;
+RET_LABEL20:(void)0;
 }
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var20, var_false_flow); /* Direct call array#Array#add on <var20:Array[FlowContext]>*/
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var19, var_false_flow); /* Direct call array#Array#add on <var19:Array[FlowContext]>*/
 }
 {
 { /* Inline parser_nodes#Visitor#current_node (self) on <self:FlowVisitor> */
-var25 = self->attrs[COLOR_nit__parser_nodes__Visitor___current_node].val; /* _current_node on <self:FlowVisitor> */
-var23 = var25;
-RET_LABEL24:(void)0;
+var24 = self->attrs[COLOR_nit__parser_nodes__Visitor___current_node].val; /* _current_node on <self:FlowVisitor> */
+var22 = var24;
+RET_LABEL23:(void)0;
 }
 }
 {
-{ /* Inline flow#FlowContext#node= (var_false_flow,var23) on <var_false_flow:FlowContext> */
-var_false_flow->attrs[COLOR_nit__flow__FlowContext___node].val = var23; /* _node on <var_false_flow:FlowContext> */
-RET_LABEL26:(void)0;
+{ /* Inline flow#FlowContext#node= (var_false_flow,var22) on <var_false_flow:FlowContext> */
+var_false_flow->attrs[COLOR_nit__flow__FlowContext___node].val = var22; /* _node on <var_false_flow:FlowContext> */
+RET_LABEL25:(void)0;
 }
 }
 {
 nit___nit__FlowContext___add_previous(var_false_flow, var_orig_flow); /* Direct call flow#FlowContext#add_previous on <var_false_flow:FlowContext>*/
 }
-if (varonce27) {
-var28 = varonce27;
+if (likely(varonce26!=NULL)) {
+var27 = varonce26;
 } else {
-var29 = "FALSE";
-var30 = 5;
-var31 = standard___standard__NativeString___to_s_with_length(var29, var30);
-var28 = var31;
-varonce27 = var28;
+var28 = "FALSE";
+var29 = standard___standard__NativeString___to_s_with_length(var28, 5l);
+var27 = var29;
+varonce26 = var27;
 }
 {
-{ /* Inline flow#FlowContext#name= (var_false_flow,var28) on <var_false_flow:FlowContext> */
-var_false_flow->attrs[COLOR_nit__flow__FlowContext___name].val = var28; /* _name on <var_false_flow:FlowContext> */
-RET_LABEL32:(void)0;
+{ /* Inline flow#FlowContext#name= (var_false_flow,var27) on <var_false_flow:FlowContext> */
+var_false_flow->attrs[COLOR_nit__flow__FlowContext___name].val = var27; /* _name on <var_false_flow:FlowContext> */
+RET_LABEL30:(void)0;
 }
 }
 {
-var33 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(self, var_true_flow, var_false_flow);
+var31 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(self, var_true_flow, var_false_flow);
 }
-var = var33;
+var = var31;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -879,7 +867,6 @@ val* var6 /* : nullable ANode */;
 val* var8 /* : nullable ANode */;
 val* var10 /* : FlowContext */;
 val* var12 /* : FlowContext */;
-short int var13 /* : Bool */;
 var1 = NEW_nit__FlowContext(&type_nit__FlowContext);
 {
 { /* Inline kernel#Object#init (var1) on <var1:FlowContext> */
@@ -893,7 +880,7 @@ var5 = self->attrs[COLOR_nit__flow__FlowVisitor___flows].val; /* _flows on <self
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _flows");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 76);
-show_backtrace(1);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -921,7 +908,7 @@ var12 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /*
 if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var10 = var12;
 RET_LABEL11:(void)0;
@@ -930,17 +917,16 @@ RET_LABEL11:(void)0;
 {
 nit___nit__FlowContext___add_previous(var_flow, var10); /* Direct call flow#FlowContext#add_previous on <var_flow:FlowContext>*/
 }
-var13 = 1;
 {
-{ /* Inline flow#FlowContext#is_marked_unreachable= (var_flow,var13) on <var_flow:FlowContext> */
-var_flow->attrs[COLOR_nit__flow__FlowContext___is_marked_unreachable].s = var13; /* _is_marked_unreachable on <var_flow:FlowContext> */
-RET_LABEL14:(void)0;
+{ /* Inline flow#FlowContext#is_marked_unreachable= (var_flow,1) on <var_flow:FlowContext> */
+var_flow->attrs[COLOR_nit__flow__FlowContext___is_marked_unreachable].s = 1; /* _is_marked_unreachable on <var_flow:FlowContext> */
+RET_LABEL13:(void)0;
 }
 }
 {
 { /* Inline flow#FlowVisitor#current_flow_context= (self,var_flow) on <self:FlowVisitor> */
 self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val = var_flow; /* _current_flow_context on <self:FlowVisitor> */
-RET_LABEL15:(void)0;
+RET_LABEL14:(void)0;
 }
 }
 var = var_flow;
@@ -952,110 +938,106 @@ return var;
 void nit__flow___nit__flow__FlowVisitor___merge_continues_to(val* self, val* p0, val* p1) {
 val* var_before_loop /* var before_loop: FlowContext */;
 val* var_escapemark /* var escapemark: nullable EscapeMark */;
-val* var /* : null */;
+short int var /* : Bool */;
 short int var1 /* : Bool */;
-short int var2 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var4 /* : Bool */;
-short int var6 /* : Bool */;
-val* var7 /* : Array[AEscapeExpr] */;
-val* var9 /* : Array[AEscapeExpr] */;
+short int var3 /* : Bool */;
+short int var5 /* : Bool */;
+val* var6 /* : Array[AEscapeExpr] */;
+val* var8 /* : Array[AEscapeExpr] */;
 val* var_ /* var : Array[AEscapeExpr] */;
-val* var10 /* : ArrayIterator[nullable Object] */;
-val* var_11 /* var : ArrayIterator[AEscapeExpr] */;
-short int var12 /* : Bool */;
-val* var13 /* : nullable Object */;
+val* var9 /* : ArrayIterator[nullable Object] */;
+val* var_10 /* var : ArrayIterator[AEscapeExpr] */;
+short int var11 /* : Bool */;
+val* var12 /* : nullable Object */;
 val* var_b /* var b: AEscapeExpr */;
-val* var14 /* : nullable FlowContext */;
+val* var13 /* : nullable FlowContext */;
 val* var_before /* var before: nullable FlowContext */;
-val* var15 /* : null */;
-short int var16 /* : Bool */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
 short int var17 /* : Bool */;
 short int var19 /* : Bool */;
-short int var21 /* : Bool */;
 var_before_loop = p0;
 var_escapemark = p1;
-var = NULL;
 if (var_escapemark == NULL) {
-var1 = 1; /* is null */
+var = 1; /* is null */
 } else {
-var1 = 0; /* arg is null but recv is not */
+var = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_escapemark,var) on <var_escapemark:nullable EscapeMark> */
-var_other = var;
+{ /* Inline kernel#Object#== (var_escapemark,((val*)NULL)) on <var_escapemark:nullable EscapeMark> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-var6 = var_escapemark == var_other;
-var4 = var6;
-goto RET_LABEL5;
-RET_LABEL5:(void)0;
+var5 = var_escapemark == var_other;
+var3 = var5;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
 }
 }
-var2 = var4;
-goto RET_LABEL3;
-RET_LABEL3:(void)0;
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
 }
-var1 = var2;
+var = var1;
 }
-if (var1){
+if (var){
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline scope#EscapeMark#escapes (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-var9 = var_escapemark->attrs[COLOR_nit__scope__EscapeMark___escapes].val; /* _escapes on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-if (unlikely(var9 == NULL)) {
+var8 = var_escapemark->attrs[COLOR_nit__scope__EscapeMark___escapes].val; /* _escapes on <var_escapemark:nullable EscapeMark(EscapeMark)> */
+if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__scope, 58);
-show_backtrace(1);
+fatal_exit(1);
 }
-var7 = var9;
-RET_LABEL8:(void)0;
+var6 = var8;
+RET_LABEL7:(void)0;
 }
 }
-var_ = var7;
+var_ = var6;
 {
-var10 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var9 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
 }
-var_11 = var10;
+var_10 = var9;
 for(;;) {
 {
-var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_11);
+var11 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_10);
 }
-if (var12){
+if (var11){
 {
-var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_11);
+var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_10);
 }
-var_b = var13;
+var_b = var12;
 {
-var14 = nit__flow___AEscapeExpr___before_flow_context(var_b);
+var13 = nit__flow___AEscapeExpr___before_flow_context(var_b);
 }
-var_before = var14;
-var15 = NULL;
+var_before = var13;
 if (var_before == NULL) {
-var16 = 1; /* is null */
+var14 = 1; /* is null */
 } else {
-var16 = 0; /* arg is null but recv is not */
+var14 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_before,var15) on <var_before:nullable FlowContext> */
-var_other = var15;
+{ /* Inline kernel#Object#== (var_before,((val*)NULL)) on <var_before:nullable FlowContext> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_before,var_other) on <var_before:nullable FlowContext(FlowContext)> */
-var21 = var_before == var_other;
-var19 = var21;
-goto RET_LABEL20;
-RET_LABEL20:(void)0;
-}
-}
+var19 = var_before == var_other;
 var17 = var19;
 goto RET_LABEL18;
 RET_LABEL18:(void)0;
 }
-var16 = var17;
 }
-if (var16){
+var15 = var17;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+var14 = var15;
+}
+if (var14){
 goto BREAK_label;
 } else {
 }
@@ -1064,160 +1046,152 @@ nit___nit__FlowContext___add_loop(var_before_loop, var_before); /* Direct call f
 }
 BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_11); /* Direct call array#ArrayIterator#next on <var_11:ArrayIterator[AEscapeExpr]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_10); /* Direct call array#ArrayIterator#next on <var_10:ArrayIterator[AEscapeExpr]>*/
 }
 } else {
-goto BREAK_label22;
+goto BREAK_label20;
 }
 }
-BREAK_label22: (void)0;
+BREAK_label20: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:ArrayIterator[AEscapeExpr]> */
-RET_LABEL23:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_10); /* Direct call array#ArrayIterator#finish on <var_10:ArrayIterator[AEscapeExpr]>*/
 }
 RET_LABEL:;
 }
 /* method flow#FlowVisitor#merge_breaks for (self: FlowVisitor, nullable EscapeMark) */
 void nit__flow___nit__flow__FlowVisitor___merge_breaks(val* self, val* p0) {
 val* var_escapemark /* var escapemark: nullable EscapeMark */;
-val* var /* : null */;
+short int var /* : Bool */;
 short int var1 /* : Bool */;
-short int var2 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var4 /* : Bool */;
-short int var6 /* : Bool */;
-val* var7 /* : Array[AEscapeExpr] */;
-val* var9 /* : Array[AEscapeExpr] */;
+short int var3 /* : Bool */;
+short int var5 /* : Bool */;
+val* var6 /* : Array[AEscapeExpr] */;
+val* var8 /* : Array[AEscapeExpr] */;
 val* var_ /* var : Array[AEscapeExpr] */;
-val* var10 /* : ArrayIterator[nullable Object] */;
-val* var_11 /* var : ArrayIterator[AEscapeExpr] */;
-short int var12 /* : Bool */;
-val* var13 /* : nullable Object */;
+val* var9 /* : ArrayIterator[nullable Object] */;
+val* var_10 /* var : ArrayIterator[AEscapeExpr] */;
+short int var11 /* : Bool */;
+val* var12 /* : nullable Object */;
 val* var_b /* var b: AEscapeExpr */;
-val* var14 /* : nullable FlowContext */;
+val* var13 /* : nullable FlowContext */;
 val* var_before /* var before: nullable FlowContext */;
-val* var15 /* : null */;
-short int var16 /* : Bool */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
 short int var17 /* : Bool */;
 short int var19 /* : Bool */;
-short int var21 /* : Bool */;
+val* var20 /* : FlowContext */;
 val* var22 /* : FlowContext */;
-val* var24 /* : FlowContext */;
-val* var25 /* : FlowContext */;
+val* var23 /* : FlowContext */;
 var_escapemark = p0;
-var = NULL;
 if (var_escapemark == NULL) {
-var1 = 1; /* is null */
+var = 1; /* is null */
 } else {
-var1 = 0; /* arg is null but recv is not */
+var = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_escapemark,var) on <var_escapemark:nullable EscapeMark> */
-var_other = var;
+{ /* Inline kernel#Object#== (var_escapemark,((val*)NULL)) on <var_escapemark:nullable EscapeMark> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_escapemark,var_other) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-var6 = var_escapemark == var_other;
-var4 = var6;
-goto RET_LABEL5;
-RET_LABEL5:(void)0;
+var5 = var_escapemark == var_other;
+var3 = var5;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
 }
 }
-var2 = var4;
-goto RET_LABEL3;
-RET_LABEL3:(void)0;
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
 }
-var1 = var2;
+var = var1;
 }
-if (var1){
+if (var){
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline scope#EscapeMark#escapes (var_escapemark) on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-var9 = var_escapemark->attrs[COLOR_nit__scope__EscapeMark___escapes].val; /* _escapes on <var_escapemark:nullable EscapeMark(EscapeMark)> */
-if (unlikely(var9 == NULL)) {
+var8 = var_escapemark->attrs[COLOR_nit__scope__EscapeMark___escapes].val; /* _escapes on <var_escapemark:nullable EscapeMark(EscapeMark)> */
+if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__scope, 58);
-show_backtrace(1);
+fatal_exit(1);
 }
-var7 = var9;
-RET_LABEL8:(void)0;
+var6 = var8;
+RET_LABEL7:(void)0;
 }
 }
-var_ = var7;
+var_ = var6;
 {
-var10 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var9 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
 }
-var_11 = var10;
+var_10 = var9;
 for(;;) {
 {
-var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_11);
+var11 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_10);
 }
-if (var12){
+if (var11){
 {
-var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_11);
+var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_10);
 }
-var_b = var13;
+var_b = var12;
 {
-var14 = nit__flow___AEscapeExpr___before_flow_context(var_b);
+var13 = nit__flow___AEscapeExpr___before_flow_context(var_b);
 }
-var_before = var14;
-var15 = NULL;
+var_before = var13;
 if (var_before == NULL) {
-var16 = 1; /* is null */
+var14 = 1; /* is null */
 } else {
-var16 = 0; /* arg is null but recv is not */
+var14 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_before,var15) on <var_before:nullable FlowContext> */
-var_other = var15;
+{ /* Inline kernel#Object#== (var_before,((val*)NULL)) on <var_before:nullable FlowContext> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_before,var_other) on <var_before:nullable FlowContext(FlowContext)> */
-var21 = var_before == var_other;
-var19 = var21;
-goto RET_LABEL20;
-RET_LABEL20:(void)0;
-}
-}
+var19 = var_before == var_other;
 var17 = var19;
 goto RET_LABEL18;
 RET_LABEL18:(void)0;
 }
-var16 = var17;
 }
-if (var16){
+var15 = var17;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+var14 = var15;
+}
+if (var14){
 goto BREAK_label;
 } else {
 }
 {
 { /* Inline flow#FlowVisitor#current_flow_context (self) on <self:FlowVisitor> */
-var24 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
-if (unlikely(var24 == NULL)) {
+var22 = self->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /* _current_flow_context on <self:FlowVisitor> */
+if (unlikely(var22 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
-var22 = var24;
-RET_LABEL23:(void)0;
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
 {
-var25 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(self, var22, var_before);
+var23 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(self, var20, var_before);
 }
 BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_11); /* Direct call array#ArrayIterator#next on <var_11:ArrayIterator[AEscapeExpr]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_10); /* Direct call array#ArrayIterator#next on <var_10:ArrayIterator[AEscapeExpr]>*/
 }
 } else {
-goto BREAK_label26;
+goto BREAK_label24;
 }
 }
-BREAK_label26: (void)0;
+BREAK_label24: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:ArrayIterator[AEscapeExpr]> */
-RET_LABEL27:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_10); /* Direct call array#ArrayIterator#finish on <var_10:ArrayIterator[AEscapeExpr]>*/
 }
 RET_LABEL:;
 }
@@ -1228,8 +1202,8 @@ val* var1 /* : Array[FlowContext] */;
 var1 = self->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 188);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -1242,8 +1216,8 @@ val* var1 /* : Array[FlowContext] */;
 var1 = self->attrs[COLOR_nit__flow__FlowContext___loops].val; /* _loops on <self:FlowContext> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _loops");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 191);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 192);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -1269,18 +1243,13 @@ short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
-short int var5 /* : Bool */;
-short int var7 /* : Bool */;
-short int var8 /* : Bool */;
+short int var6 /* : Bool */;
+val* var7 /* : Array[FlowContext] */;
 val* var9 /* : Array[FlowContext] */;
-val* var11 /* : Array[FlowContext] */;
+long var10 /* : Int */;
 long var12 /* : Int */;
-long var14 /* : Int */;
-long var15 /* : Int */;
-short int var16 /* : Bool */;
-short int var18 /* : Bool */;
-short int var19 /* : Bool */;
-short int var20 /* : Bool */;
+short int var13 /* : Bool */;
+short int var15 /* : Bool */;
 {
 { /* Inline flow#FlowContext#is_marked_unreachable (self) on <self:FlowContext> */
 var3 = self->attrs[COLOR_nit__flow__FlowContext___is_marked_unreachable].s; /* _is_marked_unreachable on <self:FlowContext> */
@@ -1289,60 +1258,55 @@ RET_LABEL2:(void)0;
 }
 }
 if (var1){
-var4 = 1;
-var = var4;
+var = 1;
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline flow#FlowContext#is_start (self) on <self:FlowContext> */
-var7 = self->attrs[COLOR_nit__flow__FlowContext___is_start].s; /* _is_start on <self:FlowContext> */
-var5 = var7;
-RET_LABEL6:(void)0;
+var6 = self->attrs[COLOR_nit__flow__FlowContext___is_start].s; /* _is_start on <self:FlowContext> */
+var4 = var6;
+RET_LABEL5:(void)0;
 }
 }
-if (var5){
-var8 = 0;
-var = var8;
+if (var4){
+var = 0;
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
-var11 = self->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
-if (unlikely(var11 == NULL)) {
+var9 = self->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
+if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 188);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
+fatal_exit(1);
 }
-var9 = var11;
-RET_LABEL10:(void)0;
+var7 = var9;
+RET_LABEL8:(void)0;
 }
 }
 {
-{ /* Inline array#AbstractArrayRead#length (var9) on <var9:Array[FlowContext]> */
-var14 = var9->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var9:Array[FlowContext]> */
-var12 = var14;
-RET_LABEL13:(void)0;
+{ /* Inline array#AbstractArrayRead#length (var7) on <var7:Array[FlowContext]> */
+var12 = var7->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var7:Array[FlowContext]> */
+var10 = var12;
+RET_LABEL11:(void)0;
 }
 }
-var15 = 0;
 {
-{ /* Inline kernel#Int#== (var12,var15) on <var12:Int> */
-var18 = var12 == var15;
-var16 = var18;
-goto RET_LABEL17;
-RET_LABEL17:(void)0;
+{ /* Inline kernel#Int#== (var10,0l) on <var10:Int> */
+var15 = var10 == 0l;
+var13 = var15;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
 }
 }
-if (var16){
-var19 = 1;
-var = var19;
+if (var13){
+var = 1;
 goto RET_LABEL;
 } else {
 }
-var20 = 0;
-var = var20;
+var = 0;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -1401,8 +1365,8 @@ val* var1 /* : FlowContext */;
 var1 = self->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <self:FlowContext> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -1420,8 +1384,8 @@ val* var1 /* : FlowContext */;
 var1 = self->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <self:FlowContext> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -1457,8 +1421,8 @@ if (var2){
 var5 = self->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 188);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -1478,8 +1442,8 @@ if (var){
 var10 = self->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
 if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 188);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
+fatal_exit(1);
 }
 var8 = var10;
 RET_LABEL9:(void)0;
@@ -1517,8 +1481,8 @@ if (var2){
 var5 = self->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 188);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -1538,8 +1502,8 @@ if (var){
 var10 = self->attrs[COLOR_nit__flow__FlowContext___loops].val; /* _loops on <self:FlowContext> */
 if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _loops");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 191);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 192);
+fatal_exit(1);
 }
 var8 = var10;
 RET_LABEL9:(void)0;
@@ -1557,7 +1521,7 @@ void nit__flow___ANode___accept_flow_visitor(val* self, val* p0) {
 val* var_v /* var v: FlowVisitor */;
 var_v = p0;
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__parser_nodes__ANode__visit_all]))(self, var_v) /* visit_all on <self:ANode>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__parser_nodes__ANode__visit_all]))(self, var_v); /* visit_all on <self:ANode>*/
 }
 RET_LABEL:;
 }
@@ -1569,10 +1533,10 @@ val* var_v /* var v: FlowVisitor */;
 var_toolcontext = p0;
 var = NEW_nit__flow__FlowVisitor(&type_nit__flow__FlowVisitor);
 {
-((void (*)(val* self, val* p0))(var->class->vft[COLOR_nit__flow__FlowVisitor__toolcontext_61d]))(var, var_toolcontext) /* toolcontext= on <var:FlowVisitor>*/;
+((void(*)(val* self, val* p0))(var->class->vft[COLOR_nit__flow__FlowVisitor__toolcontext_61d]))(var, var_toolcontext); /* toolcontext= on <var:FlowVisitor>*/
 }
 {
-((void (*)(val* self))(var->class->vft[COLOR_standard__kernel__Object__init]))(var) /* init on <var:FlowVisitor>*/;
+((void(*)(val* self))(var->class->vft[COLOR_standard__kernel__Object__init]))(var); /* init on <var:FlowVisitor>*/
 }
 var_v = var;
 {
@@ -1604,7 +1568,7 @@ var2 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /*
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -1617,7 +1581,7 @@ RET_LABEL3:(void)0;
 }
 }
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___APropdef___ANode__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:APropdef>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___APropdef___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:APropdef>*/
 }
 {
 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
@@ -1625,7 +1589,7 @@ var6 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /*
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -1659,7 +1623,7 @@ val* var_v /* var v: FlowVisitor */;
 val* var /* : FlowContext */;
 var_v = p0;
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AVarAssignExpr___ANode__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AVarAssignExpr>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AVarAssignExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AVarAssignExpr>*/
 }
 {
 var = nit__flow___nit__flow__FlowVisitor___make_sub_flow(var_v);
@@ -1678,7 +1642,7 @@ val* var_v /* var v: FlowVisitor */;
 val* var /* : FlowContext */;
 var_v = p0;
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AReassignFormExpr___ANode__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AReassignFormExpr>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AReassignFormExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AReassignFormExpr>*/
 }
 {
 var = nit__flow___nit__flow__FlowVisitor___make_sub_flow(var_v);
@@ -1713,23 +1677,22 @@ short int var17 /* : Bool */;
 short int var18 /* : Bool */;
 val* var19 /* : FlowContext */;
 val* var21 /* : FlowContext */;
-short int var22 /* : Bool */;
-val* var24 /* : ToolContext */;
-val* var26 /* : ToolContext */;
-val* var27 /* : Location */;
+val* var23 /* : ToolContext */;
+val* var25 /* : ToolContext */;
+val* var26 /* : Location */;
 static val* varonce;
-val* var28 /* : String */;
-char* var29 /* : NativeString */;
-long var30 /* : Int */;
-val* var31 /* : FlatString */;
+val* var27 /* : String */;
+char* var28 /* : NativeString */;
+val* var29 /* : FlatString */;
+val* var30 /* : Message */;
 var_v = p0;
 {
 { /* Inline parser_nodes#ABlockExpr#n_expr (self) on <self:ABlockExpr> */
 var2 = self->attrs[COLOR_nit__parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1565);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1758);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -1742,11 +1705,11 @@ var3 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(v
 var_4 = var3;
 for(;;) {
 {
-var5 = ((short int (*)(val* self))(var_4->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_4) /* is_ok on <var_4:Iterator[AExpr]>*/;
+var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:Iterator[AExpr]>*/
 }
 if (var5){
 {
-var6 = ((val* (*)(val* self))(var_4->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_4) /* item on <var_4:Iterator[AExpr]>*/;
+var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:Iterator[AExpr]>*/
 }
 var_e = var6;
 {
@@ -1755,7 +1718,7 @@ var9 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /*
 if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
@@ -1776,7 +1739,7 @@ var14 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /
 if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var12 = var14;
 RET_LABEL13:(void)0;
@@ -1797,51 +1760,49 @@ var21 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /
 if (unlikely(var21 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var19 = var21;
 RET_LABEL20:(void)0;
 }
 }
-var22 = 1;
 {
-{ /* Inline flow#FlowContext#is_already_unreachable= (var19,var22) on <var19:FlowContext> */
-var19->attrs[COLOR_nit__flow__FlowContext___is_already_unreachable].s = var22; /* _is_already_unreachable on <var19:FlowContext> */
-RET_LABEL23:(void)0;
+{ /* Inline flow#FlowContext#is_already_unreachable= (var19,1) on <var19:FlowContext> */
+var19->attrs[COLOR_nit__flow__FlowContext___is_already_unreachable].s = 1; /* _is_already_unreachable on <var19:FlowContext> */
+RET_LABEL22:(void)0;
 }
 }
 {
 { /* Inline flow#FlowVisitor#toolcontext (var_v) on <var_v:FlowVisitor> */
-var26 = var_v->attrs[COLOR_nit__flow__FlowVisitor___toolcontext].val; /* _toolcontext on <var_v:FlowVisitor> */
-if (unlikely(var26 == NULL)) {
+var25 = var_v->attrs[COLOR_nit__flow__FlowVisitor___toolcontext].val; /* _toolcontext on <var_v:FlowVisitor> */
+if (unlikely(var25 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 39);
-show_backtrace(1);
+fatal_exit(1);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
 {
-var27 = nit___nit__ANode___hot_location(var_e);
+var26 = nit___nit__ANode___hot_location(var_e);
 }
-if (varonce) {
-var28 = varonce;
+if (likely(varonce!=NULL)) {
+var27 = varonce;
 } else {
-var29 = "Error: unreachable statement.";
-var30 = 29;
-var31 = standard___standard__NativeString___to_s_with_length(var29, var30);
-var28 = var31;
-varonce = var28;
+var28 = "Error: unreachable statement.";
+var29 = standard___standard__NativeString___to_s_with_length(var28, 29l);
+var27 = var29;
+varonce = var27;
 }
 {
-nit___nit__ToolContext___error(var24, var27, var28); /* Direct call toolcontext#ToolContext#error on <var24:ToolContext>*/
+var30 = nit___nit__ToolContext___error(var23, var26, var27);
 }
 } else {
 }
 }
 {
-((void (*)(val* self))(var_4->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_4) /* next on <var_4:Iterator[AExpr]>*/;
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:Iterator[AExpr]>*/
 }
 } else {
 goto BREAK_label;
@@ -1849,9 +1810,7 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_4) on <var_4:Iterator[AExpr]> */
-RET_LABEL32:(void)0;
-}
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:Iterator[AExpr]>*/
 }
 RET_LABEL:;
 }
@@ -1861,7 +1820,7 @@ val* var_v /* var v: FlowVisitor */;
 val* var /* : FlowContext */;
 var_v = p0;
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AReturnExpr___ANode__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AReturnExpr>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AReturnExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AReturnExpr>*/
 }
 {
 var = nit__flow___nit__flow__FlowVisitor___make_unreachable_flow(var_v);
@@ -1874,16 +1833,14 @@ val* var /* : nullable FlowContext */;
 val* var1 /* : nullable FlowContext */;
 val* var3 /* : nullable FlowContext */;
 val* var_after /* var after: nullable FlowContext */;
-val* var4 /* : null */;
+short int var4 /* : Bool */;
 short int var5 /* : Bool */;
-short int var6 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var8 /* : Bool */;
-short int var10 /* : Bool */;
-val* var11 /* : null */;
+short int var7 /* : Bool */;
+short int var9 /* : Bool */;
+val* var10 /* : Array[FlowContext] */;
 val* var12 /* : Array[FlowContext] */;
-val* var14 /* : Array[FlowContext] */;
-val* var15 /* : nullable Object */;
+val* var13 /* : nullable Object */;
 {
 { /* Inline flow#AExpr#after_flow_context (self) on <self:AEscapeExpr> */
 var3 = self->attrs[COLOR_nit__flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:AEscapeExpr> */
@@ -1892,51 +1849,49 @@ RET_LABEL2:(void)0;
 }
 }
 var_after = var1;
-var4 = NULL;
 if (var_after == NULL) {
-var5 = 1; /* is null */
+var4 = 1; /* is null */
 } else {
-var5 = 0; /* arg is null but recv is not */
+var4 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_after,var4) on <var_after:nullable FlowContext> */
-var_other = var4;
+{ /* Inline kernel#Object#== (var_after,((val*)NULL)) on <var_after:nullable FlowContext> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_after,var_other) on <var_after:nullable FlowContext(FlowContext)> */
-var10 = var_after == var_other;
-var8 = var10;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+var9 = var_after == var_other;
+var7 = var9;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
 }
 }
-var6 = var8;
-goto RET_LABEL7;
-RET_LABEL7:(void)0;
+var5 = var7;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
 }
-var5 = var6;
+var4 = var5;
 }
-if (var5){
-var11 = NULL;
-var = var11;
+if (var4){
+var = ((val*)NULL);
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline flow#FlowContext#previous (var_after) on <var_after:nullable FlowContext(FlowContext)> */
-var14 = var_after->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <var_after:nullable FlowContext(FlowContext)> */
-if (unlikely(var14 == NULL)) {
+var12 = var_after->attrs[COLOR_nit__flow__FlowContext___previous].val; /* _previous on <var_after:nullable FlowContext(FlowContext)> */
+if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 188);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 189);
+fatal_exit(1);
 }
-var12 = var14;
-RET_LABEL13:(void)0;
+var10 = var12;
+RET_LABEL11:(void)0;
 }
 }
 {
-var15 = standard___standard__SequenceRead___Collection__first(var12);
+var13 = standard___standard__SequenceRead___Collection__first(var10);
 }
-var = var15;
+var = var13;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -1947,7 +1902,7 @@ val* var_v /* var v: FlowVisitor */;
 val* var /* : FlowContext */;
 var_v = p0;
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AEscapeExpr___ANode__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AEscapeExpr>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AEscapeExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AEscapeExpr>*/
 }
 {
 var = nit__flow___nit__flow__FlowVisitor___make_unreachable_flow(var_v);
@@ -1960,7 +1915,7 @@ val* var_v /* var v: FlowVisitor */;
 val* var /* : FlowContext */;
 var_v = p0;
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AAbortExpr___ANode__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AAbortExpr>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AAbortExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AAbortExpr>*/
 }
 {
 var = nit__flow___nit__flow__FlowVisitor___make_unreachable_flow(var_v);
@@ -1974,7 +1929,7 @@ val* var /* : nullable EscapeMark */;
 val* var2 /* : nullable EscapeMark */;
 var_v = p0;
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___ADoExpr___ANode__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:ADoExpr>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___ADoExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:ADoExpr>*/
 }
 {
 { /* Inline scope#ADoExpr#break_mark (self) on <self:ADoExpr> */
@@ -2016,8 +1971,8 @@ var_v = p0;
 var2 = self->attrs[COLOR_nit__parser_nodes__AIfExpr___n_expr].val; /* _n_expr on <self:AIfExpr> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1664);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1857);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -2032,8 +1987,8 @@ var_after_expr = var3;
 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -2061,7 +2016,7 @@ var13 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /
 if (unlikely(var13 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var11 = var13;
 RET_LABEL12:(void)0;
@@ -2073,8 +2028,8 @@ var_after_then = var11;
 var16 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
 if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
 var14 = var16;
 RET_LABEL15:(void)0;
@@ -2102,7 +2057,7 @@ var23 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /
 if (unlikely(var23 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var21 = var23;
 RET_LABEL22:(void)0;
@@ -2142,8 +2097,8 @@ var_v = p0;
 var2 = self->attrs[COLOR_nit__parser_nodes__AIfexprExpr___n_expr].val; /* _n_expr on <self:AIfexprExpr> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1681);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1880);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -2158,8 +2113,8 @@ var_after_expr = var3;
 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -2176,8 +2131,8 @@ RET_LABEL7:(void)0;
 var10 = self->attrs[COLOR_nit__parser_nodes__AIfexprExpr___n_then].val; /* _n_then on <self:AIfexprExpr> */
 if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_then");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1687);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1886);
+fatal_exit(1);
 }
 var8 = var10;
 RET_LABEL9:(void)0;
@@ -2192,7 +2147,7 @@ var13 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /
 if (unlikely(var13 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var11 = var13;
 RET_LABEL12:(void)0;
@@ -2204,8 +2159,8 @@ var_after_then = var11;
 var16 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
 if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
 var14 = var16;
 RET_LABEL15:(void)0;
@@ -2222,8 +2177,8 @@ RET_LABEL17:(void)0;
 var20 = self->attrs[COLOR_nit__parser_nodes__AIfexprExpr___n_else].val; /* _n_else on <self:AIfexprExpr> */
 if (unlikely(var20 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_else");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1693);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1892);
+fatal_exit(1);
 }
 var18 = var20;
 RET_LABEL19:(void)0;
@@ -2238,7 +2193,7 @@ var23 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /
 if (unlikely(var23 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var21 = var23;
 RET_LABEL22:(void)0;
@@ -2282,8 +2237,8 @@ var_before_loop = var;
 var3 = self->attrs[COLOR_nit__parser_nodes__AWhileExpr___n_expr].val; /* _n_expr on <self:AWhileExpr> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1705);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1904);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -2298,8 +2253,8 @@ var_after_expr = var4;
 var7 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
 if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
 var5 = var7;
 RET_LABEL6:(void)0;
@@ -2327,7 +2282,7 @@ var14 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /
 if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var12 = var14;
 RET_LABEL13:(void)0;
@@ -2345,15 +2300,15 @@ RET_LABEL16:(void)0;
 }
 }
 {
-nit__flow___nit__flow__FlowVisitor___merge_continues_to(var_v, var_after_block, var15); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
+nit__flow___nit__flow__FlowVisitor___merge_continues_to(var_v, var_before_loop, var15); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
 }
 {
 { /* Inline flow#FlowContext#when_false (var_after_expr) on <var_after_expr:FlowContext> */
 var20 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
 if (unlikely(var20 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
 var18 = var20;
 RET_LABEL19:(void)0;
@@ -2413,7 +2368,7 @@ var6 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /*
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -2431,7 +2386,7 @@ RET_LABEL8:(void)0;
 }
 }
 {
-nit__flow___nit__flow__FlowVisitor___merge_continues_to(var_v, var_after_block, var7); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
+nit__flow___nit__flow__FlowVisitor___merge_continues_to(var_v, var_before_loop, var7); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
 }
 {
 var10 = nit__flow___nit__flow__FlowVisitor___make_unreachable_flow(var_v);
@@ -2473,8 +2428,8 @@ var_v = p0;
 var2 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on <self:AForExpr> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1738);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1940);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -2503,7 +2458,7 @@ var9 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /*
 if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
@@ -2521,7 +2476,7 @@ RET_LABEL11:(void)0;
 }
 }
 {
-nit__flow___nit__flow__FlowVisitor___merge_continues_to(var_v, var_after_block, var10); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
+nit__flow___nit__flow__FlowVisitor___merge_continues_to(var_v, var_before_loop, var10); /* Direct call flow#FlowVisitor#merge_continues_to on <var_v:FlowVisitor>*/
 }
 {
 { /* Inline flow#FlowVisitor#current_flow_context (var_v) on <var_v:FlowVisitor> */
@@ -2529,7 +2484,7 @@ var15 = var_v->attrs[COLOR_nit__flow__FlowVisitor___current_flow_context].val; /
 if (unlikely(var15 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _current_flow_context");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var13 = var15;
 RET_LABEL14:(void)0;
@@ -2550,6 +2505,27 @@ nit__flow___nit__flow__FlowVisitor___merge_breaks(var_v, var17); /* Direct call
 }
 RET_LABEL:;
 }
+/* method flow#AWithExpr#accept_flow_visitor for (self: AWithExpr, FlowVisitor) */
+void nit__flow___AWithExpr___ANode__accept_flow_visitor(val* self, val* p0) {
+val* var_v /* var v: FlowVisitor */;
+val* var /* : nullable EscapeMark */;
+val* var2 /* : nullable EscapeMark */;
+var_v = p0;
+{
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AWithExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AWithExpr>*/
+}
+{
+{ /* Inline scope#AWithExpr#break_mark (self) on <self:AWithExpr> */
+var2 = self->attrs[COLOR_nit__scope__AWithExpr___break_mark].val; /* _break_mark on <self:AWithExpr> */
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+nit__flow___nit__flow__FlowVisitor___merge_breaks(var_v, var); /* Direct call flow#FlowVisitor#merge_breaks on <var_v:FlowVisitor>*/
+}
+RET_LABEL:;
+}
 /* method flow#AAssertExpr#accept_flow_visitor for (self: AAssertExpr, FlowVisitor) */
 void nit__flow___AAssertExpr___ANode__accept_flow_visitor(val* self, val* p0) {
 val* var_v /* var v: FlowVisitor */;
@@ -2569,8 +2545,8 @@ var_v = p0;
 var2 = self->attrs[COLOR_nit__parser_nodes__AAssertExpr___n_expr].val; /* _n_expr on <self:AAssertExpr> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1758);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1978);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -2585,8 +2561,8 @@ var_after_expr = var3;
 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -2613,8 +2589,8 @@ nit___nit__Visitor___enter_visit(var_v, var8); /* Direct call parser_nodes#Visit
 var13 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
 if (unlikely(var13 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
 var11 = var13;
 RET_LABEL12:(void)0;
@@ -2650,19 +2626,18 @@ val* var_merge_true /* var merge_true: FlowContext */;
 static val* varonce;
 val* var19 /* : String */;
 char* var20 /* : NativeString */;
-long var21 /* : Int */;
-val* var22 /* : FlatString */;
-val* var24 /* : FlowContext */;
+val* var21 /* : FlatString */;
+val* var23 /* : FlowContext */;
+val* var25 /* : FlowContext */;
 val* var26 /* : FlowContext */;
-val* var27 /* : FlowContext */;
 var_v = p0;
 {
 { /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on <self:AOrExpr> */
 var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on <self:AOrExpr> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1823);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -2677,8 +2652,8 @@ var_after_expr = var3;
 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -2695,8 +2670,8 @@ RET_LABEL7:(void)0;
 var10 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on <self:AOrExpr> */
 if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1826);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2059);
+fatal_exit(1);
 }
 var8 = var10;
 RET_LABEL9:(void)0;
@@ -2711,8 +2686,8 @@ var_after_expr2 = var11;
 var14 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
 if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
 var12 = var14;
 RET_LABEL13:(void)0;
@@ -2723,8 +2698,8 @@ RET_LABEL13:(void)0;
 var17 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr2:FlowContext> */
 if (unlikely(var17 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
 var15 = var17;
 RET_LABEL16:(void)0;
@@ -2734,35 +2709,34 @@ RET_LABEL16:(void)0;
 var18 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(var_v, var12, var15);
 }
 var_merge_true = var18;
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var19 = varonce;
 } else {
 var20 = "OR TRUE";
-var21 = 7;
-var22 = standard___standard__NativeString___to_s_with_length(var20, var21);
-var19 = var22;
+var21 = standard___standard__NativeString___to_s_with_length(var20, 7l);
+var19 = var21;
 varonce = var19;
 }
 {
 { /* Inline flow#FlowContext#name= (var_merge_true,var19) on <var_merge_true:FlowContext> */
 var_merge_true->attrs[COLOR_nit__flow__FlowContext___name].val = var19; /* _name on <var_merge_true:FlowContext> */
-RET_LABEL23:(void)0;
+RET_LABEL22:(void)0;
 }
 }
 {
 { /* Inline flow#FlowContext#when_false (var_after_expr2) on <var_after_expr2:FlowContext> */
-var26 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr2:FlowContext> */
-if (unlikely(var26 == NULL)) {
+var25 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr2:FlowContext> */
+if (unlikely(var25 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
 {
-var27 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(var_v, var_merge_true, var24);
+var26 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(var_v, var_merge_true, var23);
 }
 RET_LABEL:;
 }
@@ -2788,19 +2762,18 @@ val* var_merge_true /* var merge_true: FlowContext */;
 static val* varonce;
 val* var19 /* : String */;
 char* var20 /* : NativeString */;
-long var21 /* : Int */;
-val* var22 /* : FlatString */;
-val* var24 /* : FlowContext */;
+val* var21 /* : FlatString */;
+val* var23 /* : FlowContext */;
+val* var25 /* : FlowContext */;
 val* var26 /* : FlowContext */;
-val* var27 /* : FlowContext */;
 var_v = p0;
 {
 { /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on <self:AImpliesExpr> */
 var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on <self:AImpliesExpr> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1823);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -2815,8 +2788,8 @@ var_after_expr = var3;
 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -2833,8 +2806,8 @@ RET_LABEL7:(void)0;
 var10 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on <self:AImpliesExpr> */
 if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1826);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2059);
+fatal_exit(1);
 }
 var8 = var10;
 RET_LABEL9:(void)0;
@@ -2849,8 +2822,8 @@ var_after_expr2 = var11;
 var14 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
 if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
 var12 = var14;
 RET_LABEL13:(void)0;
@@ -2861,8 +2834,8 @@ RET_LABEL13:(void)0;
 var17 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr2:FlowContext> */
 if (unlikely(var17 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
 var15 = var17;
 RET_LABEL16:(void)0;
@@ -2872,35 +2845,34 @@ RET_LABEL16:(void)0;
 var18 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(var_v, var12, var15);
 }
 var_merge_true = var18;
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var19 = varonce;
 } else {
 var20 = "OR TRUE";
-var21 = 7;
-var22 = standard___standard__NativeString___to_s_with_length(var20, var21);
-var19 = var22;
+var21 = standard___standard__NativeString___to_s_with_length(var20, 7l);
+var19 = var21;
 varonce = var19;
 }
 {
 { /* Inline flow#FlowContext#name= (var_merge_true,var19) on <var_merge_true:FlowContext> */
 var_merge_true->attrs[COLOR_nit__flow__FlowContext___name].val = var19; /* _name on <var_merge_true:FlowContext> */
-RET_LABEL23:(void)0;
+RET_LABEL22:(void)0;
 }
 }
 {
 { /* Inline flow#FlowContext#when_false (var_after_expr2) on <var_after_expr2:FlowContext> */
-var26 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr2:FlowContext> */
-if (unlikely(var26 == NULL)) {
+var25 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr2:FlowContext> */
+if (unlikely(var25 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
 {
-var27 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(var_v, var_merge_true, var24);
+var26 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(var_v, var_merge_true, var23);
 }
 RET_LABEL:;
 }
@@ -2926,19 +2898,18 @@ val* var_merge_false /* var merge_false: FlowContext */;
 static val* varonce;
 val* var19 /* : String */;
 char* var20 /* : NativeString */;
-long var21 /* : Int */;
-val* var22 /* : FlatString */;
-val* var24 /* : FlowContext */;
+val* var21 /* : FlatString */;
+val* var23 /* : FlowContext */;
+val* var25 /* : FlowContext */;
 val* var26 /* : FlowContext */;
-val* var27 /* : FlowContext */;
 var_v = p0;
 {
 { /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on <self:AAndExpr> */
 var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on <self:AAndExpr> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1823);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -2953,8 +2924,8 @@ var_after_expr = var3;
 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -2971,8 +2942,8 @@ RET_LABEL7:(void)0;
 var10 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on <self:AAndExpr> */
 if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1826);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2059);
+fatal_exit(1);
 }
 var8 = var10;
 RET_LABEL9:(void)0;
@@ -2987,8 +2958,8 @@ var_after_expr2 = var11;
 var14 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
 if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
 var12 = var14;
 RET_LABEL13:(void)0;
@@ -2999,8 +2970,8 @@ RET_LABEL13:(void)0;
 var17 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr2:FlowContext> */
 if (unlikely(var17 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
 var15 = var17;
 RET_LABEL16:(void)0;
@@ -3010,35 +2981,34 @@ RET_LABEL16:(void)0;
 var18 = nit__flow___nit__flow__FlowVisitor___make_merge_flow(var_v, var12, var15);
 }
 var_merge_false = var18;
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var19 = varonce;
 } else {
 var20 = "AND FALSE";
-var21 = 9;
-var22 = standard___standard__NativeString___to_s_with_length(var20, var21);
-var19 = var22;
+var21 = standard___standard__NativeString___to_s_with_length(var20, 9l);
+var19 = var21;
 varonce = var19;
 }
 {
 { /* Inline flow#FlowContext#name= (var_merge_false,var19) on <var_merge_false:FlowContext> */
 var_merge_false->attrs[COLOR_nit__flow__FlowContext___name].val = var19; /* _name on <var_merge_false:FlowContext> */
-RET_LABEL23:(void)0;
+RET_LABEL22:(void)0;
 }
 }
 {
 { /* Inline flow#FlowContext#when_true (var_after_expr2) on <var_after_expr2:FlowContext> */
-var26 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr2:FlowContext> */
-if (unlikely(var26 == NULL)) {
+var25 = var_after_expr2->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr2:FlowContext> */
+if (unlikely(var25 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
 {
-var27 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(var_v, var24, var_merge_false);
+var26 = nit__flow___nit__flow__FlowVisitor___make_true_false_flow(var_v, var23, var_merge_false);
 }
 RET_LABEL:;
 }
@@ -3060,8 +3030,8 @@ var_v = p0;
 var2 = self->attrs[COLOR_nit__parser_nodes__ANotExpr___n_expr].val; /* _n_expr on <self:ANotExpr> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1857);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2093);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -3076,8 +3046,8 @@ var_after_expr = var3;
 var6 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_false].val; /* _when_false on <var_after_expr:FlowContext> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 227);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 228);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -3088,8 +3058,8 @@ RET_LABEL5:(void)0;
 var9 = var_after_expr->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var_after_expr:FlowContext> */
 if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225);
+fatal_exit(1);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
@@ -3105,7 +3075,7 @@ void nit__flow___AOrElseExpr___ANode__accept_flow_visitor(val* self, val* p0) {
 val* var_v /* var v: FlowVisitor */;
 var_v = p0;
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AOrElseExpr___ANode__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AOrElseExpr>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AOrElseExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AOrElseExpr>*/
 }
 RET_LABEL:;
 }
@@ -3115,7 +3085,7 @@ val* var_v /* var v: FlowVisitor */;
 val* var /* : FlowContext */;
 var_v = p0;
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AEqExpr___ANode__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AEqExpr>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AEqExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AEqExpr>*/
 }
 {
 var = nit__flow___nit__flow__FlowVisitor___make_sub_true_false_flow(var_v);
@@ -3128,7 +3098,7 @@ val* var_v /* var v: FlowVisitor */;
 val* var /* : FlowContext */;
 var_v = p0;
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___ANeExpr___ANode__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:ANeExpr>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___ANeExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:ANeExpr>*/
 }
 {
 var = nit__flow___nit__flow__FlowVisitor___make_sub_true_false_flow(var_v);
@@ -3141,7 +3111,7 @@ val* var_v /* var v: FlowVisitor */;
 val* var /* : FlowContext */;
 var_v = p0;
 {
-((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AIsaExpr___ANode__accept_flow_visitor]))(self, p0) /* accept_flow_visitor on <self:AIsaExpr>*/;
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__flow___AIsaExpr___ANode__accept_flow_visitor]))(self, p0); /* accept_flow_visitor on <self:AIsaExpr>*/
 }
 {
 var = nit__flow___nit__flow__FlowVisitor___make_sub_true_false_flow(var_v);
@@ -3161,8 +3131,8 @@ var_v = p0;
 var2 = self->attrs[COLOR_nit__parser_nodes__AParExpr___n_expr].val; /* _n_expr on <self:AParExpr> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2288);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2637);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -3193,8 +3163,8 @@ var_v = p0;
 var2 = self->attrs[COLOR_nit__parser_nodes__AOnceExpr___n_expr].val; /* _n_expr on <self:AOnceExpr> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1794);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2017);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;