README: document nit_env.sh
[nit.git] / c_src / nit__rapid_type_analysis.sep.1.c
index 58f6ef0..42979b4 100644 (file)
@@ -5,21 +5,157 @@ val* var /* : RapidTypeAnalysis */;
 val* var_mainmodule /* var mainmodule: MModule */;
 val* var1 /* : RapidTypeAnalysis */;
 val* var_analysis /* var analysis: RapidTypeAnalysis */;
+val* var2 /* : ToolContext */;
+val* var4 /* : ToolContext */;
+val* var5 /* : OptionBool */;
+val* var7 /* : OptionBool */;
+val* var8 /* : nullable Object */;
+val* var10 /* : nullable Object */;
+short int var11 /* : Bool */;
+val* var12 /* : ToolContext */;
+val* var14 /* : ToolContext */;
+val* var15 /* : String */;
+val* var17 /* : String */;
+val* var18 /* : String */;
+val* var20 /* : String */;
+val* var21 /* : String */;
+val* var_basename /* var basename: String */;
+val* var22 /* : OrderedTree[Object] */;
+static val* varonce;
+val* var23 /* : String */;
+char* var24 /* : NativeString */;
+val* var25 /* : FlatString */;
+val* var26 /* : String */;
+val* var27 /* : CsvDocument */;
+static val* varonce28;
+val* var29 /* : String */;
+char* var30 /* : NativeString */;
+val* var31 /* : FlatString */;
+val* var32 /* : String */;
 var_mainmodule = p0;
 var1 = NEW_nit__RapidTypeAnalysis(&type_nit__RapidTypeAnalysis);
 {
-((void (*)(val* self, val* p0))(var1->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis__modelbuilder_61d]))(var1, self) /* modelbuilder= on <var1:RapidTypeAnalysis>*/;
+((void(*)(val* self, val* p0))(var1->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis__modelbuilder_61d]))(var1, self); /* modelbuilder= on <var1:RapidTypeAnalysis>*/
 }
 {
-((void (*)(val* self, val* p0))(var1->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis__mainmodule_61d]))(var1, var_mainmodule) /* mainmodule= on <var1:RapidTypeAnalysis>*/;
+((void(*)(val* self, val* p0))(var1->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis__mainmodule_61d]))(var1, var_mainmodule); /* mainmodule= on <var1:RapidTypeAnalysis>*/
 }
 {
-((void (*)(val* self))(var1->class->vft[COLOR_standard__kernel__Object__init]))(var1) /* init on <var1:RapidTypeAnalysis>*/;
+((void(*)(val* self))(var1->class->vft[COLOR_standard__kernel__Object__init]))(var1); /* init on <var1:RapidTypeAnalysis>*/
 }
 var_analysis = var1;
 {
 nit___nit__RapidTypeAnalysis___run_analysis(var_analysis); /* Direct call rapid_type_analysis#RapidTypeAnalysis#run_analysis on <var_analysis:RapidTypeAnalysis>*/
 }
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var4 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var4 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var2 = var4;
+RET_LABEL3:(void)0;
+}
+}
+{
+{ /* Inline toolcontext#ToolContext#opt_log (var2) on <var2:ToolContext> */
+var7 = var2->attrs[COLOR_nit__toolcontext__ToolContext___opt_log].val; /* _opt_log on <var2:ToolContext> */
+if (unlikely(var7 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__toolcontext, 344);
+fatal_exit(1);
+}
+var5 = var7;
+RET_LABEL6:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var5) on <var5:OptionBool> */
+var10 = var5->attrs[COLOR_opts__Option___value].val; /* _value on <var5:OptionBool> */
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+var11 = (short int)((long)(var8)>>2);
+if (var11){
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var14 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var14 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var12 = var14;
+RET_LABEL13:(void)0;
+}
+}
+{
+{ /* Inline toolcontext#ToolContext#log_directory (var12) on <var12:ToolContext> */
+var17 = var12->attrs[COLOR_nit__toolcontext__ToolContext___log_directory].val; /* _log_directory on <var12:ToolContext> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _log_directory");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__toolcontext, 137);
+fatal_exit(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+{
+{ /* Inline mmodule#MModule#name (var_mainmodule) on <var_mainmodule:MModule> */
+var20 = var_mainmodule->attrs[COLOR_nit__mmodule__MModule___name].val; /* _name on <var_mainmodule:MModule> */
+if (unlikely(var20 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 87);
+fatal_exit(1);
+}
+var18 = var20;
+RET_LABEL19:(void)0;
+}
+}
+{
+var21 = standard__file___String____47d(var15, var18);
+}
+var_basename = var21;
+{
+var22 = nit___nit__RapidTypeAnalysis___live_methods_to_tree(var_analysis);
+}
+if (likely(varonce!=NULL)) {
+var23 = varonce;
+} else {
+var24 = ".rta_methods.txt";
+var25 = standard___standard__NativeString___to_s_with_length(var24, 16l);
+var23 = var25;
+varonce = var23;
+}
+{
+var26 = ((val*(*)(val* self, val* p0))(var_basename->class->vft[COLOR_standard__string__String___43d]))(var_basename, var23); /* + on <var_basename:String>*/
+}
+{
+standard__file___Writable___write_to_file(var22, var26); /* Direct call file#Writable#write_to_file on <var22:OrderedTree[Object]>*/
+}
+{
+var27 = nit___nit__RapidTypeAnalysis___live_types_to_csv(var_analysis);
+}
+if (likely(varonce28!=NULL)) {
+var29 = varonce28;
+} else {
+var30 = ".rta_types.csv";
+var31 = standard___standard__NativeString___to_s_with_length(var30, 14l);
+var29 = var31;
+varonce28 = var29;
+}
+{
+var32 = ((val*(*)(val* self, val* p0))(var_basename->class->vft[COLOR_standard__string__String___43d]))(var_basename, var29); /* + on <var_basename:String>*/
+}
+{
+standard__file___Writable___write_to_file(var27, var32); /* Direct call file#Writable#write_to_file on <var27:CsvDocument>*/
+}
+} else {
+}
 var = var_analysis;
 goto RET_LABEL;
 RET_LABEL:;
@@ -32,8 +168,8 @@ val* var1 /* : ModelBuilder */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -51,8 +187,8 @@ val* var1 /* : MModule */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -70,8 +206,8 @@ val* var1 /* : HashSet[MClassType] */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 60);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -84,8 +220,8 @@ val* var1 /* : HashSet[MClassType] */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 58);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -98,8 +234,8 @@ val* var1 /* : HashSet[MClass] */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 69);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -112,8 +248,8 @@ val* var1 /* : HashSet[MType] */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -126,8 +262,8 @@ val* var1 /* : HashSet[MType] */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 68);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 75);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -140,8 +276,8 @@ val* var1 /* : HashSet[MMethodDef] */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 79);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -154,8 +290,8 @@ val* var1 /* : HashSet[MMethod] */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 75);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 82);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -168,8 +304,8 @@ val* var1 /* : HashSet[CallSite] */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_callsites].val; /* _live_callsites on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_callsites");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 78);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 85);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -182,8 +318,8 @@ val* var1 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_targets_cache");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 81);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 88);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -199,61 +335,58 @@ val* var_mtype /* var mtype: MType */;
 val* var4 /* : nullable MClassType */;
 val* var6 /* : nullable MClassType */;
 val* var_anchor /* var anchor: nullable MClassType */;
-val* var7 /* : null */;
+short int var7 /* : Bool */;
 short int var8 /* : Bool */;
-short int var9 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var10 /* : Bool */;
 short int var11 /* : Bool */;
-short int var12 /* : Bool */;
-val* var13 /* : MModule */;
-val* var15 /* : MModule */;
+val* var12 /* : MModule */;
+val* var14 /* : MModule */;
+val* var15 /* : MType */;
 val* var16 /* : MType */;
-val* var17 /* : MType */;
-short int var18 /* : Bool */;
+short int var17 /* : Bool */;
 int cltype;
 int idtype;
-val* var19 /* : MClass */;
-val* var21 /* : MClass */;
-val* var22 /* : MClassDef */;
-val* var24 /* : MClassDef */;
-val* var25 /* : MClassType */;
-val* var27 /* : MClassType */;
-val* var28 /* : MMethod */;
-val* var30 /* : MMethod */;
+val* var18 /* : MClass */;
+val* var20 /* : MClass */;
+val* var21 /* : MClassDef */;
+val* var23 /* : MClassDef */;
+val* var24 /* : MClassType */;
+val* var26 /* : MClassType */;
+val* var27 /* : MMethod */;
+val* var29 /* : MMethod */;
 val* var_mproperty /* var mproperty: MMethod */;
-val* var31 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
-val* var33 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
-val* var34 /* : nullable Object */;
+val* var30 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
+val* var32 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
+val* var33 /* : nullable Object */;
 val* var_res /* var res: nullable Set[MMethodDef] */;
-val* var35 /* : null */;
-short int var36 /* : Bool */;
+short int var34 /* : Bool */;
+short int var35 /* : Bool */;
 short int var37 /* : Bool */;
-short int var39 /* : Bool */;
-short int var40 /* : Bool */;
-val* var41 /* : ArraySet[MMethodDef] */;
+short int var38 /* : Bool */;
+val* var39 /* : ArraySet[MMethodDef] */;
+val* var40 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
 val* var42 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
-val* var44 /* : HashMap2[MType, MProperty, Set[MMethodDef]] */;
+val* var43 /* : HashSet[MClass] */;
 val* var45 /* : HashSet[MClass] */;
-val* var47 /* : HashSet[MClass] */;
 val* var_ /* var : HashSet[MClass] */;
-val* var48 /* : Iterator[nullable Object] */;
-val* var_49 /* var : Iterator[MClass] */;
-short int var50 /* : Bool */;
-val* var51 /* : nullable Object */;
+val* var46 /* : Iterator[nullable Object] */;
+val* var_47 /* var : Iterator[MClass] */;
+short int var48 /* : Bool */;
+val* var49 /* : nullable Object */;
 val* var_c /* var c: MClass */;
+val* var50 /* : MClassDef */;
 val* var52 /* : MClassDef */;
-val* var54 /* : MClassDef */;
+val* var53 /* : MClassType */;
 val* var55 /* : MClassType */;
-val* var57 /* : MClassType */;
 val* var_tc /* var tc: MClassType */;
+val* var56 /* : MModule */;
 val* var58 /* : MModule */;
-val* var60 /* : MModule */;
-val* var61 /* : null */;
-short int var62 /* : Bool */;
-short int var63 /* : Bool */;
-val* var64 /* : MModule */;
-val* var66 /* : MModule */;
-val* var67 /* : MPropDef */;
+short int var59 /* : Bool */;
+short int var60 /* : Bool */;
+val* var61 /* : MModule */;
+val* var63 /* : MModule */;
+val* var64 /* : MPropDef */;
 val* var_d /* var d: MMethodDef */;
 var_callsite = p0;
 {
@@ -261,8 +394,8 @@ var_callsite = p0;
 var3 = var_callsite->attrs[COLOR_nit__typing__CallSite___recv].val; /* _recv on <var_callsite:CallSite> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 473);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 610);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -277,273 +410,268 @@ RET_LABEL5:(void)0;
 }
 }
 var_anchor = var4;
-var7 = NULL;
 if (var_anchor == NULL) {
-var8 = 0; /* is null */
+var7 = 0; /* is null */
 } else {
-var8 = 1; /* arg is null and recv is not */
+var7 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_anchor,var7) on <var_anchor:nullable MClassType> */
-var_other = var7;
+{ /* Inline kernel#Object#!= (var_anchor,((val*)NULL)) on <var_anchor:nullable MClassType> */
+var_other = ((val*)NULL);
 {
-var11 = ((short int (*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
+var10 = ((short int(*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other); /* == on <var_anchor:nullable MClassType(MClassType)>*/
 }
-var12 = !var11;
-var9 = var12;
-goto RET_LABEL10;
-RET_LABEL10:(void)0;
+var11 = !var10;
+var8 = var11;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
 }
-var8 = var9;
+var7 = var8;
 }
-if (var8){
+if (var7){
 {
 { /* Inline typing#CallSite#mmodule (var_callsite) on <var_callsite:CallSite> */
-var15 = var_callsite->attrs[COLOR_nit__typing__CallSite___mmodule].val; /* _mmodule on <var_callsite:CallSite> */
-if (unlikely(var15 == NULL)) {
+var14 = var_callsite->attrs[COLOR_nit__typing__CallSite___mmodule].val; /* _mmodule on <var_callsite:CallSite> */
+if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 476);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 613);
+fatal_exit(1);
 }
-var13 = var15;
-RET_LABEL14:(void)0;
+var12 = var14;
+RET_LABEL13:(void)0;
 }
 }
 {
-var16 = ((val* (*)(val* self, val* p0, val* p1))(var_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_mtype, var13, var_anchor) /* anchor_to on <var_mtype:MType>*/;
+var15 = ((val*(*)(val* self, val* p0, val* p1))(var_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_mtype, var12, var_anchor); /* anchor_to on <var_mtype:MType>*/
 }
-var_mtype = var16;
+var_mtype = var15;
 } else {
 }
 {
-var17 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
+var16 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__undecorate]))(var_mtype); /* undecorate on <var_mtype:MType>*/
 }
-var_mtype = var17;
+var_mtype = var16;
 /* <var_mtype:MType> isa MClassType */
 cltype = type_nit__MClassType.color;
 idtype = type_nit__MClassType.id;
 if(cltype >= var_mtype->type->table_size) {
-var18 = 0;
+var17 = 0;
 } else {
-var18 = var_mtype->type->type_table[cltype] == idtype;
+var17 = var_mtype->type->type_table[cltype] == idtype;
 }
-if (var18){
+if (var17){
 {
 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
-var21 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
-if (unlikely(var21 == NULL)) {
+var20 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
+if (unlikely(var20 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var19 = var21;
-RET_LABEL20:(void)0;
+var18 = var20;
+RET_LABEL19:(void)0;
 }
 }
 {
-{ /* Inline model#MClass#intro (var19) on <var19:MClass> */
-var24 = var19->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var19:MClass> */
-if (unlikely(var24 == NULL)) {
+{ /* Inline model#MClass#intro (var18) on <var18:MClass> */
+var23 = var18->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var18:MClass> */
+if (unlikely(var23 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460);
+fatal_exit(1);
 }
-var22 = var24;
-RET_LABEL23:(void)0;
+var21 = var23;
+RET_LABEL22:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#bound_mtype (var22) on <var22:MClassDef> */
-var27 = var22->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var22:MClassDef> */
-if (unlikely(var27 == NULL)) {
+{ /* Inline model#MClassDef#bound_mtype (var21) on <var21:MClassDef> */
+var26 = var21->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var21:MClassDef> */
+if (unlikely(var26 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
+fatal_exit(1);
 }
-var25 = var27;
-RET_LABEL26:(void)0;
+var24 = var26;
+RET_LABEL25:(void)0;
 }
 }
-var_mtype = var25;
+var_mtype = var24;
 } else {
 }
 {
 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:CallSite> */
-var30 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:CallSite> */
-if (unlikely(var30 == NULL)) {
+var29 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:CallSite> */
+if (unlikely(var29 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 624);
+fatal_exit(1);
 }
-var28 = var30;
-RET_LABEL29:(void)0;
+var27 = var29;
+RET_LABEL28:(void)0;
 }
 }
-var_mproperty = var28;
+var_mproperty = var27;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_targets_cache (self) on <self:RapidTypeAnalysis> */
-var33 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on <self:RapidTypeAnalysis> */
-if (unlikely(var33 == NULL)) {
+var32 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on <self:RapidTypeAnalysis> */
+if (unlikely(var32 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_targets_cache");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 81);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 88);
+fatal_exit(1);
 }
-var31 = var33;
-RET_LABEL32:(void)0;
+var30 = var32;
+RET_LABEL31:(void)0;
 }
 }
 {
-var34 = more_collections___more_collections__HashMap2____91d_93d(var31, var_mtype, var_mproperty);
+var33 = more_collections___more_collections__HashMap2____91d_93d(var30, var_mtype, var_mproperty);
 }
-var_res = var34;
-var35 = NULL;
+var_res = var33;
 if (var_res == NULL) {
-var36 = 0; /* is null */
+var34 = 0; /* is null */
 } else {
-var36 = 1; /* arg is null and recv is not */
+var34 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_res,var35) on <var_res:nullable Set[MMethodDef]> */
-var_other = var35;
+{ /* Inline kernel#Object#!= (var_res,((val*)NULL)) on <var_res:nullable Set[MMethodDef]> */
+var_other = ((val*)NULL);
 {
-var39 = ((short int (*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable Set[MMethodDef](Set[MMethodDef])>*/;
+var37 = ((short int(*)(val* self, val* p0))((((long)var_res&3)?class_info[((long)var_res&3)]:var_res->class)->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other); /* == on <var_res:nullable Set[MMethodDef](Set[MMethodDef])>*/
 }
-var40 = !var39;
-var37 = var40;
-goto RET_LABEL38;
-RET_LABEL38:(void)0;
+var38 = !var37;
+var35 = var38;
+goto RET_LABEL36;
+RET_LABEL36:(void)0;
 }
-var36 = var37;
+var34 = var35;
 }
-if (var36){
+if (var34){
 var = var_res;
 goto RET_LABEL;
 } else {
 }
-var41 = NEW_standard__ArraySet(&type_standard__ArraySet__nit__MMethodDef);
+var39 = NEW_standard__ArraySet(&type_standard__ArraySet__nit__MMethodDef);
 {
-standard___standard__ArraySet___standard__kernel__Object__init(var41); /* Direct call array#ArraySet#init on <var41:ArraySet[MMethodDef]>*/
+standard___standard__ArraySet___standard__kernel__Object__init(var39); /* Direct call array#ArraySet#init on <var39:ArraySet[MMethodDef]>*/
 }
-var_res = var41;
+var_res = var39;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_targets_cache (self) on <self:RapidTypeAnalysis> */
-var44 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on <self:RapidTypeAnalysis> */
-if (unlikely(var44 == NULL)) {
+var42 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_targets_cache].val; /* _live_targets_cache on <self:RapidTypeAnalysis> */
+if (unlikely(var42 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_targets_cache");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 81);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 88);
+fatal_exit(1);
 }
-var42 = var44;
-RET_LABEL43:(void)0;
+var40 = var42;
+RET_LABEL41:(void)0;
 }
 }
 {
-more_collections___more_collections__HashMap2____91d_93d_61d(var42, var_mtype, var_mproperty, var_res); /* Direct call more_collections#HashMap2#[]= on <var42:HashMap2[MType, MProperty, Set[MMethodDef]]>*/
+more_collections___more_collections__HashMap2____91d_93d_61d(var40, var_mtype, var_mproperty, var_res); /* Direct call more_collections#HashMap2#[]= on <var40:HashMap2[MType, MProperty, Set[MMethodDef]]>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on <self:RapidTypeAnalysis> */
-var47 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
-if (unlikely(var47 == NULL)) {
+var45 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
+if (unlikely(var45 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 69);
+fatal_exit(1);
 }
-var45 = var47;
-RET_LABEL46:(void)0;
+var43 = var45;
+RET_LABEL44:(void)0;
 }
 }
-var_ = var45;
+var_ = var43;
 {
-var48 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
+var46 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
 }
-var_49 = var48;
+var_47 = var46;
 for(;;) {
 {
-var50 = ((short int (*)(val* self))(var_49->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_49) /* is_ok on <var_49:Iterator[MClass]>*/;
+var48 = ((short int(*)(val* self))((((long)var_47&3)?class_info[((long)var_47&3)]:var_47->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_47); /* is_ok on <var_47:Iterator[MClass]>*/
 }
-if (var50){
+if (var48){
 {
-var51 = ((val* (*)(val* self))(var_49->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_49) /* item on <var_49:Iterator[MClass]>*/;
+var49 = ((val*(*)(val* self))((((long)var_47&3)?class_info[((long)var_47&3)]:var_47->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_47); /* item on <var_47:Iterator[MClass]>*/
 }
-var_c = var51;
+var_c = var49;
 {
 { /* Inline model#MClass#intro (var_c) on <var_c:MClass> */
-var54 = var_c->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var_c:MClass> */
-if (unlikely(var54 == NULL)) {
+var52 = var_c->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var_c:MClass> */
+if (unlikely(var52 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460);
+fatal_exit(1);
 }
-var52 = var54;
-RET_LABEL53:(void)0;
+var50 = var52;
+RET_LABEL51:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#bound_mtype (var52) on <var52:MClassDef> */
-var57 = var52->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var52:MClassDef> */
-if (unlikely(var57 == NULL)) {
+{ /* Inline model#MClassDef#bound_mtype (var50) on <var50:MClassDef> */
+var55 = var50->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var50:MClassDef> */
+if (unlikely(var55 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
+fatal_exit(1);
 }
-var55 = var57;
-RET_LABEL56:(void)0;
+var53 = var55;
+RET_LABEL54:(void)0;
 }
 }
-var_tc = var55;
+var_tc = var53;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var60 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var60 == NULL)) {
+var58 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var58 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var58 = var60;
-RET_LABEL59:(void)0;
+var56 = var58;
+RET_LABEL57:(void)0;
 }
 }
-var61 = NULL;
 {
-var62 = nit___nit__MType___is_subtype(var_tc, var58, var61, var_mtype);
+var59 = nit___nit__MType___is_subtype(var_tc, var56, ((val*)NULL), var_mtype);
 }
-var63 = !var62;
-if (var63){
+var60 = !var59;
+if (var60){
 goto BREAK_label;
 } else {
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var66 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var66 == NULL)) {
+var63 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var63 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var64 = var66;
-RET_LABEL65:(void)0;
+var61 = var63;
+RET_LABEL62:(void)0;
 }
 }
 {
-var67 = nit___nit__MProperty___lookup_first_definition(var_mproperty, var64, var_tc);
+var64 = nit___nit__MProperty___lookup_first_definition(var_mproperty, var61, var_tc);
 }
-var_d = var67;
+var_d = var64;
 {
 standard___standard__ArraySet___standard__abstract_collection__SimpleCollection__add(var_res, var_d); /* Direct call array#ArraySet#add on <var_res:nullable Set[MMethodDef](ArraySet[MMethodDef])>*/
 }
 BREAK_label: (void)0;
 {
-((void (*)(val* self))(var_49->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_49) /* next on <var_49:Iterator[MClass]>*/;
+((void(*)(val* self))((((long)var_47&3)?class_info[((long)var_47&3)]:var_47->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_47); /* next on <var_47:Iterator[MClass]>*/
 }
 } else {
-goto BREAK_label68;
+goto BREAK_label65;
 }
 }
-BREAK_label68: (void)0;
+BREAK_label65: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_49) on <var_49:Iterator[MClass]> */
-RET_LABEL69:(void)0;
-}
+((void(*)(val* self))((((long)var_47&3)?class_info[((long)var_47&3)]:var_47->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_47); /* finish on <var_47:Iterator[MClass]>*/
 }
 var = var_res;
 goto RET_LABEL;
@@ -557,102 +685,807 @@ val* var1 /* : HashSet[MMethodDef] */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <self:RapidTypeAnalysis> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 107);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 114);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods for (self: RapidTypeAnalysis): HashSet[MMethod] */
-val* nit___nit__RapidTypeAnalysis___totry_methods(val* self) {
-val* var /* : HashSet[MMethod] */;
-val* var1 /* : HashSet[MMethod] */;
-var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on <self:RapidTypeAnalysis> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 162);
-show_backtrace(1);
+/* method rapid_type_analysis#RapidTypeAnalysis#live_types_to_csv for (self: RapidTypeAnalysis): CsvDocument */
+val* nit___nit__RapidTypeAnalysis___live_types_to_csv(val* self) {
+val* var /* : CsvDocument */;
+val* var1 /* : HashSet[MType] */;
+val* var_typeset /* var typeset: HashSet[MType] */;
+val* var2 /* : HashSet[MClassType] */;
+val* var4 /* : HashSet[MClassType] */;
+val* var5 /* : HashSet[MClassType] */;
+val* var7 /* : HashSet[MClassType] */;
+val* var8 /* : HashSet[MType] */;
+val* var10 /* : HashSet[MType] */;
+val* var11 /* : HashSet[MType] */;
+val* var13 /* : HashSet[MType] */;
+val* var14 /* : Array[nullable Object] */;
+val* var_types /* var types: Array[MType] */;
+val* var15 /* : CachedAlphaComparator */;
+val* var17 /* : CsvDocument */;
+val* var_res /* var res: CsvDocument */;
+val* var19 /* : CsvFormat */;
+static val* varonce;
+val* var20 /* : String */;
+char* var21 /* : NativeString */;
+val* var22 /* : FlatString */;
+val* var24 /* : Array[String] */;
+val* var_ /* var : Array[String] */;
+static val* varonce25;
+val* var26 /* : String */;
+char* var27 /* : NativeString */;
+val* var28 /* : FlatString */;
+static val* varonce29;
+val* var30 /* : String */;
+char* var31 /* : NativeString */;
+val* var32 /* : FlatString */;
+static val* varonce33;
+val* var34 /* : String */;
+char* var35 /* : NativeString */;
+val* var36 /* : FlatString */;
+static val* varonce37;
+val* var38 /* : String */;
+char* var39 /* : NativeString */;
+val* var40 /* : FlatString */;
+val* var_42 /* var : Array[MType] */;
+val* var43 /* : ArrayIterator[nullable Object] */;
+val* var_44 /* var : ArrayIterator[MType] */;
+short int var45 /* : Bool */;
+val* var46 /* : nullable Object */;
+val* var_t /* var t: MType */;
+short int var47 /* : Bool */;
+static val* varonce48;
+val* var49 /* : String */;
+char* var50 /* : NativeString */;
+val* var51 /* : FlatString */;
+val* var_reso /* var reso: nullable Object */;
+static val* varonce52;
+val* var53 /* : String */;
+char* var54 /* : NativeString */;
+val* var55 /* : FlatString */;
+short int var56 /* : Bool */;
+short int var57 /* : Bool */;
+int cltype;
+int idtype;
+short int var_58 /* var : Bool */;
+short int var59 /* : Bool */;
+val* var60 /* : HashSet[MClassType] */;
+val* var62 /* : HashSet[MClassType] */;
+short int var63 /* : Bool */;
+short int var_64 /* var : Bool */;
+val* var65 /* : HashSet[MClassType] */;
+val* var67 /* : HashSet[MClassType] */;
+short int var68 /* : Bool */;
+static val* varonce69;
+val* var70 /* : String */;
+char* var71 /* : NativeString */;
+val* var72 /* : FlatString */;
+val* var_live /* var live: nullable Object */;
+static val* varonce73;
+val* var74 /* : String */;
+char* var75 /* : NativeString */;
+val* var76 /* : FlatString */;
+short int var77 /* : Bool */;
+val* var78 /* : HashSet[MType] */;
+val* var80 /* : HashSet[MType] */;
+short int var81 /* : Bool */;
+short int var_82 /* var : Bool */;
+val* var83 /* : HashSet[MType] */;
+val* var85 /* : HashSet[MType] */;
+short int var86 /* : Bool */;
+static val* varonce87;
+val* var88 /* : String */;
+char* var89 /* : NativeString */;
+val* var90 /* : FlatString */;
+val* var_cast /* var cast: nullable Object */;
+static val* varonce91;
+val* var92 /* : String */;
+char* var93 /* : NativeString */;
+val* var94 /* : FlatString */;
+val* var95 /* : Array[Object] */;
+val* var96 /* : NativeArray[Object] */;
+var1 = NEW_standard__HashSet(&type_standard__HashSet__nit__MType);
+{
+standard___standard__HashSet___standard__kernel__Object__init(var1); /* Direct call hash_collection#HashSet#init on <var1:HashSet[MType]>*/
+}
+var_typeset = var1;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
+var4 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
+if (unlikely(var4 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 60);
+fatal_exit(1);
 }
-var = var1;
-RET_LABEL:;
-return var;
+var2 = var4;
+RET_LABEL3:(void)0;
 }
-/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove for (self: RapidTypeAnalysis): Array[MMethod] */
-val* nit___nit__RapidTypeAnalysis___totry_methods_to_remove(val* self) {
-val* var /* : Array[MMethod] */;
-val* var1 /* : Array[MMethod] */;
-var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 165);
-show_backtrace(1);
 }
-var = var1;
-RET_LABEL:;
-return var;
+{
+standard___standard__SimpleCollection___add_all(var_typeset, var2); /* Direct call abstract_collection#SimpleCollection#add_all on <var_typeset:HashSet[MType]>*/
 }
-/* method rapid_type_analysis#RapidTypeAnalysis#try_methods for (self: RapidTypeAnalysis): HashSet[MMethod] */
-val* nit___nit__RapidTypeAnalysis___try_methods(val* self) {
-val* var /* : HashSet[MMethod] */;
-val* var1 /* : HashSet[MMethod] */;
-var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___try_methods].val; /* _try_methods on <self:RapidTypeAnalysis> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_methods");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 168);
-show_backtrace(1);
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_types (self) on <self:RapidTypeAnalysis> */
+var7 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
+if (unlikely(var7 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
+fatal_exit(1);
 }
-var = var1;
-RET_LABEL:;
-return var;
+var5 = var7;
+RET_LABEL6:(void)0;
 }
-/* method rapid_type_analysis#RapidTypeAnalysis#todo for (self: RapidTypeAnalysis): List[MMethodDef] */
-val* nit___nit__RapidTypeAnalysis___todo(val* self) {
-val* var /* : List[MMethodDef] */;
-val* var1 /* : List[MMethodDef] */;
-var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
-show_backtrace(1);
 }
-var = var1;
-RET_LABEL:;
-return var;
+{
+standard___standard__SimpleCollection___add_all(var_typeset, var5); /* Direct call abstract_collection#SimpleCollection#add_all on <var_typeset:HashSet[MType]>*/
 }
-/* method rapid_type_analysis#RapidTypeAnalysis#force_alive for (self: RapidTypeAnalysis, String) */
-void nit___nit__RapidTypeAnalysis___force_alive(val* self, val* p0) {
-val* var_classname /* var classname: String */;
-val* var /* : ModelBuilder */;
-val* var2 /* : ModelBuilder */;
-val* var3 /* : Model */;
-val* var5 /* : Model */;
-val* var6 /* : nullable Array[MClass] */;
-val* var_classes /* var classes: nullable Array[MClass] */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
-short int var9 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var11 /* : Bool */;
-short int var12 /* : Bool */;
-val* var_ /* var : Array[MClass] */;
-val* var13 /* : ArrayIterator[nullable Object] */;
-val* var_14 /* var : ArrayIterator[MClass] */;
-short int var15 /* : Bool */;
-val* var16 /* : nullable Object */;
-val* var_c /* var c: MClass */;
-val* var17 /* : MClassType */;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (self) on <self:RapidTypeAnalysis> */
+var10 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <self:RapidTypeAnalysis> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
+fatal_exit(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+standard___standard__SimpleCollection___add_all(var_typeset, var8); /* Direct call abstract_collection#SimpleCollection#add_all on <var_typeset:HashSet[MType]>*/
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types (self) on <self:RapidTypeAnalysis> */
+var13 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on <self:RapidTypeAnalysis> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 75);
+fatal_exit(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+{
+standard___standard__SimpleCollection___add_all(var_typeset, var11); /* Direct call abstract_collection#SimpleCollection#add_all on <var_typeset:HashSet[MType]>*/
+}
+{
+var14 = standard__array___Collection___to_a(var_typeset);
+}
+var_types = var14;
+var15 = NEW_standard__CachedAlphaComparator(&type_standard__CachedAlphaComparator);
+{
+{ /* Inline kernel#Object#init (var15) on <var15:CachedAlphaComparator> */
+RET_LABEL16:(void)0;
+}
+}
+{
+standard___standard__Comparator___sort(var15, var_types); /* Direct call sorter#Comparator#sort on <var15:CachedAlphaComparator>*/
+}
+var17 = NEW_csv__CsvDocument(&type_csv__CsvDocument);
+{
+{ /* Inline kernel#Object#init (var17) on <var17:CsvDocument> */
+RET_LABEL18:(void)0;
+}
+}
+var_res = var17;
+var19 = NEW_csv__CsvFormat(&type_csv__CsvFormat);
+if (likely(varonce!=NULL)) {
+var20 = varonce;
+} else {
+var21 = "\n";
+var22 = standard___standard__NativeString___to_s_with_length(var21, 1l);
+var20 = var22;
+varonce = var20;
+}
+{
+((void(*)(val* self, uint32_t p0))(var19->class->vft[COLOR_csv__CsvFormat__delimiter_61d]))(var19, '\"'); /* delimiter= on <var19:CsvFormat>*/
+}
+{
+((void(*)(val* self, uint32_t p0))(var19->class->vft[COLOR_csv__CsvFormat__separator_61d]))(var19, ';'); /* separator= on <var19:CsvFormat>*/
+}
+{
+((void(*)(val* self, val* p0))(var19->class->vft[COLOR_csv__CsvFormat__eol_61d]))(var19, var20); /* eol= on <var19:CsvFormat>*/
+}
+{
+((void(*)(val* self))(var19->class->vft[COLOR_standard__kernel__Object__init]))(var19); /* init on <var19:CsvFormat>*/
+}
+{
+{ /* Inline csv#CsvDocument#format= (var_res,var19) on <var_res:CsvDocument> */
+var_res->attrs[COLOR_csv__CsvDocument___format].val = var19; /* _format on <var_res:CsvDocument> */
+RET_LABEL23:(void)0;
+}
+}
+var24 = NEW_standard__Array(&type_standard__Array__standard__String);
+{
+standard___standard__Array___with_capacity(var24, 4l); /* Direct call array#Array#with_capacity on <var24:Array[String]>*/
+}
+var_ = var24;
+if (likely(varonce25!=NULL)) {
+var26 = varonce25;
+} else {
+var27 = "Type";
+var28 = standard___standard__NativeString___to_s_with_length(var27, 4l);
+var26 = var28;
+varonce25 = var26;
+}
+{
+standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var26); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce29!=NULL)) {
+var30 = varonce29;
+} else {
+var31 = "Resolution";
+var32 = standard___standard__NativeString___to_s_with_length(var31, 10l);
+var30 = var32;
+varonce29 = var30;
+}
+{
+standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var30); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce33!=NULL)) {
+var34 = varonce33;
+} else {
+var35 = "Liveness";
+var36 = standard___standard__NativeString___to_s_with_length(var35, 8l);
+var34 = var36;
+varonce33 = var34;
+}
+{
+standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var34); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce37!=NULL)) {
+var38 = varonce37;
+} else {
+var39 = "Cast-liveness";
+var40 = standard___standard__NativeString___to_s_with_length(var39, 13l);
+var38 = var40;
+varonce37 = var38;
+}
+{
+standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var38); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+{
+{ /* Inline csv#CsvDocument#header= (var_res,var_) on <var_res:CsvDocument> */
+var_res->attrs[COLOR_csv__CsvDocument___header].val = var_; /* _header on <var_res:CsvDocument> */
+RET_LABEL41:(void)0;
+}
+}
+var_42 = var_types;
+{
+var43 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_42);
+}
+var_44 = var43;
+for(;;) {
+{
+var45 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_44);
+}
+if (var45){
+{
+var46 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_44);
+}
+var_t = var46;
+{
+var47 = ((short int(*)(val* self))(var_t->class->vft[COLOR_nit__model__MType__need_anchor]))(var_t); /* need_anchor on <var_t:MType>*/
+}
+if (var47){
+if (likely(varonce48!=NULL)) {
+var49 = varonce48;
+} else {
+var50 = "OPEN ";
+var51 = standard___standard__NativeString___to_s_with_length(var50, 5l);
+var49 = var51;
+varonce48 = var49;
+}
+var_reso = var49;
+} else {
+if (likely(varonce52!=NULL)) {
+var53 = varonce52;
+} else {
+var54 = "CLOSED";
+var55 = standard___standard__NativeString___to_s_with_length(var54, 6l);
+var53 = var55;
+varonce52 = var53;
+}
+var_reso = var53;
+}
+/* <var_t:MType> isa MClassType */
+cltype = type_nit__MClassType.color;
+idtype = type_nit__MClassType.id;
+if(cltype >= var_t->type->table_size) {
+var57 = 0;
+} else {
+var57 = var_t->type->type_table[cltype] == idtype;
+}
+var_58 = var57;
+if (var57){
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
+var62 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
+if (unlikely(var62 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 60);
+fatal_exit(1);
+}
+var60 = var62;
+RET_LABEL61:(void)0;
+}
+}
+{
+var63 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var60, var_t);
+}
+var_64 = var63;
+if (var63){
+var59 = var_64;
+} else {
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_types (self) on <self:RapidTypeAnalysis> */
+var67 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
+if (unlikely(var67 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
+fatal_exit(1);
+}
+var65 = var67;
+RET_LABEL66:(void)0;
+}
+}
+{
+var68 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var65, var_t);
+}
+var59 = var68;
+}
+var56 = var59;
+} else {
+var56 = var_58;
+}
+if (var56){
+if (likely(varonce69!=NULL)) {
+var70 = varonce69;
+} else {
+var71 = "LIVE";
+var72 = standard___standard__NativeString___to_s_with_length(var71, 4l);
+var70 = var72;
+varonce69 = var70;
+}
+var_live = var70;
+} else {
+if (likely(varonce73!=NULL)) {
+var74 = varonce73;
+} else {
+var75 = "DEAD";
+var76 = standard___standard__NativeString___to_s_with_length(var75, 4l);
+var74 = var76;
+varonce73 = var74;
+}
+var_live = var74;
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (self) on <self:RapidTypeAnalysis> */
+var80 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <self:RapidTypeAnalysis> */
+if (unlikely(var80 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
+fatal_exit(1);
+}
+var78 = var80;
+RET_LABEL79:(void)0;
+}
+}
+{
+var81 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var78, var_t);
+}
+var_82 = var81;
+if (var81){
+var77 = var_82;
+} else {
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types (self) on <self:RapidTypeAnalysis> */
+var85 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on <self:RapidTypeAnalysis> */
+if (unlikely(var85 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 75);
+fatal_exit(1);
+}
+var83 = var85;
+RET_LABEL84:(void)0;
+}
+}
+{
+var86 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var83, var_t);
+}
+var77 = var86;
+}
+if (var77){
+if (likely(varonce87!=NULL)) {
+var88 = varonce87;
+} else {
+var89 = "CAST LIVE";
+var90 = standard___standard__NativeString___to_s_with_length(var89, 9l);
+var88 = var90;
+varonce87 = var88;
+}
+var_cast = var88;
+} else {
+if (likely(varonce91!=NULL)) {
+var92 = varonce91;
+} else {
+var93 = "CAST DEAD";
+var94 = standard___standard__NativeString___to_s_with_length(var93, 9l);
+var92 = var94;
+varonce91 = var92;
+}
+var_cast = var92;
+}
+var95 = NEW_standard__Array(&type_standard__Array__standard__Object);
+{ /* var95 = array_instance Array[Object] */
+var96 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__Object);
+((struct instance_standard__NativeArray*)var96)->values[0] = (val*) var_t;
+((struct instance_standard__NativeArray*)var96)->values[1] = (val*) var_reso;
+((struct instance_standard__NativeArray*)var96)->values[2] = (val*) var_live;
+((struct instance_standard__NativeArray*)var96)->values[3] = (val*) var_cast;
+{
+((void(*)(val* self, val* p0, long p1))(var95->class->vft[COLOR_standard__array__Array__with_native]))(var95, var96, 4l); /* with_native on <var95:Array[Object]>*/
+}
+}
+{
+csv___csv__CsvDocument___add_record(var_res, var95); /* Direct call csv#CsvDocument#add_record on <var_res:CsvDocument>*/
+}
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_44); /* Direct call array#ArrayIterator#next on <var_44:ArrayIterator[MType]>*/
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_44); /* Direct call array#ArrayIterator#finish on <var_44:ArrayIterator[MType]>*/
+}
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method rapid_type_analysis#RapidTypeAnalysis#live_methods_to_tree for (self: RapidTypeAnalysis): OrderedTree[Object] */
+val* nit___nit__RapidTypeAnalysis___live_methods_to_tree(val* self) {
+val* var /* : OrderedTree[Object] */;
+val* var1 /* : OrderedTree[Object] */;
+val* var_tree /* var tree: OrderedTree[Object] */;
+val* var3 /* : HashSet[MMethod] */;
+val* var5 /* : HashSet[MMethod] */;
+val* var_ /* var : HashSet[MMethod] */;
+val* var6 /* : Iterator[nullable Object] */;
+val* var_7 /* var : Iterator[MMethod] */;
+short int var8 /* : Bool */;
+val* var9 /* : nullable Object */;
+val* var_x /* var x: MMethod */;
+val* var10 /* : String */;
+val* var_xn /* var xn: String */;
+val* var11 /* : Array[MPropDef] */;
+val* var13 /* : Array[MPropDef] */;
+val* var_14 /* var : Array[MMethodDef] */;
+val* var15 /* : ArrayIterator[nullable Object] */;
+val* var_16 /* var : ArrayIterator[MMethodDef] */;
+short int var17 /* : Bool */;
+val* var18 /* : nullable Object */;
+val* var_z /* var z: MMethodDef */;
+val* var19 /* : String */;
+val* var21 /* : String */;
+val* var_zn /* var zn: String */;
+val* var22 /* : HashSet[MMethodDef] */;
+val* var24 /* : HashSet[MMethodDef] */;
+short int var25 /* : Bool */;
+val* var26 /* : HashSet[MMethodDef] */;
+val* var28 /* : HashSet[MMethodDef] */;
+short int var29 /* : Bool */;
+static val* varonce;
+val* var30 /* : String */;
+char* var31 /* : NativeString */;
+val* var32 /* : FlatString */;
+val* var33 /* : String */;
+val* var34 /* : HashSet[MMethodDef] */;
+val* var36 /* : HashSet[MMethodDef] */;
+short int var37 /* : Bool */;
+static val* varonce38;
+val* var39 /* : String */;
+char* var40 /* : NativeString */;
+val* var41 /* : FlatString */;
+val* var42 /* : String */;
+val* var44 /* : Sys */;
+val* var45 /* : Comparator */;
+var1 = NEW_ordered_tree__OrderedTree(&type_ordered_tree__OrderedTree__standard__Object);
+{
+{ /* Inline kernel#Object#init (var1) on <var1:OrderedTree[Object]> */
+RET_LABEL2:(void)0;
+}
+}
+var_tree = var1;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methods (self) on <self:RapidTypeAnalysis> */
+var5 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on <self:RapidTypeAnalysis> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 82);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+var_ = var3;
+{
+var6 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
+}
+var_7 = var6;
+for(;;) {
+{
+var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:Iterator[MMethod]>*/
+}
+if (var8){
+{
+var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:Iterator[MMethod]>*/
+}
+var_x = var9;
+{
+var10 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var_x);
+}
+var_xn = var10;
+{
+ordered_tree___ordered_tree__OrderedTree___add(var_tree, ((val*)NULL), var_xn); /* Direct call ordered_tree#OrderedTree#add on <var_tree:OrderedTree[Object]>*/
+}
+{
+{ /* Inline model#MProperty#mpropdefs (var_x) on <var_x:MMethod> */
+var13 = var_x->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_x:MMethod> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1963);
+fatal_exit(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+var_14 = var11;
+{
+var15 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_14);
+}
+var_16 = var15;
+for(;;) {
+{
+var17 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_16);
+}
+if (var17){
+{
+var18 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_16);
+}
+var_z = var18;
+{
+{ /* Inline model#MPropDef#to_s (var_z) on <var_z:MMethodDef> */
+var21 = var_z->attrs[COLOR_nit__model__MPropDef___to_s].val; /* _to_s on <var_z:MMethodDef> */
+if (unlikely(var21 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2303);
+fatal_exit(1);
+}
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+var_zn = var19;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (self) on <self:RapidTypeAnalysis> */
+var24 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <self:RapidTypeAnalysis> */
+if (unlikely(var24 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 79);
+fatal_exit(1);
+}
+var22 = var24;
+RET_LABEL23:(void)0;
+}
+}
+{
+var25 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var22, var_z);
+}
+if (var25){
+{
+ordered_tree___ordered_tree__OrderedTree___add(var_tree, var_xn, var_zn); /* Direct call ordered_tree#OrderedTree#add on <var_tree:OrderedTree[Object]>*/
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (self) on <self:RapidTypeAnalysis> */
+var28 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <self:RapidTypeAnalysis> */
+if (unlikely(var28 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 114);
+fatal_exit(1);
+}
+var26 = var28;
+RET_LABEL27:(void)0;
+}
+}
+{
+var29 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var26, var_z);
+}
+if (var29){
+if (likely(varonce!=NULL)) {
+var30 = varonce;
+} else {
+var31 = "(super)";
+var32 = standard___standard__NativeString___to_s_with_length(var31, 7l);
+var30 = var32;
+varonce = var30;
+}
+{
+var33 = ((val*(*)(val* self, val* p0))(var_zn->class->vft[COLOR_standard__string__String___43d]))(var_zn, var30); /* + on <var_zn:String>*/
+}
+{
+ordered_tree___ordered_tree__OrderedTree___add(var_tree, var_zn, var33); /* Direct call ordered_tree#OrderedTree#add on <var_tree:OrderedTree[Object]>*/
+}
+} else {
+}
+} else {
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (self) on <self:RapidTypeAnalysis> */
+var36 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <self:RapidTypeAnalysis> */
+if (unlikely(var36 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 114);
+fatal_exit(1);
+}
+var34 = var36;
+RET_LABEL35:(void)0;
+}
+}
+{
+var37 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var34, var_z);
+}
+if (var37){
+if (likely(varonce38!=NULL)) {
+var39 = varonce38;
+} else {
+var40 = "(super)";
+var41 = standard___standard__NativeString___to_s_with_length(var40, 7l);
+var39 = var41;
+varonce38 = var39;
+}
+{
+var42 = ((val*(*)(val* self, val* p0))(var_zn->class->vft[COLOR_standard__string__String___43d]))(var_zn, var39); /* + on <var_zn:String>*/
+}
+{
+ordered_tree___ordered_tree__OrderedTree___add(var_tree, var_xn, var42); /* Direct call ordered_tree#OrderedTree#add on <var_tree:OrderedTree[Object]>*/
+}
+} else {
+}
+}
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_16); /* Direct call array#ArrayIterator#next on <var_16:ArrayIterator[MMethodDef]>*/
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_16); /* Direct call array#ArrayIterator#finish on <var_16:ArrayIterator[MMethodDef]>*/
+}
+{
+((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:Iterator[MMethod]>*/
+}
+} else {
+goto BREAK_label43;
+}
+}
+BREAK_label43: (void)0;
+{
+((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:Iterator[MMethod]>*/
+}
+var44 = glob_sys;
+{
+var45 = standard__string___Sys___alpha_comparator(var44);
+}
+{
+ordered_tree___ordered_tree__OrderedTree___sort_with(var_tree, var45); /* Direct call ordered_tree#OrderedTree#sort_with on <var_tree:OrderedTree[Object]>*/
+}
+var = var_tree;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods for (self: RapidTypeAnalysis): HashSet[MMethod] */
+val* nit___nit__RapidTypeAnalysis___totry_methods(val* self) {
+val* var /* : HashSet[MMethod] */;
+val* var1 /* : HashSet[MMethod] */;
+var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on <self:RapidTypeAnalysis> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 169);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove for (self: RapidTypeAnalysis): Array[MMethod] */
+val* nit___nit__RapidTypeAnalysis___totry_methods_to_remove(val* self) {
+val* var /* : Array[MMethod] */;
+val* var1 /* : Array[MMethod] */;
+var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method rapid_type_analysis#RapidTypeAnalysis#try_methods for (self: RapidTypeAnalysis): HashSet[MMethod] */
+val* nit___nit__RapidTypeAnalysis___try_methods(val* self) {
+val* var /* : HashSet[MMethod] */;
+val* var1 /* : HashSet[MMethod] */;
+var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___try_methods].val; /* _try_methods on <self:RapidTypeAnalysis> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 175);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method rapid_type_analysis#RapidTypeAnalysis#todo for (self: RapidTypeAnalysis): List[MMethodDef] */
+val* nit___nit__RapidTypeAnalysis___todo(val* self) {
+val* var /* : List[MMethodDef] */;
+val* var1 /* : List[MMethodDef] */;
+var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 179);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method rapid_type_analysis#RapidTypeAnalysis#force_alive for (self: RapidTypeAnalysis, String) */
+void nit___nit__RapidTypeAnalysis___force_alive(val* self, val* p0) {
+val* var_classname /* var classname: String */;
+val* var /* : ModelBuilder */;
+val* var2 /* : ModelBuilder */;
+val* var3 /* : Model */;
+val* var5 /* : Model */;
+val* var6 /* : nullable Array[MClass] */;
+val* var_classes /* var classes: nullable Array[MClass] */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+val* var_ /* var : Array[MClass] */;
+val* var12 /* : ArrayIterator[nullable Object] */;
+val* var_13 /* var : ArrayIterator[MClass] */;
+short int var14 /* : Bool */;
+val* var15 /* : nullable Object */;
+val* var_c /* var c: MClass */;
+val* var16 /* : MClassType */;
+val* var18 /* : MClassType */;
 val* var19 /* : MClassType */;
-val* var20 /* : MClassType */;
-val* var22 /* : MClassType */;
+val* var21 /* : MClassType */;
 var_classname = p0;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -664,7 +1497,7 @@ var5 = var->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val; /* _m
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 44);
-show_backtrace(1);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -674,69 +1507,68 @@ RET_LABEL4:(void)0;
 var6 = nit__model___Model___get_mclasses_by_name(var3, var_classname);
 }
 var_classes = var6;
-var7 = NULL;
 if (var_classes == NULL) {
-var8 = 0; /* is null */
+var7 = 0; /* is null */
 } else {
-var8 = 1; /* arg is null and recv is not */
+var7 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_classes,var7) on <var_classes:nullable Array[MClass]> */
-var_other = var7;
+{ /* Inline kernel#Object#!= (var_classes,((val*)NULL)) on <var_classes:nullable Array[MClass]> */
+var_other = ((val*)NULL);
 {
-var11 = ((short int (*)(val* self, val* p0))(var_classes->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_classes, var_other) /* == on <var_classes:nullable Array[MClass](Array[MClass])>*/;
+var10 = ((short int(*)(val* self, val* p0))(var_classes->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_classes, var_other); /* == on <var_classes:nullable Array[MClass](Array[MClass])>*/
 }
-var12 = !var11;
-var9 = var12;
-goto RET_LABEL10;
-RET_LABEL10:(void)0;
+var11 = !var10;
+var8 = var11;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
 }
-var8 = var9;
+var7 = var8;
 }
-if (var8){
+if (var7){
 var_ = var_classes;
 {
-var13 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var12 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
 }
-var_14 = var13;
+var_13 = var12;
 for(;;) {
 {
-var15 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_14);
+var14 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_13);
 }
-if (var15){
+if (var14){
 {
-var16 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_14);
+var15 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_13);
 }
-var_c = var16;
+var_c = var15;
 {
 { /* Inline model#MClass#mclass_type (var_c) on <var_c:MClass> */
-var19 = var_c->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_c:MClass> */
-if (unlikely(var19 == NULL)) {
+var18 = var_c->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_c:MClass> */
+if (unlikely(var18 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
+fatal_exit(1);
 }
-var17 = var19;
-RET_LABEL18:(void)0;
+var16 = var18;
+RET_LABEL17:(void)0;
 }
 }
 {
 { /* Inline model#MClass#mclass_type (var_c) on <var_c:MClass> */
-var22 = var_c->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_c:MClass> */
-if (unlikely(var22 == NULL)) {
+var21 = var_c->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_c:MClass> */
+if (unlikely(var21 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
+fatal_exit(1);
 }
-var20 = var22;
-RET_LABEL21:(void)0;
+var19 = var21;
+RET_LABEL20:(void)0;
 }
 }
 {
-nit___nit__RapidTypeAnalysis___add_new(self, var17, var20); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_new on <self:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___add_new(self, var16, var19); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_new on <self:RapidTypeAnalysis>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_14); /* Direct call array#ArrayIterator#next on <var_14:ArrayIterator[MClass]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_13); /* Direct call array#ArrayIterator#next on <var_13:ArrayIterator[MClass]>*/
 }
 } else {
 goto BREAK_label;
@@ -744,9 +1576,7 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_14) on <var_14:ArrayIterator[MClass]> */
-RET_LABEL23:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_13); /* Direct call array#ArrayIterator#finish on <var_13:ArrayIterator[MClass]>*/
 }
 } else {
 }
@@ -758,385 +1588,350 @@ val* var /* : MModule */;
 val* var2 /* : MModule */;
 val* var3 /* : nullable MClassType */;
 val* var_maintype /* var maintype: nullable MClassType */;
-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 /* : MModule */;
-val* var13 /* : MModule */;
+short int var7 /* : Bool */;
+short int var9 /* : Bool */;
+val* var10 /* : MModule */;
+val* var12 /* : MModule */;
 static val* varonce;
-val* var14 /* : String */;
-char* var15 /* : NativeString */;
-long var16 /* : Int */;
-val* var17 /* : FlatString */;
+val* var13 /* : String */;
+char* var14 /* : NativeString */;
+val* var15 /* : FlatString */;
+val* var16 /* : MClass */;
 val* var18 /* : MClass */;
-val* var20 /* : MClass */;
-val* var21 /* : nullable MMethod */;
+val* var19 /* : nullable MMethod */;
 val* var_initprop /* var initprop: nullable MMethod */;
-val* var22 /* : null */;
-short int var23 /* : Bool */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+val* var_other23 /* var other: nullable Object */;
 short int var24 /* : Bool */;
-val* var_other26 /* var other: nullable Object */;
-short int var27 /* : Bool */;
-short int var28 /* : Bool */;
-val* var29 /* : nullable MMethod */;
-val* var30 /* : MModule */;
-val* var32 /* : MModule */;
-static val* varonce33;
-val* var34 /* : String */;
-char* var35 /* : NativeString */;
-long var36 /* : Int */;
-val* var37 /* : FlatString */;
-val* var38 /* : MClass */;
-val* var40 /* : MClass */;
-val* var41 /* : nullable MMethod */;
-val* var42 /* : MModule */;
-val* var44 /* : MModule */;
-static val* varonce45;
-val* var46 /* : String */;
-char* var47 /* : NativeString */;
-long var48 /* : Int */;
-val* var49 /* : FlatString */;
-val* var50 /* : MClass */;
-val* var52 /* : MClass */;
-val* var53 /* : nullable MMethod */;
+short int var25 /* : Bool */;
+val* var26 /* : nullable MMethod */;
+val* var27 /* : MModule */;
+val* var29 /* : MModule */;
+static val* varonce30;
+val* var31 /* : String */;
+char* var32 /* : NativeString */;
+val* var33 /* : FlatString */;
+val* var34 /* : MClass */;
+val* var36 /* : MClass */;
+val* var37 /* : nullable MMethod */;
+val* var38 /* : MModule */;
+val* var40 /* : MModule */;
+static val* varonce41;
+val* var42 /* : String */;
+char* var43 /* : NativeString */;
+val* var44 /* : FlatString */;
+val* var45 /* : MClass */;
+val* var47 /* : MClass */;
+val* var48 /* : nullable MMethod */;
 val* var_mainprop /* var mainprop: nullable MMethod */;
-val* var54 /* : null */;
-short int var55 /* : Bool */;
-short int var56 /* : Bool */;
+short int var49 /* : Bool */;
+short int var50 /* : Bool */;
+short int var52 /* : Bool */;
+short int var53 /* : Bool */;
+val* var54 /* : MModule */;
+val* var56 /* : MModule */;
+val* var57 /* : nullable MClassType */;
+val* var_finalizable_type /* var finalizable_type: nullable MClassType */;
 short int var58 /* : Bool */;
 short int var59 /* : Bool */;
-val* var60 /* : MModule */;
-val* var62 /* : MModule */;
-val* var63 /* : nullable MClassType */;
-val* var_finalizable_type /* var finalizable_type: nullable MClassType */;
-val* var64 /* : null */;
-short int var65 /* : Bool */;
-short int var66 /* : Bool */;
-short int var68 /* : Bool */;
-short int var69 /* : Bool */;
-val* var70 /* : MModule */;
-val* var72 /* : MModule */;
-static val* varonce73;
-val* var74 /* : String */;
-char* var75 /* : NativeString */;
-long var76 /* : Int */;
-val* var77 /* : FlatString */;
-val* var78 /* : MClass */;
-val* var80 /* : MClass */;
-val* var81 /* : nullable MMethod */;
+short int var61 /* : Bool */;
+short int var62 /* : Bool */;
+val* var63 /* : MModule */;
+val* var65 /* : MModule */;
+static val* varonce66;
+val* var67 /* : String */;
+char* var68 /* : NativeString */;
+val* var69 /* : FlatString */;
+val* var70 /* : MClass */;
+val* var72 /* : MClass */;
+val* var73 /* : nullable MMethod */;
 val* var_finalize_meth /* var finalize_meth: nullable MMethod */;
-val* var82 /* : null */;
-short int var83 /* : Bool */;
-short int var84 /* : Bool */;
-short int var86 /* : Bool */;
-short int var87 /* : Bool */;
-static val* varonce88;
-val* var89 /* : String */;
-char* var90 /* : NativeString */;
-long var91 /* : Int */;
-val* var92 /* : FlatString */;
-static val* varonce93;
-val* var94 /* : String */;
-char* var95 /* : NativeString */;
-long var96 /* : Int */;
-val* var97 /* : FlatString */;
-static val* varonce98;
-val* var99 /* : String */;
-char* var100 /* : NativeString */;
-long var101 /* : Int */;
+short int var74 /* : Bool */;
+short int var75 /* : Bool */;
+short int var77 /* : Bool */;
+short int var78 /* : Bool */;
+static val* varonce79;
+val* var80 /* : String */;
+char* var81 /* : NativeString */;
+val* var82 /* : FlatString */;
+static val* varonce83;
+val* var84 /* : String */;
+char* var85 /* : NativeString */;
+val* var86 /* : FlatString */;
+static val* varonce87;
+val* var88 /* : String */;
+char* var89 /* : NativeString */;
+val* var90 /* : FlatString */;
+static val* varonce91;
+val* var92 /* : String */;
+char* var93 /* : NativeString */;
+val* var94 /* : FlatString */;
+static val* varonce95;
+val* var96 /* : String */;
+char* var97 /* : NativeString */;
+val* var98 /* : FlatString */;
+static val* varonce99;
+val* var100 /* : String */;
+char* var101 /* : NativeString */;
 val* var102 /* : FlatString */;
-static val* varonce103;
-val* var104 /* : String */;
-char* var105 /* : NativeString */;
-long var106 /* : Int */;
-val* var107 /* : FlatString */;
-static val* varonce108;
-val* var109 /* : String */;
-char* var110 /* : NativeString */;
-long var111 /* : Int */;
-val* var112 /* : FlatString */;
-val* var113 /* : List[MMethodDef] */;
-val* var115 /* : List[MMethodDef] */;
-short int var116 /* : Bool */;
-short int var117 /* : Bool */;
-val* var118 /* : List[MMethodDef] */;
-val* var120 /* : List[MMethodDef] */;
-val* var121 /* : nullable Object */;
+val* var103 /* : List[MMethodDef] */;
+val* var105 /* : List[MMethodDef] */;
+short int var106 /* : Bool */;
+short int var107 /* : Bool */;
+val* var108 /* : List[MMethodDef] */;
+val* var110 /* : List[MMethodDef] */;
+val* var111 /* : nullable Object */;
 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
-val* var122 /* : MProperty */;
-val* var124 /* : MProperty */;
+val* var112 /* : MProperty */;
+val* var114 /* : MProperty */;
 val* var_mmeth /* var mmeth: MMethod */;
-val* var125 /* : RapidTypeVisitor */;
-val* var126 /* : MClassDef */;
-val* var128 /* : MClassDef */;
-val* var129 /* : MClassType */;
-val* var131 /* : MClassType */;
+val* var115 /* : nullable MSignature */;
+val* var117 /* : nullable MSignature */;
+val* var_msignature /* var msignature: nullable MSignature */;
+short int var118 /* : Bool */;
+short int var119 /* : Bool */;
+short int var121 /* : Bool */;
+short int var123 /* : Bool */;
+val* var124 /* : RapidTypeVisitor */;
+val* var125 /* : MClassDef */;
+val* var127 /* : MClassDef */;
+val* var128 /* : MClassType */;
+val* var130 /* : MClassType */;
 val* var_v /* var v: RapidTypeVisitor */;
-val* var132 /* : nullable MSignature */;
-val* var134 /* : nullable MSignature */;
-long var135 /* : Int */;
-long var137 /* : Int */;
+long var131 /* : Int */;
+long var133 /* : Int */;
 long var_vararg_rank /* var vararg_rank: Int */;
-long var138 /* : Int */;
-long var139 /* : Int */;
-long var141 /* : Int */;
-short int var142 /* : Bool */;
-short int var144 /* : Bool */;
+long var134 /* : Int */;
+long var136 /* : Int */;
+short int var137 /* : Bool */;
+short int var139 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var145 /* : Bool */;
-val* var146 /* : ModelBuilder */;
-val* var148 /* : ModelBuilder */;
-val* var149 /* : nullable ANode */;
+short int var140 /* : Bool */;
+val* var141 /* : ModelBuilder */;
+val* var143 /* : ModelBuilder */;
+val* var144 /* : nullable ANode */;
 val* var_node /* var node: nullable ANode */;
-val* var150 /* : nullable MSignature */;
-val* var152 /* : nullable MSignature */;
-val* var153 /* : Array[MParameter] */;
-val* var155 /* : Array[MParameter] */;
-val* var156 /* : nullable Object */;
-val* var157 /* : MType */;
-val* var159 /* : MType */;
+val* var145 /* : Array[MParameter] */;
+val* var147 /* : Array[MParameter] */;
+val* var148 /* : nullable Object */;
+val* var149 /* : MType */;
+val* var151 /* : MType */;
 val* var_elttype /* var elttype: MType */;
-val* var160 /* : MModule */;
-val* var162 /* : MModule */;
+val* var152 /* : MModule */;
+val* var154 /* : MModule */;
+val* var155 /* : MClassType */;
+val* var_vararg /* var vararg: MClassType */;
+val* var156 /* : MModule */;
+val* var158 /* : MModule */;
+val* var159 /* : MClassType */;
+val* var_native /* var native: MClassType */;
+val* var160 /* : ModelBuilder */;
+val* var162 /* : ModelBuilder */;
 static val* varonce163;
 val* var164 /* : String */;
 char* var165 /* : NativeString */;
-long var166 /* : Int */;
-val* var167 /* : FlatString */;
-val* var168 /* : MClass */;
-val* var169 /* : Array[MType] */;
-long var170 /* : Int */;
-val* var_ /* var : Array[MType] */;
-val* var171 /* : MClassType */;
-val* var_vararg /* var vararg: MClassType */;
+val* var166 /* : FlatString */;
+val* var167 /* : MClass */;
+val* var169 /* : MClass */;
+val* var170 /* : MModule */;
 val* var172 /* : MModule */;
-val* var174 /* : MModule */;
-static val* varonce175;
-val* var176 /* : String */;
-char* var177 /* : NativeString */;
-long var178 /* : Int */;
-val* var179 /* : FlatString */;
-val* var180 /* : MClass */;
-val* var181 /* : Array[MType] */;
-long var182 /* : Int */;
-val* var_183 /* var : Array[MType] */;
-val* var184 /* : MClassType */;
-val* var_native /* var native: MClassType */;
-val* var185 /* : ModelBuilder */;
-val* var187 /* : ModelBuilder */;
-static val* varonce188;
-val* var189 /* : String */;
-char* var190 /* : NativeString */;
-long var191 /* : Int */;
-val* var192 /* : FlatString */;
-val* var193 /* : MClass */;
-val* var195 /* : MClass */;
-val* var196 /* : MModule */;
-val* var198 /* : MModule */;
-val* var199 /* : MMethod */;
-val* var200 /* : nullable MSignature */;
-val* var202 /* : nullable MSignature */;
+val* var173 /* : MMethod */;
 val* var_sig /* var sig: MSignature */;
-val* var203 /* : MPropDef */;
-val* var205 /* : MPropDef */;
-val* var206 /* : nullable MSignature */;
-val* var208 /* : nullable MSignature */;
+val* var174 /* : MPropDef */;
+val* var176 /* : MPropDef */;
+val* var177 /* : nullable MSignature */;
+val* var179 /* : nullable MSignature */;
 val* var_osig /* var osig: MSignature */;
-long var209 /* : Int */;
 long var_i /* var i: Int */;
-long var210 /* : Int */;
-long var_211 /* var : Int */;
-short int var212 /* : Bool */;
-short int var214 /* : Bool */;
-int cltype215;
-int idtype216;
-const char* var_class_name217;
-short int var218 /* : Bool */;
-val* var219 /* : Array[MParameter] */;
-val* var221 /* : Array[MParameter] */;
-val* var222 /* : nullable Object */;
-val* var223 /* : MType */;
-val* var225 /* : MType */;
+long var180 /* : Int */;
+long var_ /* var : Int */;
+short int var181 /* : Bool */;
+short int var183 /* : Bool */;
+int cltype184;
+int idtype185;
+const char* var_class_name186;
+short int var187 /* : Bool */;
+val* var188 /* : Array[MParameter] */;
+val* var190 /* : Array[MParameter] */;
+val* var191 /* : nullable Object */;
+val* var192 /* : MType */;
+val* var194 /* : MType */;
 val* var_origtype /* var origtype: MType */;
-short int var226 /* : Bool */;
-short int var227 /* : Bool */;
-val* var228 /* : Array[MParameter] */;
-val* var230 /* : Array[MParameter] */;
-val* var231 /* : nullable Object */;
-val* var232 /* : MType */;
-val* var234 /* : MType */;
+short int var195 /* : Bool */;
+short int var196 /* : Bool */;
+val* var198 /* : Array[MParameter] */;
+val* var200 /* : Array[MParameter] */;
+val* var201 /* : nullable Object */;
+val* var202 /* : MType */;
+val* var204 /* : MType */;
 val* var_paramtype /* var paramtype: MType */;
-long var235 /* : Int */;
-long var236 /* : Int */;
-val* var238 /* : ModelBuilder */;
-val* var240 /* : ModelBuilder */;
-val* var241 /* : nullable ANode */;
+long var205 /* : Int */;
+val* var207 /* : ModelBuilder */;
+val* var209 /* : ModelBuilder */;
+val* var210 /* : nullable ANode */;
 val* var_npropdef /* var npropdef: nullable ANode */;
-short int var242 /* : Bool */;
-int cltype243;
-int idtype244;
-val* var245 /* : nullable MMethodDef */;
-val* var247 /* : nullable MMethodDef */;
+short int var211 /* : Bool */;
+int cltype212;
+int idtype213;
+val* var214 /* : nullable MMethodDef */;
+val* var216 /* : nullable MMethodDef */;
+short int var217 /* : Bool */;
+short int var219 /* : Bool */;
+short int var221 /* : Bool */;
+short int var222 /* : Bool */;
+val* var223 /* : MProperty */;
+val* var225 /* : MProperty */;
+short int var226 /* : Bool */;
+short int var228 /* : Bool */;
+short int var_229 /* var : Bool */;
+short int var230 /* : Bool */;
+short int var231 /* : Bool */;
+val* var232 /* : MClassType */;
+val* var234 /* : MClassType */;
+val* var235 /* : nullable Object */;
+val* var237 /* : nullable Object */;
+short int var238 /* : Bool */;
+short int var239 /* : Bool */;
+val* var240 /* : nullable MType */;
+val* var242 /* : nullable MType */;
+short int var243 /* : Bool */;
+int cltype244;
+int idtype245;
+const char* var_class_name246;
+short int var247 /* : Bool */;
 short int var248 /* : Bool */;
 short int var250 /* : Bool */;
 short int var252 /* : Bool */;
 short int var253 /* : Bool */;
-val* var254 /* : MProperty */;
-val* var256 /* : MProperty */;
-short int var257 /* : Bool */;
+int cltype254;
+int idtype255;
+val* var256 /* : nullable Array[CallSite] */;
+val* var258 /* : nullable Array[CallSite] */;
+val* var_auto_super_inits /* var auto_super_inits: nullable Array[CallSite] */;
 short int var259 /* : Bool */;
-short int var_260 /* var : Bool */;
-short int var261 /* : Bool */;
+short int var260 /* : Bool */;
 short int var262 /* : Bool */;
-val* var263 /* : MClassType */;
-val* var265 /* : MClassType */;
-val* var267 /* : nullable Object */;
-val* var269 /* : nullable Object */;
-val* var270 /* : null */;
-short int var271 /* : Bool */;
+short int var263 /* : Bool */;
+val* var_264 /* var : Array[CallSite] */;
+val* var265 /* : ArrayIterator[nullable Object] */;
+val* var_266 /* var : ArrayIterator[CallSite] */;
+short int var267 /* : Bool */;
+val* var268 /* : nullable Object */;
+val* var_auto_super_init /* var auto_super_init: CallSite */;
+short int var270 /* : Bool */;
 short int var272 /* : Bool */;
-val* var273 /* : nullable MSignature */;
-val* var275 /* : nullable MSignature */;
-val* var276 /* : nullable MType */;
-val* var278 /* : nullable MType */;
+val* var273 /* : MClassType */;
+val* var275 /* : MClassType */;
+short int var276 /* : Bool */;
+short int var277 /* : Bool */;
 short int var279 /* : Bool */;
-int cltype280;
-int idtype281;
-const char* var_class_name282;
-val* var283 /* : null */;
-short int var284 /* : Bool */;
-short int var285 /* : Bool */;
+short int var_280 /* var : Bool */;
+short int var281 /* : Bool */;
+short int var283 /* : Bool */;
+val* var284 /* : nullable MType */;
+val* var286 /* : nullable MType */;
+val* var_ret /* var ret: nullable MType */;
 short int var287 /* : Bool */;
+short int var288 /* : Bool */;
 short int var289 /* : Bool */;
 short int var290 /* : Bool */;
-int cltype291;
-int idtype292;
-val* var293 /* : nullable Array[CallSite] */;
-val* var295 /* : nullable Array[CallSite] */;
-val* var_auto_super_inits /* var auto_super_inits: nullable Array[CallSite] */;
-val* var296 /* : null */;
-short int var297 /* : Bool */;
-short int var298 /* : Bool */;
-short int var300 /* : Bool */;
-short int var301 /* : Bool */;
-val* var_302 /* var : Array[CallSite] */;
-val* var303 /* : ArrayIterator[nullable Object] */;
-val* var_304 /* var : ArrayIterator[CallSite] */;
-short int var305 /* : Bool */;
-val* var306 /* : nullable Object */;
-val* var_auto_super_init /* var auto_super_init: CallSite */;
-short int var309 /* : Bool */;
+short int var291 /* : Bool */;
+short int var293 /* : Bool */;
+short int var294 /* : Bool */;
+short int var_295 /* var : Bool */;
+short int var296 /* : Bool */;
+int cltype297;
+int idtype298;
+short int var_299 /* var : Bool */;
+val* var300 /* : MClass */;
+val* var302 /* : MClass */;
+val* var303 /* : MClassKind */;
+val* var305 /* : MClassKind */;
+val* var306 /* : Sys */;
+val* var307 /* : MClassKind */;
+short int var308 /* : Bool */;
+short int var310 /* : Bool */;
 short int var311 /* : Bool */;
-val* var312 /* : MClassType */;
-val* var314 /* : MClassType */;
-short int var315 /* : Bool */;
-short int var316 /* : Bool */;
-short int var318 /* : Bool */;
-short int var_319 /* var : Bool */;
-short int var320 /* : Bool */;
-short int var322 /* : Bool */;
-val* var323 /* : nullable MSignature */;
-val* var325 /* : nullable MSignature */;
-val* var326 /* : nullable MType */;
-val* var328 /* : nullable MType */;
-val* var_ret /* var ret: nullable MType */;
-short int var329 /* : Bool */;
-short int var330 /* : Bool */;
-short int var331 /* : Bool */;
-val* var332 /* : null */;
-short int var333 /* : Bool */;
-short int var334 /* : Bool */;
-short int var336 /* : Bool */;
-short int var337 /* : Bool */;
-short int var_338 /* var : Bool */;
-short int var339 /* : Bool */;
-int cltype340;
-int idtype341;
-short int var_342 /* var : Bool */;
-val* var343 /* : MClass */;
-val* var345 /* : MClass */;
-val* var346 /* : MClassKind */;
-val* var348 /* : MClassKind */;
-val* var349 /* : MClassKind */;
-short int var350 /* : Bool */;
-short int var352 /* : Bool */;
-short int var353 /* : Bool */;
-short int var_354 /* var : Bool */;
-val* var355 /* : MClass */;
-val* var357 /* : MClass */;
-val* var358 /* : MClassKind */;
-val* var360 /* : MClassKind */;
-val* var361 /* : MClassKind */;
-short int var362 /* : Bool */;
-short int var364 /* : Bool */;
-short int var365 /* : Bool */;
-val* var367 /* : List[MClassType] */;
+short int var_312 /* var : Bool */;
+val* var313 /* : MClass */;
+val* var315 /* : MClass */;
+val* var316 /* : MClassKind */;
+val* var318 /* : MClassKind */;
+val* var319 /* : Sys */;
+val* var320 /* : MClassKind */;
+short int var321 /* : Bool */;
+short int var323 /* : Bool */;
+short int var324 /* : Bool */;
+val* var326 /* : List[MClassType] */;
 val* var_todo_types /* var todo_types: List[MClassType] */;
-val* var369 /* : HashSet[MClassType] */;
-val* var371 /* : HashSet[MClassType] */;
-short int var372 /* : Bool */;
-short int var373 /* : Bool */;
-val* var374 /* : nullable Object */;
+val* var328 /* : HashSet[MClassType] */;
+val* var330 /* : HashSet[MClassType] */;
+short int var331 /* : Bool */;
+short int var332 /* : Bool */;
+val* var333 /* : nullable Object */;
 val* var_t /* var t: MClassType */;
-val* var375 /* : HashSet[MClassType] */;
-val* var377 /* : HashSet[MClassType] */;
-val* var_378 /* var : HashSet[MClassType] */;
-val* var379 /* : Iterator[nullable Object] */;
-val* var_380 /* var : Iterator[MClassType] */;
-short int var381 /* : Bool */;
-val* var382 /* : nullable Object */;
+val* var334 /* : HashSet[MClassType] */;
+val* var336 /* : HashSet[MClassType] */;
+val* var_337 /* var : HashSet[MClassType] */;
+val* var338 /* : Iterator[nullable Object] */;
+val* var_339 /* var : Iterator[MClassType] */;
+short int var340 /* : Bool */;
+val* var341 /* : nullable Object */;
 val* var_ot /* var ot: MClassType */;
+val* var342 /* : MModule */;
+val* var344 /* : MModule */;
+short int var345 /* : Bool */;
+short int var346 /* : Bool */;
+val* var348 /* : MModule */;
+val* var350 /* : MModule */;
+val* var351 /* : MClassType */;
+val* var_rt /* var rt: MClassType */;
+val* var352 /* : HashSet[MClassType] */;
+val* var354 /* : HashSet[MClassType] */;
+short int var355 /* : Bool */;
+short int var356 /* : Bool */;
+short int var357 /* : Bool */;
+val* var358 /* : HashSet[MClassType] */;
+val* var360 /* : HashSet[MClassType] */;
+val* var363 /* : HashSet[MType] */;
+val* var365 /* : HashSet[MType] */;
+val* var_366 /* var : HashSet[MType] */;
+val* var367 /* : Iterator[nullable Object] */;
+val* var_368 /* var : Iterator[MType] */;
+short int var369 /* : Bool */;
+val* var370 /* : nullable Object */;
+val* var_ot371 /* var ot: MType */;
+val* var372 /* : HashSet[MClassType] */;
+val* var374 /* : HashSet[MClassType] */;
+val* var_375 /* var : HashSet[MClassType] */;
+val* var376 /* : Iterator[nullable Object] */;
+val* var_377 /* var : Iterator[MClassType] */;
+short int var378 /* : Bool */;
+val* var379 /* : nullable Object */;
+val* var_t380 /* var t: MClassType */;
+val* var381 /* : MModule */;
 val* var383 /* : MModule */;
-val* var385 /* : MModule */;
-short int var386 /* : Bool */;
-short int var387 /* : Bool */;
+short int var384 /* : Bool */;
+short int var385 /* : Bool */;
+val* var387 /* : MModule */;
 val* var389 /* : MModule */;
-val* var391 /* : MModule */;
-val* var392 /* : MClassType */;
-val* var_rt /* var rt: MClassType */;
-val* var393 /* : HashSet[MClassType] */;
-val* var395 /* : HashSet[MClassType] */;
-short int var396 /* : Bool */;
-val* var397 /* : HashSet[MClassType] */;
-val* var399 /* : HashSet[MClassType] */;
-val* var403 /* : HashSet[MType] */;
-val* var405 /* : HashSet[MType] */;
-val* var_406 /* var : HashSet[MType] */;
-val* var407 /* : Iterator[nullable Object] */;
-val* var_408 /* var : Iterator[MType] */;
-short int var409 /* : Bool */;
-val* var410 /* : nullable Object */;
-val* var_ot411 /* var ot: MType */;
-val* var412 /* : HashSet[MClassType] */;
-val* var414 /* : HashSet[MClassType] */;
-val* var_415 /* var : HashSet[MClassType] */;
-val* var416 /* : Iterator[nullable Object] */;
-val* var_417 /* var : Iterator[MClassType] */;
-short int var418 /* : Bool */;
-val* var419 /* : nullable Object */;
-val* var_t420 /* var t: MClassType */;
-val* var421 /* : MModule */;
-val* var423 /* : MModule */;
-short int var424 /* : Bool */;
-short int var425 /* : Bool */;
-val* var427 /* : MModule */;
-val* var429 /* : MModule */;
-val* var430 /* : MType */;
-val* var_rt431 /* var rt: MType */;
-val* var432 /* : HashSet[MType] */;
-val* var434 /* : HashSet[MType] */;
+val* var390 /* : MType */;
+val* var_rt391 /* var rt: MType */;
+val* var392 /* : HashSet[MType] */;
+val* var394 /* : HashSet[MType] */;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -1146,30 +1941,29 @@ RET_LABEL1:(void)0;
 var3 = nit__model___MModule___sys_type(var);
 }
 var_maintype = var3;
-var4 = NULL;
 if (var_maintype == 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_maintype,var4) on <var_maintype:nullable MClassType> */
-var_other = var4;
+{ /* Inline kernel#Object#== (var_maintype,((val*)NULL)) on <var_maintype:nullable MClassType> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_maintype,var_other) on <var_maintype:nullable MClassType(MClassType)> */
-var10 = var_maintype == var_other;
-var8 = var10;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+var9 = var_maintype == 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){
+if (var4){
 goto RET_LABEL;
 } else {
 }
@@ -1178,61 +1972,59 @@ nit___nit__RapidTypeAnalysis___add_new(self, var_maintype, var_maintype); /* Dir
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var13 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var13 == NULL)) {
+var12 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var11 = var13;
-RET_LABEL12:(void)0;
+var10 = var12;
+RET_LABEL11:(void)0;
 }
 }
-if (varonce) {
-var14 = varonce;
+if (likely(varonce!=NULL)) {
+var13 = varonce;
 } else {
-var15 = "init";
-var16 = 4;
-var17 = standard___standard__NativeString___to_s_with_length(var15, var16);
-var14 = var17;
-varonce = var14;
+var14 = "init";
+var15 = standard___standard__NativeString___to_s_with_length(var14, 4l);
+var13 = var15;
+varonce = var13;
 }
 {
 { /* Inline model#MClassType#mclass (var_maintype) on <var_maintype:nullable MClassType(MClassType)> */
-var20 = var_maintype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
-if (unlikely(var20 == NULL)) {
+var18 = var_maintype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
+if (unlikely(var18 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var18 = var20;
-RET_LABEL19:(void)0;
+var16 = var18;
+RET_LABEL17:(void)0;
 }
 }
 {
-var21 = nit__model___MModule___try_get_primitive_method(var11, var14, var18);
+var19 = nit__model___MModule___try_get_primitive_method(var10, var13, var16);
 }
-var_initprop = var21;
-var22 = NULL;
+var_initprop = var19;
 if (var_initprop == NULL) {
-var23 = 0; /* is null */
+var20 = 0; /* is null */
 } else {
-var23 = 1; /* arg is null and recv is not */
+var20 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_initprop,var22) on <var_initprop:nullable MMethod> */
-var_other26 = var22;
+{ /* Inline kernel#Object#!= (var_initprop,((val*)NULL)) on <var_initprop:nullable MMethod> */
+var_other23 = ((val*)NULL);
 {
-var27 = ((short int (*)(val* self, val* p0))(var_initprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_initprop, var_other26) /* == on <var_initprop:nullable MMethod(MMethod)>*/;
+var24 = ((short int(*)(val* self, val* p0))(var_initprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_initprop, var_other23); /* == on <var_initprop:nullable MMethod(MMethod)>*/
 }
-var28 = !var27;
-var24 = var28;
-goto RET_LABEL25;
-RET_LABEL25:(void)0;
+var25 = !var24;
+var21 = var25;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
 }
-var23 = var24;
+var20 = var21;
 }
-if (var23){
+if (var20){
 {
 nit___nit__RapidTypeAnalysis___add_send(self, var_maintype, var_initprop); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <self:RapidTypeAnalysis>*/
 }
@@ -1240,102 +2032,99 @@ nit___nit__RapidTypeAnalysis___add_send(self, var_maintype, var_initprop); /* Di
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var32 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var32 == NULL)) {
+var29 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var29 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var30 = var32;
-RET_LABEL31:(void)0;
+var27 = var29;
+RET_LABEL28:(void)0;
 }
 }
-if (varonce33) {
-var34 = varonce33;
+if (likely(varonce30!=NULL)) {
+var31 = varonce30;
 } else {
-var35 = "run";
-var36 = 3;
-var37 = standard___standard__NativeString___to_s_with_length(var35, var36);
-var34 = var37;
-varonce33 = var34;
+var32 = "run";
+var33 = standard___standard__NativeString___to_s_with_length(var32, 3l);
+var31 = var33;
+varonce30 = var31;
 }
 {
 { /* Inline model#MClassType#mclass (var_maintype) on <var_maintype:nullable MClassType(MClassType)> */
-var40 = var_maintype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
-if (unlikely(var40 == NULL)) {
+var36 = var_maintype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
+if (unlikely(var36 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var38 = var40;
-RET_LABEL39:(void)0;
+var34 = var36;
+RET_LABEL35:(void)0;
 }
 }
 {
-var41 = nit__model___MModule___try_get_primitive_method(var30, var34, var38);
+var37 = nit__model___MModule___try_get_primitive_method(var27, var31, var34);
 }
-if (var41!=NULL) {
-var29 = var41;
+if (var37!=NULL) {
+var26 = var37;
 } else {
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var44 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var44 == NULL)) {
+var40 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var40 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var42 = var44;
-RET_LABEL43:(void)0;
+var38 = var40;
+RET_LABEL39:(void)0;
 }
 }
-if (varonce45) {
-var46 = varonce45;
+if (likely(varonce41!=NULL)) {
+var42 = varonce41;
 } else {
-var47 = "main";
-var48 = 4;
-var49 = standard___standard__NativeString___to_s_with_length(var47, var48);
-var46 = var49;
-varonce45 = var46;
+var43 = "main";
+var44 = standard___standard__NativeString___to_s_with_length(var43, 4l);
+var42 = var44;
+varonce41 = var42;
 }
 {
 { /* Inline model#MClassType#mclass (var_maintype) on <var_maintype:nullable MClassType(MClassType)> */
-var52 = var_maintype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
-if (unlikely(var52 == NULL)) {
+var47 = var_maintype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
+if (unlikely(var47 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var50 = var52;
-RET_LABEL51:(void)0;
+var45 = var47;
+RET_LABEL46:(void)0;
 }
 }
 {
-var53 = nit__model___MModule___try_get_primitive_method(var42, var46, var50);
+var48 = nit__model___MModule___try_get_primitive_method(var38, var42, var45);
 }
-var29 = var53;
+var26 = var48;
 }
-var_mainprop = var29;
-var54 = NULL;
+var_mainprop = var26;
 if (var_mainprop == NULL) {
-var55 = 0; /* is null */
+var49 = 0; /* is null */
 } else {
-var55 = 1; /* arg is null and recv is not */
+var49 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_mainprop,var54) on <var_mainprop:nullable MMethod> */
-var_other26 = var54;
+{ /* Inline kernel#Object#!= (var_mainprop,((val*)NULL)) on <var_mainprop:nullable MMethod> */
+var_other23 = ((val*)NULL);
 {
-var58 = ((short int (*)(val* self, val* p0))(var_mainprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mainprop, var_other26) /* == on <var_mainprop:nullable MMethod(MMethod)>*/;
+var52 = ((short int(*)(val* self, val* p0))(var_mainprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mainprop, var_other23); /* == on <var_mainprop:nullable MMethod(MMethod)>*/
 }
-var59 = !var58;
-var56 = var59;
-goto RET_LABEL57;
-RET_LABEL57:(void)0;
+var53 = !var52;
+var50 = var53;
+goto RET_LABEL51;
+RET_LABEL51:(void)0;
 }
-var55 = var56;
+var49 = var50;
 }
-if (var55){
+if (var49){
 {
 nit___nit__RapidTypeAnalysis___add_send(self, var_maintype, var_mainprop); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <self:RapidTypeAnalysis>*/
 }
@@ -1343,97 +2132,94 @@ nit___nit__RapidTypeAnalysis___add_send(self, var_maintype, var_mainprop); /* Di
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var62 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var62 == NULL)) {
+var56 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var56 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var60 = var62;
-RET_LABEL61:(void)0;
+var54 = var56;
+RET_LABEL55:(void)0;
 }
 }
 {
-var63 = nit__model___MModule___finalizable_type(var60);
+var57 = nit__model___MModule___finalizable_type(var54);
 }
-var_finalizable_type = var63;
-var64 = NULL;
+var_finalizable_type = var57;
 if (var_finalizable_type == NULL) {
-var65 = 0; /* is null */
+var58 = 0; /* is null */
 } else {
-var65 = 1; /* arg is null and recv is not */
+var58 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_finalizable_type,var64) on <var_finalizable_type:nullable MClassType> */
-var_other26 = var64;
+{ /* Inline kernel#Object#!= (var_finalizable_type,((val*)NULL)) on <var_finalizable_type:nullable MClassType> */
+var_other23 = ((val*)NULL);
 {
-var68 = ((short int (*)(val* self, val* p0))(var_finalizable_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_finalizable_type, var_other26) /* == on <var_finalizable_type:nullable MClassType(MClassType)>*/;
+var61 = ((short int(*)(val* self, val* p0))(var_finalizable_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_finalizable_type, var_other23); /* == on <var_finalizable_type:nullable MClassType(MClassType)>*/
 }
-var69 = !var68;
-var66 = var69;
-goto RET_LABEL67;
-RET_LABEL67:(void)0;
+var62 = !var61;
+var59 = var62;
+goto RET_LABEL60;
+RET_LABEL60:(void)0;
 }
-var65 = var66;
+var58 = var59;
 }
-if (var65){
+if (var58){
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var72 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var72 == NULL)) {
+var65 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var65 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var70 = var72;
-RET_LABEL71:(void)0;
+var63 = var65;
+RET_LABEL64:(void)0;
 }
 }
-if (varonce73) {
-var74 = varonce73;
+if (likely(varonce66!=NULL)) {
+var67 = varonce66;
 } else {
-var75 = "finalize";
-var76 = 8;
-var77 = standard___standard__NativeString___to_s_with_length(var75, var76);
-var74 = var77;
-varonce73 = var74;
+var68 = "finalize";
+var69 = standard___standard__NativeString___to_s_with_length(var68, 8l);
+var67 = var69;
+varonce66 = var67;
 }
 {
 { /* Inline model#MClassType#mclass (var_finalizable_type) on <var_finalizable_type:nullable MClassType(MClassType)> */
-var80 = var_finalizable_type->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_finalizable_type:nullable MClassType(MClassType)> */
-if (unlikely(var80 == NULL)) {
+var72 = var_finalizable_type->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_finalizable_type:nullable MClassType(MClassType)> */
+if (unlikely(var72 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var78 = var80;
-RET_LABEL79:(void)0;
+var70 = var72;
+RET_LABEL71:(void)0;
 }
 }
 {
-var81 = nit__model___MModule___try_get_primitive_method(var70, var74, var78);
+var73 = nit__model___MModule___try_get_primitive_method(var63, var67, var70);
 }
-var_finalize_meth = var81;
-var82 = NULL;
+var_finalize_meth = var73;
 if (var_finalize_meth == NULL) {
-var83 = 0; /* is null */
+var74 = 0; /* is null */
 } else {
-var83 = 1; /* arg is null and recv is not */
+var74 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_finalize_meth,var82) on <var_finalize_meth:nullable MMethod> */
-var_other26 = var82;
+{ /* Inline kernel#Object#!= (var_finalize_meth,((val*)NULL)) on <var_finalize_meth:nullable MMethod> */
+var_other23 = ((val*)NULL);
 {
-var86 = ((short int (*)(val* self, val* p0))(var_finalize_meth->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_finalize_meth, var_other26) /* == on <var_finalize_meth:nullable MMethod(MMethod)>*/;
+var77 = ((short int(*)(val* self, val* p0))(var_finalize_meth->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_finalize_meth, var_other23); /* == on <var_finalize_meth:nullable MMethod(MMethod)>*/
 }
-var87 = !var86;
-var84 = var87;
-goto RET_LABEL85;
-RET_LABEL85:(void)0;
+var78 = !var77;
+var75 = var78;
+goto RET_LABEL76;
+RET_LABEL76:(void)0;
 }
-var83 = var84;
+var74 = var75;
 }
-if (var83){
+if (var74){
 {
 nit___nit__RapidTypeAnalysis___add_send(self, var_finalizable_type, var_finalize_meth); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <self:RapidTypeAnalysis>*/
 }
@@ -1441,828 +2227,757 @@ nit___nit__RapidTypeAnalysis___add_send(self, var_finalizable_type, var_finalize
 }
 } else {
 }
-if (varonce88) {
-var89 = varonce88;
+if (likely(varonce79!=NULL)) {
+var80 = varonce79;
+} else {
+var81 = "Bool";
+var82 = standard___standard__NativeString___to_s_with_length(var81, 4l);
+var80 = var82;
+varonce79 = var80;
+}
+{
+nit___nit__RapidTypeAnalysis___force_alive(self, var80); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
+}
+if (likely(varonce83!=NULL)) {
+var84 = varonce83;
 } else {
-var90 = "Bool";
-var91 = 4;
-var92 = standard___standard__NativeString___to_s_with_length(var90, var91);
-var89 = var92;
-varonce88 = var89;
+var85 = "Int";
+var86 = standard___standard__NativeString___to_s_with_length(var85, 3l);
+var84 = var86;
+varonce83 = var84;
 }
 {
-nit___nit__RapidTypeAnalysis___force_alive(self, var89); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___force_alive(self, var84); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
 }
-if (varonce93) {
-var94 = varonce93;
+if (likely(varonce87!=NULL)) {
+var88 = varonce87;
 } else {
-var95 = "Int";
-var96 = 3;
-var97 = standard___standard__NativeString___to_s_with_length(var95, var96);
-var94 = var97;
-varonce93 = var94;
+var89 = "Float";
+var90 = standard___standard__NativeString___to_s_with_length(var89, 5l);
+var88 = var90;
+varonce87 = var88;
 }
 {
-nit___nit__RapidTypeAnalysis___force_alive(self, var94); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___force_alive(self, var88); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
 }
-if (varonce98) {
-var99 = varonce98;
+if (likely(varonce91!=NULL)) {
+var92 = varonce91;
 } else {
-var100 = "Float";
-var101 = 5;
-var102 = standard___standard__NativeString___to_s_with_length(var100, var101);
-var99 = var102;
-varonce98 = var99;
+var93 = "Char";
+var94 = standard___standard__NativeString___to_s_with_length(var93, 4l);
+var92 = var94;
+varonce91 = var92;
 }
 {
-nit___nit__RapidTypeAnalysis___force_alive(self, var99); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___force_alive(self, var92); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
 }
-if (varonce103) {
-var104 = varonce103;
+if (likely(varonce95!=NULL)) {
+var96 = varonce95;
 } else {
-var105 = "Char";
-var106 = 4;
-var107 = standard___standard__NativeString___to_s_with_length(var105, var106);
-var104 = var107;
-varonce103 = var104;
+var97 = "Pointer";
+var98 = standard___standard__NativeString___to_s_with_length(var97, 7l);
+var96 = var98;
+varonce95 = var96;
 }
 {
-nit___nit__RapidTypeAnalysis___force_alive(self, var104); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___force_alive(self, var96); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
 }
-if (varonce108) {
-var109 = varonce108;
+if (likely(varonce99!=NULL)) {
+var100 = varonce99;
 } else {
-var110 = "Pointer";
-var111 = 7;
-var112 = standard___standard__NativeString___to_s_with_length(var110, var111);
-var109 = var112;
-varonce108 = var109;
+var101 = "Byte";
+var102 = standard___standard__NativeString___to_s_with_length(var101, 4l);
+var100 = var102;
+varonce99 = var100;
 }
 {
-nit___nit__RapidTypeAnalysis___force_alive(self, var109); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___force_alive(self, var100); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
 }
 for(;;) {
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#todo (self) on <self:RapidTypeAnalysis> */
-var115 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
-if (unlikely(var115 == NULL)) {
+var105 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
+if (unlikely(var105 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 179);
+fatal_exit(1);
 }
-var113 = var115;
-RET_LABEL114:(void)0;
+var103 = var105;
+RET_LABEL104:(void)0;
 }
 }
 {
-var116 = standard___standard__List___standard__abstract_collection__Collection__is_empty(var113);
+var106 = standard___standard__List___standard__abstract_collection__Collection__is_empty(var103);
 }
-var117 = !var116;
-if (var117){
+var107 = !var106;
+if (var107){
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#todo (self) on <self:RapidTypeAnalysis> */
-var120 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
-if (unlikely(var120 == NULL)) {
+var110 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
+if (unlikely(var110 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 179);
+fatal_exit(1);
 }
-var118 = var120;
-RET_LABEL119:(void)0;
+var108 = var110;
+RET_LABEL109:(void)0;
 }
 }
 {
-var121 = standard___standard__List___standard__abstract_collection__Sequence__shift(var118);
+var111 = standard___standard__List___standard__abstract_collection__Sequence__shift(var108);
 }
-var_mmethoddef = var121;
+var_mmethoddef = var111;
 {
 { /* Inline model#MPropDef#mproperty (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
-var124 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mmethoddef:MMethodDef> */
-if (unlikely(var124 == NULL)) {
+var114 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mmethoddef:MMethodDef> */
+if (unlikely(var114 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
+}
+var112 = var114;
+RET_LABEL113:(void)0;
+}
+}
+var_mmeth = var112;
+{
+{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var117 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
+var115 = var117;
+RET_LABEL116:(void)0;
+}
 }
-var122 = var124;
-RET_LABEL123:(void)0;
+var_msignature = var115;
+if (var_msignature == NULL) {
+var118 = 1; /* is null */
+} else {
+var118 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_msignature,((val*)NULL)) on <var_msignature:nullable MSignature> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_msignature,var_other) on <var_msignature:nullable MSignature(MSignature)> */
+var123 = var_msignature == var_other;
+var121 = var123;
+goto RET_LABEL122;
+RET_LABEL122:(void)0;
 }
 }
-var_mmeth = var122;
-var125 = NEW_nit__RapidTypeVisitor(&type_nit__RapidTypeVisitor);
+var119 = var121;
+goto RET_LABEL120;
+RET_LABEL120:(void)0;
+}
+var118 = var119;
+}
+if (var118){
+goto BREAK_label;
+} else {
+}
+var124 = NEW_nit__RapidTypeVisitor(&type_nit__RapidTypeVisitor);
 {
 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
-var128 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
-if (unlikely(var128 == NULL)) {
+var127 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
+if (unlikely(var127 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
+fatal_exit(1);
 }
-var126 = var128;
-RET_LABEL127:(void)0;
+var125 = var127;
+RET_LABEL126:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#bound_mtype (var126) on <var126:MClassDef> */
-var131 = var126->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var126:MClassDef> */
-if (unlikely(var131 == NULL)) {
+{ /* Inline model#MClassDef#bound_mtype (var125) on <var125:MClassDef> */
+var130 = var125->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var125:MClassDef> */
+if (unlikely(var130 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
+fatal_exit(1);
 }
-var129 = var131;
-RET_LABEL130:(void)0;
+var128 = var130;
+RET_LABEL129:(void)0;
 }
 }
 {
-((void (*)(val* self, val* p0))(var125->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__analysis_61d]))(var125, self) /* analysis= on <var125:RapidTypeVisitor>*/;
+((void(*)(val* self, val* p0))(var124->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__analysis_61d]))(var124, self); /* analysis= on <var124:RapidTypeVisitor>*/
 }
 {
-((void (*)(val* self, val* p0))(var125->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__receiver_61d]))(var125, var129) /* receiver= on <var125:RapidTypeVisitor>*/;
+((void(*)(val* self, val* p0))(var124->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__receiver_61d]))(var124, var128); /* receiver= on <var124:RapidTypeVisitor>*/
 }
 {
-((void (*)(val* self, val* p0))(var125->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__mpropdef_61d]))(var125, var_mmethoddef) /* mpropdef= on <var125:RapidTypeVisitor>*/;
+((void(*)(val* self, val* p0))(var124->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__mpropdef_61d]))(var124, var_mmethoddef); /* mpropdef= on <var124:RapidTypeVisitor>*/
 }
 {
-((void (*)(val* self))(var125->class->vft[COLOR_standard__kernel__Object__init]))(var125) /* init on <var125:RapidTypeVisitor>*/;
+((void(*)(val* self))(var124->class->vft[COLOR_standard__kernel__Object__init]))(var124); /* init on <var124:RapidTypeVisitor>*/
 }
-var_v = var125;
+var_v = var124;
 {
-{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
-var134 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
-var132 = var134;
-RET_LABEL133:(void)0;
-}
-}
-if (var132 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 216);
-show_backtrace(1);
-} else {
-{ /* Inline model#MSignature#vararg_rank (var132) on <var132:nullable MSignature> */
-if (unlikely(var132 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1635);
-show_backtrace(1);
-}
-var137 = var132->attrs[COLOR_nit__model__MSignature___vararg_rank].l; /* _vararg_rank on <var132:nullable MSignature> */
-var135 = var137;
-RET_LABEL136:(void)0;
+{ /* Inline model#MSignature#vararg_rank (var_msignature) on <var_msignature:nullable MSignature(MSignature)> */
+var133 = var_msignature->attrs[COLOR_nit__model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:nullable MSignature(MSignature)> */
+var131 = var133;
+RET_LABEL132:(void)0;
 }
 }
-var_vararg_rank = var135;
-var138 = 1;
+var_vararg_rank = var131;
 {
-{ /* Inline kernel#Int#unary - (var138) on <var138:Int> */
-var141 = -var138;
-var139 = var141;
-goto RET_LABEL140;
-RET_LABEL140:(void)0;
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var136 = -1l;
+var134 = var136;
+goto RET_LABEL135;
+RET_LABEL135:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#> (var_vararg_rank,var139) on <var_vararg_rank:Int> */
-/* Covariant cast for argument 0 (i) <var139:Int> isa OTHER */
-/* <var139:Int> isa OTHER */
-var144 = 1; /* easy <var139:Int> isa OTHER*/
-if (unlikely(!var144)) {
+{ /* Inline kernel#Int#> (var_vararg_rank,var134) on <var_vararg_rank:Int> */
+/* Covariant cast for argument 0 (i) <var134:Int> isa OTHER */
+/* <var134:Int> isa OTHER */
+var139 = 1; /* easy <var134:Int> isa OTHER*/
+if (unlikely(!var139)) {
 var_class_name = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
 }
-var145 = var_vararg_rank > var139;
-var142 = var145;
-goto RET_LABEL143;
-RET_LABEL143:(void)0;
+var140 = var_vararg_rank > var134;
+var137 = var140;
+goto RET_LABEL138;
+RET_LABEL138:(void)0;
 }
 }
-if (var142){
+if (var137){
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
-var148 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
-if (unlikely(var148 == NULL)) {
+var143 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
+if (unlikely(var143 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
+fatal_exit(1);
 }
-var146 = var148;
-RET_LABEL147:(void)0;
+var141 = var143;
+RET_LABEL142:(void)0;
 }
 }
 {
-var149 = nit__modelize_property___ModelBuilder___mpropdef2node(var146, var_mmethoddef);
+var144 = nit__modelize_property___ModelBuilder___mpropdef2node(var141, var_mmethoddef);
 }
-var_node = var149;
+var_node = var144;
 {
-{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
-var152 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
-var150 = var152;
-RET_LABEL151:(void)0;
-}
-}
-if (var150 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 219);
-show_backtrace(1);
-} else {
-{ /* Inline model#MSignature#mparameters (var150) on <var150:nullable MSignature> */
-if (unlikely(var150 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
-show_backtrace(1);
-}
-var155 = var150->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var150:nullable MSignature> */
-if (unlikely(var155 == NULL)) {
+{ /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:nullable MSignature(MSignature)> */
+var147 = var_msignature->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:nullable MSignature(MSignature)> */
+if (unlikely(var147 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
+fatal_exit(1);
 }
-var153 = var155;
-RET_LABEL154:(void)0;
+var145 = var147;
+RET_LABEL146:(void)0;
 }
 }
 {
-var156 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var153, var_vararg_rank);
+var148 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var145, var_vararg_rank);
 }
 {
-{ /* Inline model#MParameter#mtype (var156) on <var156:nullable Object(MParameter)> */
-var159 = var156->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var156:nullable Object(MParameter)> */
-if (unlikely(var159 == NULL)) {
+{ /* Inline model#MParameter#mtype (var148) on <var148:nullable Object(MParameter)> */
+var151 = var148->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var148:nullable Object(MParameter)> */
+if (unlikely(var151 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
+fatal_exit(1);
 }
-var157 = var159;
-RET_LABEL158:(void)0;
+var149 = var151;
+RET_LABEL150:(void)0;
 }
 }
-var_elttype = var157;
+var_elttype = var149;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var162 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var162 == NULL)) {
+var154 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var154 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
-}
-var160 = var162;
-RET_LABEL161:(void)0;
-}
-}
-if (varonce163) {
-var164 = varonce163;
-} else {
-var165 = "Array";
-var166 = 5;
-var167 = standard___standard__NativeString___to_s_with_length(var165, var166);
-var164 = var167;
-varonce163 = var164;
-}
-{
-var168 = nit__model___MModule___get_primitive_class(var160, var164);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var169 = NEW_standard__Array(&type_standard__Array__nit__MType);
-var170 = 1;
-{
-standard___standard__Array___with_capacity(var169, var170); /* Direct call array#Array#with_capacity on <var169:Array[MType]>*/
+var152 = var154;
+RET_LABEL153:(void)0;
 }
-var_ = var169;
-{
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var_elttype); /* Direct call array#AbstractArray#push on <var_:Array[MType]>*/
 }
 {
-var171 = nit___nit__MClass___get_mtype(var168, var_);
+var155 = nit__model___MModule___array_type(var152, var_elttype);
 }
-var_vararg = var171;
+var_vararg = var155;
 {
 nit___nit__RapidTypeVisitor___add_type(var_v, var_vararg); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var174 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var174 == NULL)) {
+var158 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var158 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
-}
-var172 = var174;
-RET_LABEL173:(void)0;
-}
-}
-if (varonce175) {
-var176 = varonce175;
-} else {
-var177 = "NativeArray";
-var178 = 11;
-var179 = standard___standard__NativeString___to_s_with_length(var177, var178);
-var176 = var179;
-varonce175 = var176;
-}
-{
-var180 = nit__model___MModule___get_primitive_class(var172, var176);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var181 = NEW_standard__Array(&type_standard__Array__nit__MType);
-var182 = 1;
-{
-standard___standard__Array___with_capacity(var181, var182); /* Direct call array#Array#with_capacity on <var181:Array[MType]>*/
+var156 = var158;
+RET_LABEL157:(void)0;
 }
-var_183 = var181;
-{
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_183, var_elttype); /* Direct call array#AbstractArray#push on <var_183:Array[MType]>*/
 }
 {
-var184 = nit___nit__MClass___get_mtype(var180, var_183);
+var159 = nit__model___MModule___native_array_type(var156, var_elttype);
 }
-var_native = var184;
+var_native = var159;
 {
 nit___nit__RapidTypeVisitor___add_type(var_v, var_native); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
-var187 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
-if (unlikely(var187 == NULL)) {
+var162 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
+if (unlikely(var162 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
+fatal_exit(1);
 }
-var185 = var187;
-RET_LABEL186:(void)0;
+var160 = var162;
+RET_LABEL161:(void)0;
 }
 }
-if (varonce188) {
-var189 = varonce188;
+if (likely(varonce163!=NULL)) {
+var164 = varonce163;
 } else {
-var190 = "with_native";
-var191 = 11;
-var192 = standard___standard__NativeString___to_s_with_length(var190, var191);
-var189 = var192;
-varonce188 = var189;
+var165 = "with_native";
+var166 = standard___standard__NativeString___to_s_with_length(var165, 11l);
+var164 = var166;
+varonce163 = var164;
 }
 {
 { /* Inline model#MClassType#mclass (var_vararg) on <var_vararg:MClassType> */
-var195 = var_vararg->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_vararg:MClassType> */
-if (unlikely(var195 == NULL)) {
+var169 = var_vararg->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_vararg:MClassType> */
+if (unlikely(var169 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var193 = var195;
-RET_LABEL194:(void)0;
+var167 = var169;
+RET_LABEL168:(void)0;
 }
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var198 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var198 == NULL)) {
+var172 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var172 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var196 = var198;
-RET_LABEL197:(void)0;
+var170 = var172;
+RET_LABEL171:(void)0;
 }
 }
 {
-var199 = nit___nit__ModelBuilder___force_get_primitive_method(var185, var_node, var189, var193, var196);
+var173 = nit___nit__ModelBuilder___force_get_primitive_method(var160, var_node, var164, var167, var170);
 }
 {
-nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_vararg, var199); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
+nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_vararg, var173); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
 }
 } else {
 }
-{
-{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
-var202 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
-var200 = var202;
-RET_LABEL201:(void)0;
-}
-}
-if (unlikely(var200 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 229);
-show_backtrace(1);
-}
-var_sig = var200;
+var_sig = var_msignature;
 {
 { /* Inline model#MProperty#intro (var_mmeth) on <var_mmeth:MMethod> */
-var205 = var_mmeth->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_mmeth:MMethod> */
-if (unlikely(var205 == NULL)) {
+var176 = var_mmeth->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_mmeth:MMethod> */
+if (unlikely(var176 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1968);
+fatal_exit(1);
 }
-var203 = var205;
-RET_LABEL204:(void)0;
+var174 = var176;
+RET_LABEL175:(void)0;
 }
 }
 {
-{ /* Inline model#MMethodDef#msignature (var203) on <var203:MPropDef(MMethodDef)> */
-var208 = var203->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var203:MPropDef(MMethodDef)> */
-var206 = var208;
-RET_LABEL207:(void)0;
+{ /* Inline model#MMethodDef#msignature (var174) on <var174:MPropDef(MMethodDef)> */
+var179 = var174->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var174:MPropDef(MMethodDef)> */
+var177 = var179;
+RET_LABEL178:(void)0;
 }
 }
-if (unlikely(var206 == NULL)) {
+if (unlikely(var177 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 230);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 241);
+fatal_exit(1);
 }
-var_osig = var206;
-var209 = 0;
-var_i = var209;
+var_osig = var177;
+var_i = 0l;
 {
-var210 = nit___nit__MSignature___arity(var_sig);
+var180 = nit___nit__MSignature___arity(var_sig);
 }
-var_211 = var210;
+var_ = var180;
 for(;;) {
 {
-{ /* Inline kernel#Int#< (var_i,var_211) on <var_i:Int> */
-/* Covariant cast for argument 0 (i) <var_211:Int> isa OTHER */
-/* <var_211:Int> isa OTHER */
-var214 = 1; /* easy <var_211:Int> isa OTHER*/
-if (unlikely(!var214)) {
-var_class_name217 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name217);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
+{ /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
+/* <var_:Int> isa OTHER */
+var183 = 1; /* easy <var_:Int> isa OTHER*/
+if (unlikely(!var183)) {
+var_class_name186 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name186);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
 }
-var218 = var_i < var_211;
-var212 = var218;
-goto RET_LABEL213;
-RET_LABEL213:(void)0;
+var187 = var_i < var_;
+var181 = var187;
+goto RET_LABEL182;
+RET_LABEL182:(void)0;
 }
 }
-if (var212){
+if (var181){
 {
 { /* Inline model#MSignature#mparameters (var_osig) on <var_osig:MSignature> */
-var221 = var_osig->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_osig:MSignature> */
-if (unlikely(var221 == NULL)) {
+var190 = var_osig->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_osig:MSignature> */
+if (unlikely(var190 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
+fatal_exit(1);
 }
-var219 = var221;
-RET_LABEL220:(void)0;
+var188 = var190;
+RET_LABEL189:(void)0;
 }
 }
 {
-var222 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var219, var_i);
+var191 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var188, var_i);
 }
 {
-{ /* Inline model#MParameter#mtype (var222) on <var222:nullable Object(MParameter)> */
-var225 = var222->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var222:nullable Object(MParameter)> */
-if (unlikely(var225 == NULL)) {
+{ /* Inline model#MParameter#mtype (var191) on <var191:nullable Object(MParameter)> */
+var194 = var191->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var191:nullable Object(MParameter)> */
+if (unlikely(var194 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
+fatal_exit(1);
 }
-var223 = var225;
-RET_LABEL224:(void)0;
+var192 = var194;
+RET_LABEL193:(void)0;
 }
 }
-var_origtype = var223;
+var_origtype = var192;
 {
-var226 = ((short int (*)(val* self))(var_origtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_origtype) /* need_anchor on <var_origtype:MType>*/;
+var195 = ((short int(*)(val* self))(var_origtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_origtype); /* need_anchor on <var_origtype:MType>*/
 }
-var227 = !var226;
-if (var227){
-goto BREAK_label;
+var196 = !var195;
+if (var196){
+goto BREAK_label197;
 } else {
 }
 {
 { /* Inline model#MSignature#mparameters (var_sig) on <var_sig:MSignature> */
-var230 = var_sig->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_sig:MSignature> */
-if (unlikely(var230 == NULL)) {
+var200 = var_sig->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_sig:MSignature> */
+if (unlikely(var200 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
+fatal_exit(1);
 }
-var228 = var230;
-RET_LABEL229:(void)0;
+var198 = var200;
+RET_LABEL199:(void)0;
 }
 }
 {
-var231 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var228, var_i);
+var201 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var198, var_i);
 }
 {
-{ /* Inline model#MParameter#mtype (var231) on <var231:nullable Object(MParameter)> */
-var234 = var231->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var231:nullable Object(MParameter)> */
-if (unlikely(var234 == NULL)) {
+{ /* Inline model#MParameter#mtype (var201) on <var201:nullable Object(MParameter)> */
+var204 = var201->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var201:nullable Object(MParameter)> */
+if (unlikely(var204 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
+fatal_exit(1);
 }
-var232 = var234;
-RET_LABEL233:(void)0;
+var202 = var204;
+RET_LABEL203:(void)0;
 }
 }
-var_paramtype = var232;
+var_paramtype = var202;
 {
 nit___nit__RapidTypeAnalysis___add_cast(self, var_paramtype); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_cast on <self:RapidTypeAnalysis>*/
 }
-BREAK_label: (void)0;
-var235 = 1;
+BREAK_label197: (void)0;
 {
-var236 = standard___standard__Int___Discrete__successor(var_i, var235);
+var205 = standard___standard__Int___Discrete__successor(var_i, 1l);
 }
-var_i = var236;
+var_i = var205;
 } else {
-goto BREAK_label237;
+goto BREAK_label206;
 }
 }
-BREAK_label237: (void)0;
+BREAK_label206: (void)0;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
-var240 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
-if (unlikely(var240 == NULL)) {
+var209 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
+if (unlikely(var209 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
+fatal_exit(1);
 }
-var238 = var240;
-RET_LABEL239:(void)0;
+var207 = var209;
+RET_LABEL208:(void)0;
 }
 }
 {
-var241 = nit__modelize_property___ModelBuilder___mpropdef2node(var238, var_mmethoddef);
+var210 = nit__modelize_property___ModelBuilder___mpropdef2node(var207, var_mmethoddef);
 }
-var_npropdef = var241;
+var_npropdef = var210;
 /* <var_npropdef:nullable ANode> isa AClassdef */
-cltype243 = type_nit__AClassdef.color;
-idtype244 = type_nit__AClassdef.id;
+cltype212 = type_nit__AClassdef.color;
+idtype213 = type_nit__AClassdef.id;
 if(var_npropdef == NULL) {
-var242 = 0;
+var211 = 0;
 } else {
-if(cltype243 >= var_npropdef->type->table_size) {
-var242 = 0;
+if(cltype212 >= var_npropdef->type->table_size) {
+var211 = 0;
 } else {
-var242 = var_npropdef->type->type_table[cltype243] == idtype244;
+var211 = var_npropdef->type->type_table[cltype212] == idtype213;
 }
 }
-if (var242){
+if (var211){
 {
 { /* Inline modelize_property#AClassdef#mfree_init (var_npropdef) on <var_npropdef:nullable ANode(AClassdef)> */
-var247 = var_npropdef->attrs[COLOR_nit__modelize_property__AClassdef___mfree_init].val; /* _mfree_init on <var_npropdef:nullable ANode(AClassdef)> */
-var245 = var247;
-RET_LABEL246:(void)0;
+var216 = var_npropdef->attrs[COLOR_nit__modelize_property__AClassdef___mfree_init].val; /* _mfree_init on <var_npropdef:nullable ANode(AClassdef)> */
+var214 = var216;
+RET_LABEL215:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#== (var_mmethoddef,var245) on <var_mmethoddef:MMethodDef> */
-var_other = var245;
+{ /* Inline kernel#Object#== (var_mmethoddef,var214) on <var_mmethoddef:MMethodDef> */
+var_other = var214;
 {
 { /* Inline kernel#Object#is_same_instance (var_mmethoddef,var_other) on <var_mmethoddef:MMethodDef> */
-var252 = var_mmethoddef == var_other;
-var250 = var252;
-goto RET_LABEL251;
-RET_LABEL251:(void)0;
+var221 = var_mmethoddef == var_other;
+var219 = var221;
+goto RET_LABEL220;
+RET_LABEL220:(void)0;
 }
 }
-var248 = var250;
-goto RET_LABEL249;
-RET_LABEL249:(void)0;
+var217 = var219;
+goto RET_LABEL218;
+RET_LABEL218:(void)0;
 }
 }
-if (unlikely(!var248)) {
+if (unlikely(!var217)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 242);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 253);
+fatal_exit(1);
 }
 {
 { /* Inline model#MPropDef#mproperty (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
-var256 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mmethoddef:MMethodDef> */
-if (unlikely(var256 == NULL)) {
+var225 = var_mmethoddef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mmethoddef:MMethodDef> */
+if (unlikely(var225 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var254 = var256;
-RET_LABEL255:(void)0;
+var223 = var225;
+RET_LABEL224:(void)0;
 }
 }
 {
-{ /* Inline model#MMethod#is_root_init (var254) on <var254:MProperty(MMethod)> */
-var259 = var254->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var254:MProperty(MMethod)> */
-var257 = var259;
-RET_LABEL258:(void)0;
+{ /* Inline model#MMethod#is_root_init (var223) on <var223:MProperty(MMethod)> */
+var228 = var223->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var223:MProperty(MMethod)> */
+var226 = var228;
+RET_LABEL227:(void)0;
 }
 }
-var_260 = var257;
-if (var257){
+var_229 = var226;
+if (var226){
 {
-var261 = nit___nit__MPropDef___is_intro(var_mmethoddef);
+var230 = nit___nit__MPropDef___is_intro(var_mmethoddef);
 }
-var262 = !var261;
-var253 = var262;
+var231 = !var230;
+var222 = var231;
 } else {
-var253 = var_260;
+var222 = var_229;
 }
-if (var253){
+if (var222){
 {
 { /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (var_v) on <var_v:RapidTypeVisitor> */
-var265 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <var_v:RapidTypeVisitor> */
-if (unlikely(var265 == NULL)) {
+var234 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <var_v:RapidTypeVisitor> */
+if (unlikely(var234 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 448);
+fatal_exit(1);
 }
-var263 = var265;
-RET_LABEL264:(void)0;
+var232 = var234;
+RET_LABEL233:(void)0;
 }
 }
 {
-nit___nit__RapidTypeAnalysis___add_super_send(self, var263, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on <self:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___add_super_send(self, var232, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on <self:RapidTypeAnalysis>*/
 }
 } else {
 }
-goto BREAK_label266;
+goto BREAK_label;
 } else {
 {
 { /* Inline model#MMethodDef#constant_value (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
-var269 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___constant_value].val; /* _constant_value on <var_mmethoddef:MMethodDef> */
-var267 = var269;
-RET_LABEL268:(void)0;
+var237 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___constant_value].val; /* _constant_value on <var_mmethoddef:MMethodDef> */
+var235 = var237;
+RET_LABEL236:(void)0;
 }
 }
-var270 = NULL;
-if (var267 == NULL) {
-var271 = 0; /* is null */
+if (var235 == NULL) {
+var238 = 0; /* is null */
 } else {
-var271 = 1; /* arg is null and recv is not */
+var238 = 1; /* arg is null and recv is not */
 }
 if (0) {
-var272 = ((short int (*)(val* self, val* p0))(var267->class->vft[COLOR_standard__kernel__Object___33d_61d]))(var267, var270) /* != on <var267:nullable Object>*/;
-var271 = var272;
+var239 = ((short int(*)(val* self, val* p0))((((long)var235&3)?class_info[((long)var235&3)]:var235->class)->vft[COLOR_standard__kernel__Object___33d_61d]))(var235, ((val*)NULL)); /* != on <var235:nullable Object>*/
+var238 = var239;
 }
-if (var271){
+if (var238){
 {
-{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
-var275 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
-var273 = var275;
-RET_LABEL274:(void)0;
-}
-}
-if (var273 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 250);
-show_backtrace(1);
-} else {
-{ /* Inline model#MSignature#return_mtype (var273) on <var273:nullable MSignature> */
-if (unlikely(var273 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1595);
-show_backtrace(1);
-}
-var278 = var273->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var273:nullable MSignature> */
-var276 = var278;
-RET_LABEL277:(void)0;
+{ /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:nullable MSignature(MSignature)> */
+var242 = var_msignature->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:nullable MSignature(MSignature)> */
+var240 = var242;
+RET_LABEL241:(void)0;
 }
 }
-/* <var276:nullable MType> isa MClassType */
-cltype280 = type_nit__MClassType.color;
-idtype281 = type_nit__MClassType.id;
-if(var276 == NULL) {
-var279 = 0;
+/* <var240:nullable MType> isa MClassType */
+cltype244 = type_nit__MClassType.color;
+idtype245 = type_nit__MClassType.id;
+if(var240 == NULL) {
+var243 = 0;
 } else {
-if(cltype280 >= var276->type->table_size) {
-var279 = 0;
+if(cltype244 >= var240->type->table_size) {
+var243 = 0;
 } else {
-var279 = var276->type->type_table[cltype280] == idtype281;
+var243 = var240->type->type_table[cltype244] == idtype245;
 }
 }
-if (unlikely(!var279)) {
-var_class_name282 = var276 == NULL ? "null" : var276->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name282);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 250);
-show_backtrace(1);
+if (unlikely(!var243)) {
+var_class_name246 = var240 == NULL ? "null" : var240->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name246);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 261);
+fatal_exit(1);
 }
 {
-nit___nit__RapidTypeVisitor___add_type(var_v, var276); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
+nit___nit__RapidTypeVisitor___add_type(var_v, var240); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
 }
-goto BREAK_label266;
+goto BREAK_label;
 } else {
-var283 = NULL;
 if (var_npropdef == NULL) {
-var284 = 1; /* is null */
+var247 = 1; /* is null */
 } else {
-var284 = 0; /* arg is null but recv is not */
+var247 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_npropdef,var283) on <var_npropdef:nullable ANode> */
-var_other = var283;
+{ /* Inline kernel#Object#== (var_npropdef,((val*)NULL)) on <var_npropdef:nullable ANode> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_npropdef,var_other) on <var_npropdef:nullable ANode(ANode)> */
-var289 = var_npropdef == var_other;
-var287 = var289;
-goto RET_LABEL288;
-RET_LABEL288:(void)0;
+var252 = var_npropdef == var_other;
+var250 = var252;
+goto RET_LABEL251;
+RET_LABEL251:(void)0;
 }
 }
-var285 = var287;
-goto RET_LABEL286;
-RET_LABEL286:(void)0;
+var248 = var250;
+goto RET_LABEL249;
+RET_LABEL249:(void)0;
 }
-var284 = var285;
+var247 = var248;
 }
-if (var284){
+if (var247){
 PRINT_ERROR("Runtime error: %s", "Aborted");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 253);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 264);
+fatal_exit(1);
 } else {
 }
 }
 }
 /* <var_npropdef:nullable ANode(ANode)> isa AMethPropdef */
-cltype291 = type_nit__AMethPropdef.color;
-idtype292 = type_nit__AMethPropdef.id;
-if(cltype291 >= var_npropdef->type->table_size) {
-var290 = 0;
+cltype254 = type_nit__AMethPropdef.color;
+idtype255 = type_nit__AMethPropdef.id;
+if(cltype254 >= var_npropdef->type->table_size) {
+var253 = 0;
 } else {
-var290 = var_npropdef->type->type_table[cltype291] == idtype292;
+var253 = var_npropdef->type->type_table[cltype254] == idtype255;
 }
-if (var290){
+if (var253){
 {
 { /* Inline auto_super_init#AMethPropdef#auto_super_inits (var_npropdef) on <var_npropdef:nullable ANode(AMethPropdef)> */
-var295 = var_npropdef->attrs[COLOR_nit__auto_super_init__AMethPropdef___auto_super_inits].val; /* _auto_super_inits on <var_npropdef:nullable ANode(AMethPropdef)> */
-var293 = var295;
-RET_LABEL294:(void)0;
+var258 = var_npropdef->attrs[COLOR_nit__auto_super_init__AMethPropdef___auto_super_inits].val; /* _auto_super_inits on <var_npropdef:nullable ANode(AMethPropdef)> */
+var256 = var258;
+RET_LABEL257:(void)0;
 }
 }
-var_auto_super_inits = var293;
-var296 = NULL;
+var_auto_super_inits = var256;
 if (var_auto_super_inits == NULL) {
-var297 = 0; /* is null */
+var259 = 0; /* is null */
 } else {
-var297 = 1; /* arg is null and recv is not */
+var259 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_auto_super_inits,var296) on <var_auto_super_inits:nullable Array[CallSite]> */
-var_other26 = var296;
+{ /* Inline kernel#Object#!= (var_auto_super_inits,((val*)NULL)) on <var_auto_super_inits:nullable Array[CallSite]> */
+var_other23 = ((val*)NULL);
 {
-var300 = ((short int (*)(val* self, val* p0))(var_auto_super_inits->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_auto_super_inits, var_other26) /* == on <var_auto_super_inits:nullable Array[CallSite](Array[CallSite])>*/;
+var262 = ((short int(*)(val* self, val* p0))(var_auto_super_inits->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_auto_super_inits, var_other23); /* == on <var_auto_super_inits:nullable Array[CallSite](Array[CallSite])>*/
 }
-var301 = !var300;
-var298 = var301;
-goto RET_LABEL299;
-RET_LABEL299:(void)0;
+var263 = !var262;
+var260 = var263;
+goto RET_LABEL261;
+RET_LABEL261:(void)0;
 }
-var297 = var298;
+var259 = var260;
 }
-if (var297){
-var_302 = var_auto_super_inits;
+if (var259){
+var_264 = var_auto_super_inits;
 {
-var303 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_302);
+var265 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_264);
 }
-var_304 = var303;
+var_266 = var265;
 for(;;) {
 {
-var305 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_304);
+var267 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_266);
 }
-if (var305){
+if (var267){
 {
-var306 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_304);
+var268 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_266);
 }
-var_auto_super_init = var306;
+var_auto_super_init = var268;
 {
 nit___nit__RapidTypeVisitor___add_callsite(var_v, var_auto_super_init); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_304); /* Direct call array#ArrayIterator#next on <var_304:ArrayIterator[CallSite]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_266); /* Direct call array#ArrayIterator#next on <var_266:ArrayIterator[CallSite]>*/
 }
 } else {
-goto BREAK_label307;
+goto BREAK_label269;
 }
 }
-BREAK_label307: (void)0;
+BREAK_label269: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_304) on <var_304:ArrayIterator[CallSite]> */
-RET_LABEL308:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_266); /* Direct call array#ArrayIterator#finish on <var_266:ArrayIterator[CallSite]>*/
 }
 } else {
 }
 {
 { /* Inline auto_super_init#AMethPropdef#auto_super_call (var_npropdef) on <var_npropdef:nullable ANode(AMethPropdef)> */
-var311 = var_npropdef->attrs[COLOR_nit__auto_super_init__AMethPropdef___auto_super_call].s; /* _auto_super_call on <var_npropdef:nullable ANode(AMethPropdef)> */
-var309 = var311;
-RET_LABEL310:(void)0;
+var272 = var_npropdef->attrs[COLOR_nit__auto_super_init__AMethPropdef___auto_super_call].s; /* _auto_super_call on <var_npropdef:nullable ANode(AMethPropdef)> */
+var270 = var272;
+RET_LABEL271:(void)0;
 }
 }
-if (var309){
+if (var270){
 {
 { /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (var_v) on <var_v:RapidTypeVisitor> */
-var314 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <var_v:RapidTypeVisitor> */
-if (unlikely(var314 == NULL)) {
+var275 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <var_v:RapidTypeVisitor> */
+if (unlikely(var275 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 448);
+fatal_exit(1);
 }
-var312 = var314;
-RET_LABEL313:(void)0;
+var273 = var275;
+RET_LABEL274:(void)0;
 }
 }
 {
-nit___nit__RapidTypeAnalysis___add_super_send(self, var312, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on <self:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___add_super_send(self, var273, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on <self:RapidTypeAnalysis>*/
 }
 } else {
 }
@@ -2270,173 +2985,158 @@ nit___nit__RapidTypeAnalysis___add_super_send(self, var312, var_mmethoddef); /*
 }
 {
 { /* Inline model#MMethodDef#is_intern (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
-var318 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___is_intern].s; /* _is_intern on <var_mmethoddef:MMethodDef> */
-var316 = var318;
-RET_LABEL317:(void)0;
+var279 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___is_intern].s; /* _is_intern on <var_mmethoddef:MMethodDef> */
+var277 = var279;
+RET_LABEL278:(void)0;
 }
 }
-var_319 = var316;
-if (var316){
-var315 = var_319;
+var_280 = var277;
+if (var277){
+var276 = var_280;
 } else {
 {
 { /* Inline model#MMethodDef#is_extern (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
-var322 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___is_extern].s; /* _is_extern on <var_mmethoddef:MMethodDef> */
-var320 = var322;
-RET_LABEL321:(void)0;
+var283 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___is_extern].s; /* _is_extern on <var_mmethoddef:MMethodDef> */
+var281 = var283;
+RET_LABEL282:(void)0;
 }
 }
-var315 = var320;
+var276 = var281;
 }
-if (var315){
+if (var276){
 {
-{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
-var325 = var_mmethoddef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
-var323 = var325;
-RET_LABEL324:(void)0;
+{ /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:nullable MSignature(MSignature)> */
+var286 = var_msignature->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:nullable MSignature(MSignature)> */
+var284 = var286;
+RET_LABEL285:(void)0;
 }
 }
-if (var323 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 270);
-show_backtrace(1);
-} else {
-{ /* Inline model#MSignature#return_mtype (var323) on <var323:nullable MSignature> */
-if (unlikely(var323 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1595);
-show_backtrace(1);
-}
-var328 = var323->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var323:nullable MSignature> */
-var326 = var328;
-RET_LABEL327:(void)0;
-}
-}
-var_ret = var326;
-var332 = NULL;
+var_ret = var284;
 if (var_ret == NULL) {
-var333 = 0; /* is null */
+var290 = 0; /* is null */
 } else {
-var333 = 1; /* arg is null and recv is not */
+var290 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_ret,var332) on <var_ret:nullable MType> */
-var_other26 = var332;
+{ /* Inline kernel#Object#!= (var_ret,((val*)NULL)) on <var_ret:nullable MType> */
+var_other23 = ((val*)NULL);
 {
-var336 = ((short int (*)(val* self, val* p0))(var_ret->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret, var_other26) /* == on <var_ret:nullable MType(MType)>*/;
+var293 = ((short int(*)(val* self, val* p0))(var_ret->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret, var_other23); /* == on <var_ret:nullable MType(MType)>*/
 }
-var337 = !var336;
-var334 = var337;
-goto RET_LABEL335;
-RET_LABEL335:(void)0;
+var294 = !var293;
+var291 = var294;
+goto RET_LABEL292;
+RET_LABEL292:(void)0;
 }
-var333 = var334;
+var290 = var291;
 }
-var_338 = var333;
-if (var333){
+var_295 = var290;
+if (var290){
 /* <var_ret:nullable MType(MType)> isa MClassType */
-cltype340 = type_nit__MClassType.color;
-idtype341 = type_nit__MClassType.id;
-if(cltype340 >= var_ret->type->table_size) {
-var339 = 0;
+cltype297 = type_nit__MClassType.color;
+idtype298 = type_nit__MClassType.id;
+if(cltype297 >= var_ret->type->table_size) {
+var296 = 0;
 } else {
-var339 = var_ret->type->type_table[cltype340] == idtype341;
+var296 = var_ret->type->type_table[cltype297] == idtype298;
 }
-var331 = var339;
+var289 = var296;
 } else {
-var331 = var_338;
+var289 = var_295;
 }
-var_342 = var331;
-if (var331){
+var_299 = var289;
+if (var289){
 {
 { /* Inline model#MClassType#mclass (var_ret) on <var_ret:nullable MType(MClassType)> */
-var345 = var_ret->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_ret:nullable MType(MClassType)> */
-if (unlikely(var345 == NULL)) {
+var302 = var_ret->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_ret:nullable MType(MClassType)> */
+if (unlikely(var302 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var343 = var345;
-RET_LABEL344:(void)0;
+var300 = var302;
+RET_LABEL301:(void)0;
 }
 }
 {
-{ /* Inline model#MClass#kind (var343) on <var343:MClass> */
-var348 = var343->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var343:MClass> */
-if (unlikely(var348 == NULL)) {
+{ /* Inline model#MClass#kind (var300) on <var300:MClass> */
+var305 = var300->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var300:MClass> */
+if (unlikely(var305 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 399);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 436);
+fatal_exit(1);
 }
-var346 = var348;
-RET_LABEL347:(void)0;
+var303 = var305;
+RET_LABEL304:(void)0;
 }
 }
+var306 = glob_sys;
 {
-var349 = nit__model___standard__Object___abstract_kind(self);
+var307 = nit__model___standard__Sys___abstract_kind(var306);
 }
 {
-{ /* Inline kernel#Object#!= (var346,var349) on <var346:MClassKind> */
-var_other26 = var349;
+{ /* Inline kernel#Object#!= (var303,var307) on <var303:MClassKind> */
+var_other23 = var307;
 {
-var352 = ((short int (*)(val* self, val* p0))(var346->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var346, var_other26) /* == on <var346:MClassKind>*/;
+var310 = ((short int(*)(val* self, val* p0))(var303->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var303, var_other23); /* == on <var303:MClassKind>*/
 }
-var353 = !var352;
-var350 = var353;
-goto RET_LABEL351;
-RET_LABEL351:(void)0;
+var311 = !var310;
+var308 = var311;
+goto RET_LABEL309;
+RET_LABEL309:(void)0;
 }
 }
-var330 = var350;
+var288 = var308;
 } else {
-var330 = var_342;
+var288 = var_299;
 }
-var_354 = var330;
-if (var330){
+var_312 = var288;
+if (var288){
 {
 { /* Inline model#MClassType#mclass (var_ret) on <var_ret:nullable MType(MClassType)> */
-var357 = var_ret->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_ret:nullable MType(MClassType)> */
-if (unlikely(var357 == NULL)) {
+var315 = var_ret->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_ret:nullable MType(MClassType)> */
+if (unlikely(var315 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var355 = var357;
-RET_LABEL356:(void)0;
+var313 = var315;
+RET_LABEL314:(void)0;
 }
 }
 {
-{ /* Inline model#MClass#kind (var355) on <var355:MClass> */
-var360 = var355->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var355:MClass> */
-if (unlikely(var360 == NULL)) {
+{ /* Inline model#MClass#kind (var313) on <var313:MClass> */
+var318 = var313->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var313:MClass> */
+if (unlikely(var318 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 399);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 436);
+fatal_exit(1);
 }
-var358 = var360;
-RET_LABEL359:(void)0;
+var316 = var318;
+RET_LABEL317:(void)0;
 }
 }
+var319 = glob_sys;
 {
-var361 = nit__model___standard__Object___interface_kind(self);
+var320 = nit__model___standard__Sys___interface_kind(var319);
 }
 {
-{ /* Inline kernel#Object#!= (var358,var361) on <var358:MClassKind> */
-var_other26 = var361;
+{ /* Inline kernel#Object#!= (var316,var320) on <var316:MClassKind> */
+var_other23 = var320;
 {
-var364 = ((short int (*)(val* self, val* p0))(var358->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var358, var_other26) /* == on <var358:MClassKind>*/;
+var323 = ((short int(*)(val* self, val* p0))(var316->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var316, var_other23); /* == on <var316:MClassKind>*/
 }
-var365 = !var364;
-var362 = var365;
-goto RET_LABEL363;
-RET_LABEL363:(void)0;
+var324 = !var323;
+var321 = var324;
+goto RET_LABEL322;
+RET_LABEL322:(void)0;
 }
 }
-var329 = var362;
+var287 = var321;
 } else {
-var329 = var_354;
+var287 = var_312;
 }
-if (var329){
+if (var287){
 {
 nit___nit__RapidTypeVisitor___add_type(var_v, var_ret); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
 }
@@ -2448,302 +3148,301 @@ nit___nit__RapidTypeVisitor___add_type(var_v, var_ret); /* Direct call rapid_typ
 nit___nit__Visitor___enter_visit(var_v, var_npropdef); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:RapidTypeVisitor>*/
 }
 } else {
-goto BREAK_label366;
+goto BREAK_label325;
 }
-BREAK_label266: (void)0;
+BREAK_label: (void)0;
 }
-BREAK_label366: (void)0;
-var367 = NEW_standard__List(&type_standard__List__nit__MClassType);
+BREAK_label325: (void)0;
+var326 = NEW_standard__List(&type_standard__List__nit__MClassType);
 {
-{ /* Inline list#List#init (var367) on <var367:List[MClassType]> */
-RET_LABEL368:(void)0;
+{ /* Inline list#List#init (var326) on <var326:List[MClassType]> */
+RET_LABEL327:(void)0;
 }
 }
-var_todo_types = var367;
+var_todo_types = var326;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
-var371 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
-if (unlikely(var371 == NULL)) {
+var330 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
+if (unlikely(var330 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 60);
+fatal_exit(1);
 }
-var369 = var371;
-RET_LABEL370:(void)0;
+var328 = var330;
+RET_LABEL329:(void)0;
 }
 }
 {
-standard___standard__SimpleCollection___add_all(var_todo_types, var369); /* Direct call abstract_collection#SimpleCollection#add_all on <var_todo_types:List[MClassType]>*/
+standard___standard__SimpleCollection___add_all(var_todo_types, var328); /* Direct call abstract_collection#SimpleCollection#add_all on <var_todo_types:List[MClassType]>*/
 }
 for(;;) {
 {
-var372 = standard___standard__List___standard__abstract_collection__Collection__is_empty(var_todo_types);
+var331 = standard___standard__List___standard__abstract_collection__Collection__is_empty(var_todo_types);
 }
-var373 = !var372;
-if (var373){
+var332 = !var331;
+if (var332){
 {
-var374 = standard___standard__List___standard__abstract_collection__Sequence__shift(var_todo_types);
+var333 = standard___standard__List___standard__abstract_collection__Sequence__shift(var_todo_types);
 }
-var_t = var374;
+var_t = var333;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_types (self) on <self:RapidTypeAnalysis> */
-var377 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
-if (unlikely(var377 == NULL)) {
+var336 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
+if (unlikely(var336 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 58);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
+fatal_exit(1);
 }
-var375 = var377;
-RET_LABEL376:(void)0;
+var334 = var336;
+RET_LABEL335:(void)0;
 }
 }
-var_378 = var375;
+var_337 = var334;
 {
-var379 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_378);
+var338 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_337);
 }
-var_380 = var379;
+var_339 = var338;
 for(;;) {
 {
-var381 = ((short int (*)(val* self))(var_380->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_380) /* is_ok on <var_380:Iterator[MClassType]>*/;
+var340 = ((short int(*)(val* self))((((long)var_339&3)?class_info[((long)var_339&3)]:var_339->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_339); /* is_ok on <var_339:Iterator[MClassType]>*/
 }
-if (var381){
+if (var340){
 {
-var382 = ((val* (*)(val* self))(var_380->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_380) /* item on <var_380:Iterator[MClassType]>*/;
+var341 = ((val*(*)(val* self))((((long)var_339&3)?class_info[((long)var_339&3)]:var_339->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_339); /* item on <var_339:Iterator[MClassType]>*/
 }
-var_ot = var382;
+var_ot = var341;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var385 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var385 == NULL)) {
+var344 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var344 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var383 = var385;
-RET_LABEL384:(void)0;
+var342 = var344;
+RET_LABEL343:(void)0;
 }
 }
 {
-var386 = ((short int (*)(val* self, val* p0, val* p1, val* p2))(var_ot->class->vft[COLOR_nit__model__MType__can_resolve_for]))(var_ot, var_t, var_t, var383) /* can_resolve_for on <var_ot:MClassType>*/;
+var345 = ((short int(*)(val* self, val* p0, val* p1, val* p2))(var_ot->class->vft[COLOR_nit__model__MType__can_resolve_for]))(var_ot, var_t, var_t, var342); /* can_resolve_for on <var_ot:MClassType>*/
 }
-var387 = !var386;
-if (var387){
-goto BREAK_label388;
+var346 = !var345;
+if (var346){
+goto BREAK_label347;
 } else {
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var391 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var391 == NULL)) {
+var350 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var350 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var389 = var391;
-RET_LABEL390:(void)0;
+var348 = var350;
+RET_LABEL349:(void)0;
 }
 }
 {
-var392 = nit___nit__MClassType___MType__anchor_to(var_ot, var389, var_t);
+var351 = nit___nit__MClassType___MType__anchor_to(var_ot, var348, var_t);
 }
-var_rt = var392;
+var_rt = var351;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
-var395 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
-if (unlikely(var395 == NULL)) {
+var354 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
+if (unlikely(var354 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 60);
+fatal_exit(1);
 }
-var393 = var395;
-RET_LABEL394:(void)0;
+var352 = var354;
+RET_LABEL353:(void)0;
 }
 }
 {
-var396 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var393, var_rt);
+var355 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var352, var_rt);
+}
+if (var355){
+goto BREAK_label347;
+} else {
+}
+{
+var356 = nit___nit__RapidTypeAnalysis___check_depth(self, var_rt);
 }
-if (var396){
-goto BREAK_label388;
+var357 = !var356;
+if (var357){
+goto BREAK_label347;
 } else {
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
-var399 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
-if (unlikely(var399 == NULL)) {
+var360 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
+if (unlikely(var360 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 60);
+fatal_exit(1);
 }
-var397 = var399;
-RET_LABEL398:(void)0;
+var358 = var360;
+RET_LABEL359:(void)0;
 }
 }
 {
-standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var397, var_rt); /* Direct call hash_collection#HashSet#add on <var397:HashSet[MClassType]>*/
+standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var358, var_rt); /* Direct call hash_collection#HashSet#add on <var358:HashSet[MClassType]>*/
 }
 {
 standard___standard__Sequence___SimpleCollection__add(var_todo_types, var_rt); /* Direct call abstract_collection#Sequence#add on <var_todo_types:List[MClassType]>*/
 }
+BREAK_label347: (void)0;
 {
-nit___nit__RapidTypeAnalysis___check_depth(self, var_rt); /* Direct call rapid_type_analysis#RapidTypeAnalysis#check_depth on <self:RapidTypeAnalysis>*/
-}
-BREAK_label388: (void)0;
-{
-((void (*)(val* self))(var_380->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_380) /* next on <var_380:Iterator[MClassType]>*/;
+((void(*)(val* self))((((long)var_339&3)?class_info[((long)var_339&3)]:var_339->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_339); /* next on <var_339:Iterator[MClassType]>*/
 }
 } else {
-goto BREAK_label400;
+goto BREAK_label361;
 }
 }
-BREAK_label400: (void)0;
+BREAK_label361: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_380) on <var_380:Iterator[MClassType]> */
-RET_LABEL401:(void)0;
-}
+((void(*)(val* self))((((long)var_339&3)?class_info[((long)var_339&3)]:var_339->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_339); /* finish on <var_339:Iterator[MClassType]>*/
 }
 } else {
-goto BREAK_label402;
+goto BREAK_label362;
 }
 }
-BREAK_label402: (void)0;
+BREAK_label362: (void)0;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types (self) on <self:RapidTypeAnalysis> */
-var405 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on <self:RapidTypeAnalysis> */
-if (unlikely(var405 == NULL)) {
+var365 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on <self:RapidTypeAnalysis> */
+if (unlikely(var365 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 68);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 75);
+fatal_exit(1);
 }
-var403 = var405;
-RET_LABEL404:(void)0;
+var363 = var365;
+RET_LABEL364:(void)0;
 }
 }
-var_406 = var403;
+var_366 = var363;
 {
-var407 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_406);
+var367 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_366);
 }
-var_408 = var407;
+var_368 = var367;
 for(;;) {
 {
-var409 = ((short int (*)(val* self))(var_408->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_408) /* is_ok on <var_408:Iterator[MType]>*/;
+var369 = ((short int(*)(val* self))((((long)var_368&3)?class_info[((long)var_368&3)]:var_368->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_368); /* is_ok on <var_368:Iterator[MType]>*/
 }
-if (var409){
+if (var369){
 {
-var410 = ((val* (*)(val* self))(var_408->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_408) /* item on <var_408:Iterator[MType]>*/;
+var370 = ((val*(*)(val* self))((((long)var_368&3)?class_info[((long)var_368&3)]:var_368->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_368); /* item on <var_368:Iterator[MType]>*/
 }
-var_ot411 = var410;
+var_ot371 = var370;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
-var414 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
-if (unlikely(var414 == NULL)) {
+var374 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
+if (unlikely(var374 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 60);
+fatal_exit(1);
 }
-var412 = var414;
-RET_LABEL413:(void)0;
+var372 = var374;
+RET_LABEL373:(void)0;
 }
 }
-var_415 = var412;
+var_375 = var372;
 {
-var416 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_415);
+var376 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_375);
 }
-var_417 = var416;
+var_377 = var376;
 for(;;) {
 {
-var418 = ((short int (*)(val* self))(var_417->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_417) /* is_ok on <var_417:Iterator[MClassType]>*/;
+var378 = ((short int(*)(val* self))((((long)var_377&3)?class_info[((long)var_377&3)]:var_377->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_377); /* is_ok on <var_377:Iterator[MClassType]>*/
 }
-if (var418){
+if (var378){
 {
-var419 = ((val* (*)(val* self))(var_417->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_417) /* item on <var_417:Iterator[MClassType]>*/;
+var379 = ((val*(*)(val* self))((((long)var_377&3)?class_info[((long)var_377&3)]:var_377->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_377); /* item on <var_377:Iterator[MClassType]>*/
 }
-var_t420 = var419;
+var_t380 = var379;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var423 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var423 == NULL)) {
+var383 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var383 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var421 = var423;
-RET_LABEL422:(void)0;
+var381 = var383;
+RET_LABEL382:(void)0;
 }
 }
 {
-var424 = ((short int (*)(val* self, val* p0, val* p1, val* p2))(var_ot411->class->vft[COLOR_nit__model__MType__can_resolve_for]))(var_ot411, var_t420, var_t420, var421) /* can_resolve_for on <var_ot411:MType>*/;
+var384 = ((short int(*)(val* self, val* p0, val* p1, val* p2))(var_ot371->class->vft[COLOR_nit__model__MType__can_resolve_for]))(var_ot371, var_t380, var_t380, var381); /* can_resolve_for on <var_ot371:MType>*/
 }
-var425 = !var424;
-if (var425){
-goto BREAK_label426;
+var385 = !var384;
+if (var385){
+goto BREAK_label386;
 } else {
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var429 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var429 == NULL)) {
+var389 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var389 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var427 = var429;
-RET_LABEL428:(void)0;
+var387 = var389;
+RET_LABEL388:(void)0;
 }
 }
 {
-var430 = ((val* (*)(val* self, val* p0, val* p1))(var_ot411->class->vft[COLOR_nit__model__MType__anchor_to]))(var_ot411, var427, var_t420) /* anchor_to on <var_ot411:MType>*/;
+var390 = ((val*(*)(val* self, val* p0, val* p1))(var_ot371->class->vft[COLOR_nit__model__MType__anchor_to]))(var_ot371, var387, var_t380); /* anchor_to on <var_ot371:MType>*/
 }
-var_rt431 = var430;
+var_rt391 = var390;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (self) on <self:RapidTypeAnalysis> */
-var434 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <self:RapidTypeAnalysis> */
-if (unlikely(var434 == NULL)) {
+var394 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <self:RapidTypeAnalysis> */
+if (unlikely(var394 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
+fatal_exit(1);
 }
-var432 = var434;
-RET_LABEL433:(void)0;
+var392 = var394;
+RET_LABEL393:(void)0;
 }
 }
 {
-standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var432, var_rt431); /* Direct call hash_collection#HashSet#add on <var432:HashSet[MType]>*/
+standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var392, var_rt391); /* Direct call hash_collection#HashSet#add on <var392:HashSet[MType]>*/
 }
-BREAK_label426: (void)0;
+BREAK_label386: (void)0;
 {
-((void (*)(val* self))(var_417->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_417) /* next on <var_417:Iterator[MClassType]>*/;
+((void(*)(val* self))((((long)var_377&3)?class_info[((long)var_377&3)]:var_377->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_377); /* next on <var_377:Iterator[MClassType]>*/
 }
 } else {
-goto BREAK_label435;
+goto BREAK_label395;
 }
 }
-BREAK_label435: (void)0;
+BREAK_label395: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_417) on <var_417:Iterator[MClassType]> */
-RET_LABEL436:(void)0;
-}
+((void(*)(val* self))((((long)var_377&3)?class_info[((long)var_377&3)]:var_377->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_377); /* finish on <var_377:Iterator[MClassType]>*/
 }
 {
-((void (*)(val* self))(var_408->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_408) /* next on <var_408:Iterator[MType]>*/;
+((void(*)(val* self))((((long)var_368&3)?class_info[((long)var_368&3)]:var_368->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_368); /* next on <var_368:Iterator[MType]>*/
 }
 } else {
-goto BREAK_label437;
+goto BREAK_label396;
 }
 }
-BREAK_label437: (void)0;
+BREAK_label396: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_408) on <var_408:Iterator[MType]> */
-RET_LABEL438:(void)0;
-}
+((void(*)(val* self))((((long)var_368&3)?class_info[((long)var_368&3)]:var_368->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_368); /* finish on <var_368:Iterator[MType]>*/
 }
 RET_LABEL:;
 }
-/* method rapid_type_analysis#RapidTypeAnalysis#check_depth for (self: RapidTypeAnalysis, MClassType) */
-void nit___nit__RapidTypeAnalysis___check_depth(val* self, val* p0) {
+/* method rapid_type_analysis#RapidTypeAnalysis#check_depth for (self: RapidTypeAnalysis, MClassType): Bool */
+short int nit___nit__RapidTypeAnalysis___check_depth(val* self, val* p0) {
+short int var /* : Bool */;
 val* var_mtype /* var mtype: MClassType */;
-long var /* : Int */;
-long var_d /* var d: Int */;
 long var1 /* : Int */;
+long var_d /* var d: Int */;
 short int var2 /* : Bool */;
 short int var4 /* : Bool */;
 int cltype;
@@ -2754,45 +3453,40 @@ val* var6 /* : ModelBuilder */;
 val* var8 /* : ModelBuilder */;
 val* var9 /* : ToolContext */;
 val* var11 /* : ToolContext */;
-val* var12 /* : null */;
+val* var12 /* : NativeArray[String] */;
 static val* varonce;
-val* var13 /* : String */;
-char* var14 /* : NativeString */;
-long var15 /* : Int */;
+static val* varonce13;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
 val* var16 /* : FlatString */;
 static val* varonce17;
 val* var18 /* : String */;
 char* var19 /* : NativeString */;
-long var20 /* : Int */;
-val* var21 /* : FlatString */;
-static val* varonce22;
-val* var23 /* : String */;
-char* var24 /* : NativeString */;
-long var25 /* : Int */;
-val* var26 /* : FlatString */;
-val* var27 /* : Array[Object] */;
-long var28 /* : Int */;
-val* var29 /* : NativeArray[Object] */;
-val* var30 /* : Object */;
-val* var31 /* : String */;
+val* var20 /* : FlatString */;
+static val* varonce21;
+val* var22 /* : String */;
+char* var23 /* : NativeString */;
+val* var24 /* : FlatString */;
+val* var25 /* : String */;
+val* var26 /* : String */;
+val* var27 /* : String */;
 var_mtype = p0;
 {
-var = ((long (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__length]))(var_mtype) /* length on <var_mtype:MClassType>*/;
+var1 = ((long(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__length]))(var_mtype); /* length on <var_mtype:MClassType>*/
 }
-var_d = var;
-var1 = 255;
+var_d = var1;
 {
-{ /* Inline kernel#Int#> (var_d,var1) on <var_d:Int> */
-/* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
-/* <var1:Int> isa OTHER */
-var4 = 1; /* easy <var1:Int> isa OTHER*/
+{ /* Inline kernel#Int#> (var_d,255l) on <var_d:Int> */
+/* Covariant cast for argument 0 (i) <255l:Int> isa OTHER */
+/* <255l:Int> isa OTHER */
+var4 = 1; /* easy <255l:Int> isa OTHER*/
 if (unlikely(!var4)) {
 var_class_name = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
 }
-var5 = var_d > var1;
+var5 = var_d > 255l;
 var2 = var5;
 goto RET_LABEL3;
 RET_LABEL3:(void)0;
@@ -2804,8 +3498,8 @@ if (var2){
 var8 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -2817,63 +3511,66 @@ var11 = var6->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].va
 if (unlikely(var11 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
-show_backtrace(1);
+fatal_exit(1);
 }
 var9 = var11;
 RET_LABEL10:(void)0;
 }
 }
-var12 = NULL;
-if (varonce) {
-var13 = varonce;
+if (unlikely(varonce==NULL)) {
+var12 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce13!=NULL)) {
+var14 = varonce13;
 } else {
-var14 = "Fatal error: limitation in the rapidtype analysis engine: a type depth of ";
-var15 = 74;
-var16 = standard___standard__NativeString___to_s_with_length(var14, var15);
-var13 = var16;
-varonce = var13;
+var15 = "Fatal Error: limitation in the rapidtype analysis engine: a type depth of ";
+var16 = standard___standard__NativeString___to_s_with_length(var15, 74l);
+var14 = var16;
+varonce13 = var14;
 }
-if (varonce17) {
+((struct instance_standard__NativeArray*)var12)->values[0]=var14;
+if (likely(varonce17!=NULL)) {
 var18 = varonce17;
 } else {
-var19 = " is too important, the problematic type is ";
-var20 = 43;
-var21 = standard___standard__NativeString___to_s_with_length(var19, var20);
-var18 = var21;
+var19 = " is too important, the problematic type is `";
+var20 = standard___standard__NativeString___to_s_with_length(var19, 44l);
+var18 = var20;
 varonce17 = var18;
 }
-if (varonce22) {
-var23 = varonce22;
+((struct instance_standard__NativeArray*)var12)->values[2]=var18;
+if (likely(varonce21!=NULL)) {
+var22 = varonce21;
+} else {
+var23 = "`.";
+var24 = standard___standard__NativeString___to_s_with_length(var23, 2l);
+var22 = var24;
+varonce21 = var22;
+}
+((struct instance_standard__NativeArray*)var12)->values[4]=var22;
 } else {
-var24 = ".";
-var25 = 1;
-var26 = standard___standard__NativeString___to_s_with_length(var24, var25);
-var23 = var26;
-varonce22 = var23;
+var12 = varonce;
+varonce = NULL;
 }
-var27 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var27 = array_instance Array[Object] */
-var28 = 5;
-var29 = NEW_standard__NativeArray(var28, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var29)->values[0] = (val*) var13;
-var30 = BOX_standard__Int(var_d); /* autobox from Int to Object */
-((struct instance_standard__NativeArray*)var29)->values[1] = (val*) var30;
-((struct instance_standard__NativeArray*)var29)->values[2] = (val*) var18;
-((struct instance_standard__NativeArray*)var29)->values[3] = (val*) var_mtype;
-((struct instance_standard__NativeArray*)var29)->values[4] = (val*) var23;
+var25 = standard__string___Int___Object__to_s(var_d);
+((struct instance_standard__NativeArray*)var12)->values[1]=var25;
 {
-((void (*)(val* self, val* p0, long p1))(var27->class->vft[COLOR_standard__array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
-}
+var26 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MClassType>*/
 }
+((struct instance_standard__NativeArray*)var12)->values[3]=var26;
 {
-var31 = ((val* (*)(val* self))(var27->class->vft[COLOR_standard__string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
+var27 = ((val*(*)(val* self))(var12->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var12); /* native_to_s on <var12:NativeArray[String]>*/
 }
+varonce = var12;
 {
-nit___nit__ToolContext___fatal_error(var9, var12, var31); /* Direct call toolcontext#ToolContext#fatal_error on <var9:ToolContext>*/
+nit___nit__ToolContext___fatal_error(var9, ((val*)NULL), var27); /* Direct call toolcontext#ToolContext#fatal_error on <var9:ToolContext>*/
 }
+var = 0;
+goto RET_LABEL;
 } else {
 }
+var = 1;
+goto RET_LABEL;
 RET_LABEL:;
+return var;
 }
 /* method rapid_type_analysis#RapidTypeAnalysis#add_new for (self: RapidTypeAnalysis, MClassType, MClassType) */
 void nit___nit__RapidTypeAnalysis___add_new(val* self, val* p0, val* p1) {
@@ -2908,73 +3605,73 @@ val* var_31 /* var : Iterator[MMethod] */;
 short int var32 /* : Bool */;
 val* var33 /* : nullable Object */;
 val* var_p /* var p: MMethod */;
-val* var35 /* : HashSet[MMethodDef] */;
-val* var37 /* : HashSet[MMethodDef] */;
-val* var_38 /* var : HashSet[MMethodDef] */;
-val* var39 /* : Iterator[nullable Object] */;
-val* var_40 /* var : Iterator[MMethodDef] */;
-short int var41 /* : Bool */;
-val* var42 /* : nullable Object */;
-val* var_p43 /* var p: MMethodDef */;
+val* var34 /* : HashSet[MMethodDef] */;
+val* var36 /* : HashSet[MMethodDef] */;
+val* var_37 /* var : HashSet[MMethodDef] */;
+val* var38 /* : Iterator[nullable Object] */;
+val* var_39 /* var : Iterator[MMethodDef] */;
+short int var40 /* : Bool */;
+val* var41 /* : nullable Object */;
+val* var_p42 /* var p: MMethodDef */;
+val* var44 /* : Array[MMethod] */;
 val* var46 /* : Array[MMethod] */;
-val* var48 /* : Array[MMethod] */;
-val* var_49 /* var : Array[MMethod] */;
-val* var50 /* : ArrayIterator[nullable Object] */;
-val* var_51 /* var : ArrayIterator[MMethod] */;
-short int var52 /* : Bool */;
-val* var53 /* : nullable Object */;
-val* var_p54 /* var p: MMethod */;
+val* var_47 /* var : Array[MMethod] */;
+val* var48 /* : ArrayIterator[nullable Object] */;
+val* var_49 /* var : ArrayIterator[MMethod] */;
+short int var50 /* : Bool */;
+val* var51 /* : nullable Object */;
+val* var_p52 /* var p: MMethod */;
+val* var53 /* : HashSet[MMethod] */;
 val* var55 /* : HashSet[MMethod] */;
-val* var57 /* : HashSet[MMethod] */;
-val* var60 /* : Array[MMethod] */;
-val* var62 /* : Array[MMethod] */;
-val* var63 /* : MModule */;
-val* var65 /* : MModule */;
-val* var66 /* : MClassType */;
+val* var57 /* : Array[MMethod] */;
+val* var59 /* : Array[MMethod] */;
+val* var60 /* : MModule */;
+val* var62 /* : MModule */;
+val* var63 /* : MClassType */;
 val* var_bound_mtype /* var bound_mtype: MClassType */;
-val* var67 /* : MModule */;
-val* var69 /* : MModule */;
-val* var70 /* : Set[MClassDef] */;
-val* var_71 /* var : Set[MClassDef] */;
-val* var72 /* : Iterator[nullable Object] */;
-val* var_73 /* var : Iterator[MClassDef] */;
-short int var74 /* : Bool */;
-val* var75 /* : nullable Object */;
+val* var64 /* : MModule */;
+val* var66 /* : MModule */;
+val* var67 /* : Set[MClassDef] */;
+val* var_68 /* var : Set[MClassDef] */;
+val* var69 /* : Iterator[nullable Object] */;
+val* var_70 /* var : Iterator[MClassDef] */;
+short int var71 /* : Bool */;
+val* var72 /* : nullable Object */;
 val* var_cd /* var cd: MClassDef */;
-val* var76 /* : ModelBuilder */;
-val* var78 /* : ModelBuilder */;
-val* var79 /* : Array[AAttrPropdef] */;
-val* var_80 /* var : Array[AAttrPropdef] */;
-val* var81 /* : ArrayIterator[nullable Object] */;
-val* var_82 /* var : ArrayIterator[AAttrPropdef] */;
-short int var83 /* : Bool */;
-val* var84 /* : nullable Object */;
+val* var73 /* : ModelBuilder */;
+val* var75 /* : ModelBuilder */;
+val* var76 /* : Array[AAttrPropdef] */;
+val* var_77 /* var : Array[AAttrPropdef] */;
+val* var78 /* : ArrayIterator[nullable Object] */;
+val* var_79 /* var : ArrayIterator[AAttrPropdef] */;
+short int var80 /* : Bool */;
+val* var81 /* : nullable Object */;
 val* var_npropdef /* var npropdef: AAttrPropdef */;
+short int var82 /* : Bool */;
+short int var84 /* : Bool */;
 short int var85 /* : Bool */;
-short int var87 /* : Bool */;
-short int var88 /* : Bool */;
-val* var90 /* : nullable MPropDef */;
-val* var92 /* : nullable MPropDef */;
-val* var_mpropdef /* var mpropdef: MAttributeDef */;
-val* var93 /* : RapidTypeVisitor */;
+val* var87 /* : nullable MMethodDef */;
+val* var89 /* : nullable MMethodDef */;
+val* var_mpropdef /* var mpropdef: MMethodDef */;
+val* var90 /* : RapidTypeVisitor */;
 val* var_v /* var v: RapidTypeVisitor */;
+val* var91 /* : nullable AExpr */;
+val* var93 /* : nullable AExpr */;
 val* var94 /* : nullable AExpr */;
 val* var96 /* : nullable AExpr */;
-val* var97 /* : nullable AExpr */;
-val* var99 /* : nullable AExpr */;
 var_recv = p0;
 var_mtype = p1;
 {
-var = ((short int (*)(val* self))(var_recv->class->vft[COLOR_nit__model__MType__need_anchor]))(var_recv) /* need_anchor on <var_recv:MClassType>*/;
+var = ((short int(*)(val* self))(var_recv->class->vft[COLOR_nit__model__MType__need_anchor]))(var_recv); /* need_anchor on <var_recv:MClassType>*/
 }
 var1 = !var;
 if (unlikely(!var1)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 323);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 336);
+fatal_exit(1);
 }
 {
-var2 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MClassType>*/;
+var2 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MClassType>*/
 }
 if (var2){
 {
@@ -2982,8 +3679,8 @@ if (var2){
 var5 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 58);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -3001,8 +3698,8 @@ goto RET_LABEL;
 var9 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
 if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 58);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
+fatal_exit(1);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
@@ -3017,8 +3714,8 @@ standard___standard__HashSet___standard__abstract_collection__SimpleCollection__
 var12 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
 if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 60);
+fatal_exit(1);
 }
 var10 = var12;
 RET_LABEL11:(void)0;
@@ -3036,8 +3733,8 @@ goto RET_LABEL;
 var16 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
 if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 60);
+fatal_exit(1);
 }
 var14 = var16;
 RET_LABEL15:(void)0;
@@ -3052,8 +3749,8 @@ standard___standard__HashSet___standard__abstract_collection__SimpleCollection__
 var19 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
 if (unlikely(var19 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
 var17 = var19;
 RET_LABEL18:(void)0;
@@ -3065,8 +3762,8 @@ var_mclass = var17;
 var22 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
 if (unlikely(var22 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 69);
+fatal_exit(1);
 }
 var20 = var22;
 RET_LABEL21:(void)0;
@@ -3084,8 +3781,8 @@ goto RET_LABEL;
 var26 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
 if (unlikely(var26 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 69);
+fatal_exit(1);
 }
 var24 = var26;
 RET_LABEL25:(void)0;
@@ -3099,8 +3796,8 @@ standard___standard__HashSet___standard__abstract_collection__SimpleCollection__
 var29 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on <self:RapidTypeAnalysis> */
 if (unlikely(var29 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 162);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 169);
+fatal_exit(1);
 }
 var27 = var29;
 RET_LABEL28:(void)0;
@@ -3113,18 +3810,18 @@ var30 = standard___standard__HashSet___standard__abstract_collection__Collection
 var_31 = var30;
 for(;;) {
 {
-var32 = ((short int (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_31) /* is_ok on <var_31:Iterator[MMethod]>*/;
+var32 = ((short int(*)(val* self))((((long)var_31&3)?class_info[((long)var_31&3)]:var_31->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_31); /* is_ok on <var_31:Iterator[MMethod]>*/
 }
 if (var32){
 {
-var33 = ((val* (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_31) /* item on <var_31:Iterator[MMethod]>*/;
+var33 = ((val*(*)(val* self))((((long)var_31&3)?class_info[((long)var_31&3)]:var_31->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_31); /* item on <var_31:Iterator[MMethod]>*/
 }
 var_p = var33;
 {
 nit___nit__RapidTypeAnalysis___try_send(self, var_mtype, var_p); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_send on <self:RapidTypeAnalysis>*/
 }
 {
-((void (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_31) /* next on <var_31:Iterator[MMethod]>*/;
+((void(*)(val* self))((((long)var_31&3)?class_info[((long)var_31&3)]:var_31->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_31); /* next on <var_31:Iterator[MMethod]>*/
 }
 } else {
 goto BREAK_label;
@@ -3132,280 +3829,270 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_31) on <var_31:Iterator[MMethod]> */
-RET_LABEL34:(void)0;
-}
+((void(*)(val* self))((((long)var_31&3)?class_info[((long)var_31&3)]:var_31->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_31); /* finish on <var_31:Iterator[MMethod]>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (self) on <self:RapidTypeAnalysis> */
-var37 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <self:RapidTypeAnalysis> */
-if (unlikely(var37 == NULL)) {
+var36 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <self:RapidTypeAnalysis> */
+if (unlikely(var36 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 107);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 114);
+fatal_exit(1);
 }
-var35 = var37;
-RET_LABEL36:(void)0;
+var34 = var36;
+RET_LABEL35:(void)0;
 }
 }
-var_38 = var35;
+var_37 = var34;
 {
-var39 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_38);
+var38 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_37);
 }
-var_40 = var39;
+var_39 = var38;
 for(;;) {
 {
-var41 = ((short int (*)(val* self))(var_40->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_40) /* is_ok on <var_40:Iterator[MMethodDef]>*/;
+var40 = ((short int(*)(val* self))((((long)var_39&3)?class_info[((long)var_39&3)]:var_39->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_39); /* is_ok on <var_39:Iterator[MMethodDef]>*/
 }
-if (var41){
+if (var40){
 {
-var42 = ((val* (*)(val* self))(var_40->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_40) /* item on <var_40:Iterator[MMethodDef]>*/;
+var41 = ((val*(*)(val* self))((((long)var_39&3)?class_info[((long)var_39&3)]:var_39->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_39); /* item on <var_39:Iterator[MMethodDef]>*/
 }
-var_p43 = var42;
+var_p42 = var41;
 {
-nit___nit__RapidTypeAnalysis___try_super_send(self, var_mtype, var_p43); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_super_send on <self:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___try_super_send(self, var_mtype, var_p42); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_super_send on <self:RapidTypeAnalysis>*/
 }
 {
-((void (*)(val* self))(var_40->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_40) /* next on <var_40:Iterator[MMethodDef]>*/;
+((void(*)(val* self))((((long)var_39&3)?class_info[((long)var_39&3)]:var_39->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_39); /* next on <var_39:Iterator[MMethodDef]>*/
 }
 } else {
-goto BREAK_label44;
+goto BREAK_label43;
 }
 }
-BREAK_label44: (void)0;
+BREAK_label43: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_40) on <var_40:Iterator[MMethodDef]> */
-RET_LABEL45:(void)0;
-}
+((void(*)(val* self))((((long)var_39&3)?class_info[((long)var_39&3)]:var_39->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_39); /* finish on <var_39:Iterator[MMethodDef]>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove (self) on <self:RapidTypeAnalysis> */
-var48 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
-if (unlikely(var48 == NULL)) {
+var46 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
+if (unlikely(var46 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 165);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
+fatal_exit(1);
 }
-var46 = var48;
-RET_LABEL47:(void)0;
+var44 = var46;
+RET_LABEL45:(void)0;
 }
 }
-var_49 = var46;
+var_47 = var44;
 {
-var50 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_49);
+var48 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_47);
 }
-var_51 = var50;
+var_49 = var48;
 for(;;) {
 {
-var52 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_51);
+var50 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_49);
 }
-if (var52){
+if (var50){
 {
-var53 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_51);
+var51 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_49);
 }
-var_p54 = var53;
+var_p52 = var51;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods (self) on <self:RapidTypeAnalysis> */
-var57 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on <self:RapidTypeAnalysis> */
-if (unlikely(var57 == NULL)) {
+var55 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on <self:RapidTypeAnalysis> */
+if (unlikely(var55 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 162);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 169);
+fatal_exit(1);
 }
-var55 = var57;
-RET_LABEL56:(void)0;
+var53 = var55;
+RET_LABEL54:(void)0;
 }
 }
 {
-standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var55, var_p54); /* Direct call hash_collection#HashSet#remove on <var55:HashSet[MMethod]>*/
+standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var53, var_p52); /* Direct call hash_collection#HashSet#remove on <var53:HashSet[MMethod]>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_51); /* Direct call array#ArrayIterator#next on <var_51:ArrayIterator[MMethod]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_49); /* Direct call array#ArrayIterator#next on <var_49:ArrayIterator[MMethod]>*/
 }
 } else {
-goto BREAK_label58;
+goto BREAK_label56;
 }
 }
-BREAK_label58: (void)0;
+BREAK_label56: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_51) on <var_51:ArrayIterator[MMethod]> */
-RET_LABEL59:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_49); /* Direct call array#ArrayIterator#finish on <var_49:ArrayIterator[MMethod]>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove (self) on <self:RapidTypeAnalysis> */
-var62 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
-if (unlikely(var62 == NULL)) {
+var59 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
+if (unlikely(var59 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 165);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
+fatal_exit(1);
 }
-var60 = var62;
-RET_LABEL61:(void)0;
+var57 = var59;
+RET_LABEL58:(void)0;
 }
 }
 {
-standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var60); /* Direct call array#AbstractArray#clear on <var60:Array[MMethod]>*/
+standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var57); /* Direct call array#AbstractArray#clear on <var57:Array[MMethod]>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var65 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var65 == NULL)) {
+var62 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var62 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var63 = var65;
-RET_LABEL64:(void)0;
+var60 = var62;
+RET_LABEL61:(void)0;
 }
 }
 {
-var66 = nit___nit__MClassType___MType__anchor_to(var_mtype, var63, var_recv);
+var63 = nit___nit__MClassType___MType__anchor_to(var_mtype, var60, var_recv);
 }
-var_bound_mtype = var66;
+var_bound_mtype = var63;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
-var69 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
-if (unlikely(var69 == NULL)) {
+var66 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var66 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var67 = var69;
-RET_LABEL68:(void)0;
+var64 = var66;
+RET_LABEL65:(void)0;
 }
 }
 {
-var70 = nit___nit__MClassType___MType__collect_mclassdefs(var_bound_mtype, var67);
+var67 = nit___nit__MClassType___MType__collect_mclassdefs(var_bound_mtype, var64);
 }
-var_71 = var70;
+var_68 = var67;
 {
-var72 = ((val* (*)(val* self))(var_71->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_71) /* iterator on <var_71:Set[MClassDef]>*/;
+var69 = ((val*(*)(val* self))((((long)var_68&3)?class_info[((long)var_68&3)]:var_68->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_68); /* iterator on <var_68:Set[MClassDef]>*/
 }
-var_73 = var72;
+var_70 = var69;
 for(;;) {
 {
-var74 = ((short int (*)(val* self))(var_73->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_73) /* is_ok on <var_73:Iterator[MClassDef]>*/;
+var71 = ((short int(*)(val* self))((((long)var_70&3)?class_info[((long)var_70&3)]:var_70->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_70); /* is_ok on <var_70:Iterator[MClassDef]>*/
 }
-if (var74){
+if (var71){
 {
-var75 = ((val* (*)(val* self))(var_73->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_73) /* item on <var_73:Iterator[MClassDef]>*/;
+var72 = ((val*(*)(val* self))((((long)var_70&3)?class_info[((long)var_70&3)]:var_70->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_70); /* item on <var_70:Iterator[MClassDef]>*/
 }
-var_cd = var75;
+var_cd = var72;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
-var78 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
-if (unlikely(var78 == NULL)) {
+var75 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
+if (unlikely(var75 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
+fatal_exit(1);
 }
-var76 = var78;
-RET_LABEL77:(void)0;
+var73 = var75;
+RET_LABEL74:(void)0;
 }
 }
 {
-var79 = nit__modelize_property___ModelBuilder___collect_attr_propdef(var76, var_cd);
+var76 = nit__modelize_property___ModelBuilder___collect_attr_propdef(var73, var_cd);
 }
-var_80 = var79;
+var_77 = var76;
 {
-var81 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_80);
+var78 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_77);
 }
-var_82 = var81;
+var_79 = var78;
 for(;;) {
 {
-var83 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_82);
+var80 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_79);
 }
-if (var83){
+if (var80){
 {
-var84 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_82);
+var81 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_79);
 }
-var_npropdef = var84;
+var_npropdef = var81;
 {
 { /* Inline modelize_property#AAttrPropdef#has_value (var_npropdef) on <var_npropdef:AAttrPropdef> */
-var87 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___has_value].s; /* _has_value on <var_npropdef:AAttrPropdef> */
-var85 = var87;
-RET_LABEL86:(void)0;
+var84 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___has_value].s; /* _has_value on <var_npropdef:AAttrPropdef> */
+var82 = var84;
+RET_LABEL83:(void)0;
 }
 }
-var88 = !var85;
-if (var88){
-goto BREAK_label89;
+var85 = !var82;
+if (var85){
+goto BREAK_label86;
 } else {
 }
 {
-{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:AAttrPropdef> */
-var92 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:AAttrPropdef> */
-var90 = var92;
-RET_LABEL91:(void)0;
+{ /* Inline modelize_property#AAttrPropdef#mreadpropdef (var_npropdef) on <var_npropdef:AAttrPropdef> */
+var89 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___mreadpropdef].val; /* _mreadpropdef on <var_npropdef:AAttrPropdef> */
+var87 = var89;
+RET_LABEL88:(void)0;
 }
 }
-if (unlikely(var90 == NULL)) {
+if (unlikely(var87 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 349);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 362);
+fatal_exit(1);
 }
-var_mpropdef = var90;
-var93 = NEW_nit__RapidTypeVisitor(&type_nit__RapidTypeVisitor);
+var_mpropdef = var87;
+var90 = NEW_nit__RapidTypeVisitor(&type_nit__RapidTypeVisitor);
 {
-((void (*)(val* self, val* p0))(var93->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__analysis_61d]))(var93, self) /* analysis= on <var93:RapidTypeVisitor>*/;
+((void(*)(val* self, val* p0))(var90->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__analysis_61d]))(var90, self); /* analysis= on <var90:RapidTypeVisitor>*/
 }
 {
-((void (*)(val* self, val* p0))(var93->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__receiver_61d]))(var93, var_bound_mtype) /* receiver= on <var93:RapidTypeVisitor>*/;
+((void(*)(val* self, val* p0))(var90->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__receiver_61d]))(var90, var_bound_mtype); /* receiver= on <var90:RapidTypeVisitor>*/
 }
 {
-((void (*)(val* self, val* p0))(var93->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__mpropdef_61d]))(var93, var_mpropdef) /* mpropdef= on <var93:RapidTypeVisitor>*/;
+((void(*)(val* self, val* p0))(var90->class->vft[COLOR_nit__rapid_type_analysis__RapidTypeVisitor__mpropdef_61d]))(var90, var_mpropdef); /* mpropdef= on <var90:RapidTypeVisitor>*/
 }
 {
-((void (*)(val* self))(var93->class->vft[COLOR_standard__kernel__Object__init]))(var93) /* init on <var93:RapidTypeVisitor>*/;
+((void(*)(val* self))(var90->class->vft[COLOR_standard__kernel__Object__init]))(var90); /* init on <var90:RapidTypeVisitor>*/
 }
-var_v = var93;
+var_v = var90;
 {
 { /* Inline parser_nodes#AAttrPropdef#n_expr (var_npropdef) on <var_npropdef:AAttrPropdef> */
-var96 = var_npropdef->attrs[COLOR_nit__parser_nodes__AAttrPropdef___n_expr].val; /* _n_expr on <var_npropdef:AAttrPropdef> */
-var94 = var96;
-RET_LABEL95:(void)0;
+var93 = var_npropdef->attrs[COLOR_nit__parser_nodes__AAttrPropdef___n_expr].val; /* _n_expr on <var_npropdef:AAttrPropdef> */
+var91 = var93;
+RET_LABEL92:(void)0;
 }
 }
 {
-nit___nit__Visitor___enter_visit(var_v, var94); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:RapidTypeVisitor>*/
+nit___nit__Visitor___enter_visit(var_v, var91); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:RapidTypeVisitor>*/
 }
 {
 { /* Inline parser_nodes#AAttrPropdef#n_block (var_npropdef) on <var_npropdef:AAttrPropdef> */
-var99 = var_npropdef->attrs[COLOR_nit__parser_nodes__AAttrPropdef___n_block].val; /* _n_block on <var_npropdef:AAttrPropdef> */
-var97 = var99;
-RET_LABEL98:(void)0;
+var96 = var_npropdef->attrs[COLOR_nit__parser_nodes__AAttrPropdef___n_block].val; /* _n_block on <var_npropdef:AAttrPropdef> */
+var94 = var96;
+RET_LABEL95:(void)0;
 }
 }
 {
-nit___nit__Visitor___enter_visit(var_v, var97); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:RapidTypeVisitor>*/
+nit___nit__Visitor___enter_visit(var_v, var94); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:RapidTypeVisitor>*/
 }
-BREAK_label89: (void)0;
+BREAK_label86: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_82); /* Direct call array#ArrayIterator#next on <var_82:ArrayIterator[AAttrPropdef]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_79); /* Direct call array#ArrayIterator#next on <var_79:ArrayIterator[AAttrPropdef]>*/
 }
 } else {
-goto BREAK_label100;
+goto BREAK_label97;
 }
 }
-BREAK_label100: (void)0;
+BREAK_label97: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_82) on <var_82:ArrayIterator[AAttrPropdef]> */
-RET_LABEL101:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_79); /* Direct call array#ArrayIterator#finish on <var_79:ArrayIterator[AAttrPropdef]>*/
 }
 {
-((void (*)(val* self))(var_73->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_73) /* next on <var_73:Iterator[MClassDef]>*/;
+((void(*)(val* self))((((long)var_70&3)?class_info[((long)var_70&3)]:var_70->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_70); /* next on <var_70:Iterator[MClassDef]>*/
 }
 } else {
-goto BREAK_label102;
+goto BREAK_label98;
 }
 }
-BREAK_label102: (void)0;
+BREAK_label98: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_73) on <var_73:Iterator[MClassDef]> */
-RET_LABEL103:(void)0;
-}
+((void(*)(val* self))((((long)var_70&3)?class_info[((long)var_70&3)]:var_70->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_70); /* finish on <var_70:Iterator[MClassDef]>*/
 }
 RET_LABEL:;
 }
@@ -3419,7 +4106,7 @@ val* var4 /* : HashSet[MType] */;
 val* var6 /* : HashSet[MType] */;
 var_mtype = p0;
 {
-var = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+var = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
 }
 if (var){
 {
@@ -3427,8 +4114,8 @@ if (var){
 var3 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on <self:RapidTypeAnalysis> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 68);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 75);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -3443,8 +4130,8 @@ standard___standard__HashSet___standard__abstract_collection__SimpleCollection__
 var6 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <self:RapidTypeAnalysis> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 65);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -3481,8 +4168,8 @@ var_mproperty = p1;
 var2 = var_recv->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_recv:MClassType> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -3493,8 +4180,8 @@ RET_LABEL1:(void)0;
 var5 = var->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var:MClass> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -3505,8 +4192,8 @@ RET_LABEL4:(void)0;
 var8 = var3->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var3:MClassDef> */
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -3518,8 +4205,8 @@ var_recv = var6;
 var11 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
 if (unlikely(var11 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
 var9 = var11;
 RET_LABEL10:(void)0;
@@ -3538,8 +4225,8 @@ goto RET_LABEL;
 var16 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
 if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
 var14 = var16;
 RET_LABEL15:(void)0;
@@ -3571,39 +4258,36 @@ val* var13 /* : Array[MPropDef] */;
 val* var15 /* : Array[MPropDef] */;
 long var16 /* : Int */;
 long var18 /* : Int */;
-long var19 /* : Int */;
-short int var20 /* : Bool */;
-short int var22 /* : Bool */;
+short int var19 /* : Bool */;
+short int var21 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var23 /* : Bool */;
-val* var24 /* : Array[MPropDef] */;
-val* var26 /* : Array[MPropDef] */;
+short int var22 /* : Bool */;
+val* var23 /* : Array[MPropDef] */;
+val* var25 /* : Array[MPropDef] */;
 val* var_ /* var : Array[MMethodDef] */;
-val* var27 /* : ArrayIterator[nullable Object] */;
-val* var_28 /* var : ArrayIterator[MMethodDef] */;
-short int var29 /* : Bool */;
-val* var30 /* : nullable Object */;
+val* var26 /* : ArrayIterator[nullable Object] */;
+val* var_27 /* var : ArrayIterator[MMethodDef] */;
+short int var28 /* : Bool */;
+val* var29 /* : nullable Object */;
 val* var_d /* var d: MMethodDef */;
-short int var31 /* : Bool */;
+val* var30 /* : HashSet[MMethodDef] */;
+val* var32 /* : HashSet[MMethodDef] */;
 short int var33 /* : Bool */;
-val* var34 /* : HashSet[MMethodDef] */;
-val* var36 /* : HashSet[MMethodDef] */;
-short int var37 /* : Bool */;
-short int var38 /* : Bool */;
-val* var41 /* : Array[MMethod] */;
-val* var43 /* : Array[MMethod] */;
-val* var44 /* : MProperty */;
-val* var46 /* : MProperty */;
+short int var34 /* : Bool */;
+val* var35 /* : Array[MMethod] */;
+val* var37 /* : Array[MMethod] */;
+val* var38 /* : MProperty */;
+val* var40 /* : MProperty */;
 var_mpropdef = p0;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (self) on <self:RapidTypeAnalysis> */
 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <self:RapidTypeAnalysis> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 79);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -3621,8 +4305,8 @@ goto RET_LABEL;
 var6 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <self:RapidTypeAnalysis> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 79);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -3636,8 +4320,8 @@ standard___standard__HashSet___standard__abstract_collection__SimpleCollection__
 var9 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
 if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 179);
+fatal_exit(1);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
@@ -3651,8 +4335,8 @@ standard___standard__Sequence___SimpleCollection__add(var7, var_mpropdef); /* Di
 var12 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
 if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
 var10 = var12;
 RET_LABEL11:(void)0;
@@ -3664,8 +4348,8 @@ var_mproperty = var10;
 var15 = var_mproperty->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MMethod> */
 if (unlikely(var15 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1963);
+fatal_exit(1);
 }
 var13 = var15;
 RET_LABEL14:(void)0;
@@ -3678,125 +4362,110 @@ var16 = var18;
 RET_LABEL17:(void)0;
 }
 }
-var19 = 1;
 {
-{ /* Inline kernel#Int#<= (var16,var19) on <var16:Int> */
-/* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
-/* <var19:Int> isa OTHER */
-var22 = 1; /* easy <var19:Int> isa OTHER*/
-if (unlikely(!var22)) {
+{ /* Inline kernel#Int#<= (var16,1l) on <var16:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var21 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var21)) {
 var_class_name = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 409);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 533);
+fatal_exit(1);
 }
-var23 = var16 <= var19;
-var20 = var23;
-goto RET_LABEL21;
-RET_LABEL21:(void)0;
+var22 = var16 <= 1l;
+var19 = var22;
+goto RET_LABEL20;
+RET_LABEL20:(void)0;
 }
 }
-if (var20){
+if (var19){
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline model#MProperty#mpropdefs (var_mproperty) on <var_mproperty:MMethod> */
-var26 = var_mproperty->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MMethod> */
-if (unlikely(var26 == NULL)) {
+var25 = var_mproperty->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MMethod> */
+if (unlikely(var25 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1963);
+fatal_exit(1);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
-var_ = var24;
+var_ = var23;
 {
-var27 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var26 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
 }
-var_28 = var27;
+var_27 = var26;
 for(;;) {
 {
-var29 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_28);
+var28 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_27);
 }
-if (var29){
-{
-var30 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_28);
-}
-var_d = var30;
+if (var28){
 {
-{ /* Inline model#MMethodDef#is_abstract (var_d) on <var_d:MMethodDef> */
-var33 = var_d->attrs[COLOR_nit__model__MMethodDef___is_abstract].s; /* _is_abstract on <var_d:MMethodDef> */
-var31 = var33;
-RET_LABEL32:(void)0;
-}
-}
-if (var31){
-goto BREAK_label;
-} else {
+var29 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_27);
 }
+var_d = var29;
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (self) on <self:RapidTypeAnalysis> */
-var36 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <self:RapidTypeAnalysis> */
-if (unlikely(var36 == NULL)) {
+var32 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <self:RapidTypeAnalysis> */
+if (unlikely(var32 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 72);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 79);
+fatal_exit(1);
 }
-var34 = var36;
-RET_LABEL35:(void)0;
+var30 = var32;
+RET_LABEL31:(void)0;
 }
 }
 {
-var37 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var34, var_d);
+var33 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var30, var_d);
 }
-var38 = !var37;
-if (var38){
+var34 = !var33;
+if (var34){
 goto RET_LABEL;
 } else {
 }
-BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_28); /* Direct call array#ArrayIterator#next on <var_28:ArrayIterator[MMethodDef]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_27); /* Direct call array#ArrayIterator#next on <var_27:ArrayIterator[MMethodDef]>*/
 }
 } else {
-goto BREAK_label39;
+goto BREAK_label;
 }
 }
-BREAK_label39: (void)0;
+BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_28) on <var_28:ArrayIterator[MMethodDef]> */
-RET_LABEL40:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_27); /* Direct call array#ArrayIterator#finish on <var_27:ArrayIterator[MMethodDef]>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods_to_remove (self) on <self:RapidTypeAnalysis> */
-var43 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
-if (unlikely(var43 == NULL)) {
+var37 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods_to_remove].val; /* _totry_methods_to_remove on <self:RapidTypeAnalysis> */
+if (unlikely(var37 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods_to_remove");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 165);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 172);
+fatal_exit(1);
 }
-var41 = var43;
-RET_LABEL42:(void)0;
+var35 = var37;
+RET_LABEL36:(void)0;
 }
 }
 {
 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
-var46 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
-if (unlikely(var46 == NULL)) {
+var40 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
+if (unlikely(var40 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var44 = var46;
-RET_LABEL45:(void)0;
+var38 = var40;
+RET_LABEL39:(void)0;
 }
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var41, var44); /* Direct call array#Array#add on <var41:Array[MMethod]>*/
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var35, var38); /* Direct call array#Array#add on <var35:Array[MMethod]>*/
 }
 RET_LABEL:;
 }
@@ -3815,27 +4484,26 @@ val* var10 /* : Array[MPropDef] */;
 val* var12 /* : Array[MPropDef] */;
 long var13 /* : Int */;
 long var15 /* : Int */;
-long var16 /* : Int */;
-short int var17 /* : Bool */;
-short int var19 /* : Bool */;
-val* var20 /* : Array[MPropDef] */;
-val* var22 /* : Array[MPropDef] */;
-val* var23 /* : nullable Object */;
+short int var16 /* : Bool */;
+short int var18 /* : Bool */;
+val* var19 /* : Array[MPropDef] */;
+val* var21 /* : Array[MPropDef] */;
+val* var22 /* : nullable Object */;
 val* var_d /* var d: MMethodDef */;
-val* var24 /* : HashSet[MMethod] */;
-val* var26 /* : HashSet[MMethod] */;
-val* var27 /* : HashSet[MClass] */;
-val* var29 /* : HashSet[MClass] */;
+val* var23 /* : HashSet[MMethod] */;
+val* var25 /* : HashSet[MMethod] */;
+val* var26 /* : HashSet[MClass] */;
+val* var28 /* : HashSet[MClass] */;
 val* var_ /* var : HashSet[MClass] */;
-val* var30 /* : Iterator[nullable Object] */;
-val* var_31 /* var : Iterator[MClass] */;
-short int var32 /* : Bool */;
-val* var33 /* : nullable Object */;
+val* var29 /* : Iterator[nullable Object] */;
+val* var_30 /* var : Iterator[MClass] */;
+short int var31 /* : Bool */;
+val* var32 /* : nullable Object */;
 val* var_c /* var c: MClass */;
-val* var34 /* : MClassDef */;
-val* var36 /* : MClassDef */;
-val* var37 /* : MClassType */;
-val* var39 /* : MClassType */;
+val* var33 /* : MClassDef */;
+val* var35 /* : MClassDef */;
+val* var36 /* : MClassType */;
+val* var38 /* : MClassType */;
 var_recv = p0;
 var_mproperty = p1;
 {
@@ -3843,8 +4511,8 @@ var_mproperty = p1;
 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___try_methods].val; /* _try_methods on <self:RapidTypeAnalysis> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_methods");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 168);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 175);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -3862,8 +4530,8 @@ goto RET_LABEL;
 var6 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on <self:RapidTypeAnalysis> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 75);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 82);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -3877,8 +4545,8 @@ standard___standard__HashSet___standard__abstract_collection__SimpleCollection__
 var9 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___try_methods].val; /* _try_methods on <self:RapidTypeAnalysis> */
 if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_methods");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 168);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 175);
+fatal_exit(1);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
@@ -3892,8 +4560,8 @@ standard___standard__HashSet___standard__abstract_collection__SimpleCollection__
 var12 = var_mproperty->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MMethod> */
 if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1963);
+fatal_exit(1);
 }
 var10 = var12;
 RET_LABEL11:(void)0;
@@ -3906,32 +4574,31 @@ var13 = var15;
 RET_LABEL14:(void)0;
 }
 }
-var16 = 1;
 {
-{ /* Inline kernel#Int#== (var13,var16) on <var13:Int> */
-var19 = var13 == var16;
-var17 = var19;
-goto RET_LABEL18;
-RET_LABEL18:(void)0;
+{ /* Inline kernel#Int#== (var13,1l) on <var13:Int> */
+var18 = var13 == 1l;
+var16 = var18;
+goto RET_LABEL17;
+RET_LABEL17:(void)0;
 }
 }
-if (var17){
+if (var16){
 {
 { /* Inline model#MProperty#mpropdefs (var_mproperty) on <var_mproperty:MMethod> */
-var22 = var_mproperty->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MMethod> */
-if (unlikely(var22 == NULL)) {
+var21 = var_mproperty->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MMethod> */
+if (unlikely(var21 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1963);
+fatal_exit(1);
 }
-var20 = var22;
-RET_LABEL21:(void)0;
+var19 = var21;
+RET_LABEL20:(void)0;
 }
 }
 {
-var23 = standard___standard__SequenceRead___Collection__first(var20);
+var22 = standard___standard__SequenceRead___Collection__first(var19);
 }
-var_d = var23;
+var_d = var22;
 {
 nit___nit__RapidTypeAnalysis___add_call(self, var_d); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_call on <self:RapidTypeAnalysis>*/
 }
@@ -3940,74 +4607,74 @@ goto RET_LABEL;
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#totry_methods (self) on <self:RapidTypeAnalysis> */
-var26 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on <self:RapidTypeAnalysis> */
-if (unlikely(var26 == NULL)) {
+var25 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___totry_methods].val; /* _totry_methods on <self:RapidTypeAnalysis> */
+if (unlikely(var25 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _totry_methods");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 162);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 169);
+fatal_exit(1);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
 {
-standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var24, var_mproperty); /* Direct call hash_collection#HashSet#add on <var24:HashSet[MMethod]>*/
+standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var23, var_mproperty); /* Direct call hash_collection#HashSet#add on <var23:HashSet[MMethod]>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (self) on <self:RapidTypeAnalysis> */
-var29 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
-if (unlikely(var29 == NULL)) {
+var28 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
+if (unlikely(var28 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 69);
+fatal_exit(1);
 }
-var27 = var29;
-RET_LABEL28:(void)0;
+var26 = var28;
+RET_LABEL27:(void)0;
 }
 }
-var_ = var27;
+var_ = var26;
 {
-var30 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
+var29 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
 }
-var_31 = var30;
+var_30 = var29;
 for(;;) {
 {
-var32 = ((short int (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_31) /* is_ok on <var_31:Iterator[MClass]>*/;
+var31 = ((short int(*)(val* self))((((long)var_30&3)?class_info[((long)var_30&3)]:var_30->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_30); /* is_ok on <var_30:Iterator[MClass]>*/
 }
-if (var32){
+if (var31){
 {
-var33 = ((val* (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_31) /* item on <var_31:Iterator[MClass]>*/;
+var32 = ((val*(*)(val* self))((((long)var_30&3)?class_info[((long)var_30&3)]:var_30->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_30); /* item on <var_30:Iterator[MClass]>*/
 }
-var_c = var33;
+var_c = var32;
 {
 { /* Inline model#MClass#intro (var_c) on <var_c:MClass> */
-var36 = var_c->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var_c:MClass> */
-if (unlikely(var36 == NULL)) {
+var35 = var_c->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var_c:MClass> */
+if (unlikely(var35 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460);
+fatal_exit(1);
 }
-var34 = var36;
-RET_LABEL35:(void)0;
+var33 = var35;
+RET_LABEL34:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#bound_mtype (var34) on <var34:MClassDef> */
-var39 = var34->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var34:MClassDef> */
-if (unlikely(var39 == NULL)) {
+{ /* Inline model#MClassDef#bound_mtype (var33) on <var33:MClassDef> */
+var38 = var33->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var33:MClassDef> */
+if (unlikely(var38 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
+fatal_exit(1);
 }
-var37 = var39;
-RET_LABEL38:(void)0;
+var36 = var38;
+RET_LABEL37:(void)0;
 }
 }
 {
-nit___nit__RapidTypeAnalysis___try_send(self, var37, var_mproperty); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_send on <self:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___try_send(self, var36, var_mproperty); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_send on <self:RapidTypeAnalysis>*/
 }
 {
-((void (*)(val* self))(var_31->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_31) /* next on <var_31:Iterator[MClass]>*/;
+((void(*)(val* self))((((long)var_30&3)?class_info[((long)var_30&3)]:var_30->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_30); /* next on <var_30:Iterator[MClass]>*/
 }
 } else {
 goto BREAK_label;
@@ -4015,9 +4682,7 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_31) on <var_31:Iterator[MClass]> */
-RET_LABEL40:(void)0;
-}
+((void(*)(val* self))((((long)var_30&3)?class_info[((long)var_30&3)]:var_30->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_30); /* finish on <var_30:Iterator[MClass]>*/
 }
 RET_LABEL:;
 }
@@ -4049,8 +4714,8 @@ var_mpropdef = p1;
 var2 = var_recv->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_recv:MClassType> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -4061,8 +4726,8 @@ RET_LABEL1:(void)0;
 var5 = var->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var:MClass> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -4073,8 +4738,8 @@ RET_LABEL4:(void)0;
 var8 = var3->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var3:MClassDef> */
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -4086,8 +4751,8 @@ var_recv = var6;
 var11 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
 if (unlikely(var11 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
 var9 = var11;
 RET_LABEL10:(void)0;
@@ -4101,15 +4766,15 @@ var12 = nit___nit__MClassType___MType__collect_mclassdefs(var_recv, var9);
 var15 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
 if (unlikely(var15 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
+fatal_exit(1);
 }
 var13 = var15;
 RET_LABEL14:(void)0;
 }
 }
 {
-var16 = ((short int (*)(val* self, val* p0))(var12->class->vft[COLOR_standard__abstract_collection__Collection__has]))(var12, var13) /* has on <var12:Set[MClassDef]>*/;
+var16 = ((short int(*)(val* self, val* p0))((((long)var12&3)?class_info[((long)var12&3)]:var12->class)->vft[COLOR_standard__abstract_collection__Collection__has]))(var12, var13); /* has on <var12:Set[MClassDef]>*/
 }
 var17 = !var16;
 if (var17){
@@ -4121,8 +4786,8 @@ goto RET_LABEL;
 var20 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
 if (unlikely(var20 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
 var18 = var20;
 RET_LABEL19:(void)0;
@@ -4171,16 +4836,16 @@ RET_LABEL1:(void)0;
 }
 if (unlikely(!var)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 422);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 434);
+fatal_exit(1);
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (self) on <self:RapidTypeAnalysis> */
 var5 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <self:RapidTypeAnalysis> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 107);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 114);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -4198,8 +4863,8 @@ goto RET_LABEL;
 var9 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <self:RapidTypeAnalysis> */
 if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 107);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 114);
+fatal_exit(1);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
@@ -4213,8 +4878,8 @@ standard___standard__HashSet___standard__abstract_collection__SimpleCollection__
 var12 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <self:RapidTypeAnalysis> */
 if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 62);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 69);
+fatal_exit(1);
 }
 var10 = var12;
 RET_LABEL11:(void)0;
@@ -4227,11 +4892,11 @@ var13 = standard___standard__HashSet___standard__abstract_collection__Collection
 var_14 = var13;
 for(;;) {
 {
-var15 = ((short int (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_14) /* is_ok on <var_14:Iterator[MClass]>*/;
+var15 = ((short int(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_14); /* is_ok on <var_14:Iterator[MClass]>*/
 }
 if (var15){
 {
-var16 = ((val* (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_14) /* item on <var_14:Iterator[MClass]>*/;
+var16 = ((val*(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_14); /* item on <var_14:Iterator[MClass]>*/
 }
 var_c = var16;
 {
@@ -4239,8 +4904,8 @@ var_c = var16;
 var19 = var_c->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var_c:MClass> */
 if (unlikely(var19 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460);
+fatal_exit(1);
 }
 var17 = var19;
 RET_LABEL18:(void)0;
@@ -4251,8 +4916,8 @@ RET_LABEL18:(void)0;
 var22 = var17->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var17:MClassDef> */
 if (unlikely(var22 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
+fatal_exit(1);
 }
 var20 = var22;
 RET_LABEL21:(void)0;
@@ -4262,7 +4927,7 @@ RET_LABEL21:(void)0;
 nit___nit__RapidTypeAnalysis___try_super_send(self, var20, var_mpropdef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_super_send on <self:RapidTypeAnalysis>*/
 }
 {
-((void (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_14) /* next on <var_14:Iterator[MClass]>*/;
+((void(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_14); /* next on <var_14:Iterator[MClass]>*/
 }
 } else {
 goto BREAK_label;
@@ -4270,16 +4935,14 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_14) on <var_14:Iterator[MClass]> */
-RET_LABEL23:(void)0;
-}
+((void(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_14); /* finish on <var_14:Iterator[MClass]>*/
 }
 RET_LABEL:;
 }
 /* method rapid_type_analysis#RapidTypeAnalysis#init for (self: RapidTypeAnalysis) */
 void nit___nit__RapidTypeAnalysis___standard__kernel__Object__init(val* self) {
 {
-((void (*)(val* self))(self->class->vft[COLOR_nit___nit__RapidTypeAnalysis___standard__kernel__Object__init]))(self) /* init on <self:RapidTypeAnalysis>*/;
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__RapidTypeAnalysis___standard__kernel__Object__init]))(self); /* init on <self:RapidTypeAnalysis>*/
 }
 RET_LABEL:;
 }
@@ -4290,8 +4953,8 @@ val* var1 /* : RapidTypeAnalysis */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -4309,8 +4972,8 @@ val* var1 /* : MClassType */;
 var1 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <self:RapidTypeVisitor> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 448);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -4333,28 +4996,28 @@ val* var2 /* : MClassType */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
 {
-((void (*)(val* self))(self->class->vft[COLOR_nit___nit__RapidTypeVisitor___standard__kernel__Object__init]))(self) /* init on <self:RapidTypeVisitor>*/;
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__RapidTypeVisitor___standard__kernel__Object__init]))(self); /* init on <self:RapidTypeVisitor>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (self) on <self:RapidTypeVisitor> */
 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <self:RapidTypeVisitor> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 448);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
 }
 }
 {
-var3 = ((short int (*)(val* self))(var->class->vft[COLOR_nit__model__MType__need_anchor]))(var) /* need_anchor on <var:MClassType>*/;
+var3 = ((short int(*)(val* self))(var->class->vft[COLOR_nit__model__MType__need_anchor]))(var); /* need_anchor on <var:MClassType>*/
 }
 var4 = !var3;
 if (unlikely(!var4)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 441);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 453);
+fatal_exit(1);
 }
 RET_LABEL:;
 }
@@ -4364,23 +5027,28 @@ val* var_n /* var n: ANode */;
 short int var /* : Bool */;
 int cltype;
 int idtype;
-val* var1 /* : nullable MType */;
-val* var3 /* : nullable MType */;
-val* var_implicit_cast_to /* var implicit_cast_to: nullable MType */;
-val* var4 /* : null */;
-short int var5 /* : Bool */;
-short int var6 /* : Bool */;
+short int var1 /* : Bool */;
+val* var2 /* : nullable MType */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+short int var_ /* var : Bool */;
 short int var8 /* : Bool */;
-short int var9 /* : Bool */;
 short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-short int var13 /* : Bool */;
+val* var11 /* : nullable MType */;
+val* var13 /* : nullable MType */;
+val* var_implicit_cast_to /* var implicit_cast_to: nullable MType */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
+short int var17 /* : Bool */;
+short int var18 /* : Bool */;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
+short int var22 /* : Bool */;
 var_n = p0;
-{
-((void (*)(val* self, val* p0))(var_n->class->vft[COLOR_nit__rapid_type_analysis__ANode__accept_rapid_type_visitor]))(var_n, self) /* accept_rapid_type_visitor on <var_n:ANode>*/;
-}
 /* <var_n:ANode> isa AExpr */
 cltype = type_nit__AExpr.color;
 idtype = type_nit__AExpr.id;
@@ -4391,33 +5059,70 @@ var = var_n->type->type_table[cltype] == idtype;
 }
 if (var){
 {
+var2 = ((val*(*)(val* self))(var_n->class->vft[COLOR_nit__typing__AExpr__mtype]))(var_n); /* mtype on <var_n:ANode(AExpr)>*/
+}
+if (var2 == NULL) {
+var3 = 0; /* is null */
+} else {
+var3 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var2,((val*)NULL)) on <var2:nullable MType> */
+var_other = ((val*)NULL);
+{
+var6 = ((short int(*)(val* self, val* p0))(var2->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var2, var_other); /* == on <var2:nullable MType(MType)>*/
+}
+var7 = !var6;
+var4 = var7;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+var3 = var4;
+}
+var_ = var3;
+if (var3){
+var1 = var_;
+} else {
+{
+{ /* Inline typing#AExpr#is_typed (var_n) on <var_n:ANode(AExpr)> */
+var10 = var_n->attrs[COLOR_nit__typing__AExpr___is_typed].s; /* _is_typed on <var_n:ANode(AExpr)> */
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+var1 = var8;
+}
+if (var1){
+{
+((void(*)(val* self, val* p0))(var_n->class->vft[COLOR_nit__rapid_type_analysis__ANode__accept_rapid_type_visitor]))(var_n, self); /* accept_rapid_type_visitor on <var_n:ANode(AExpr)>*/
+}
+{
 { /* Inline typing#AExpr#implicit_cast_to (var_n) on <var_n:ANode(AExpr)> */
-var3 = var_n->attrs[COLOR_nit__typing__AExpr___implicit_cast_to].val; /* _implicit_cast_to on <var_n:ANode(AExpr)> */
-var1 = var3;
-RET_LABEL2:(void)0;
+var13 = var_n->attrs[COLOR_nit__typing__AExpr___implicit_cast_to].val; /* _implicit_cast_to on <var_n:ANode(AExpr)> */
+var11 = var13;
+RET_LABEL12:(void)0;
 }
 }
-var_implicit_cast_to = var1;
-var4 = NULL;
+var_implicit_cast_to = var11;
 if (var_implicit_cast_to == NULL) {
-var5 = 0; /* is null */
+var14 = 0; /* is null */
 } else {
-var5 = 1; /* arg is null and recv is not */
+var14 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_implicit_cast_to,var4) on <var_implicit_cast_to:nullable MType> */
-var_other = var4;
+{ /* Inline kernel#Object#!= (var_implicit_cast_to,((val*)NULL)) on <var_implicit_cast_to:nullable MType> */
+var_other = ((val*)NULL);
 {
-var8 = ((short int (*)(val* self, val* p0))(var_implicit_cast_to->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_implicit_cast_to, var_other) /* == on <var_implicit_cast_to:nullable MType(MType)>*/;
+var17 = ((short int(*)(val* self, val* p0))(var_implicit_cast_to->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_implicit_cast_to, var_other); /* == on <var_implicit_cast_to:nullable MType(MType)>*/
 }
-var9 = !var8;
-var6 = var9;
-goto RET_LABEL7;
-RET_LABEL7:(void)0;
+var18 = !var17;
+var15 = var18;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
 }
-var5 = var6;
+var14 = var15;
 }
-if (var5){
+if (var14){
 {
 nit___nit__RapidTypeVisitor___add_cast_type(self, var_implicit_cast_to); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_cast_type on <self:RapidTypeVisitor>*/
 }
@@ -4425,18 +5130,23 @@ nit___nit__RapidTypeVisitor___add_cast_type(self, var_implicit_cast_to); /* Dire
 }
 } else {
 }
+} else {
+{
+((void(*)(val* self, val* p0))(var_n->class->vft[COLOR_nit__rapid_type_analysis__ANode__accept_rapid_type_visitor]))(var_n, self); /* accept_rapid_type_visitor on <var_n:ANode>*/
+}
+}
 /* <var_n:ANode> isa AAnnotations */
-cltype11 = type_nit__AAnnotations.color;
-idtype12 = type_nit__AAnnotations.id;
-if(cltype11 >= var_n->type->table_size) {
-var10 = 0;
+cltype20 = type_nit__AAnnotations.color;
+idtype21 = type_nit__AAnnotations.id;
+if(cltype20 >= var_n->type->table_size) {
+var19 = 0;
 } else {
-var10 = var_n->type->type_table[cltype11] == idtype12;
+var19 = var_n->type->type_table[cltype20] == idtype21;
 }
-var13 = !var10;
-if (var13){
+var22 = !var19;
+if (var22){
 {
-((void (*)(val* self, val* p0))(var_n->class->vft[COLOR_nit__parser_nodes__ANode__visit_all]))(var_n, self) /* visit_all on <var_n:ANode>*/;
+((void(*)(val* self, val* p0))(var_n->class->vft[COLOR_nit__parser_nodes__ANode__visit_all]))(var_n, self); /* visit_all on <var_n:ANode>*/
 }
 } else {
 }
@@ -4456,21 +5166,20 @@ val* var10 /* : MType */;
 short int var11 /* : Bool */;
 int cltype;
 int idtype;
-val* var12 /* : null */;
-val* var13 /* : MType */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
+val* var12 /* : MType */;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
+short int var16 /* : Bool */;
 short int var17 /* : Bool */;
-short int var18 /* : Bool */;
 var_mtype = p0;
 {
 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
 var3 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -4481,8 +5190,8 @@ RET_LABEL2:(void)0;
 var6 = var1->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <var1:RapidTypeAnalysis> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -4493,15 +5202,15 @@ RET_LABEL5:(void)0;
 var9 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <self:RapidTypeVisitor> */
 if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 448);
+fatal_exit(1);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
 }
 }
 {
-var10 = ((val* (*)(val* self, val* p0, val* p1))(var_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_mtype, var4, var7) /* anchor_to on <var_mtype:MType>*/;
+var10 = ((val*(*)(val* self, val* p0, val* p1))(var_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_mtype, var4, var7); /* anchor_to on <var_mtype:MType>*/
 }
 var_mtype = var10;
 /* <var_mtype:MType> isa MNullType */
@@ -4513,84 +5222,41 @@ var11 = 0;
 var11 = var_mtype->type->type_table[cltype] == idtype;
 }
 if (var11){
-var12 = NULL;
-var = var12;
+var = ((val*)NULL);
 goto RET_LABEL;
 } else {
 }
 {
-var13 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
+var12 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__undecorate]))(var_mtype); /* undecorate on <var_mtype:MType>*/
 }
-var_mtype = var13;
+var_mtype = var12;
 /* <var_mtype:MType> isa MClassType */
-cltype15 = type_nit__MClassType.color;
-idtype16 = type_nit__MClassType.id;
-if(cltype15 >= var_mtype->type->table_size) {
-var14 = 0;
+cltype14 = type_nit__MClassType.color;
+idtype15 = type_nit__MClassType.id;
+if(cltype14 >= var_mtype->type->table_size) {
+var13 = 0;
 } else {
-var14 = var_mtype->type->type_table[cltype15] == idtype16;
+var13 = var_mtype->type->type_table[cltype14] == idtype15;
 }
-if (unlikely(!var14)) {
+if (unlikely(!var13)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 463);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 479);
+fatal_exit(1);
 }
 {
-var17 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType(MClassType)>*/;
+var16 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType(MClassType)>*/
 }
-var18 = !var17;
-if (unlikely(!var18)) {
+var17 = !var16;
+if (unlikely(!var17)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 464);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 480);
+fatal_exit(1);
 }
 var = var_mtype;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method rapid_type_analysis#RapidTypeVisitor#get_class for (self: RapidTypeVisitor, String): MClass */
-val* nit___nit__RapidTypeVisitor___get_class(val* self, val* p0) {
-val* var /* : MClass */;
-val* var_name /* var name: String */;
-val* var1 /* : RapidTypeAnalysis */;
-val* var3 /* : RapidTypeAnalysis */;
-val* var4 /* : MModule */;
-val* var6 /* : MModule */;
-val* var7 /* : MClass */;
-var_name = p0;
-{
-{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
-var3 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-}
-{
-{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var1) on <var1:RapidTypeAnalysis> */
-var6 = var1->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <var1:RapidTypeAnalysis> */
-if (unlikely(var6 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
-}
-var4 = var6;
-RET_LABEL5:(void)0;
-}
-}
-{
-var7 = nit__model___MModule___get_primitive_class(var4, var_name);
-}
-var = var7;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
 /* method rapid_type_analysis#RapidTypeVisitor#get_method for (self: RapidTypeVisitor, MType, String): MMethod */
 val* nit___nit__RapidTypeVisitor___get_method(val* self, val* p0, val* p1) {
 val* var /* : MMethod */;
@@ -4598,131 +5264,129 @@ val* var_recv /* var recv: MType */;
 val* var_name /* var name: String */;
 val* var1 /* : nullable MClassType */;
 val* var_mtype /* var mtype: nullable MClassType */;
-val* var2 /* : null */;
+short int var2 /* : Bool */;
 short int var3 /* : Bool */;
-short int var4 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var5 /* : Bool */;
 short int var6 /* : Bool */;
-short int var7 /* : Bool */;
-val* var8 /* : RapidTypeAnalysis */;
-val* var10 /* : RapidTypeAnalysis */;
-val* var11 /* : ModelBuilder */;
-val* var13 /* : ModelBuilder */;
-val* var14 /* : nullable ANode */;
-val* var16 /* : nullable ANode */;
-val* var17 /* : MClass */;
-val* var19 /* : MClass */;
-val* var20 /* : RapidTypeAnalysis */;
-val* var22 /* : RapidTypeAnalysis */;
-val* var23 /* : MModule */;
-val* var25 /* : MModule */;
-val* var26 /* : MMethod */;
+val* var7 /* : RapidTypeAnalysis */;
+val* var9 /* : RapidTypeAnalysis */;
+val* var10 /* : ModelBuilder */;
+val* var12 /* : ModelBuilder */;
+val* var13 /* : nullable ANode */;
+val* var15 /* : nullable ANode */;
+val* var16 /* : MClass */;
+val* var18 /* : MClass */;
+val* var19 /* : RapidTypeAnalysis */;
+val* var21 /* : RapidTypeAnalysis */;
+val* var22 /* : MModule */;
+val* var24 /* : MModule */;
+val* var25 /* : MMethod */;
 var_recv = p0;
 var_name = p1;
 {
 var1 = nit___nit__RapidTypeVisitor___cleanup_type(self, var_recv);
 }
 var_mtype = var1;
-var2 = NULL;
 if (var_mtype == NULL) {
-var3 = 0; /* is null */
+var2 = 0; /* is null */
 } else {
-var3 = 1; /* arg is null and recv is not */
+var2 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_mtype,var2) on <var_mtype:nullable MClassType> */
-var_other = var2;
+{ /* Inline kernel#Object#!= (var_mtype,((val*)NULL)) on <var_mtype:nullable MClassType> */
+var_other = ((val*)NULL);
 {
-var6 = ((short int (*)(val* self, val* p0))(var_mtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mtype, var_other) /* == on <var_mtype:nullable MClassType(MClassType)>*/;
+var5 = ((short int(*)(val* self, val* p0))(var_mtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mtype, var_other); /* == on <var_mtype:nullable MClassType(MClassType)>*/
 }
-var7 = !var6;
-var4 = var7;
-goto RET_LABEL5;
-RET_LABEL5:(void)0;
+var6 = !var5;
+var3 = var6;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
 }
-var3 = var4;
+var2 = var3;
 }
-if (unlikely(!var3)) {
+if (unlikely(!var2)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 476);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 487);
+fatal_exit(1);
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
-var10 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
-if (unlikely(var10 == NULL)) {
+var9 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
+if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
-var8 = var10;
-RET_LABEL9:(void)0;
+var7 = var9;
+RET_LABEL8:(void)0;
 }
 }
 {
-{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (var8) on <var8:RapidTypeAnalysis> */
-var13 = var8->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <var8:RapidTypeAnalysis> */
-if (unlikely(var13 == NULL)) {
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (var7) on <var7:RapidTypeAnalysis> */
+var12 = var7->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <var7:RapidTypeAnalysis> */
+if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 46);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
+fatal_exit(1);
 }
-var11 = var13;
-RET_LABEL12:(void)0;
+var10 = var12;
+RET_LABEL11:(void)0;
 }
 }
 {
 { /* Inline parser_nodes#Visitor#current_node (self) on <self:RapidTypeVisitor> */
-var16 = self->attrs[COLOR_nit__parser_nodes__Visitor___current_node].val; /* _current_node on <self:RapidTypeVisitor> */
-var14 = var16;
-RET_LABEL15:(void)0;
+var15 = self->attrs[COLOR_nit__parser_nodes__Visitor___current_node].val; /* _current_node on <self:RapidTypeVisitor> */
+var13 = var15;
+RET_LABEL14:(void)0;
 }
 }
-if (unlikely(var14 == NULL)) {
+if (unlikely(var13 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 477);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 488);
+fatal_exit(1);
 }
 {
 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:nullable MClassType(MClassType)> */
-var19 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:nullable MClassType(MClassType)> */
-if (unlikely(var19 == NULL)) {
+var18 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:nullable MClassType(MClassType)> */
+if (unlikely(var18 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var17 = var19;
-RET_LABEL18:(void)0;
+var16 = var18;
+RET_LABEL17:(void)0;
 }
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
-var22 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
-if (unlikely(var22 == NULL)) {
+var21 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
+if (unlikely(var21 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
-var20 = var22;
-RET_LABEL21:(void)0;
+var19 = var21;
+RET_LABEL20:(void)0;
 }
 }
 {
-{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var20) on <var20:RapidTypeAnalysis> */
-var25 = var20->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <var20:RapidTypeAnalysis> */
-if (unlikely(var25 == NULL)) {
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var19) on <var19:RapidTypeAnalysis> */
+var24 = var19->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <var19:RapidTypeAnalysis> */
+if (unlikely(var24 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var23 = var25;
-RET_LABEL24:(void)0;
+var22 = var24;
+RET_LABEL23:(void)0;
 }
 }
 {
-var26 = nit___nit__ModelBuilder___force_get_primitive_method(var11, var14, var_name, var17, var23);
+var25 = nit___nit__ModelBuilder___force_get_primitive_method(var10, var13, var_name, var16, var22);
 }
-var = var26;
+var = var25;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -4740,8 +5404,8 @@ var_mtype = p0;
 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -4752,8 +5416,8 @@ RET_LABEL1:(void)0;
 var5 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <self:RapidTypeVisitor> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 448);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -4785,8 +5449,8 @@ var_mproperty = p1;
 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -4797,8 +5461,8 @@ RET_LABEL1:(void)0;
 var5 = var->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on <var:RapidTypeAnalysis> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 75);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 82);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -4812,8 +5476,8 @@ standard___standard__HashSet___standard__abstract_collection__SimpleCollection__
 var8 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -4830,8 +5494,8 @@ var9 = var_mtype->type->type_table[cltype] == idtype;
 if (unlikely(!var9)) {
 var_class_name = var_mtype == NULL ? "null" : var_mtype->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 485);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 496);
+fatal_exit(1);
 }
 {
 nit___nit__RapidTypeAnalysis___try_send(var6, var_mtype, var_mproperty); /* Direct call rapid_type_analysis#RapidTypeAnalysis#try_send on <var6:RapidTypeAnalysis>*/
@@ -4849,8 +5513,8 @@ var_mtype = p0;
 var2 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -4864,138 +5528,136 @@ RET_LABEL:;
 /* method rapid_type_analysis#RapidTypeVisitor#add_callsite for (self: RapidTypeVisitor, nullable CallSite) */
 void nit___nit__RapidTypeVisitor___add_callsite(val* self, val* p0) {
 val* var_callsite /* var callsite: nullable CallSite */;
-val* var /* : null */;
+short int var /* : Bool */;
 short int var1 /* : Bool */;
-short int var2 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var3 /* : Bool */;
 short int var4 /* : Bool */;
-short int var5 /* : Bool */;
-val* var6 /* : MMethodDef */;
-val* var8 /* : MMethodDef */;
-val* var9 /* : Array[MProperty] */;
-val* var11 /* : Array[MProperty] */;
+val* var5 /* : MMethodDef */;
+val* var7 /* : MMethodDef */;
+val* var8 /* : Array[MProperty] */;
+val* var10 /* : Array[MProperty] */;
 val* var_ /* var : Array[MProperty] */;
-val* var12 /* : ArrayIterator[nullable Object] */;
-val* var_13 /* var : ArrayIterator[MProperty] */;
-short int var14 /* : Bool */;
-val* var15 /* : nullable Object */;
+val* var11 /* : ArrayIterator[nullable Object] */;
+val* var_12 /* var : ArrayIterator[MProperty] */;
+short int var13 /* : Bool */;
+val* var14 /* : nullable Object */;
 val* var_m /* var m: MProperty */;
-short int var16 /* : Bool */;
+short int var15 /* : Bool */;
 int cltype;
 int idtype;
-val* var17 /* : RapidTypeAnalysis */;
-val* var19 /* : RapidTypeAnalysis */;
-val* var20 /* : MType */;
-val* var22 /* : MType */;
+val* var16 /* : RapidTypeAnalysis */;
+val* var18 /* : RapidTypeAnalysis */;
+val* var19 /* : MType */;
+val* var21 /* : MType */;
+val* var22 /* : RapidTypeAnalysis */;
 val* var24 /* : RapidTypeAnalysis */;
-val* var26 /* : RapidTypeAnalysis */;
+val* var25 /* : MType */;
 val* var27 /* : MType */;
-val* var29 /* : MType */;
+val* var28 /* : MMethod */;
 val* var30 /* : MMethod */;
-val* var32 /* : MMethod */;
+val* var31 /* : RapidTypeAnalysis */;
 val* var33 /* : RapidTypeAnalysis */;
-val* var35 /* : RapidTypeAnalysis */;
+val* var34 /* : HashSet[CallSite] */;
 val* var36 /* : HashSet[CallSite] */;
-val* var38 /* : HashSet[CallSite] */;
 var_callsite = p0;
-var = NULL;
 if (var_callsite == NULL) {
-var1 = 0; /* is null */
+var = 0; /* is null */
 } else {
-var1 = 1; /* arg is null and recv is not */
+var = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_callsite,var) on <var_callsite:nullable CallSite> */
-var_other = var;
+{ /* Inline kernel#Object#!= (var_callsite,((val*)NULL)) on <var_callsite:nullable CallSite> */
+var_other = ((val*)NULL);
 {
-var4 = ((short int (*)(val* self, val* p0))(var_callsite->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_callsite, var_other) /* == on <var_callsite:nullable CallSite(CallSite)>*/;
+var3 = ((short int(*)(val* self, val* p0))(var_callsite->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_callsite, var_other); /* == on <var_callsite:nullable CallSite(CallSite)>*/
 }
-var5 = !var4;
-var2 = var5;
-goto RET_LABEL3;
-RET_LABEL3:(void)0;
+var4 = !var3;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
 }
-var1 = var2;
+var = var1;
 }
-if (var1){
+if (var){
 {
 { /* Inline typing#CallSite#mpropdef (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
-var8 = var_callsite->attrs[COLOR_nit__typing__CallSite___mpropdef].val; /* _mpropdef on <var_callsite:nullable CallSite(CallSite)> */
-if (unlikely(var8 == NULL)) {
+var7 = var_callsite->attrs[COLOR_nit__typing__CallSite___mpropdef].val; /* _mpropdef on <var_callsite:nullable CallSite(CallSite)> */
+if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 490);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 627);
+fatal_exit(1);
 }
-var6 = var8;
-RET_LABEL7:(void)0;
+var5 = var7;
+RET_LABEL6:(void)0;
 }
 }
 {
-{ /* Inline model#MMethodDef#initializers (var6) on <var6:MMethodDef> */
-var11 = var6->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var6:MMethodDef> */
-if (unlikely(var11 == NULL)) {
+{ /* Inline model#MMethodDef#initializers (var5) on <var5:MMethodDef> */
+var10 = var5->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var5:MMethodDef> */
+if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
 }
-var9 = var11;
-RET_LABEL10:(void)0;
+var8 = var10;
+RET_LABEL9:(void)0;
 }
 }
-var_ = var9;
+var_ = var8;
 {
-var12 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var11 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
 }
-var_13 = var12;
+var_12 = var11;
 for(;;) {
 {
-var14 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_13);
+var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_12);
 }
-if (var14){
+if (var13){
 {
-var15 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_13);
+var14 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_12);
 }
-var_m = var15;
+var_m = var14;
 /* <var_m:MProperty> isa MMethod */
 cltype = type_nit__MMethod.color;
 idtype = type_nit__MMethod.id;
 if(cltype >= var_m->type->table_size) {
-var16 = 0;
+var15 = 0;
 } else {
-var16 = var_m->type->type_table[cltype] == idtype;
+var15 = var_m->type->type_table[cltype] == idtype;
 }
-if (var16){
+if (var15){
 {
 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
-var19 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
-if (unlikely(var19 == NULL)) {
+var18 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
+if (unlikely(var18 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
-var17 = var19;
-RET_LABEL18:(void)0;
+var16 = var18;
+RET_LABEL17:(void)0;
 }
 }
 {
 { /* Inline typing#CallSite#recv (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
-var22 = var_callsite->attrs[COLOR_nit__typing__CallSite___recv].val; /* _recv on <var_callsite:nullable CallSite(CallSite)> */
-if (unlikely(var22 == NULL)) {
+var21 = var_callsite->attrs[COLOR_nit__typing__CallSite___recv].val; /* _recv on <var_callsite:nullable CallSite(CallSite)> */
+if (unlikely(var21 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 473);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 610);
+fatal_exit(1);
 }
-var20 = var22;
-RET_LABEL21:(void)0;
+var19 = var21;
+RET_LABEL20:(void)0;
 }
 }
 {
-nit___nit__RapidTypeAnalysis___add_send(var17, var20, var_m); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <var17:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___add_send(var16, var19, var_m); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <var16:RapidTypeAnalysis>*/
 }
 } else {
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_13); /* Direct call array#ArrayIterator#next on <var_13:ArrayIterator[MProperty]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_12); /* Direct call array#ArrayIterator#next on <var_12:ArrayIterator[MProperty]>*/
 }
 } else {
 goto BREAK_label;
@@ -5003,75 +5665,73 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_13) on <var_13:ArrayIterator[MProperty]> */
-RET_LABEL23:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_12); /* Direct call array#ArrayIterator#finish on <var_12:ArrayIterator[MProperty]>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
-var26 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
-if (unlikely(var26 == NULL)) {
+var24 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
+if (unlikely(var24 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var22 = var24;
+RET_LABEL23:(void)0;
 }
 }
 {
 { /* Inline typing#CallSite#recv (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
-var29 = var_callsite->attrs[COLOR_nit__typing__CallSite___recv].val; /* _recv on <var_callsite:nullable CallSite(CallSite)> */
-if (unlikely(var29 == NULL)) {
+var27 = var_callsite->attrs[COLOR_nit__typing__CallSite___recv].val; /* _recv on <var_callsite:nullable CallSite(CallSite)> */
+if (unlikely(var27 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 473);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 610);
+fatal_exit(1);
 }
-var27 = var29;
-RET_LABEL28:(void)0;
+var25 = var27;
+RET_LABEL26:(void)0;
 }
 }
 {
 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
-var32 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
-if (unlikely(var32 == NULL)) {
+var30 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
+if (unlikely(var30 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 624);
+fatal_exit(1);
 }
-var30 = var32;
-RET_LABEL31:(void)0;
+var28 = var30;
+RET_LABEL29:(void)0;
 }
 }
 {
-nit___nit__RapidTypeAnalysis___add_send(var24, var27, var30); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <var24:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___add_send(var22, var25, var28); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <var22:RapidTypeAnalysis>*/
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (self) on <self:RapidTypeVisitor> */
-var35 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
-if (unlikely(var35 == NULL)) {
+var33 = self->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <self:RapidTypeVisitor> */
+if (unlikely(var33 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
-var33 = var35;
-RET_LABEL34:(void)0;
+var31 = var33;
+RET_LABEL32:(void)0;
 }
 }
 {
-{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_callsites (var33) on <var33:RapidTypeAnalysis> */
-var38 = var33->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_callsites].val; /* _live_callsites on <var33:RapidTypeAnalysis> */
-if (unlikely(var38 == NULL)) {
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_callsites (var31) on <var31:RapidTypeAnalysis> */
+var36 = var31->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_callsites].val; /* _live_callsites on <var31:RapidTypeAnalysis> */
+if (unlikely(var36 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_callsites");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 78);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 85);
+fatal_exit(1);
 }
-var36 = var38;
-RET_LABEL37:(void)0;
+var34 = var36;
+RET_LABEL35:(void)0;
 }
 }
 {
-standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var36, var_callsite); /* Direct call hash_collection#HashSet#add on <var36:HashSet[CallSite]>*/
+standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var34, var_callsite); /* Direct call hash_collection#HashSet#add on <var34:HashSet[CallSite]>*/
 }
 } else {
 }
@@ -5115,8 +5775,48 @@ var3 = var->type->type_table[cltype] == idtype;
 if (unlikely(!var3)) {
 var_class_name = var == NULL ? "null" : var->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 514);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 525);
+fatal_exit(1);
+}
+{
+nit___nit__RapidTypeVisitor___add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
+}
+RET_LABEL:;
+}
+/* method rapid_type_analysis#AByteExpr#accept_rapid_type_visitor for (self: AByteExpr, RapidTypeVisitor) */
+void nit__rapid_type_analysis___AByteExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
+val* var_v /* var v: RapidTypeVisitor */;
+val* var /* : nullable MType */;
+val* var2 /* : nullable MType */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+var_v = p0;
+{
+{ /* Inline typing#AExpr#mtype (self) on <self:AByteExpr> */
+var2 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:AByteExpr> */
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+/* <var:nullable MType> isa MClassType */
+cltype = type_nit__MClassType.color;
+idtype = type_nit__MClassType.id;
+if(var == NULL) {
+var3 = 0;
+} else {
+if(cltype >= var->type->table_size) {
+var3 = 0;
+} else {
+var3 = var->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var3)) {
+var_class_name = var == NULL ? "null" : var->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 532);
+fatal_exit(1);
 }
 {
 nit___nit__RapidTypeVisitor___add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
@@ -5155,8 +5855,8 @@ var3 = var->type->type_table[cltype] == idtype;
 if (unlikely(!var3)) {
 var_class_name = var == NULL ? "null" : var->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 521);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 539);
+fatal_exit(1);
 }
 {
 nit___nit__RapidTypeVisitor___add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
@@ -5195,8 +5895,8 @@ var3 = var->type->type_table[cltype] == idtype;
 if (unlikely(!var3)) {
 var_class_name = var == NULL ? "null" : var->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 528);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 546);
+fatal_exit(1);
 }
 {
 nit___nit__RapidTypeVisitor___add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
@@ -5217,27 +5917,21 @@ val* var4 /* : RapidTypeAnalysis */;
 val* var6 /* : RapidTypeAnalysis */;
 val* var7 /* : MModule */;
 val* var9 /* : MModule */;
-static val* varonce;
-val* var10 /* : String */;
-char* var11 /* : NativeString */;
-long var12 /* : Int */;
-val* var13 /* : FlatString */;
-val* var14 /* : MClass */;
-val* var15 /* : Array[MType] */;
-long var16 /* : Int */;
-val* var_ /* var : Array[MType] */;
-val* var17 /* : Array[MType] */;
-val* var18 /* : nullable Object */;
-val* var19 /* : MClassType */;
+val* var10 /* : Array[MType] */;
+val* var11 /* : nullable Object */;
+val* var12 /* : MClassType */;
 val* var_native /* var native: MClassType */;
-val* var20 /* : nullable MClassType */;
-static val* varonce21;
-val* var22 /* : String */;
-char* var23 /* : NativeString */;
-long var24 /* : Int */;
-val* var25 /* : FlatString */;
-val* var26 /* : MMethod */;
+val* var13 /* : nullable MClassType */;
+static val* varonce;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
+val* var16 /* : FlatString */;
+val* var17 /* : MMethod */;
 val* var_prop /* var prop: MMethod */;
+val* var18 /* : nullable CallSite */;
+val* var20 /* : nullable CallSite */;
+val* var21 /* : nullable CallSite */;
+val* var23 /* : nullable CallSite */;
 var_v = p0;
 {
 { /* Inline typing#AExpr#mtype (self) on <self:AArrayExpr> */
@@ -5261,8 +5955,8 @@ var3 = var->type->type_table[cltype] == idtype;
 if (unlikely(!var3)) {
 var_class_name = var == NULL ? "null" : var->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 535);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 553);
+fatal_exit(1);
 }
 var_mtype = var;
 {
@@ -5273,8 +5967,8 @@ nit___nit__RapidTypeVisitor___add_type(var_v, var_mtype); /* Direct call rapid_t
 var6 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <var_v:RapidTypeVisitor> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -5285,135 +5979,131 @@ RET_LABEL5:(void)0;
 var9 = var4->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <var4:RapidTypeAnalysis> */
 if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 49);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
 }
 }
-if (varonce) {
-var10 = varonce;
-} else {
-var11 = "NativeArray";
-var12 = 11;
-var13 = standard___standard__NativeString___to_s_with_length(var11, var12);
-var10 = var13;
-varonce = var10;
-}
 {
-var14 = nit__model___MModule___get_primitive_class(var7, var10);
+var10 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MClassType__arguments]))(var_mtype); /* arguments on <var_mtype:MClassType>*/
 }
-var15 = NEW_standard__Array(&type_standard__Array__nit__MType);
-var16 = 1;
 {
-standard___standard__Array___with_capacity(var15, var16); /* Direct call array#Array#with_capacity on <var15:Array[MType]>*/
+var11 = standard___standard__SequenceRead___Collection__first(var10);
 }
-var_ = var15;
 {
-var17 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MClassType__arguments]))(var_mtype) /* arguments on <var_mtype:MClassType>*/;
+var12 = nit__model___MModule___native_array_type(var7, var11);
 }
+var_native = var12;
 {
-var18 = standard___standard__SequenceRead___Collection__first(var17);
+nit___nit__RapidTypeVisitor___add_type(var_v, var_native); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
 }
 {
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var18); /* Direct call array#AbstractArray#push on <var_:Array[MType]>*/
+var13 = nit___nit__RapidTypeVisitor___cleanup_type(var_v, var_mtype);
+}
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 557);
+fatal_exit(1);
+}
+var_mtype = var13;
+if (likely(varonce!=NULL)) {
+var14 = varonce;
+} else {
+var15 = "with_native";
+var16 = standard___standard__NativeString___to_s_with_length(var15, 11l);
+var14 = var16;
+varonce = var14;
 }
 {
-var19 = nit___nit__MClass___get_mtype(var14, var_);
+var17 = nit___nit__RapidTypeVisitor___get_method(var_v, var_mtype, var14);
 }
-var_native = var19;
+var_prop = var17;
 {
-nit___nit__RapidTypeVisitor___add_type(var_v, var_native); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
+nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_mtype, var_prop); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
 }
 {
-var20 = nit___nit__RapidTypeVisitor___cleanup_type(var_v, var_mtype);
+{ /* Inline typing#AArrayExpr#with_capacity_callsite (self) on <self:AArrayExpr> */
+var20 = self->attrs[COLOR_nit__typing__AArrayExpr___with_capacity_callsite].val; /* _with_capacity_callsite on <self:AArrayExpr> */
+var18 = var20;
+RET_LABEL19:(void)0;
 }
-if (unlikely(var20 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 539);
-show_backtrace(1);
 }
-var_mtype = var20;
-if (varonce21) {
-var22 = varonce21;
-} else {
-var23 = "with_native";
-var24 = 11;
-var25 = standard___standard__NativeString___to_s_with_length(var23, var24);
-var22 = var25;
-varonce21 = var22;
+{
+nit___nit__RapidTypeVisitor___add_callsite(var_v, var18); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
 }
 {
-var26 = nit___nit__RapidTypeVisitor___get_method(var_v, var_mtype, var22);
+{ /* Inline typing#AArrayExpr#push_callsite (self) on <self:AArrayExpr> */
+var23 = self->attrs[COLOR_nit__typing__AArrayExpr___push_callsite].val; /* _push_callsite on <self:AArrayExpr> */
+var21 = var23;
+RET_LABEL22:(void)0;
+}
 }
-var_prop = var26;
 {
-nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_mtype, var_prop); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
+nit___nit__RapidTypeVisitor___add_callsite(var_v, var21); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
 }
 RET_LABEL:;
 }
 /* method rapid_type_analysis#AStringFormExpr#accept_rapid_type_visitor for (self: AStringFormExpr, RapidTypeVisitor) */
 void nit__rapid_type_analysis___AStringFormExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
 val* var_v /* var v: RapidTypeVisitor */;
-static val* varonce;
-val* var /* : String */;
-char* var1 /* : NativeString */;
-long var2 /* : Int */;
-val* var3 /* : FlatString */;
-val* var4 /* : MClass */;
-val* var5 /* : MClassType */;
-val* var7 /* : MClassType */;
+val* var /* : RapidTypeAnalysis */;
+val* var2 /* : RapidTypeAnalysis */;
+val* var3 /* : MModule */;
+val* var5 /* : MModule */;
+val* var6 /* : MClassType */;
 val* var_native /* var native: MClassType */;
-static val* varonce8;
-val* var9 /* : String */;
-char* var10 /* : NativeString */;
-long var11 /* : Int */;
-val* var12 /* : FlatString */;
-val* var13 /* : MMethod */;
+static val* varonce;
+val* var7 /* : String */;
+char* var8 /* : NativeString */;
+val* var9 /* : FlatString */;
+val* var10 /* : MMethod */;
 val* var_prop /* var prop: MMethod */;
 var_v = p0;
-if (varonce) {
-var = varonce;
-} else {
-var1 = "NativeString";
-var2 = 12;
-var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
-var = var3;
-varonce = var;
-}
 {
-var4 = nit___nit__RapidTypeVisitor___get_class(var_v, var);
+{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (var_v) on <var_v:RapidTypeVisitor> */
+var2 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <var_v:RapidTypeVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
 }
 {
-{ /* Inline model#MClass#mclass_type (var4) on <var4:MClass> */
-var7 = var4->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var4:MClass> */
-if (unlikely(var7 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
-show_backtrace(1);
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var) on <var:RapidTypeAnalysis> */
+var5 = var->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <var:RapidTypeAnalysis> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var5 = var7;
-RET_LABEL6:(void)0;
+var3 = var5;
+RET_LABEL4:(void)0;
 }
 }
-var_native = var5;
+{
+var6 = nit__model___MModule___native_string_type(var3);
+}
+var_native = var6;
 {
 nit___nit__RapidTypeVisitor___add_type(var_v, var_native); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
 }
-if (varonce8) {
-var9 = varonce8;
+if (likely(varonce!=NULL)) {
+var7 = varonce;
 } else {
-var10 = "to_s_with_length";
-var11 = 16;
-var12 = standard___standard__NativeString___to_s_with_length(var10, var11);
-var9 = var12;
-varonce8 = var9;
+var8 = "to_s_with_length";
+var9 = standard___standard__NativeString___to_s_with_length(var8, 16l);
+var7 = var9;
+varonce = var7;
 }
 {
-var13 = nit___nit__RapidTypeVisitor___get_method(var_v, var_native, var9);
+var10 = nit___nit__RapidTypeVisitor___get_method(var_v, var_native, var7);
 }
-var_prop = var13;
+var_prop = var10;
 {
 nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_native, var_prop); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
 }
@@ -5422,192 +6112,121 @@ RET_LABEL:;
 /* method rapid_type_analysis#ASuperstringExpr#accept_rapid_type_visitor for (self: ASuperstringExpr, RapidTypeVisitor) */
 void nit__rapid_type_analysis___ASuperstringExpr___ANode__accept_rapid_type_visitor(val* self, val* p0) {
 val* var_v /* var v: RapidTypeVisitor */;
+val* var /* : RapidTypeAnalysis */;
+val* var2 /* : RapidTypeAnalysis */;
+val* var3 /* : MModule */;
+val* var5 /* : MModule */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var6 /* : MClassType */;
+val* var_object_type /* var object_type: MClassType */;
+val* var7 /* : MClassType */;
+val* var_arraytype /* var arraytype: MClassType */;
+val* var8 /* : MClassType */;
+val* var_nattype /* var nattype: MClassType */;
 static val* varonce;
-val* var /* : String */;
-char* var1 /* : NativeString */;
-long var2 /* : Int */;
-val* var3 /* : FlatString */;
-val* var4 /* : MClass */;
-val* var5 /* : Array[MClassType] */;
-long var6 /* : Int */;
-val* var_ /* var : Array[MClassType] */;
-static val* varonce7;
-val* var8 /* : String */;
-char* var9 /* : NativeString */;
-long var10 /* : Int */;
+val* var9 /* : String */;
+char* var10 /* : NativeString */;
 val* var11 /* : FlatString */;
-val* var12 /* : MClass */;
-val* var13 /* : MClassType */;
-val* var15 /* : MClassType */;
-val* var16 /* : MClassType */;
-val* var_arraytype /* var arraytype: MClassType */;
-static val* varonce17;
-val* var18 /* : String */;
-char* var19 /* : NativeString */;
-long var20 /* : Int */;
-val* var21 /* : FlatString */;
-val* var22 /* : MClass */;
-val* var23 /* : Array[MClassType] */;
-long var24 /* : Int */;
-val* var_25 /* var : Array[MClassType] */;
-static val* varonce26;
-val* var27 /* : String */;
-char* var28 /* : NativeString */;
-long var29 /* : Int */;
-val* var30 /* : FlatString */;
-val* var31 /* : MClass */;
-val* var32 /* : MClassType */;
-val* var34 /* : MClassType */;
-val* var35 /* : MClassType */;
-static val* varonce36;
-val* var37 /* : String */;
-char* var38 /* : NativeString */;
-long var39 /* : Int */;
-val* var40 /* : FlatString */;
-val* var41 /* : MMethod */;
+val* var12 /* : MMethod */;
 val* var_prop /* var prop: MMethod */;
-static val* varonce42;
-val* var43 /* : String */;
-char* var44 /* : NativeString */;
-long var45 /* : Int */;
-val* var46 /* : FlatString */;
-val* var47 /* : MMethod */;
+static val* varonce13;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
+val* var16 /* : FlatString */;
+val* var17 /* : MMethod */;
 val* var_prop2 /* var prop2: MMethod */;
+static val* varonce18;
+val* var19 /* : String */;
+char* var20 /* : NativeString */;
+val* var21 /* : FlatString */;
+val* var22 /* : MMethod */;
 var_v = p0;
-if (varonce) {
-var = varonce;
-} else {
-var1 = "Array";
-var2 = 5;
-var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
-var = var3;
-varonce = var;
-}
 {
-var4 = nit___nit__RapidTypeVisitor___get_class(var_v, var);
-}
-var5 = NEW_standard__Array(&type_standard__Array__nit__MClassType);
-var6 = 1;
-{
-standard___standard__Array___with_capacity(var5, var6); /* Direct call array#Array#with_capacity on <var5:Array[MClassType]>*/
+{ /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (var_v) on <var_v:RapidTypeVisitor> */
+var2 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <var_v:RapidTypeVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
-var_ = var5;
-if (varonce7) {
-var8 = varonce7;
-} else {
-var9 = "Object";
-var10 = 6;
-var11 = standard___standard__NativeString___to_s_with_length(var9, var10);
-var8 = var11;
-varonce7 = var8;
+var = var2;
+RET_LABEL1:(void)0;
 }
-{
-var12 = nit___nit__RapidTypeVisitor___get_class(var_v, var8);
 }
 {
-{ /* Inline model#MClass#mclass_type (var12) on <var12:MClass> */
-var15 = var12->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var12:MClass> */
-if (unlikely(var15 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
-show_backtrace(1);
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (var) on <var:RapidTypeAnalysis> */
+var5 = var->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <var:RapidTypeAnalysis> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 56);
+fatal_exit(1);
 }
-var13 = var15;
-RET_LABEL14:(void)0;
+var3 = var5;
+RET_LABEL4:(void)0;
 }
 }
+var_mmodule = var3;
 {
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var13); /* Direct call array#AbstractArray#push on <var_:Array[MClassType]>*/
+var6 = nit__model___MModule___string_type(var_mmodule);
 }
+var_object_type = var6;
 {
-var16 = nit___nit__MClass___get_mtype(var4, var_);
+var7 = nit__model___MModule___array_type(var_mmodule, var_object_type);
 }
-var_arraytype = var16;
+var_arraytype = var7;
 {
 nit___nit__RapidTypeVisitor___add_type(var_v, var_arraytype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
 }
-if (varonce17) {
-var18 = varonce17;
-} else {
-var19 = "NativeArray";
-var20 = 11;
-var21 = standard___standard__NativeString___to_s_with_length(var19, var20);
-var18 = var21;
-varonce17 = var18;
-}
 {
-var22 = nit___nit__RapidTypeVisitor___get_class(var_v, var18);
+var8 = nit__model___MModule___native_array_type(var_mmodule, var_object_type);
 }
-var23 = NEW_standard__Array(&type_standard__Array__nit__MClassType);
-var24 = 1;
+var_nattype = var8;
 {
-standard___standard__Array___with_capacity(var23, var24); /* Direct call array#Array#with_capacity on <var23:Array[MClassType]>*/
+nit___nit__RapidTypeVisitor___add_type(var_v, var_nattype); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
 }
-var_25 = var23;
-if (varonce26) {
-var27 = varonce26;
+if (likely(varonce!=NULL)) {
+var9 = varonce;
 } else {
-var28 = "Object";
-var29 = 6;
-var30 = standard___standard__NativeString___to_s_with_length(var28, var29);
-var27 = var30;
-varonce26 = var27;
-}
-{
-var31 = nit___nit__RapidTypeVisitor___get_class(var_v, var27);
-}
-{
-{ /* Inline model#MClass#mclass_type (var31) on <var31:MClass> */
-var34 = var31->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var31:MClass> */
-if (unlikely(var34 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
-show_backtrace(1);
-}
-var32 = var34;
-RET_LABEL33:(void)0;
-}
-}
-{
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_25, var32); /* Direct call array#AbstractArray#push on <var_25:Array[MClassType]>*/
+var10 = "join";
+var11 = standard___standard__NativeString___to_s_with_length(var10, 4l);
+var9 = var11;
+varonce = var9;
 }
 {
-var35 = nit___nit__MClass___get_mtype(var22, var_25);
+var12 = nit___nit__RapidTypeVisitor___get_method(var_v, var_arraytype, var9);
 }
+var_prop = var12;
 {
-nit___nit__RapidTypeVisitor___add_type(var_v, var35); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
+nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_arraytype, var_prop); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
 }
-if (varonce36) {
-var37 = varonce36;
+if (likely(varonce13!=NULL)) {
+var14 = varonce13;
 } else {
-var38 = "join";
-var39 = 4;
-var40 = standard___standard__NativeString___to_s_with_length(var38, var39);
-var37 = var40;
-varonce36 = var37;
+var15 = "with_native";
+var16 = standard___standard__NativeString___to_s_with_length(var15, 11l);
+var14 = var16;
+varonce13 = var14;
 }
 {
-var41 = nit___nit__RapidTypeVisitor___get_method(var_v, var_arraytype, var37);
+var17 = nit___nit__RapidTypeVisitor___get_method(var_v, var_arraytype, var14);
 }
-var_prop = var41;
+var_prop2 = var17;
 {
-nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_arraytype, var_prop); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
+nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_arraytype, var_prop2); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
 }
-if (varonce42) {
-var43 = varonce42;
+if (likely(varonce18!=NULL)) {
+var19 = varonce18;
 } else {
-var44 = "with_native";
-var45 = 11;
-var46 = standard___standard__NativeString___to_s_with_length(var44, var45);
-var43 = var46;
-varonce42 = var43;
+var20 = "native_to_s";
+var21 = standard___standard__NativeString___to_s_with_length(var20, 11l);
+var19 = var21;
+varonce18 = var19;
 }
 {
-var47 = nit___nit__RapidTypeVisitor___get_method(var_v, var_arraytype, var43);
+var22 = nit___nit__RapidTypeVisitor___get_method(var_v, var_nattype, var19);
 }
-var_prop2 = var47;
 {
-nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_arraytype, var_prop2); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
+nit___nit__RapidTypeVisitor___add_monomorphic_send(var_v, var_nattype, var22); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
 }
 RET_LABEL:;
 }
@@ -5646,8 +6265,8 @@ var3 = var->type->type_table[cltype] == idtype;
 if (unlikely(!var3)) {
 var_class_name = var == NULL ? "null" : var->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 571);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 595);
+fatal_exit(1);
 }
 var_mtype = var;
 {
@@ -5700,8 +6319,8 @@ var3 = var->type->type_table[cltype] == idtype;
 if (unlikely(!var3)) {
 var_class_name = var == NULL ? "null" : var->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 580);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 604);
+fatal_exit(1);
 }
 var_mtype = var;
 {
@@ -5751,8 +6370,8 @@ var3 = var->type->type_table[cltype] == idtype;
 if (unlikely(!var3)) {
 var_class_name = var == NULL ? "null" : var->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 589);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 613);
+fatal_exit(1);
 }
 {
 nit___nit__RapidTypeVisitor___add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
@@ -5791,8 +6410,8 @@ var3 = var->type->type_table[cltype] == idtype;
 if (unlikely(!var3)) {
 var_class_name = var == NULL ? "null" : var->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 596);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 620);
+fatal_exit(1);
 }
 {
 nit___nit__RapidTypeVisitor___add_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
@@ -5814,8 +6433,8 @@ RET_LABEL1:(void)0;
 }
 if (unlikely(var == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 603);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 627);
+fatal_exit(1);
 }
 {
 nit___nit__RapidTypeVisitor___add_cast_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_cast_type on <var_v:RapidTypeVisitor>*/
@@ -5837,8 +6456,8 @@ RET_LABEL1:(void)0;
 }
 if (unlikely(var == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 610);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 634);
+fatal_exit(1);
 }
 {
 nit___nit__RapidTypeVisitor___add_cast_type(var_v, var); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_cast_type on <var_v:RapidTypeVisitor>*/
@@ -5947,18 +6566,17 @@ val* var_v /* var v: RapidTypeVisitor */;
 val* var /* : nullable CallSite */;
 val* var2 /* : nullable CallSite */;
 val* var_callsite /* var callsite: nullable CallSite */;
-val* var3 /* : null */;
+short int var3 /* : Bool */;
 short int var4 /* : Bool */;
-short int var5 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var6 /* : Bool */;
 short int var7 /* : Bool */;
-short int var8 /* : Bool */;
-val* var9 /* : RapidTypeAnalysis */;
-val* var11 /* : RapidTypeAnalysis */;
-val* var12 /* : MClassType */;
-val* var14 /* : MClassType */;
-val* var15 /* : nullable MMethodDef */;
-val* var17 /* : nullable MMethodDef */;
+val* var8 /* : RapidTypeAnalysis */;
+val* var10 /* : RapidTypeAnalysis */;
+val* var11 /* : MClassType */;
+val* var13 /* : MClassType */;
+val* var14 /* : nullable MMethodDef */;
+val* var16 /* : nullable MMethodDef */;
 var_v = p0;
 {
 { /* Inline typing#ASuperExpr#callsite (self) on <self:ASuperExpr> */
@@ -5968,26 +6586,25 @@ RET_LABEL1:(void)0;
 }
 }
 var_callsite = var;
-var3 = NULL;
 if (var_callsite == NULL) {
-var4 = 0; /* is null */
+var3 = 0; /* is null */
 } else {
-var4 = 1; /* arg is null and recv is not */
+var3 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_callsite,var3) on <var_callsite:nullable CallSite> */
-var_other = var3;
+{ /* Inline kernel#Object#!= (var_callsite,((val*)NULL)) on <var_callsite:nullable CallSite> */
+var_other = ((val*)NULL);
 {
-var7 = ((short int (*)(val* self, val* p0))(var_callsite->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_callsite, var_other) /* == on <var_callsite:nullable CallSite(CallSite)>*/;
+var6 = ((short int(*)(val* self, val* p0))(var_callsite->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_callsite, var_other); /* == on <var_callsite:nullable CallSite(CallSite)>*/
 }
-var8 = !var7;
-var5 = var8;
-goto RET_LABEL6;
-RET_LABEL6:(void)0;
+var7 = !var6;
+var4 = var7;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
-var4 = var5;
+var3 = var4;
 }
-if (var4){
+if (var3){
 {
 nit___nit__RapidTypeVisitor___add_callsite(var_v, var_callsite); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
 }
@@ -5996,42 +6613,42 @@ goto RET_LABEL;
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeVisitor#analysis (var_v) on <var_v:RapidTypeVisitor> */
-var11 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <var_v:RapidTypeVisitor> */
-if (unlikely(var11 == NULL)) {
+var10 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___analysis].val; /* _analysis on <var_v:RapidTypeVisitor> */
+if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _analysis");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 435);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 447);
+fatal_exit(1);
 }
-var9 = var11;
-RET_LABEL10:(void)0;
+var8 = var10;
+RET_LABEL9:(void)0;
 }
 }
 {
 { /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (var_v) on <var_v:RapidTypeVisitor> */
-var14 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <var_v:RapidTypeVisitor> */
-if (unlikely(var14 == NULL)) {
+var13 = var_v->attrs[COLOR_nit__rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <var_v:RapidTypeVisitor> */
+if (unlikely(var13 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 436);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 448);
+fatal_exit(1);
 }
-var12 = var14;
-RET_LABEL13:(void)0;
+var11 = var13;
+RET_LABEL12:(void)0;
 }
 }
 {
 { /* Inline typing#ASuperExpr#mpropdef (self) on <self:ASuperExpr> */
-var17 = self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val; /* _mpropdef on <self:ASuperExpr> */
-var15 = var17;
-RET_LABEL16:(void)0;
+var16 = self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val; /* _mpropdef on <self:ASuperExpr> */
+var14 = var16;
+RET_LABEL15:(void)0;
 }
 }
-if (unlikely(var15 == NULL)) {
+if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 654);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 678);
+fatal_exit(1);
 }
 {
-nit___nit__RapidTypeAnalysis___add_super_send(var9, var12, var15); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on <var9:RapidTypeAnalysis>*/
+nit___nit__RapidTypeAnalysis___add_super_send(var8, var11, var14); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on <var8:RapidTypeAnalysis>*/
 }
 RET_LABEL:;
 }
@@ -6046,33 +6663,30 @@ val* var6 /* : nullable Array[Variable] */;
 val* var8 /* : nullable Array[Variable] */;
 long var9 /* : Int */;
 long var11 /* : Int */;
-long var12 /* : Int */;
-short int var13 /* : Bool */;
-short int var15 /* : Bool */;
-val* var16 /* : nullable CallSite */;
-val* var18 /* : nullable CallSite */;
-val* var19 /* : nullable Array[Variable] */;
-val* var21 /* : nullable Array[Variable] */;
-long var22 /* : Int */;
-long var24 /* : Int */;
-long var25 /* : Int */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+val* var15 /* : nullable CallSite */;
+val* var17 /* : nullable CallSite */;
+val* var18 /* : nullable Array[Variable] */;
+val* var20 /* : nullable Array[Variable] */;
+long var21 /* : Int */;
+long var23 /* : Int */;
+short int var24 /* : Bool */;
 short int var26 /* : Bool */;
-short int var28 /* : Bool */;
+val* var27 /* : nullable CallSite */;
 val* var29 /* : nullable CallSite */;
-val* var31 /* : nullable CallSite */;
+val* var30 /* : nullable CallSite */;
 val* var32 /* : nullable CallSite */;
-val* var34 /* : nullable CallSite */;
+val* var33 /* : nullable CallSite */;
 val* var35 /* : nullable CallSite */;
-val* var37 /* : nullable CallSite */;
+val* var36 /* : nullable CallSite */;
 val* var38 /* : nullable CallSite */;
-val* var40 /* : nullable CallSite */;
 val* var_mf /* var mf: nullable CallSite */;
-val* var41 /* : null */;
+short int var39 /* : Bool */;
+short int var40 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var42 /* : Bool */;
 short int var43 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var45 /* : Bool */;
-short int var46 /* : Bool */;
 var_v = p0;
 {
 { /* Inline typing#AForExpr#method_iterator (self) on <self:AForExpr> */
@@ -6103,138 +6717,135 @@ RET_LABEL7:(void)0;
 }
 if (var6 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 663);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 687);
+fatal_exit(1);
 } else {
 { /* Inline array#AbstractArrayRead#length (var6) on <var6:nullable Array[Variable]> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 24);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 26);
+fatal_exit(1);
 }
 var11 = var6->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var6:nullable Array[Variable]> */
 var9 = var11;
 RET_LABEL10:(void)0;
 }
 }
-var12 = 1;
 {
-{ /* Inline kernel#Int#== (var9,var12) on <var9:Int> */
-var15 = var9 == var12;
-var13 = var15;
-goto RET_LABEL14;
-RET_LABEL14:(void)0;
+{ /* Inline kernel#Int#== (var9,1l) on <var9:Int> */
+var14 = var9 == 1l;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
 }
-if (var13){
+if (var12){
 {
 { /* Inline typing#AForExpr#method_item (self) on <self:AForExpr> */
-var18 = self->attrs[COLOR_nit__typing__AForExpr___method_item].val; /* _method_item on <self:AForExpr> */
-var16 = var18;
-RET_LABEL17:(void)0;
+var17 = self->attrs[COLOR_nit__typing__AForExpr___method_item].val; /* _method_item on <self:AForExpr> */
+var15 = var17;
+RET_LABEL16:(void)0;
 }
 }
 {
-nit___nit__RapidTypeVisitor___add_callsite(var_v, var16); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
+nit___nit__RapidTypeVisitor___add_callsite(var_v, var15); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
 }
 } else {
 {
 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
-var21 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
-var19 = var21;
-RET_LABEL20:(void)0;
+var20 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
+var18 = var20;
+RET_LABEL19:(void)0;
 }
 }
-if (var19 == NULL) {
+if (var18 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 665);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 689);
+fatal_exit(1);
 } else {
-{ /* Inline array#AbstractArrayRead#length (var19) on <var19:nullable Array[Variable]> */
-if (unlikely(var19 == NULL)) {
+{ /* Inline array#AbstractArrayRead#length (var18) on <var18:nullable Array[Variable]> */
+if (unlikely(var18 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 24);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 26);
+fatal_exit(1);
 }
-var24 = var19->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var19:nullable Array[Variable]> */
-var22 = var24;
-RET_LABEL23:(void)0;
+var23 = var18->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var18:nullable Array[Variable]> */
+var21 = var23;
+RET_LABEL22:(void)0;
 }
 }
-var25 = 2;
 {
-{ /* Inline kernel#Int#== (var22,var25) on <var22:Int> */
-var28 = var22 == var25;
-var26 = var28;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
+{ /* Inline kernel#Int#== (var21,2l) on <var21:Int> */
+var26 = var21 == 2l;
+var24 = var26;
+goto RET_LABEL25;
+RET_LABEL25:(void)0;
 }
 }
-if (var26){
+if (var24){
 {
 { /* Inline typing#AForExpr#method_key (self) on <self:AForExpr> */
-var31 = self->attrs[COLOR_nit__typing__AForExpr___method_key].val; /* _method_key on <self:AForExpr> */
-var29 = var31;
-RET_LABEL30:(void)0;
+var29 = self->attrs[COLOR_nit__typing__AForExpr___method_key].val; /* _method_key on <self:AForExpr> */
+var27 = var29;
+RET_LABEL28:(void)0;
 }
 }
 {
-nit___nit__RapidTypeVisitor___add_callsite(var_v, var29); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
+nit___nit__RapidTypeVisitor___add_callsite(var_v, var27); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
 }
 {
 { /* Inline typing#AForExpr#method_item (self) on <self:AForExpr> */
-var34 = self->attrs[COLOR_nit__typing__AForExpr___method_item].val; /* _method_item on <self:AForExpr> */
-var32 = var34;
-RET_LABEL33:(void)0;
+var32 = self->attrs[COLOR_nit__typing__AForExpr___method_item].val; /* _method_item on <self:AForExpr> */
+var30 = var32;
+RET_LABEL31:(void)0;
 }
 }
 {
-nit___nit__RapidTypeVisitor___add_callsite(var_v, var32); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
+nit___nit__RapidTypeVisitor___add_callsite(var_v, var30); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
 }
 } else {
 PRINT_ERROR("Runtime error: %s", "Aborted");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 669);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 693);
+fatal_exit(1);
 }
 }
 {
 { /* Inline typing#AForExpr#method_next (self) on <self:AForExpr> */
-var37 = self->attrs[COLOR_nit__typing__AForExpr___method_next].val; /* _method_next on <self:AForExpr> */
-var35 = var37;
-RET_LABEL36:(void)0;
+var35 = self->attrs[COLOR_nit__typing__AForExpr___method_next].val; /* _method_next on <self:AForExpr> */
+var33 = var35;
+RET_LABEL34:(void)0;
 }
 }
 {
-nit___nit__RapidTypeVisitor___add_callsite(var_v, var35); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
+nit___nit__RapidTypeVisitor___add_callsite(var_v, var33); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
 }
 {
 { /* Inline typing#AForExpr#method_finish (self) on <self:AForExpr> */
-var40 = self->attrs[COLOR_nit__typing__AForExpr___method_finish].val; /* _method_finish on <self:AForExpr> */
-var38 = var40;
-RET_LABEL39:(void)0;
+var38 = self->attrs[COLOR_nit__typing__AForExpr___method_finish].val; /* _method_finish on <self:AForExpr> */
+var36 = var38;
+RET_LABEL37:(void)0;
 }
 }
-var_mf = var38;
-var41 = NULL;
+var_mf = var36;
 if (var_mf == NULL) {
-var42 = 0; /* is null */
+var39 = 0; /* is null */
 } else {
-var42 = 1; /* arg is null and recv is not */
+var39 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_mf,var41) on <var_mf:nullable CallSite> */
-var_other = var41;
+{ /* Inline kernel#Object#!= (var_mf,((val*)NULL)) on <var_mf:nullable CallSite> */
+var_other = ((val*)NULL);
 {
-var45 = ((short int (*)(val* self, val* p0))(var_mf->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mf, var_other) /* == on <var_mf:nullable CallSite(CallSite)>*/;
+var42 = ((short int(*)(val* self, val* p0))(var_mf->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mf, var_other); /* == on <var_mf:nullable CallSite(CallSite)>*/
 }
-var46 = !var45;
-var43 = var46;
-goto RET_LABEL44;
-RET_LABEL44:(void)0;
+var43 = !var42;
+var40 = var43;
+goto RET_LABEL41;
+RET_LABEL41:(void)0;
 }
-var42 = var43;
+var39 = var40;
 }
-if (var42){
+if (var39){
 {
 nit___nit__RapidTypeVisitor___add_callsite(var_v, var_mf); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
 }
@@ -6260,8 +6871,8 @@ RET_LABEL1:(void)0;
 }
 if (unlikely(var == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 680);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 704);
+fatal_exit(1);
 }
 var_mtype = var;
 {