regern c_src
[nit.git] / c_src / nit__abstract_compiler.sep.2.c
index cf0d0cf..f6aa1dc 100644 (file)
@@ -6,1614 +6,1318 @@ val* var_v /* var v: AbstractCompilerVisitor */;
 static val* varonce;
 val* var1 /* : String */;
 char* var2 /* : NativeString */;
-long var3 /* : Int */;
-val* var4 /* : FlatString */;
-val* var5 /* : ModelBuilder */;
-val* var7 /* : ModelBuilder */;
-val* var8 /* : ToolContext */;
-val* var10 /* : ToolContext */;
-val* var11 /* : OptionString */;
-val* var13 /* : OptionString */;
-val* var14 /* : nullable Object */;
-val* var16 /* : nullable Object */;
-val* var_ost /* var ost: nullable String */;
-val* var17 /* : Platform */;
-val* var19 /* : Platform */;
+val* var3 /* : FlatString */;
+val* var4 /* : Platform */;
+val* var6 /* : Platform */;
 val* var_platform /* var platform: Platform */;
-short int var20 /* : Bool */;
-short int var21 /* : Bool */;
-static val* varonce22;
-val* var23 /* : String */;
-char* var24 /* : NativeString */;
-long var25 /* : Int */;
-val* var26 /* : FlatString */;
-short int var27 /* : Bool */;
-short int var28 /* : Bool */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
 short int var_ /* var : Bool */;
-val* var29 /* : ModelBuilder */;
-val* var31 /* : ModelBuilder */;
-val* var32 /* : ToolContext */;
-val* var34 /* : ToolContext */;
-val* var35 /* : OptionBool */;
-val* var37 /* : OptionBool */;
-val* var38 /* : nullable Object */;
-val* var40 /* : nullable Object */;
-short int var41 /* : Bool */;
+val* var9 /* : ModelBuilder */;
+val* var11 /* : ModelBuilder */;
+val* var12 /* : ToolContext */;
+val* var14 /* : ToolContext */;
+val* var15 /* : OptionBool */;
+val* var17 /* : OptionBool */;
+val* var18 /* : nullable Object */;
+val* var20 /* : nullable Object */;
+short int var21 /* : Bool */;
 short int var_no_main /* var no_main: Bool */;
-short int var42 /* : Bool */;
+short int var22 /* : Bool */;
+static val* varonce23;
+val* var24 /* : String */;
+char* var25 /* : NativeString */;
+val* var26 /* : FlatString */;
+static val* varonce27;
+val* var28 /* : String */;
+char* var29 /* : NativeString */;
+val* var30 /* : FlatString */;
+static val* varonce31;
+val* var32 /* : String */;
+char* var33 /* : NativeString */;
+val* var34 /* : FlatString */;
+static val* varonce35;
+val* var36 /* : String */;
+char* var37 /* : NativeString */;
+val* var38 /* : FlatString */;
+static val* varonce39;
+val* var40 /* : String */;
+char* var41 /* : NativeString */;
+val* var42 /* : FlatString */;
 static val* varonce43;
 val* var44 /* : String */;
 char* var45 /* : NativeString */;
-long var46 /* : Int */;
-val* var47 /* : FlatString */;
-short int var48 /* : Bool */;
-short int var49 /* : Bool */;
-short int var_50 /* var : Bool */;
+val* var46 /* : FlatString */;
+static val* varonce47;
+val* var48 /* : String */;
+char* var49 /* : NativeString */;
+val* var50 /* : FlatString */;
 static val* varonce51;
 val* var52 /* : String */;
 char* var53 /* : NativeString */;
-long var54 /* : Int */;
-val* var55 /* : FlatString */;
-short int var56 /* : Bool */;
-short int var57 /* : Bool */;
-static val* varonce58;
-val* var59 /* : String */;
-char* var60 /* : NativeString */;
-long var61 /* : Int */;
-val* var62 /* : FlatString */;
-static val* varonce63;
-val* var64 /* : String */;
-char* var65 /* : NativeString */;
-long var66 /* : Int */;
-val* var67 /* : FlatString */;
-static val* varonce68;
-val* var69 /* : String */;
-char* var70 /* : NativeString */;
-long var71 /* : Int */;
-val* var72 /* : FlatString */;
-short int var73 /* : Bool */;
+val* var54 /* : FlatString */;
+val* var55 /* : ModelBuilder */;
+val* var57 /* : ModelBuilder */;
+val* var58 /* : ToolContext */;
+val* var60 /* : ToolContext */;
+val* var61 /* : OptionBool */;
+val* var63 /* : OptionBool */;
+val* var64 /* : nullable Object */;
+val* var66 /* : nullable Object */;
+short int var67 /* : Bool */;
+val* var68 /* : Array[String] */;
+val* var70 /* : Array[String] */;
+val* var_71 /* var : Array[String] */;
+val* var72 /* : ArrayIterator[nullable Object] */;
+val* var_73 /* var : ArrayIterator[String] */;
 short int var74 /* : Bool */;
-static val* varonce75;
-val* var76 /* : String */;
-char* var77 /* : NativeString */;
-long var78 /* : Int */;
-val* var79 /* : FlatString */;
-static val* varonce80;
-val* var81 /* : String */;
-char* var82 /* : NativeString */;
-long var83 /* : Int */;
-val* var84 /* : FlatString */;
-static val* varonce85;
-val* var86 /* : String */;
-char* var87 /* : NativeString */;
-long var88 /* : Int */;
-val* var89 /* : FlatString */;
-static val* varonce90;
-val* var91 /* : String */;
-char* var92 /* : NativeString */;
-long var93 /* : Int */;
-val* var94 /* : FlatString */;
-val* var95 /* : ModelBuilder */;
-val* var97 /* : ModelBuilder */;
-val* var98 /* : ToolContext */;
-val* var100 /* : ToolContext */;
-val* var101 /* : OptionBool */;
-val* var103 /* : OptionBool */;
-val* var104 /* : nullable Object */;
-val* var106 /* : nullable Object */;
-short int var107 /* : Bool */;
-val* var108 /* : Array[String] */;
-val* var110 /* : Array[String] */;
-val* var_111 /* var : Array[String] */;
-val* var112 /* : ArrayIterator[nullable Object] */;
-val* var_113 /* var : ArrayIterator[String] */;
-short int var114 /* : Bool */;
-val* var115 /* : nullable Object */;
+val* var75 /* : nullable Object */;
 val* var_tag /* var tag: String */;
-static val* varonce116;
-val* var117 /* : String */;
-char* var118 /* : NativeString */;
-long var119 /* : Int */;
+val* var77 /* : NativeArray[String] */;
+static val* varonce76;
+static val* varonce78;
+val* var79 /* : String */;
+char* var80 /* : NativeString */;
+val* var81 /* : FlatString */;
+static val* varonce82;
+val* var83 /* : String */;
+char* var84 /* : NativeString */;
+val* var85 /* : FlatString */;
+val* var86 /* : String */;
+val* var88 /* : NativeArray[String] */;
+static val* varonce87;
+static val* varonce89;
+val* var90 /* : String */;
+char* var91 /* : NativeString */;
+val* var92 /* : FlatString */;
+static val* varonce93;
+val* var94 /* : String */;
+char* var95 /* : NativeString */;
+val* var96 /* : FlatString */;
+val* var97 /* : String */;
+val* var99 /* : NativeArray[String] */;
+static val* varonce98;
+static val* varonce100;
+val* var101 /* : String */;
+char* var102 /* : NativeString */;
+val* var103 /* : FlatString */;
+static val* varonce104;
+val* var105 /* : String */;
+char* var106 /* : NativeString */;
+val* var107 /* : FlatString */;
+val* var108 /* : String */;
+val* var109 /* : AbstractCompiler */;
+val* var111 /* : AbstractCompiler */;
+val* var112 /* : CodeWriter */;
+val* var114 /* : CodeWriter */;
+val* var116 /* : NativeArray[String] */;
+static val* varonce115;
+static val* varonce117;
+val* var118 /* : String */;
+char* var119 /* : NativeString */;
 val* var120 /* : FlatString */;
 static val* varonce121;
 val* var122 /* : String */;
 char* var123 /* : NativeString */;
-long var124 /* : Int */;
-val* var125 /* : FlatString */;
-val* var126 /* : Array[Object] */;
-long var127 /* : Int */;
-val* var128 /* : NativeArray[Object] */;
-val* var129 /* : String */;
-static val* varonce130;
-val* var131 /* : String */;
-char* var132 /* : NativeString */;
-long var133 /* : Int */;
-val* var134 /* : FlatString */;
-static val* varonce135;
-val* var136 /* : String */;
-char* var137 /* : NativeString */;
-long var138 /* : Int */;
-val* var139 /* : FlatString */;
-val* var140 /* : Array[Object] */;
-long var141 /* : Int */;
-val* var142 /* : NativeArray[Object] */;
-val* var143 /* : String */;
-static val* varonce144;
-val* var145 /* : String */;
-char* var146 /* : NativeString */;
-long var147 /* : Int */;
-val* var148 /* : FlatString */;
+val* var124 /* : FlatString */;
+val* var125 /* : String */;
+val* var126 /* : AbstractCompiler */;
+val* var128 /* : AbstractCompiler */;
+val* var129 /* : CodeWriter */;
+val* var131 /* : CodeWriter */;
+val* var133 /* : NativeArray[String] */;
+static val* varonce132;
+static val* varonce134;
+val* var135 /* : String */;
+char* var136 /* : NativeString */;
+val* var137 /* : FlatString */;
+static val* varonce138;
+val* var139 /* : String */;
+char* var140 /* : NativeString */;
+val* var141 /* : FlatString */;
+val* var142 /* : String */;
+val* var143 /* : AbstractCompiler */;
+val* var145 /* : AbstractCompiler */;
+val* var146 /* : CodeWriter */;
+val* var148 /* : CodeWriter */;
+val* var150 /* : NativeArray[String] */;
 static val* varonce149;
-val* var150 /* : String */;
-char* var151 /* : NativeString */;
-long var152 /* : Int */;
-val* var153 /* : FlatString */;
-val* var154 /* : Array[Object] */;
-long var155 /* : Int */;
-val* var156 /* : NativeArray[Object] */;
-val* var157 /* : String */;
-val* var158 /* : AbstractCompiler */;
-val* var160 /* : AbstractCompiler */;
-val* var161 /* : CodeWriter */;
-val* var163 /* : CodeWriter */;
-static val* varonce164;
-val* var165 /* : String */;
-char* var166 /* : NativeString */;
-long var167 /* : Int */;
-val* var168 /* : FlatString */;
-static val* varonce169;
-val* var170 /* : String */;
-char* var171 /* : NativeString */;
-long var172 /* : Int */;
-val* var173 /* : FlatString */;
-val* var174 /* : Array[Object] */;
-long var175 /* : Int */;
-val* var176 /* : NativeArray[Object] */;
-val* var177 /* : String */;
-val* var178 /* : AbstractCompiler */;
-val* var180 /* : AbstractCompiler */;
-val* var181 /* : CodeWriter */;
-val* var183 /* : CodeWriter */;
-static val* varonce184;
-val* var185 /* : String */;
-char* var186 /* : NativeString */;
-long var187 /* : Int */;
-val* var188 /* : FlatString */;
-static val* varonce189;
-val* var190 /* : String */;
-char* var191 /* : NativeString */;
-long var192 /* : Int */;
-val* var193 /* : FlatString */;
-val* var194 /* : Array[Object] */;
-long var195 /* : Int */;
-val* var196 /* : NativeArray[Object] */;
-val* var197 /* : String */;
-val* var198 /* : AbstractCompiler */;
-val* var200 /* : AbstractCompiler */;
-val* var201 /* : CodeWriter */;
-val* var203 /* : CodeWriter */;
-static val* varonce204;
-val* var205 /* : String */;
-char* var206 /* : NativeString */;
-long var207 /* : Int */;
-val* var208 /* : FlatString */;
-static val* varonce209;
-val* var210 /* : String */;
-char* var211 /* : NativeString */;
-long var212 /* : Int */;
-val* var213 /* : FlatString */;
-val* var214 /* : Array[Object] */;
-long var215 /* : Int */;
-val* var216 /* : NativeArray[Object] */;
-val* var217 /* : String */;
-val* var219 /* : ModelBuilder */;
-val* var221 /* : ModelBuilder */;
-val* var222 /* : ToolContext */;
-val* var224 /* : ToolContext */;
-val* var225 /* : OptionBool */;
-val* var227 /* : OptionBool */;
-val* var228 /* : nullable Object */;
-val* var230 /* : nullable Object */;
-short int var231 /* : Bool */;
+static val* varonce151;
+val* var152 /* : String */;
+char* var153 /* : NativeString */;
+val* var154 /* : FlatString */;
+static val* varonce155;
+val* var156 /* : String */;
+char* var157 /* : NativeString */;
+val* var158 /* : FlatString */;
+val* var159 /* : String */;
+val* var160 /* : ModelBuilder */;
+val* var162 /* : ModelBuilder */;
+val* var163 /* : ToolContext */;
+val* var165 /* : ToolContext */;
+val* var166 /* : OptionBool */;
+val* var168 /* : OptionBool */;
+val* var169 /* : nullable Object */;
+val* var171 /* : nullable Object */;
+short int var172 /* : Bool */;
+static val* varonce173;
+val* var174 /* : String */;
+char* var175 /* : NativeString */;
+val* var176 /* : FlatString */;
+static val* varonce177;
+val* var178 /* : String */;
+char* var179 /* : NativeString */;
+val* var180 /* : FlatString */;
+static val* varonce181;
+val* var182 /* : String */;
+char* var183 /* : NativeString */;
+val* var184 /* : FlatString */;
+val* var185 /* : AbstractCompiler */;
+val* var187 /* : AbstractCompiler */;
+val* var188 /* : CodeWriter */;
+val* var190 /* : CodeWriter */;
+static val* varonce191;
+val* var192 /* : String */;
+char* var193 /* : NativeString */;
+val* var194 /* : FlatString */;
+val* var195 /* : AbstractCompiler */;
+val* var197 /* : AbstractCompiler */;
+val* var198 /* : CodeWriter */;
+val* var200 /* : CodeWriter */;
+static val* varonce201;
+val* var202 /* : String */;
+char* var203 /* : NativeString */;
+val* var204 /* : FlatString */;
+val* var205 /* : AbstractCompiler */;
+val* var207 /* : AbstractCompiler */;
+val* var208 /* : CodeWriter */;
+val* var210 /* : CodeWriter */;
+static val* varonce211;
+val* var212 /* : String */;
+char* var213 /* : NativeString */;
+val* var214 /* : FlatString */;
+val* var215 /* : ModelBuilder */;
+val* var217 /* : ModelBuilder */;
+val* var218 /* : ToolContext */;
+val* var220 /* : ToolContext */;
+val* var221 /* : OptionBool */;
+val* var223 /* : OptionBool */;
+val* var224 /* : nullable Object */;
+val* var226 /* : nullable Object */;
+short int var227 /* : Bool */;
+static val* varonce228;
+val* var229 /* : String */;
+char* var230 /* : NativeString */;
+val* var231 /* : FlatString */;
 static val* varonce232;
 val* var233 /* : String */;
 char* var234 /* : NativeString */;
-long var235 /* : Int */;
-val* var236 /* : FlatString */;
-static val* varonce237;
-val* var238 /* : String */;
-char* var239 /* : NativeString */;
-long var240 /* : Int */;
-val* var241 /* : FlatString */;
+val* var235 /* : FlatString */;
+val* var236 /* : AbstractCompiler */;
+val* var238 /* : AbstractCompiler */;
+val* var239 /* : CodeWriter */;
+val* var241 /* : CodeWriter */;
 static val* varonce242;
 val* var243 /* : String */;
 char* var244 /* : NativeString */;
-long var245 /* : Int */;
-val* var246 /* : FlatString */;
-val* var247 /* : AbstractCompiler */;
-val* var249 /* : AbstractCompiler */;
-val* var250 /* : CodeWriter */;
-val* var252 /* : CodeWriter */;
-static val* varonce253;
-val* var254 /* : String */;
-char* var255 /* : NativeString */;
-long var256 /* : Int */;
-val* var257 /* : FlatString */;
-val* var258 /* : AbstractCompiler */;
-val* var260 /* : AbstractCompiler */;
-val* var261 /* : CodeWriter */;
-val* var263 /* : CodeWriter */;
-static val* varonce264;
-val* var265 /* : String */;
-char* var266 /* : NativeString */;
-long var267 /* : Int */;
+val* var245 /* : FlatString */;
+val* var246 /* : AbstractCompiler */;
+val* var248 /* : AbstractCompiler */;
+val* var249 /* : CodeWriter */;
+val* var251 /* : CodeWriter */;
+static val* varonce252;
+val* var253 /* : String */;
+char* var254 /* : NativeString */;
+val* var255 /* : FlatString */;
+static val* varonce256;
+val* var257 /* : String */;
+char* var258 /* : NativeString */;
+val* var259 /* : FlatString */;
+short int var260 /* : Bool */;
+static val* varonce261;
+val* var262 /* : String */;
+char* var263 /* : NativeString */;
+val* var264 /* : FlatString */;
+static val* varonce265;
+val* var266 /* : String */;
+char* var267 /* : NativeString */;
 val* var268 /* : FlatString */;
-val* var269 /* : AbstractCompiler */;
-val* var271 /* : AbstractCompiler */;
-val* var272 /* : CodeWriter */;
-val* var274 /* : CodeWriter */;
-static val* varonce275;
-val* var276 /* : String */;
-char* var277 /* : NativeString */;
-long var278 /* : Int */;
-val* var279 /* : FlatString */;
-val* var280 /* : ModelBuilder */;
-val* var282 /* : ModelBuilder */;
-val* var283 /* : ToolContext */;
-val* var285 /* : ToolContext */;
-val* var286 /* : OptionBool */;
-val* var288 /* : OptionBool */;
-val* var289 /* : nullable Object */;
-val* var291 /* : nullable Object */;
-short int var292 /* : Bool */;
+static val* varonce269;
+val* var270 /* : String */;
+char* var271 /* : NativeString */;
+val* var272 /* : FlatString */;
+static val* varonce273;
+val* var274 /* : String */;
+char* var275 /* : NativeString */;
+val* var276 /* : FlatString */;
+static val* varonce277;
+val* var278 /* : String */;
+char* var279 /* : NativeString */;
+val* var280 /* : FlatString */;
+static val* varonce281;
+val* var282 /* : String */;
+char* var283 /* : NativeString */;
+val* var284 /* : FlatString */;
+static val* varonce285;
+val* var286 /* : String */;
+char* var287 /* : NativeString */;
+val* var288 /* : FlatString */;
+static val* varonce289;
+val* var290 /* : String */;
+char* var291 /* : NativeString */;
+val* var292 /* : FlatString */;
 static val* varonce293;
 val* var294 /* : String */;
 char* var295 /* : NativeString */;
-long var296 /* : Int */;
-val* var297 /* : FlatString */;
-static val* varonce298;
-val* var299 /* : String */;
-char* var300 /* : NativeString */;
-long var301 /* : Int */;
-val* var302 /* : FlatString */;
-val* var303 /* : AbstractCompiler */;
-val* var305 /* : AbstractCompiler */;
-val* var306 /* : CodeWriter */;
-val* var308 /* : CodeWriter */;
+val* var296 /* : FlatString */;
+static val* varonce297;
+val* var298 /* : String */;
+char* var299 /* : NativeString */;
+val* var300 /* : FlatString */;
+static val* varonce301;
+val* var302 /* : String */;
+char* var303 /* : NativeString */;
+val* var304 /* : FlatString */;
+static val* varonce305;
+val* var306 /* : String */;
+char* var307 /* : NativeString */;
+val* var308 /* : FlatString */;
 static val* varonce309;
 val* var310 /* : String */;
 char* var311 /* : NativeString */;
-long var312 /* : Int */;
-val* var313 /* : FlatString */;
-val* var314 /* : AbstractCompiler */;
-val* var316 /* : AbstractCompiler */;
-val* var317 /* : CodeWriter */;
-val* var319 /* : CodeWriter */;
-static val* varonce320;
-val* var321 /* : String */;
-char* var322 /* : NativeString */;
-long var323 /* : Int */;
+val* var312 /* : FlatString */;
+static val* varonce313;
+val* var314 /* : String */;
+char* var315 /* : NativeString */;
+val* var316 /* : FlatString */;
+static val* varonce317;
+val* var318 /* : String */;
+char* var319 /* : NativeString */;
+val* var320 /* : FlatString */;
+static val* varonce321;
+val* var322 /* : String */;
+char* var323 /* : NativeString */;
 val* var324 /* : FlatString */;
 static val* varonce325;
 val* var326 /* : String */;
 char* var327 /* : NativeString */;
-long var328 /* : Int */;
-val* var329 /* : FlatString */;
-static val* varonce330;
-val* var331 /* : String */;
-char* var332 /* : NativeString */;
-long var333 /* : Int */;
-val* var334 /* : FlatString */;
-static val* varonce335;
-val* var336 /* : String */;
-char* var337 /* : NativeString */;
-long var338 /* : Int */;
-val* var339 /* : FlatString */;
-static val* varonce340;
-val* var341 /* : String */;
-char* var342 /* : NativeString */;
-long var343 /* : Int */;
+val* var328 /* : FlatString */;
+static val* varonce329;
+val* var330 /* : String */;
+char* var331 /* : NativeString */;
+val* var332 /* : FlatString */;
+static val* varonce333;
+val* var334 /* : String */;
+char* var335 /* : NativeString */;
+val* var336 /* : FlatString */;
+static val* varonce337;
+val* var338 /* : String */;
+char* var339 /* : NativeString */;
+val* var340 /* : FlatString */;
+static val* varonce341;
+val* var342 /* : String */;
+char* var343 /* : NativeString */;
 val* var344 /* : FlatString */;
 static val* varonce345;
 val* var346 /* : String */;
 char* var347 /* : NativeString */;
-long var348 /* : Int */;
-val* var349 /* : FlatString */;
-short int var350 /* : Bool */;
-static val* varonce351;
-val* var352 /* : String */;
-char* var353 /* : NativeString */;
-long var354 /* : Int */;
-val* var355 /* : FlatString */;
-short int var356 /* : Bool */;
-short int var357 /* : Bool */;
-short int var_358 /* var : Bool */;
-static val* varonce359;
-val* var360 /* : String */;
-char* var361 /* : NativeString */;
-long var362 /* : Int */;
-val* var363 /* : FlatString */;
-short int var364 /* : Bool */;
-short int var365 /* : Bool */;
-static val* varonce366;
-val* var367 /* : String */;
-char* var368 /* : NativeString */;
-long var369 /* : Int */;
-val* var370 /* : FlatString */;
-static val* varonce371;
-val* var372 /* : String */;
-char* var373 /* : NativeString */;
-long var374 /* : Int */;
-val* var375 /* : FlatString */;
-static val* varonce376;
-val* var377 /* : String */;
-char* var378 /* : NativeString */;
-long var379 /* : Int */;
+val* var348 /* : FlatString */;
+static val* varonce349;
+val* var350 /* : String */;
+char* var351 /* : NativeString */;
+val* var352 /* : FlatString */;
+static val* varonce353;
+val* var354 /* : String */;
+char* var355 /* : NativeString */;
+val* var356 /* : FlatString */;
+static val* varonce357;
+val* var358 /* : String */;
+char* var359 /* : NativeString */;
+val* var360 /* : FlatString */;
+static val* varonce361;
+val* var362 /* : String */;
+char* var363 /* : NativeString */;
+val* var364 /* : FlatString */;
+static val* varonce365;
+val* var366 /* : String */;
+char* var367 /* : NativeString */;
+val* var368 /* : FlatString */;
+static val* varonce369;
+val* var370 /* : String */;
+char* var371 /* : NativeString */;
+val* var372 /* : FlatString */;
+static val* varonce373;
+val* var374 /* : String */;
+char* var375 /* : NativeString */;
+val* var376 /* : FlatString */;
+static val* varonce377;
+val* var378 /* : String */;
+char* var379 /* : NativeString */;
 val* var380 /* : FlatString */;
 static val* varonce381;
 val* var382 /* : String */;
 char* var383 /* : NativeString */;
-long var384 /* : Int */;
-val* var385 /* : FlatString */;
-static val* varonce386;
-val* var387 /* : String */;
-char* var388 /* : NativeString */;
-long var389 /* : Int */;
-val* var390 /* : FlatString */;
-static val* varonce391;
-val* var392 /* : String */;
-char* var393 /* : NativeString */;
-long var394 /* : Int */;
-val* var395 /* : FlatString */;
-static val* varonce396;
-val* var397 /* : String */;
-char* var398 /* : NativeString */;
-long var399 /* : Int */;
+val* var384 /* : FlatString */;
+static val* varonce385;
+val* var386 /* : String */;
+char* var387 /* : NativeString */;
+val* var388 /* : FlatString */;
+static val* varonce389;
+val* var390 /* : String */;
+char* var391 /* : NativeString */;
+val* var392 /* : FlatString */;
+static val* varonce393;
+val* var394 /* : String */;
+char* var395 /* : NativeString */;
+val* var396 /* : FlatString */;
+static val* varonce397;
+val* var398 /* : String */;
+char* var399 /* : NativeString */;
 val* var400 /* : FlatString */;
 static val* varonce401;
 val* var402 /* : String */;
 char* var403 /* : NativeString */;
-long var404 /* : Int */;
-val* var405 /* : FlatString */;
-static val* varonce406;
-val* var407 /* : String */;
-char* var408 /* : NativeString */;
-long var409 /* : Int */;
-val* var410 /* : FlatString */;
-static val* varonce411;
-val* var412 /* : String */;
-char* var413 /* : NativeString */;
-long var414 /* : Int */;
-val* var415 /* : FlatString */;
-static val* varonce416;
-val* var417 /* : String */;
-char* var418 /* : NativeString */;
-long var419 /* : Int */;
+val* var404 /* : FlatString */;
+static val* varonce405;
+val* var406 /* : String */;
+char* var407 /* : NativeString */;
+val* var408 /* : FlatString */;
+static val* varonce409;
+val* var410 /* : String */;
+char* var411 /* : NativeString */;
+val* var412 /* : FlatString */;
+static val* varonce413;
+val* var414 /* : String */;
+char* var415 /* : NativeString */;
+val* var416 /* : FlatString */;
+static val* varonce417;
+val* var418 /* : String */;
+char* var419 /* : NativeString */;
 val* var420 /* : FlatString */;
 static val* varonce421;
 val* var422 /* : String */;
 char* var423 /* : NativeString */;
-long var424 /* : Int */;
-val* var425 /* : FlatString */;
-static val* varonce426;
-val* var427 /* : String */;
-char* var428 /* : NativeString */;
-long var429 /* : Int */;
-val* var430 /* : FlatString */;
-static val* varonce431;
-val* var432 /* : String */;
-char* var433 /* : NativeString */;
-long var434 /* : Int */;
-val* var435 /* : FlatString */;
-short int var436 /* : Bool */;
-short int var437 /* : Bool */;
-static val* varonce438;
-val* var439 /* : String */;
-char* var440 /* : NativeString */;
-long var441 /* : Int */;
-val* var442 /* : FlatString */;
-static val* varonce443;
-val* var444 /* : String */;
-char* var445 /* : NativeString */;
-long var446 /* : Int */;
-val* var447 /* : FlatString */;
-static val* varonce448;
-val* var449 /* : String */;
-char* var450 /* : NativeString */;
-long var451 /* : Int */;
+val* var424 /* : FlatString */;
+static val* varonce425;
+val* var426 /* : String */;
+char* var427 /* : NativeString */;
+val* var428 /* : FlatString */;
+static val* varonce429;
+val* var430 /* : String */;
+char* var431 /* : NativeString */;
+val* var432 /* : FlatString */;
+static val* varonce433;
+val* var434 /* : String */;
+char* var435 /* : NativeString */;
+val* var436 /* : FlatString */;
+static val* varonce437;
+val* var438 /* : String */;
+char* var439 /* : NativeString */;
+val* var440 /* : FlatString */;
+static val* varonce441;
+val* var442 /* : String */;
+char* var443 /* : NativeString */;
+val* var444 /* : FlatString */;
+static val* varonce445;
+val* var446 /* : String */;
+char* var447 /* : NativeString */;
+val* var448 /* : FlatString */;
+static val* varonce449;
+val* var450 /* : String */;
+char* var451 /* : NativeString */;
 val* var452 /* : FlatString */;
-static val* varonce453;
-val* var454 /* : String */;
-char* var455 /* : NativeString */;
-long var456 /* : Int */;
-val* var457 /* : FlatString */;
-static val* varonce458;
-val* var459 /* : String */;
-char* var460 /* : NativeString */;
-long var461 /* : Int */;
-val* var462 /* : FlatString */;
-static val* varonce463;
-val* var464 /* : String */;
-char* var465 /* : NativeString */;
-long var466 /* : Int */;
-val* var467 /* : FlatString */;
-static val* varonce468;
-val* var469 /* : String */;
-char* var470 /* : NativeString */;
-long var471 /* : Int */;
-val* var472 /* : FlatString */;
-static val* varonce473;
-val* var474 /* : String */;
-char* var475 /* : NativeString */;
-long var476 /* : Int */;
-val* var477 /* : FlatString */;
-static val* varonce478;
+val* var453 /* : MModule */;
+val* var455 /* : MModule */;
+val* var456 /* : nullable MClassType */;
+val* var_main_type /* var main_type: nullable MClassType */;
+short int var457 /* : Bool */;
+short int var458 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var460 /* : Bool */;
+short int var461 /* : Bool */;
+val* var462 /* : AbstractCompiler */;
+val* var464 /* : AbstractCompiler */;
+val* var465 /* : MModule */;
+val* var467 /* : MModule */;
+val* var_mainmodule /* var mainmodule: MModule */;
+val* var468 /* : RuntimeVariable */;
+val* var_glob_sys /* var glob_sys: RuntimeVariable */;
+val* var470 /* : NativeArray[String] */;
+static val* varonce469;
+static val* varonce471;
+val* var472 /* : String */;
+char* var473 /* : NativeString */;
+val* var474 /* : FlatString */;
+static val* varonce475;
+val* var476 /* : String */;
+char* var477 /* : NativeString */;
+val* var478 /* : FlatString */;
 val* var479 /* : String */;
-char* var480 /* : NativeString */;
-long var481 /* : Int */;
-val* var482 /* : FlatString */;
-static val* varonce483;
-val* var484 /* : String */;
-char* var485 /* : NativeString */;
-long var486 /* : Int */;
-val* var487 /* : FlatString */;
-static val* varonce488;
-val* var489 /* : String */;
-char* var490 /* : NativeString */;
-long var491 /* : Int */;
-val* var492 /* : FlatString */;
-static val* varonce493;
-val* var494 /* : String */;
-char* var495 /* : NativeString */;
-long var496 /* : Int */;
-val* var497 /* : FlatString */;
+val* var480 /* : String */;
+static val* varonce481;
+val* var482 /* : String */;
+char* var483 /* : NativeString */;
+val* var484 /* : FlatString */;
+val* var485 /* : MClass */;
+val* var487 /* : MClass */;
+val* var488 /* : nullable MMethod */;
+val* var_main_init /* var main_init: nullable MMethod */;
+short int var489 /* : Bool */;
+short int var490 /* : Bool */;
+short int var492 /* : Bool */;
+short int var493 /* : Bool */;
+val* var494 /* : Array[RuntimeVariable] */;
+val* var_495 /* var : Array[RuntimeVariable] */;
+val* var496 /* : nullable RuntimeVariable */;
+val* var497 /* : nullable MMethod */;
 static val* varonce498;
 val* var499 /* : String */;
 char* var500 /* : NativeString */;
-long var501 /* : Int */;
-val* var502 /* : FlatString */;
-static val* varonce503;
-val* var504 /* : String */;
-char* var505 /* : NativeString */;
-long var506 /* : Int */;
-val* var507 /* : FlatString */;
-static val* varonce508;
-val* var509 /* : String */;
-char* var510 /* : NativeString */;
-long var511 /* : Int */;
-val* var512 /* : FlatString */;
-static val* varonce513;
-val* var514 /* : String */;
-char* var515 /* : NativeString */;
-long var516 /* : Int */;
-val* var517 /* : FlatString */;
-static val* varonce518;
-val* var519 /* : String */;
-char* var520 /* : NativeString */;
-long var521 /* : Int */;
-val* var522 /* : FlatString */;
-static val* varonce523;
-val* var524 /* : String */;
-char* var525 /* : NativeString */;
-long var526 /* : Int */;
-val* var527 /* : FlatString */;
-static val* varonce528;
-val* var529 /* : String */;
-char* var530 /* : NativeString */;
-long var531 /* : Int */;
-val* var532 /* : FlatString */;
-static val* varonce533;
-val* var534 /* : String */;
-char* var535 /* : NativeString */;
-long var536 /* : Int */;
-val* var537 /* : FlatString */;
-static val* varonce538;
-val* var539 /* : String */;
-char* var540 /* : NativeString */;
-long var541 /* : Int */;
+val* var501 /* : FlatString */;
+val* var502 /* : MClass */;
+val* var504 /* : MClass */;
+val* var505 /* : nullable MMethod */;
+static val* varonce506;
+val* var507 /* : String */;
+char* var508 /* : NativeString */;
+val* var509 /* : FlatString */;
+val* var510 /* : MClass */;
+val* var512 /* : MClass */;
+val* var513 /* : nullable MMethod */;
+val* var_main_method /* var main_method: nullable MMethod */;
+short int var514 /* : Bool */;
+short int var515 /* : Bool */;
+short int var517 /* : Bool */;
+short int var518 /* : Bool */;
+val* var519 /* : Array[RuntimeVariable] */;
+val* var_520 /* var : Array[RuntimeVariable] */;
+val* var521 /* : nullable RuntimeVariable */;
+val* var522 /* : ModelBuilder */;
+val* var524 /* : ModelBuilder */;
+val* var525 /* : ToolContext */;
+val* var527 /* : ToolContext */;
+val* var528 /* : OptionBool */;
+val* var530 /* : OptionBool */;
+val* var531 /* : nullable Object */;
+val* var533 /* : nullable Object */;
+short int var534 /* : Bool */;
+static val* varonce535;
+val* var536 /* : String */;
+char* var537 /* : NativeString */;
+val* var538 /* : FlatString */;
+static val* varonce539;
+val* var540 /* : String */;
+char* var541 /* : NativeString */;
 val* var542 /* : FlatString */;
 static val* varonce543;
 val* var544 /* : String */;
 char* var545 /* : NativeString */;
-long var546 /* : Int */;
-val* var547 /* : FlatString */;
-static val* varonce548;
-val* var549 /* : String */;
-char* var550 /* : NativeString */;
-long var551 /* : Int */;
-val* var552 /* : FlatString */;
-static val* varonce553;
-val* var554 /* : String */;
-char* var555 /* : NativeString */;
-long var556 /* : Int */;
-val* var557 /* : FlatString */;
-static val* varonce558;
-val* var559 /* : String */;
-char* var560 /* : NativeString */;
-long var561 /* : Int */;
-val* var562 /* : FlatString */;
-val* var563 /* : MModule */;
-val* var565 /* : MModule */;
-val* var566 /* : nullable MClassType */;
-val* var_main_type /* var main_type: nullable MClassType */;
-val* var567 /* : null */;
-short int var568 /* : Bool */;
-short int var569 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var571 /* : Bool */;
-short int var572 /* : Bool */;
-val* var573 /* : AbstractCompiler */;
-val* var575 /* : AbstractCompiler */;
-val* var576 /* : MModule */;
-val* var578 /* : MModule */;
-val* var_mainmodule /* var mainmodule: MModule */;
-val* var579 /* : RuntimeVariable */;
-val* var_glob_sys /* var glob_sys: RuntimeVariable */;
-static val* varonce580;
-val* var581 /* : String */;
-char* var582 /* : NativeString */;
-long var583 /* : Int */;
+val* var546 /* : FlatString */;
+static val* varonce547;
+val* var548 /* : String */;
+char* var549 /* : NativeString */;
+val* var550 /* : FlatString */;
+val* var551 /* : Array[String] */;
+val* var553 /* : Array[String] */;
+val* var_554 /* var : Array[String] */;
+val* var555 /* : ArrayIterator[nullable Object] */;
+val* var_556 /* var : ArrayIterator[String] */;
+short int var557 /* : Bool */;
+val* var558 /* : nullable Object */;
+val* var_tag559 /* var tag: String */;
+val* var561 /* : NativeArray[String] */;
+static val* varonce560;
+static val* varonce562;
+val* var563 /* : String */;
+char* var564 /* : NativeString */;
+val* var565 /* : FlatString */;
+static val* varonce566;
+val* var567 /* : String */;
+char* var568 /* : NativeString */;
+val* var569 /* : FlatString */;
+val* var570 /* : String */;
+val* var572 /* : NativeArray[String] */;
+static val* varonce571;
+static val* varonce573;
+val* var574 /* : String */;
+char* var575 /* : NativeString */;
+val* var576 /* : FlatString */;
+static val* varonce577;
+val* var578 /* : String */;
+char* var579 /* : NativeString */;
+val* var580 /* : FlatString */;
+static val* varonce581;
+val* var582 /* : String */;
+char* var583 /* : NativeString */;
 val* var584 /* : FlatString */;
 static val* varonce585;
 val* var586 /* : String */;
 char* var587 /* : NativeString */;
-long var588 /* : Int */;
-val* var589 /* : FlatString */;
-val* var590 /* : Array[Object] */;
-long var591 /* : Int */;
-val* var592 /* : NativeArray[Object] */;
+val* var588 /* : FlatString */;
+static val* varonce589;
+val* var590 /* : String */;
+char* var591 /* : NativeString */;
+val* var592 /* : FlatString */;
 val* var593 /* : String */;
+val* var595 /* : NativeArray[String] */;
 static val* varonce594;
-val* var595 /* : String */;
-char* var596 /* : NativeString */;
-long var597 /* : Int */;
-val* var598 /* : FlatString */;
-val* var599 /* : MClass */;
-val* var601 /* : MClass */;
-val* var602 /* : nullable MMethod */;
-val* var_main_init /* var main_init: nullable MMethod */;
-val* var603 /* : null */;
-short int var604 /* : Bool */;
-short int var605 /* : Bool */;
-short int var607 /* : Bool */;
-short int var608 /* : Bool */;
-val* var609 /* : Array[RuntimeVariable] */;
-long var610 /* : Int */;
-val* var_611 /* var : Array[RuntimeVariable] */;
-val* var612 /* : nullable RuntimeVariable */;
-val* var613 /* : nullable MMethod */;
-static val* varonce614;
+static val* varonce596;
+val* var597 /* : String */;
+char* var598 /* : NativeString */;
+val* var599 /* : FlatString */;
+static val* varonce600;
+val* var601 /* : String */;
+char* var602 /* : NativeString */;
+val* var603 /* : FlatString */;
+val* var604 /* : String */;
+val* var606 /* : NativeArray[String] */;
+static val* varonce605;
+static val* varonce607;
+val* var608 /* : String */;
+char* var609 /* : NativeString */;
+val* var610 /* : FlatString */;
+static val* varonce611;
+val* var612 /* : String */;
+char* var613 /* : NativeString */;
+val* var614 /* : FlatString */;
 val* var615 /* : String */;
-char* var616 /* : NativeString */;
-long var617 /* : Int */;
-val* var618 /* : FlatString */;
-val* var619 /* : MClass */;
-val* var621 /* : MClass */;
-val* var622 /* : nullable MMethod */;
-static val* varonce623;
-val* var624 /* : String */;
-char* var625 /* : NativeString */;
-long var626 /* : Int */;
-val* var627 /* : FlatString */;
-val* var628 /* : MClass */;
-val* var630 /* : MClass */;
-val* var631 /* : nullable MMethod */;
-val* var_main_method /* var main_method: nullable MMethod */;
-val* var632 /* : null */;
-short int var633 /* : Bool */;
-short int var634 /* : Bool */;
-short int var636 /* : Bool */;
-short int var637 /* : Bool */;
-val* var638 /* : Array[RuntimeVariable] */;
-long var639 /* : Int */;
-val* var_640 /* var : Array[RuntimeVariable] */;
-val* var641 /* : nullable RuntimeVariable */;
-val* var642 /* : ModelBuilder */;
-val* var644 /* : ModelBuilder */;
-val* var645 /* : ToolContext */;
-val* var647 /* : ToolContext */;
-val* var648 /* : OptionBool */;
-val* var650 /* : OptionBool */;
-val* var651 /* : nullable Object */;
-val* var653 /* : nullable Object */;
-short int var654 /* : Bool */;
-static val* varonce655;
-val* var656 /* : String */;
-char* var657 /* : NativeString */;
-long var658 /* : Int */;
-val* var659 /* : FlatString */;
-static val* varonce660;
-val* var661 /* : String */;
-char* var662 /* : NativeString */;
-long var663 /* : Int */;
-val* var664 /* : FlatString */;
-static val* varonce665;
-val* var666 /* : String */;
-char* var667 /* : NativeString */;
-long var668 /* : Int */;
-val* var669 /* : FlatString */;
-static val* varonce670;
+val* var617 /* : NativeArray[String] */;
+static val* varonce616;
+static val* varonce618;
+val* var619 /* : String */;
+char* var620 /* : NativeString */;
+val* var621 /* : FlatString */;
+static val* varonce622;
+val* var623 /* : String */;
+char* var624 /* : NativeString */;
+val* var625 /* : FlatString */;
+val* var626 /* : String */;
+val* var628 /* : NativeArray[String] */;
+static val* varonce627;
+static val* varonce629;
+val* var630 /* : String */;
+char* var631 /* : NativeString */;
+val* var632 /* : FlatString */;
+static val* varonce633;
+val* var634 /* : String */;
+char* var635 /* : NativeString */;
+val* var636 /* : FlatString */;
+val* var637 /* : String */;
+static val* varonce639;
+val* var640 /* : String */;
+char* var641 /* : NativeString */;
+val* var642 /* : FlatString */;
+static val* varonce643;
+val* var644 /* : String */;
+char* var645 /* : NativeString */;
+val* var646 /* : FlatString */;
+val* var647 /* : Array[String] */;
+val* var649 /* : Array[String] */;
+val* var650 /* : Array[nullable Object] */;
+val* var_tags /* var tags: Array[String] */;
+static val* varonce651;
+val* var652 /* : String */;
+char* var653 /* : NativeString */;
+val* var654 /* : FlatString */;
+val* var_655 /* var : Array[String] */;
+val* var656 /* : ArrayIterator[nullable Object] */;
+val* var_657 /* var : ArrayIterator[String] */;
+short int var658 /* : Bool */;
+val* var659 /* : nullable Object */;
+val* var_tag660 /* var tag: String */;
+val* var662 /* : NativeArray[String] */;
+static val* varonce661;
+static val* varonce663;
+val* var664 /* : String */;
+char* var665 /* : NativeString */;
+val* var666 /* : FlatString */;
+static val* varonce667;
+val* var668 /* : String */;
+char* var669 /* : NativeString */;
+val* var670 /* : FlatString */;
 val* var671 /* : String */;
-char* var672 /* : NativeString */;
-long var673 /* : Int */;
-val* var674 /* : FlatString */;
-val* var675 /* : Array[String] */;
-val* var677 /* : Array[String] */;
-val* var_678 /* var : Array[String] */;
-val* var679 /* : ArrayIterator[nullable Object] */;
-val* var_680 /* var : ArrayIterator[String] */;
-short int var681 /* : Bool */;
-val* var682 /* : nullable Object */;
-val* var_tag683 /* var tag: String */;
-static val* varonce684;
-val* var685 /* : String */;
-char* var686 /* : NativeString */;
-long var687 /* : Int */;
-val* var688 /* : FlatString */;
+val* var673 /* : NativeArray[String] */;
+static val* varonce672;
+static val* varonce674;
+val* var675 /* : String */;
+char* var676 /* : NativeString */;
+val* var677 /* : FlatString */;
+static val* varonce678;
+val* var679 /* : String */;
+char* var680 /* : NativeString */;
+val* var681 /* : FlatString */;
+static val* varonce682;
+val* var683 /* : String */;
+char* var684 /* : NativeString */;
+val* var685 /* : FlatString */;
+val* var686 /* : String */;
+val* var688 /* : NativeArray[String] */;
+static val* varonce687;
 static val* varonce689;
 val* var690 /* : String */;
 char* var691 /* : NativeString */;
-long var692 /* : Int */;
-val* var693 /* : FlatString */;
-val* var694 /* : Array[Object] */;
-long var695 /* : Int */;
-val* var696 /* : NativeArray[Object] */;
-val* var697 /* : String */;
-static val* varonce698;
-val* var699 /* : String */;
-char* var700 /* : NativeString */;
-long var701 /* : Int */;
-val* var702 /* : FlatString */;
-static val* varonce703;
-val* var704 /* : String */;
-char* var705 /* : NativeString */;
-long var706 /* : Int */;
+val* var692 /* : FlatString */;
+static val* varonce693;
+val* var694 /* : String */;
+char* var695 /* : NativeString */;
+val* var696 /* : FlatString */;
+static val* varonce697;
+val* var698 /* : String */;
+char* var699 /* : NativeString */;
+val* var700 /* : FlatString */;
+val* var701 /* : String */;
+val* var703 /* : NativeArray[String] */;
+static val* varonce702;
+static val* varonce704;
+val* var705 /* : String */;
+char* var706 /* : NativeString */;
 val* var707 /* : FlatString */;
 static val* varonce708;
 val* var709 /* : String */;
 char* var710 /* : NativeString */;
-long var711 /* : Int */;
-val* var712 /* : FlatString */;
-static val* varonce713;
-val* var714 /* : String */;
-char* var715 /* : NativeString */;
-long var716 /* : Int */;
-val* var717 /* : FlatString */;
-static val* varonce718;
-val* var719 /* : String */;
-char* var720 /* : NativeString */;
-long var721 /* : Int */;
+val* var711 /* : FlatString */;
+static val* varonce712;
+val* var713 /* : String */;
+char* var714 /* : NativeString */;
+val* var715 /* : FlatString */;
+val* var716 /* : String */;
+val* var718 /* : NativeArray[String] */;
+static val* varonce717;
+static val* varonce719;
+val* var720 /* : String */;
+char* var721 /* : NativeString */;
 val* var722 /* : FlatString */;
-val* var723 /* : Array[Object] */;
-long var724 /* : Int */;
-val* var725 /* : NativeArray[Object] */;
-val* var726 /* : String */;
+static val* varonce723;
+val* var724 /* : String */;
+char* var725 /* : NativeString */;
+val* var726 /* : FlatString */;
 static val* varonce727;
 val* var728 /* : String */;
 char* var729 /* : NativeString */;
-long var730 /* : Int */;
-val* var731 /* : FlatString */;
-static val* varonce732;
-val* var733 /* : String */;
-char* var734 /* : NativeString */;
-long var735 /* : Int */;
-val* var736 /* : FlatString */;
-val* var737 /* : Array[Object] */;
-long var738 /* : Int */;
-val* var739 /* : NativeArray[Object] */;
-val* var740 /* : String */;
-static val* varonce741;
-val* var742 /* : String */;
-char* var743 /* : NativeString */;
-long var744 /* : Int */;
-val* var745 /* : FlatString */;
+val* var730 /* : FlatString */;
+val* var731 /* : String */;
+val* var733 /* : ModelBuilder */;
+val* var735 /* : ModelBuilder */;
+val* var736 /* : ToolContext */;
+val* var738 /* : ToolContext */;
+val* var739 /* : OptionBool */;
+val* var741 /* : OptionBool */;
+val* var742 /* : nullable Object */;
+val* var744 /* : nullable Object */;
+short int var745 /* : Bool */;
 static val* varonce746;
 val* var747 /* : String */;
 char* var748 /* : NativeString */;
-long var749 /* : Int */;
-val* var750 /* : FlatString */;
-val* var751 /* : Array[Object] */;
-long var752 /* : Int */;
-val* var753 /* : NativeArray[Object] */;
-val* var754 /* : String */;
-static val* varonce755;
-val* var756 /* : String */;
-char* var757 /* : NativeString */;
-long var758 /* : Int */;
-val* var759 /* : FlatString */;
-static val* varonce760;
-val* var761 /* : String */;
-char* var762 /* : NativeString */;
-long var763 /* : Int */;
-val* var764 /* : FlatString */;
-val* var765 /* : Array[Object] */;
-long var766 /* : Int */;
-val* var767 /* : NativeArray[Object] */;
-val* var768 /* : String */;
-static val* varonce769;
-val* var770 /* : String */;
-char* var771 /* : NativeString */;
-long var772 /* : Int */;
-val* var773 /* : FlatString */;
-static val* varonce774;
-val* var775 /* : String */;
-char* var776 /* : NativeString */;
-long var777 /* : Int */;
-val* var778 /* : FlatString */;
-val* var779 /* : Array[Object] */;
-long var780 /* : Int */;
-val* var781 /* : NativeArray[Object] */;
-val* var782 /* : String */;
-static val* varonce785;
-val* var786 /* : String */;
-char* var787 /* : NativeString */;
-long var788 /* : Int */;
-val* var789 /* : FlatString */;
-static val* varonce790;
-val* var791 /* : String */;
-char* var792 /* : NativeString */;
-long var793 /* : Int */;
+val* var749 /* : FlatString */;
+static val* varonce750;
+val* var751 /* : String */;
+char* var752 /* : NativeString */;
+val* var753 /* : FlatString */;
+static val* varonce754;
+val* var755 /* : String */;
+char* var756 /* : NativeString */;
+val* var757 /* : FlatString */;
+static val* varonce758;
+val* var759 /* : String */;
+char* var760 /* : NativeString */;
+val* var761 /* : FlatString */;
+static val* varonce762;
+val* var763 /* : String */;
+char* var764 /* : NativeString */;
+val* var765 /* : FlatString */;
+static val* varonce766;
+val* var767 /* : String */;
+char* var768 /* : NativeString */;
+val* var769 /* : FlatString */;
+val* var770 /* : ModelBuilder */;
+val* var772 /* : ModelBuilder */;
+val* var773 /* : ToolContext */;
+val* var775 /* : ToolContext */;
+val* var776 /* : OptionBool */;
+val* var778 /* : OptionBool */;
+val* var779 /* : nullable Object */;
+val* var781 /* : nullable Object */;
+short int var782 /* : Bool */;
+static val* varonce783;
+val* var784 /* : String */;
+char* var785 /* : NativeString */;
+val* var786 /* : FlatString */;
+static val* varonce787;
+val* var788 /* : String */;
+char* var789 /* : NativeString */;
+val* var790 /* : FlatString */;
+static val* varonce791;
+val* var792 /* : String */;
+char* var793 /* : NativeString */;
 val* var794 /* : FlatString */;
-val* var795 /* : Array[String] */;
-val* var797 /* : Array[String] */;
-val* var798 /* : Array[nullable Object] */;
-val* var_tags /* var tags: Array[String] */;
-static val* varonce799;
-val* var800 /* : String */;
-char* var801 /* : NativeString */;
-long var802 /* : Int */;
-val* var803 /* : FlatString */;
-val* var_804 /* var : Array[String] */;
-val* var805 /* : ArrayIterator[nullable Object] */;
-val* var_806 /* var : ArrayIterator[String] */;
-short int var807 /* : Bool */;
-val* var808 /* : nullable Object */;
-val* var_tag809 /* var tag: String */;
-static val* varonce810;
-val* var811 /* : String */;
-char* var812 /* : NativeString */;
-long var813 /* : Int */;
+static val* varonce795;
+val* var796 /* : String */;
+char* var797 /* : NativeString */;
+val* var798 /* : FlatString */;
+val* var799 /* : MModule */;
+val* var801 /* : MModule */;
+val* var802 /* : POSetElement[MModule] */;
+val* var804 /* : POSetElement[MModule] */;
+val* var805 /* : Collection[nullable Object] */;
+val* var_806 /* var : Collection[MModule] */;
+val* var807 /* : Iterator[nullable Object] */;
+val* var_808 /* var : Iterator[MModule] */;
+short int var809 /* : Bool */;
+val* var810 /* : nullable Object */;
+val* var_m /* var m: MModule */;
+static val* varonce811;
+val* var812 /* : String */;
+char* var813 /* : NativeString */;
 val* var814 /* : FlatString */;
-static val* varonce815;
+val* var815 /* : String */;
 val* var816 /* : String */;
-char* var817 /* : NativeString */;
-long var818 /* : Int */;
-val* var819 /* : FlatString */;
-val* var820 /* : Array[Object] */;
-long var821 /* : Int */;
-val* var822 /* : NativeArray[Object] */;
-val* var823 /* : String */;
-static val* varonce824;
-val* var825 /* : String */;
-char* var826 /* : NativeString */;
-long var827 /* : Int */;
-val* var828 /* : FlatString */;
-static val* varonce829;
-val* var830 /* : String */;
-char* var831 /* : NativeString */;
-long var832 /* : Int */;
-val* var833 /* : FlatString */;
-static val* varonce834;
-val* var835 /* : String */;
-char* var836 /* : NativeString */;
-long var837 /* : Int */;
-val* var838 /* : FlatString */;
-val* var839 /* : Array[Object] */;
-long var840 /* : Int */;
-val* var841 /* : NativeArray[Object] */;
-val* var842 /* : String */;
-static val* varonce843;
-val* var844 /* : String */;
-char* var845 /* : NativeString */;
-long var846 /* : Int */;
+val* var_f /* var f: String */;
+val* var818 /* : NativeArray[String] */;
+static val* varonce817;
+static val* varonce819;
+val* var820 /* : String */;
+char* var821 /* : NativeString */;
+val* var822 /* : FlatString */;
+static val* varonce823;
+val* var824 /* : String */;
+char* var825 /* : NativeString */;
+val* var826 /* : FlatString */;
+static val* varonce827;
+val* var828 /* : String */;
+char* var829 /* : NativeString */;
+val* var830 /* : FlatString */;
+val* var831 /* : Location */;
+val* var833 /* : Location */;
+val* var834 /* : nullable SourceFile */;
+val* var836 /* : nullable SourceFile */;
+val* var837 /* : String */;
+val* var839 /* : String */;
+val* var840 /* : String */;
+val* var841 /* : String */;
+val* var843 /* : NativeArray[String] */;
+static val* varonce842;
+static val* varonce844;
+val* var845 /* : String */;
+char* var846 /* : NativeString */;
 val* var847 /* : FlatString */;
 static val* varonce848;
 val* var849 /* : String */;
 char* var850 /* : NativeString */;
-long var851 /* : Int */;
-val* var852 /* : FlatString */;
-static val* varonce853;
-val* var854 /* : String */;
-char* var855 /* : NativeString */;
-long var856 /* : Int */;
-val* var857 /* : FlatString */;
-val* var858 /* : Array[Object] */;
-long var859 /* : Int */;
-val* var860 /* : NativeArray[Object] */;
-val* var861 /* : String */;
-static val* varonce862;
-val* var863 /* : String */;
-char* var864 /* : NativeString */;
-long var865 /* : Int */;
-val* var866 /* : FlatString */;
-static val* varonce867;
-val* var868 /* : String */;
-char* var869 /* : NativeString */;
-long var870 /* : Int */;
-val* var871 /* : FlatString */;
-static val* varonce872;
-val* var873 /* : String */;
-char* var874 /* : NativeString */;
-long var875 /* : Int */;
-val* var876 /* : FlatString */;
-val* var877 /* : Array[Object] */;
-long var878 /* : Int */;
-val* var879 /* : NativeArray[Object] */;
-val* var880 /* : String */;
-static val* varonce881;
-val* var882 /* : String */;
-char* var883 /* : NativeString */;
-long var884 /* : Int */;
-val* var885 /* : FlatString */;
-static val* varonce886;
-val* var887 /* : String */;
-char* var888 /* : NativeString */;
-long var889 /* : Int */;
-val* var890 /* : FlatString */;
-static val* varonce891;
-val* var892 /* : String */;
-char* var893 /* : NativeString */;
-long var894 /* : Int */;
-val* var895 /* : FlatString */;
-val* var896 /* : Array[Object] */;
-long var897 /* : Int */;
-val* var898 /* : NativeArray[Object] */;
-val* var899 /* : String */;
-val* var902 /* : ModelBuilder */;
-val* var904 /* : ModelBuilder */;
-val* var905 /* : ToolContext */;
-val* var907 /* : ToolContext */;
-val* var908 /* : OptionBool */;
-val* var910 /* : OptionBool */;
-val* var911 /* : nullable Object */;
-val* var913 /* : nullable Object */;
-short int var914 /* : Bool */;
-static val* varonce915;
-val* var916 /* : String */;
-char* var917 /* : NativeString */;
-long var918 /* : Int */;
-val* var919 /* : FlatString */;
-static val* varonce920;
-val* var921 /* : String */;
-char* var922 /* : NativeString */;
-long var923 /* : Int */;
-val* var924 /* : FlatString */;
-static val* varonce925;
-val* var926 /* : String */;
-char* var927 /* : NativeString */;
-long var928 /* : Int */;
-val* var929 /* : FlatString */;
-static val* varonce930;
-val* var931 /* : String */;
-char* var932 /* : NativeString */;
-long var933 /* : Int */;
-val* var934 /* : FlatString */;
-static val* varonce935;
-val* var936 /* : String */;
-char* var937 /* : NativeString */;
-long var938 /* : Int */;
-val* var939 /* : FlatString */;
-static val* varonce940;
-val* var941 /* : String */;
-char* var942 /* : NativeString */;
-long var943 /* : Int */;
-val* var944 /* : FlatString */;
-val* var945 /* : ModelBuilder */;
-val* var947 /* : ModelBuilder */;
-val* var948 /* : ToolContext */;
-val* var950 /* : ToolContext */;
-val* var951 /* : OptionBool */;
-val* var953 /* : OptionBool */;
-val* var954 /* : nullable Object */;
-val* var956 /* : nullable Object */;
-short int var957 /* : Bool */;
-static val* varonce958;
-val* var959 /* : String */;
-char* var960 /* : NativeString */;
-long var961 /* : Int */;
-val* var962 /* : FlatString */;
-static val* varonce963;
-val* var964 /* : String */;
-char* var965 /* : NativeString */;
-long var966 /* : Int */;
-val* var967 /* : FlatString */;
-static val* varonce968;
-val* var969 /* : String */;
-char* var970 /* : NativeString */;
-long var971 /* : Int */;
-val* var972 /* : FlatString */;
-static val* varonce973;
-val* var974 /* : String */;
-char* var975 /* : NativeString */;
-long var976 /* : Int */;
-val* var977 /* : FlatString */;
-val* var978 /* : MModule */;
-val* var980 /* : MModule */;
-val* var981 /* : POSetElement[MModule] */;
-val* var983 /* : POSetElement[MModule] */;
-val* var984 /* : Collection[nullable Object] */;
-val* var_985 /* var : Collection[MModule] */;
-val* var986 /* : Iterator[nullable Object] */;
-val* var_987 /* var : Iterator[MModule] */;
-short int var988 /* : Bool */;
-val* var989 /* : nullable Object */;
-val* var_m /* var m: MModule */;
-static val* varonce990;
-val* var991 /* : String */;
-char* var992 /* : NativeString */;
-long var993 /* : Int */;
-val* var994 /* : FlatString */;
-val* var995 /* : String */;
-val* var996 /* : String */;
-val* var_f /* var f: String */;
-static val* varonce997;
-val* var998 /* : String */;
-char* var999 /* : NativeString */;
-long var1000 /* : Int */;
-val* var1001 /* : FlatString */;
-static val* varonce1002;
-val* var1003 /* : String */;
-char* var1004 /* : NativeString */;
-long var1005 /* : Int */;
-val* var1006 /* : FlatString */;
-val* var1007 /* : Location */;
-val* var1009 /* : Location */;
-val* var1010 /* : nullable SourceFile */;
-val* var1012 /* : nullable SourceFile */;
-val* var1013 /* : String */;
-val* var1015 /* : String */;
-val* var1016 /* : String */;
-static val* varonce1017;
-val* var1018 /* : String */;
-char* var1019 /* : NativeString */;
-long var1020 /* : Int */;
-val* var1021 /* : FlatString */;
-val* var1022 /* : Array[Object] */;
-long var1023 /* : Int */;
-val* var1024 /* : NativeArray[Object] */;
-val* var1025 /* : String */;
-static val* varonce1026;
-val* var1027 /* : String */;
-char* var1028 /* : NativeString */;
-long var1029 /* : Int */;
-val* var1030 /* : FlatString */;
-static val* varonce1031;
-val* var1032 /* : String */;
-char* var1033 /* : NativeString */;
-long var1034 /* : Int */;
-val* var1035 /* : FlatString */;
-val* var1036 /* : Array[Object] */;
-long var1037 /* : Int */;
-val* var1038 /* : NativeArray[Object] */;
-val* var1039 /* : String */;
-{
-var = ((val* (*)(val* self))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:AbstractCompiler>*/;
+val* var851 /* : FlatString */;
+val* var852 /* : String */;
+{
+var = ((val*(*)(val* self))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompiler__new_visitor]))(self); /* new_visitor on <self:AbstractCompiler>*/
 }
 var_v = var;
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var1 = varonce;
 } else {
 var2 = "#include <signal.h>";
-var3 = 19;
-var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
-var1 = var4;
+var3 = standard___standard__NativeString___to_s_with_length(var2, 19l);
+var1 = var3;
 varonce = var1;
 }
 {
 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var1); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
-var7 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
-if (unlikely(var7 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
-}
-var5 = var7;
-RET_LABEL6:(void)0;
-}
-}
-{
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var5) on <var5:ModelBuilder> */
-var10 = var5->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var5:ModelBuilder> */
-if (unlikely(var10 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
-show_backtrace(1);
-}
-var8 = var10;
-RET_LABEL9:(void)0;
-}
-}
-{
-{ /* Inline abstract_compiler#ToolContext#opt_stacktrace (var8) on <var8:ToolContext> */
-var13 = var8->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_stacktrace].val; /* _opt_stacktrace on <var8:ToolContext> */
-if (unlikely(var13 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stacktrace");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 65);
-show_backtrace(1);
-}
-var11 = var13;
-RET_LABEL12:(void)0;
-}
-}
-{
-{ /* Inline opts#Option#value (var11) on <var11:OptionString> */
-var16 = var11->attrs[COLOR_opts__Option___value].val; /* _value on <var11:OptionString> */
-var14 = var16;
-RET_LABEL15:(void)0;
-}
-}
-var_ost = var14;
-{
 { /* Inline abstract_compiler#AbstractCompiler#target_platform (self) on <self:AbstractCompiler> */
-var19 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___target_platform].val; /* _target_platform on <self:AbstractCompiler> */
-if (unlikely(var19 == NULL)) {
+var6 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___target_platform].val; /* _target_platform on <self:AbstractCompiler> */
+if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _target_platform");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 487);
-show_backtrace(1);
-}
-var17 = var19;
-RET_LABEL18:(void)0;
-}
-}
-var_platform = var17;
-{
-var20 = nit___nit__Platform___supports_libunwind(var_platform);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 533);
+fatal_exit(1);
 }
-var21 = !var20;
-if (var21){
-if (varonce22) {
-var23 = varonce22;
-} else {
-var24 = "none";
-var25 = 4;
-var26 = standard___standard__NativeString___to_s_with_length(var24, var25);
-var23 = var26;
-varonce22 = var23;
+var4 = var6;
+RET_LABEL5:(void)0;
 }
-var_ost = var23;
-} else {
 }
+var_platform = var4;
 {
-var28 = nit___nit__Platform___no_main(var_platform);
+var8 = nit___nit__Platform___no_main(var_platform);
 }
-var_ = var28;
-if (var28){
-var27 = var_;
+var_ = var8;
+if (var8){
+var7 = var_;
 } else {
 {
 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
-var31 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
-if (unlikely(var31 == NULL)) {
+var11 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
+if (unlikely(var11 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
+fatal_exit(1);
 }
-var29 = var31;
-RET_LABEL30:(void)0;
+var9 = var11;
+RET_LABEL10:(void)0;
 }
 }
 {
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var29) on <var29:ModelBuilder> */
-var34 = var29->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var29:ModelBuilder> */
-if (unlikely(var34 == NULL)) {
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var9) on <var9:ModelBuilder> */
+var14 = var9->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var9:ModelBuilder> */
+if (unlikely(var14 == 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);
 }
-var32 = var34;
-RET_LABEL33:(void)0;
+var12 = var14;
+RET_LABEL13:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#ToolContext#opt_no_main (var32) on <var32:ToolContext> */
-var37 = var32->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_no_main].val; /* _opt_no_main on <var32:ToolContext> */
-if (unlikely(var37 == NULL)) {
+{ /* Inline abstract_compiler#ToolContext#opt_no_main (var12) on <var12:ToolContext> */
+var17 = var12->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_no_main].val; /* _opt_no_main on <var12:ToolContext> */
+if (unlikely(var17 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_main");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 35);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 36);
+fatal_exit(1);
 }
-var35 = var37;
-RET_LABEL36:(void)0;
+var15 = var17;
+RET_LABEL16:(void)0;
 }
 }
 {
-{ /* Inline opts#Option#value (var35) on <var35:OptionBool> */
-var40 = var35->attrs[COLOR_opts__Option___value].val; /* _value on <var35:OptionBool> */
-var38 = var40;
-RET_LABEL39:(void)0;
-}
-}
-var41 = ((struct instance_standard__Bool*)var38)->value; /* autounbox from nullable Object to Bool */;
-var27 = var41;
+{ /* Inline opts#Option#value (var15) on <var15:OptionBool> */
+var20 = var15->attrs[COLOR_opts__Option___value].val; /* _value on <var15:OptionBool> */
+var18 = var20;
+RET_LABEL19:(void)0;
 }
-var_no_main = var27;
-if (varonce43) {
-var44 = varonce43;
-} else {
-var45 = "nitstack";
-var46 = 8;
-var47 = standard___standard__NativeString___to_s_with_length(var45, var46);
-var44 = var47;
-varonce43 = var44;
 }
-if (var_ost == NULL) {
-var48 = 0; /* <var44:String> cannot be null */
-} else {
-var49 = ((short int (*)(val* self, val* p0))(var_ost->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ost, var44) /* == on <var_ost:nullable String>*/;
-var48 = var49;
+var21 = (short int)((long)(var18)>>2);
+var7 = var21;
 }
-var_50 = var48;
-if (var48){
-var42 = var_50;
-} else {
-if (varonce51) {
-var52 = varonce51;
-} else {
-var53 = "libunwind";
-var54 = 9;
-var55 = standard___standard__NativeString___to_s_with_length(var53, var54);
-var52 = var55;
-varonce51 = var52;
+var_no_main = var7;
+{
+var22 = nit___nit__Platform___supports_libunwind(var_platform);
 }
-if (var_ost == NULL) {
-var56 = 0; /* <var52:String> cannot be null */
+if (var22){
+if (likely(varonce23!=NULL)) {
+var24 = varonce23;
 } else {
-var57 = ((short int (*)(val* self, val* p0))(var_ost->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ost, var52) /* == on <var_ost:nullable String>*/;
-var56 = var57;
+var25 = "#ifndef NO_STACKTRACE";
+var26 = standard___standard__NativeString___to_s_with_length(var25, 21l);
+var24 = var26;
+varonce23 = var24;
 }
-var42 = var56;
+{
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var24); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (var42){
-if (varonce58) {
-var59 = varonce58;
+if (likely(varonce27!=NULL)) {
+var28 = varonce27;
 } else {
-var60 = "#define UNW_LOCAL_ONLY";
-var61 = 22;
-var62 = standard___standard__NativeString___to_s_with_length(var60, var61);
-var59 = var62;
-varonce58 = var59;
+var29 = "#define UNW_LOCAL_ONLY";
+var30 = standard___standard__NativeString___to_s_with_length(var29, 22l);
+var28 = var30;
+varonce27 = var28;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var59); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var28); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce63) {
-var64 = varonce63;
+if (likely(varonce31!=NULL)) {
+var32 = varonce31;
 } else {
-var65 = "#include <libunwind.h>";
-var66 = 22;
-var67 = standard___standard__NativeString___to_s_with_length(var65, var66);
-var64 = var67;
-varonce63 = var64;
+var33 = "#include <libunwind.h>";
+var34 = standard___standard__NativeString___to_s_with_length(var33, 22l);
+var32 = var34;
+varonce31 = var32;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var64); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var32); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce68) {
-var69 = varonce68;
+if (likely(varonce35!=NULL)) {
+var36 = varonce35;
 } else {
-var70 = "nitstack";
-var71 = 8;
-var72 = standard___standard__NativeString___to_s_with_length(var70, var71);
-var69 = var72;
-varonce68 = var69;
+var37 = "#include \"c_functions_hash.h\"";
+var38 = standard___standard__NativeString___to_s_with_length(var37, 29l);
+var36 = var38;
+varonce35 = var36;
 }
-if (var_ost == NULL) {
-var73 = 0; /* <var69:String> cannot be null */
-} else {
-var74 = ((short int (*)(val* self, val* p0))(var_ost->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ost, var69) /* == on <var_ost:nullable String>*/;
-var73 = var74;
+{
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var36); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (var73){
-if (varonce75) {
-var76 = varonce75;
+if (likely(varonce39!=NULL)) {
+var40 = varonce39;
 } else {
-var77 = "#include \"c_functions_hash.h\"";
-var78 = 29;
-var79 = standard___standard__NativeString___to_s_with_length(var77, var78);
-var76 = var79;
-varonce75 = var76;
+var41 = "#endif";
+var42 = standard___standard__NativeString___to_s_with_length(var41, 6l);
+var40 = var42;
+varonce39 = var40;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var76); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
-}
-} else {
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var40); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
 } else {
 }
-if (varonce80) {
-var81 = varonce80;
+if (likely(varonce43!=NULL)) {
+var44 = varonce43;
 } else {
-var82 = "int glob_argc;";
-var83 = 14;
-var84 = standard___standard__NativeString___to_s_with_length(var82, var83);
-var81 = var84;
-varonce80 = var81;
+var45 = "int glob_argc;";
+var46 = standard___standard__NativeString___to_s_with_length(var45, 14l);
+var44 = var46;
+varonce43 = var44;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var81); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var44); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce85) {
-var86 = varonce85;
+if (likely(varonce47!=NULL)) {
+var48 = varonce47;
 } else {
-var87 = "char **glob_argv;";
-var88 = 17;
-var89 = standard___standard__NativeString___to_s_with_length(var87, var88);
-var86 = var89;
-varonce85 = var86;
+var49 = "char **glob_argv;";
+var50 = standard___standard__NativeString___to_s_with_length(var49, 17l);
+var48 = var50;
+varonce47 = var48;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var86); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var48); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce90) {
-var91 = varonce90;
+if (likely(varonce51!=NULL)) {
+var52 = varonce51;
 } else {
-var92 = "val *glob_sys;";
-var93 = 14;
-var94 = standard___standard__NativeString___to_s_with_length(var92, var93);
-var91 = var94;
-varonce90 = var91;
+var53 = "val *glob_sys;";
+var54 = standard___standard__NativeString___to_s_with_length(var53, 14l);
+var52 = var54;
+varonce51 = var52;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var91); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var52); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
-var97 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
-if (unlikely(var97 == NULL)) {
+var57 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
+if (unlikely(var57 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
+fatal_exit(1);
 }
-var95 = var97;
-RET_LABEL96:(void)0;
+var55 = var57;
+RET_LABEL56:(void)0;
 }
 }
 {
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var95) on <var95:ModelBuilder> */
-var100 = var95->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var95:ModelBuilder> */
-if (unlikely(var100 == NULL)) {
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var55) on <var55:ModelBuilder> */
+var60 = var55->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var55:ModelBuilder> */
+if (unlikely(var60 == 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);
 }
-var98 = var100;
-RET_LABEL99:(void)0;
+var58 = var60;
+RET_LABEL59:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (var98) on <var98:ToolContext> */
-var103 = var98->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var98:ToolContext> */
-if (unlikely(var103 == NULL)) {
+{ /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (var58) on <var58:ToolContext> */
+var63 = var58->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var58:ToolContext> */
+if (unlikely(var63 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 59);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 60);
+fatal_exit(1);
 }
-var101 = var103;
-RET_LABEL102:(void)0;
+var61 = var63;
+RET_LABEL62:(void)0;
 }
 }
 {
-{ /* Inline opts#Option#value (var101) on <var101:OptionBool> */
-var106 = var101->attrs[COLOR_opts__Option___value].val; /* _value on <var101:OptionBool> */
-var104 = var106;
-RET_LABEL105:(void)0;
+{ /* Inline opts#Option#value (var61) on <var61:OptionBool> */
+var66 = var61->attrs[COLOR_opts__Option___value].val; /* _value on <var61:OptionBool> */
+var64 = var66;
+RET_LABEL65:(void)0;
 }
 }
-var107 = ((struct instance_standard__Bool*)var104)->value; /* autounbox from nullable Object to Bool */;
-if (var107){
+var67 = (short int)((long)(var64)>>2);
+if (var67){
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_tags (self) on <self:AbstractCompiler> */
-var110 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
-if (unlikely(var110 == NULL)) {
+var70 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
+if (unlikely(var70 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_tags");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 963);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1014);
+fatal_exit(1);
 }
-var108 = var110;
-RET_LABEL109:(void)0;
+var68 = var70;
+RET_LABEL69:(void)0;
 }
 }
-var_111 = var108;
+var_71 = var68;
 {
-var112 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_111);
+var72 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_71);
 }
-var_113 = var112;
+var_73 = var72;
 for(;;) {
 {
-var114 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_113);
+var74 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_73);
 }
-if (var114){
+if (var74){
 {
-var115 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_113);
+var75 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_73);
 }
-var_tag = var115;
-if (varonce116) {
-var117 = varonce116;
+var_tag = var75;
+if (unlikely(varonce76==NULL)) {
+var77 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce78!=NULL)) {
+var79 = varonce78;
 } else {
-var118 = "long count_type_test_resolved_";
-var119 = 30;
-var120 = standard___standard__NativeString___to_s_with_length(var118, var119);
-var117 = var120;
-varonce116 = var117;
+var80 = "long count_type_test_resolved_";
+var81 = standard___standard__NativeString___to_s_with_length(var80, 30l);
+var79 = var81;
+varonce78 = var79;
 }
-if (varonce121) {
-var122 = varonce121;
+((struct instance_standard__NativeArray*)var77)->values[0]=var79;
+if (likely(varonce82!=NULL)) {
+var83 = varonce82;
 } else {
-var123 = ";";
-var124 = 1;
-var125 = standard___standard__NativeString___to_s_with_length(var123, var124);
-var122 = var125;
-varonce121 = var122;
-}
-var126 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var126 = array_instance Array[Object] */
-var127 = 3;
-var128 = NEW_standard__NativeArray(var127, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var128)->values[0] = (val*) var117;
-((struct instance_standard__NativeArray*)var128)->values[1] = (val*) var_tag;
-((struct instance_standard__NativeArray*)var128)->values[2] = (val*) var122;
-{
-((void (*)(val* self, val* p0, long p1))(var126->class->vft[COLOR_standard__array__Array__with_native]))(var126, var128, var127) /* with_native on <var126:Array[Object]>*/;
+var84 = ";";
+var85 = standard___standard__NativeString___to_s_with_length(var84, 1l);
+var83 = var85;
+varonce82 = var83;
 }
+((struct instance_standard__NativeArray*)var77)->values[2]=var83;
+} else {
+var77 = varonce76;
+varonce76 = NULL;
 }
+((struct instance_standard__NativeArray*)var77)->values[1]=var_tag;
 {
-var129 = ((val* (*)(val* self))(var126->class->vft[COLOR_standard__string__Object__to_s]))(var126) /* to_s on <var126:Array[Object]>*/;
+var86 = ((val*(*)(val* self))(var77->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var77); /* native_to_s on <var77:NativeArray[String]>*/
 }
+varonce76 = var77;
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var129); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var86); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce130) {
-var131 = varonce130;
+if (unlikely(varonce87==NULL)) {
+var88 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce89!=NULL)) {
+var90 = varonce89;
 } else {
-var132 = "long count_type_test_unresolved_";
-var133 = 32;
-var134 = standard___standard__NativeString___to_s_with_length(var132, var133);
-var131 = var134;
-varonce130 = var131;
+var91 = "long count_type_test_unresolved_";
+var92 = standard___standard__NativeString___to_s_with_length(var91, 32l);
+var90 = var92;
+varonce89 = var90;
 }
-if (varonce135) {
-var136 = varonce135;
+((struct instance_standard__NativeArray*)var88)->values[0]=var90;
+if (likely(varonce93!=NULL)) {
+var94 = varonce93;
 } else {
-var137 = ";";
-var138 = 1;
-var139 = standard___standard__NativeString___to_s_with_length(var137, var138);
-var136 = var139;
-varonce135 = var136;
-}
-var140 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var140 = array_instance Array[Object] */
-var141 = 3;
-var142 = NEW_standard__NativeArray(var141, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var142)->values[0] = (val*) var131;
-((struct instance_standard__NativeArray*)var142)->values[1] = (val*) var_tag;
-((struct instance_standard__NativeArray*)var142)->values[2] = (val*) var136;
-{
-((void (*)(val* self, val* p0, long p1))(var140->class->vft[COLOR_standard__array__Array__with_native]))(var140, var142, var141) /* with_native on <var140:Array[Object]>*/;
+var95 = ";";
+var96 = standard___standard__NativeString___to_s_with_length(var95, 1l);
+var94 = var96;
+varonce93 = var94;
 }
+((struct instance_standard__NativeArray*)var88)->values[2]=var94;
+} else {
+var88 = varonce87;
+varonce87 = NULL;
 }
+((struct instance_standard__NativeArray*)var88)->values[1]=var_tag;
 {
-var143 = ((val* (*)(val* self))(var140->class->vft[COLOR_standard__string__Object__to_s]))(var140) /* to_s on <var140:Array[Object]>*/;
+var97 = ((val*(*)(val* self))(var88->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var88); /* native_to_s on <var88:NativeArray[String]>*/
 }
+varonce87 = var88;
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var143); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var97); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce144) {
-var145 = varonce144;
+if (unlikely(varonce98==NULL)) {
+var99 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce100!=NULL)) {
+var101 = varonce100;
 } else {
-var146 = "long count_type_test_skipped_";
-var147 = 29;
-var148 = standard___standard__NativeString___to_s_with_length(var146, var147);
-var145 = var148;
-varonce144 = var145;
+var102 = "long count_type_test_skipped_";
+var103 = standard___standard__NativeString___to_s_with_length(var102, 29l);
+var101 = var103;
+varonce100 = var101;
 }
-if (varonce149) {
-var150 = varonce149;
+((struct instance_standard__NativeArray*)var99)->values[0]=var101;
+if (likely(varonce104!=NULL)) {
+var105 = varonce104;
 } else {
-var151 = ";";
-var152 = 1;
-var153 = standard___standard__NativeString___to_s_with_length(var151, var152);
-var150 = var153;
-varonce149 = var150;
-}
-var154 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var154 = array_instance Array[Object] */
-var155 = 3;
-var156 = NEW_standard__NativeArray(var155, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var156)->values[0] = (val*) var145;
-((struct instance_standard__NativeArray*)var156)->values[1] = (val*) var_tag;
-((struct instance_standard__NativeArray*)var156)->values[2] = (val*) var150;
-{
-((void (*)(val* self, val* p0, long p1))(var154->class->vft[COLOR_standard__array__Array__with_native]))(var154, var156, var155) /* with_native on <var154:Array[Object]>*/;
+var106 = ";";
+var107 = standard___standard__NativeString___to_s_with_length(var106, 1l);
+var105 = var107;
+varonce104 = var105;
 }
+((struct instance_standard__NativeArray*)var99)->values[2]=var105;
+} else {
+var99 = varonce98;
+varonce98 = NULL;
 }
+((struct instance_standard__NativeArray*)var99)->values[1]=var_tag;
 {
-var157 = ((val* (*)(val* self))(var154->class->vft[COLOR_standard__string__Object__to_s]))(var154) /* to_s on <var154:Array[Object]>*/;
+var108 = ((val*(*)(val* self))(var99->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var99); /* native_to_s on <var99:NativeArray[String]>*/
 }
+varonce98 = var99;
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var157); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var108); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
-var160 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
-if (unlikely(var160 == NULL)) {
+var111 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
+if (unlikely(var111 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
-var158 = var160;
-RET_LABEL159:(void)0;
+var109 = var111;
+RET_LABEL110:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#header (var158) on <var158:AbstractCompiler> */
-var163 = var158->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var158:AbstractCompiler> */
-if (unlikely(var163 == NULL)) {
+{ /* Inline abstract_compiler#AbstractCompiler#header (var109) on <var109:AbstractCompiler> */
+var114 = var109->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var109:AbstractCompiler> */
+if (unlikely(var114 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 523);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
+fatal_exit(1);
 }
-var161 = var163;
-RET_LABEL162:(void)0;
+var112 = var114;
+RET_LABEL113:(void)0;
 }
 }
-if (varonce164) {
-var165 = varonce164;
+if (unlikely(varonce115==NULL)) {
+var116 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce117!=NULL)) {
+var118 = varonce117;
 } else {
-var166 = "extern long count_type_test_resolved_";
-var167 = 37;
-var168 = standard___standard__NativeString___to_s_with_length(var166, var167);
-var165 = var168;
-varonce164 = var165;
+var119 = "extern long count_type_test_resolved_";
+var120 = standard___standard__NativeString___to_s_with_length(var119, 37l);
+var118 = var120;
+varonce117 = var118;
 }
-if (varonce169) {
-var170 = varonce169;
+((struct instance_standard__NativeArray*)var116)->values[0]=var118;
+if (likely(varonce121!=NULL)) {
+var122 = varonce121;
 } else {
-var171 = ";";
-var172 = 1;
-var173 = standard___standard__NativeString___to_s_with_length(var171, var172);
-var170 = var173;
-varonce169 = var170;
-}
-var174 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var174 = array_instance Array[Object] */
-var175 = 3;
-var176 = NEW_standard__NativeArray(var175, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var176)->values[0] = (val*) var165;
-((struct instance_standard__NativeArray*)var176)->values[1] = (val*) var_tag;
-((struct instance_standard__NativeArray*)var176)->values[2] = (val*) var170;
-{
-((void (*)(val* self, val* p0, long p1))(var174->class->vft[COLOR_standard__array__Array__with_native]))(var174, var176, var175) /* with_native on <var174:Array[Object]>*/;
+var123 = ";";
+var124 = standard___standard__NativeString___to_s_with_length(var123, 1l);
+var122 = var124;
+varonce121 = var122;
 }
+((struct instance_standard__NativeArray*)var116)->values[2]=var122;
+} else {
+var116 = varonce115;
+varonce115 = NULL;
 }
+((struct instance_standard__NativeArray*)var116)->values[1]=var_tag;
 {
-var177 = ((val* (*)(val* self))(var174->class->vft[COLOR_standard__string__Object__to_s]))(var174) /* to_s on <var174:Array[Object]>*/;
+var125 = ((val*(*)(val* self))(var116->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var116); /* native_to_s on <var116:NativeArray[String]>*/
 }
+varonce115 = var116;
 {
-nit___nit__CodeWriter___add_decl(var161, var177); /* Direct call abstract_compiler#CodeWriter#add_decl on <var161:CodeWriter>*/
+nit___nit__CodeWriter___add_decl(var112, var125); /* Direct call abstract_compiler#CodeWriter#add_decl on <var112:CodeWriter>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
-var180 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
-if (unlikely(var180 == NULL)) {
+var128 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
+if (unlikely(var128 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
-var178 = var180;
-RET_LABEL179:(void)0;
+var126 = var128;
+RET_LABEL127:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#header (var178) on <var178:AbstractCompiler> */
-var183 = var178->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var178:AbstractCompiler> */
-if (unlikely(var183 == NULL)) {
+{ /* Inline abstract_compiler#AbstractCompiler#header (var126) on <var126:AbstractCompiler> */
+var131 = var126->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var126:AbstractCompiler> */
+if (unlikely(var131 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 523);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
+fatal_exit(1);
 }
-var181 = var183;
-RET_LABEL182:(void)0;
+var129 = var131;
+RET_LABEL130:(void)0;
 }
 }
-if (varonce184) {
-var185 = varonce184;
+if (unlikely(varonce132==NULL)) {
+var133 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce134!=NULL)) {
+var135 = varonce134;
 } else {
-var186 = "extern long count_type_test_unresolved_";
-var187 = 39;
-var188 = standard___standard__NativeString___to_s_with_length(var186, var187);
-var185 = var188;
-varonce184 = var185;
+var136 = "extern long count_type_test_unresolved_";
+var137 = standard___standard__NativeString___to_s_with_length(var136, 39l);
+var135 = var137;
+varonce134 = var135;
 }
-if (varonce189) {
-var190 = varonce189;
+((struct instance_standard__NativeArray*)var133)->values[0]=var135;
+if (likely(varonce138!=NULL)) {
+var139 = varonce138;
 } else {
-var191 = ";";
-var192 = 1;
-var193 = standard___standard__NativeString___to_s_with_length(var191, var192);
-var190 = var193;
-varonce189 = var190;
-}
-var194 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var194 = array_instance Array[Object] */
-var195 = 3;
-var196 = NEW_standard__NativeArray(var195, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var196)->values[0] = (val*) var185;
-((struct instance_standard__NativeArray*)var196)->values[1] = (val*) var_tag;
-((struct instance_standard__NativeArray*)var196)->values[2] = (val*) var190;
-{
-((void (*)(val* self, val* p0, long p1))(var194->class->vft[COLOR_standard__array__Array__with_native]))(var194, var196, var195) /* with_native on <var194:Array[Object]>*/;
+var140 = ";";
+var141 = standard___standard__NativeString___to_s_with_length(var140, 1l);
+var139 = var141;
+varonce138 = var139;
 }
+((struct instance_standard__NativeArray*)var133)->values[2]=var139;
+} else {
+var133 = varonce132;
+varonce132 = NULL;
 }
+((struct instance_standard__NativeArray*)var133)->values[1]=var_tag;
 {
-var197 = ((val* (*)(val* self))(var194->class->vft[COLOR_standard__string__Object__to_s]))(var194) /* to_s on <var194:Array[Object]>*/;
+var142 = ((val*(*)(val* self))(var133->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var133); /* native_to_s on <var133:NativeArray[String]>*/
 }
+varonce132 = var133;
 {
-nit___nit__CodeWriter___add_decl(var181, var197); /* Direct call abstract_compiler#CodeWriter#add_decl on <var181:CodeWriter>*/
+nit___nit__CodeWriter___add_decl(var129, var142); /* Direct call abstract_compiler#CodeWriter#add_decl on <var129:CodeWriter>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
-var200 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
-if (unlikely(var200 == NULL)) {
+var145 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
+if (unlikely(var145 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
-var198 = var200;
-RET_LABEL199:(void)0;
+var143 = var145;
+RET_LABEL144:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#header (var198) on <var198:AbstractCompiler> */
-var203 = var198->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var198:AbstractCompiler> */
-if (unlikely(var203 == NULL)) {
+{ /* Inline abstract_compiler#AbstractCompiler#header (var143) on <var143:AbstractCompiler> */
+var148 = var143->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var143:AbstractCompiler> */
+if (unlikely(var148 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 523);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
+fatal_exit(1);
 }
-var201 = var203;
-RET_LABEL202:(void)0;
+var146 = var148;
+RET_LABEL147:(void)0;
 }
 }
-if (varonce204) {
-var205 = varonce204;
+if (unlikely(varonce149==NULL)) {
+var150 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce151!=NULL)) {
+var152 = varonce151;
 } else {
-var206 = "extern long count_type_test_skipped_";
-var207 = 36;
-var208 = standard___standard__NativeString___to_s_with_length(var206, var207);
-var205 = var208;
-varonce204 = var205;
+var153 = "extern long count_type_test_skipped_";
+var154 = standard___standard__NativeString___to_s_with_length(var153, 36l);
+var152 = var154;
+varonce151 = var152;
 }
-if (varonce209) {
-var210 = varonce209;
+((struct instance_standard__NativeArray*)var150)->values[0]=var152;
+if (likely(varonce155!=NULL)) {
+var156 = varonce155;
 } else {
-var211 = ";";
-var212 = 1;
-var213 = standard___standard__NativeString___to_s_with_length(var211, var212);
-var210 = var213;
-varonce209 = var210;
-}
-var214 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var214 = array_instance Array[Object] */
-var215 = 3;
-var216 = NEW_standard__NativeArray(var215, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var216)->values[0] = (val*) var205;
-((struct instance_standard__NativeArray*)var216)->values[1] = (val*) var_tag;
-((struct instance_standard__NativeArray*)var216)->values[2] = (val*) var210;
-{
-((void (*)(val* self, val* p0, long p1))(var214->class->vft[COLOR_standard__array__Array__with_native]))(var214, var216, var215) /* with_native on <var214:Array[Object]>*/;
+var157 = ";";
+var158 = standard___standard__NativeString___to_s_with_length(var157, 1l);
+var156 = var158;
+varonce155 = var156;
 }
+((struct instance_standard__NativeArray*)var150)->values[2]=var156;
+} else {
+var150 = varonce149;
+varonce149 = NULL;
 }
+((struct instance_standard__NativeArray*)var150)->values[1]=var_tag;
 {
-var217 = ((val* (*)(val* self))(var214->class->vft[COLOR_standard__string__Object__to_s]))(var214) /* to_s on <var214:Array[Object]>*/;
+var159 = ((val*(*)(val* self))(var150->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var150); /* native_to_s on <var150:NativeArray[String]>*/
 }
+varonce149 = var150;
 {
-nit___nit__CodeWriter___add_decl(var201, var217); /* Direct call abstract_compiler#CodeWriter#add_decl on <var201:CodeWriter>*/
+nit___nit__CodeWriter___add_decl(var146, var159); /* Direct call abstract_compiler#CodeWriter#add_decl on <var146:CodeWriter>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_113); /* Direct call array#ArrayIterator#next on <var_113:ArrayIterator[String]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_73); /* Direct call array#ArrayIterator#next on <var_73:ArrayIterator[String]>*/
 }
 } else {
 goto BREAK_label;
@@ -1621,1166 +1325,1118 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_113) on <var_113:ArrayIterator[String]> */
-RET_LABEL218:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_73); /* Direct call array#ArrayIterator#finish on <var_73:ArrayIterator[String]>*/
 }
 } else {
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
-var221 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
-if (unlikely(var221 == NULL)) {
+var162 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
+if (unlikely(var162 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
+fatal_exit(1);
 }
-var219 = var221;
-RET_LABEL220:(void)0;
+var160 = var162;
+RET_LABEL161:(void)0;
 }
 }
 {
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var219) on <var219:ModelBuilder> */
-var224 = var219->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var219:ModelBuilder> */
-if (unlikely(var224 == NULL)) {
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var160) on <var160:ModelBuilder> */
+var165 = var160->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var160:ModelBuilder> */
+if (unlikely(var165 == 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);
 }
-var222 = var224;
-RET_LABEL223:(void)0;
+var163 = var165;
+RET_LABEL164:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var222) on <var222:ToolContext> */
-var227 = var222->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var222:ToolContext> */
-if (unlikely(var227 == NULL)) {
+{ /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var163) on <var163:ToolContext> */
+var168 = var163->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var163:ToolContext> */
+if (unlikely(var168 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 61);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 62);
+fatal_exit(1);
 }
-var225 = var227;
-RET_LABEL226:(void)0;
+var166 = var168;
+RET_LABEL167:(void)0;
 }
 }
 {
-{ /* Inline opts#Option#value (var225) on <var225:OptionBool> */
-var230 = var225->attrs[COLOR_opts__Option___value].val; /* _value on <var225:OptionBool> */
-var228 = var230;
-RET_LABEL229:(void)0;
+{ /* Inline opts#Option#value (var166) on <var166:OptionBool> */
+var171 = var166->attrs[COLOR_opts__Option___value].val; /* _value on <var166:OptionBool> */
+var169 = var171;
+RET_LABEL170:(void)0;
 }
 }
-var231 = ((struct instance_standard__Bool*)var228)->value; /* autounbox from nullable Object to Bool */;
-if (var231){
-if (varonce232) {
-var233 = varonce232;
+var172 = (short int)((long)(var169)>>2);
+if (var172){
+if (likely(varonce173!=NULL)) {
+var174 = varonce173;
 } else {
-var234 = "long count_invoke_by_tables;";
-var235 = 28;
-var236 = standard___standard__NativeString___to_s_with_length(var234, var235);
-var233 = var236;
-varonce232 = var233;
+var175 = "long count_invoke_by_tables;";
+var176 = standard___standard__NativeString___to_s_with_length(var175, 28l);
+var174 = var176;
+varonce173 = var174;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var233); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var174); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce237) {
-var238 = varonce237;
+if (likely(varonce177!=NULL)) {
+var178 = varonce177;
 } else {
-var239 = "long count_invoke_by_direct;";
-var240 = 28;
-var241 = standard___standard__NativeString___to_s_with_length(var239, var240);
-var238 = var241;
-varonce237 = var238;
+var179 = "long count_invoke_by_direct;";
+var180 = standard___standard__NativeString___to_s_with_length(var179, 28l);
+var178 = var180;
+varonce177 = var178;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var238); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var178); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce242) {
-var243 = varonce242;
+if (likely(varonce181!=NULL)) {
+var182 = varonce181;
 } else {
-var244 = "long count_invoke_by_inline;";
-var245 = 28;
-var246 = standard___standard__NativeString___to_s_with_length(var244, var245);
-var243 = var246;
-varonce242 = var243;
+var183 = "long count_invoke_by_inline;";
+var184 = standard___standard__NativeString___to_s_with_length(var183, 28l);
+var182 = var184;
+varonce181 = var182;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var243); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var182); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
-var249 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
-if (unlikely(var249 == NULL)) {
+var187 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
+if (unlikely(var187 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
-var247 = var249;
-RET_LABEL248:(void)0;
+var185 = var187;
+RET_LABEL186:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#header (var247) on <var247:AbstractCompiler> */
-var252 = var247->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var247:AbstractCompiler> */
-if (unlikely(var252 == NULL)) {
+{ /* Inline abstract_compiler#AbstractCompiler#header (var185) on <var185:AbstractCompiler> */
+var190 = var185->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var185:AbstractCompiler> */
+if (unlikely(var190 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 523);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
+fatal_exit(1);
 }
-var250 = var252;
-RET_LABEL251:(void)0;
+var188 = var190;
+RET_LABEL189:(void)0;
 }
 }
-if (varonce253) {
-var254 = varonce253;
+if (likely(varonce191!=NULL)) {
+var192 = varonce191;
 } else {
-var255 = "extern long count_invoke_by_tables;";
-var256 = 35;
-var257 = standard___standard__NativeString___to_s_with_length(var255, var256);
-var254 = var257;
-varonce253 = var254;
+var193 = "extern long count_invoke_by_tables;";
+var194 = standard___standard__NativeString___to_s_with_length(var193, 35l);
+var192 = var194;
+varonce191 = var192;
 }
 {
-nit___nit__CodeWriter___add_decl(var250, var254); /* Direct call abstract_compiler#CodeWriter#add_decl on <var250:CodeWriter>*/
+nit___nit__CodeWriter___add_decl(var188, var192); /* Direct call abstract_compiler#CodeWriter#add_decl on <var188:CodeWriter>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
-var260 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
-if (unlikely(var260 == NULL)) {
+var197 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
+if (unlikely(var197 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
-var258 = var260;
-RET_LABEL259:(void)0;
+var195 = var197;
+RET_LABEL196:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#header (var258) on <var258:AbstractCompiler> */
-var263 = var258->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var258:AbstractCompiler> */
-if (unlikely(var263 == NULL)) {
+{ /* Inline abstract_compiler#AbstractCompiler#header (var195) on <var195:AbstractCompiler> */
+var200 = var195->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var195:AbstractCompiler> */
+if (unlikely(var200 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 523);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
+fatal_exit(1);
 }
-var261 = var263;
-RET_LABEL262:(void)0;
+var198 = var200;
+RET_LABEL199:(void)0;
 }
 }
-if (varonce264) {
-var265 = varonce264;
+if (likely(varonce201!=NULL)) {
+var202 = varonce201;
 } else {
-var266 = "extern long count_invoke_by_direct;";
-var267 = 35;
-var268 = standard___standard__NativeString___to_s_with_length(var266, var267);
-var265 = var268;
-varonce264 = var265;
+var203 = "extern long count_invoke_by_direct;";
+var204 = standard___standard__NativeString___to_s_with_length(var203, 35l);
+var202 = var204;
+varonce201 = var202;
 }
 {
-nit___nit__CodeWriter___add_decl(var261, var265); /* Direct call abstract_compiler#CodeWriter#add_decl on <var261:CodeWriter>*/
+nit___nit__CodeWriter___add_decl(var198, var202); /* Direct call abstract_compiler#CodeWriter#add_decl on <var198:CodeWriter>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
-var271 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
-if (unlikely(var271 == NULL)) {
+var207 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
+if (unlikely(var207 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
-var269 = var271;
-RET_LABEL270:(void)0;
+var205 = var207;
+RET_LABEL206:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#header (var269) on <var269:AbstractCompiler> */
-var274 = var269->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var269:AbstractCompiler> */
-if (unlikely(var274 == NULL)) {
+{ /* Inline abstract_compiler#AbstractCompiler#header (var205) on <var205:AbstractCompiler> */
+var210 = var205->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var205:AbstractCompiler> */
+if (unlikely(var210 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 523);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
+fatal_exit(1);
 }
-var272 = var274;
-RET_LABEL273:(void)0;
+var208 = var210;
+RET_LABEL209:(void)0;
 }
 }
-if (varonce275) {
-var276 = varonce275;
+if (likely(varonce211!=NULL)) {
+var212 = varonce211;
 } else {
-var277 = "extern long count_invoke_by_inline;";
-var278 = 35;
-var279 = standard___standard__NativeString___to_s_with_length(var277, var278);
-var276 = var279;
-varonce275 = var276;
+var213 = "extern long count_invoke_by_inline;";
+var214 = standard___standard__NativeString___to_s_with_length(var213, 35l);
+var212 = var214;
+varonce211 = var212;
 }
 {
-nit___nit__CodeWriter___add_decl(var272, var276); /* Direct call abstract_compiler#CodeWriter#add_decl on <var272:CodeWriter>*/
+nit___nit__CodeWriter___add_decl(var208, var212); /* Direct call abstract_compiler#CodeWriter#add_decl on <var208:CodeWriter>*/
 }
 } else {
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
-var282 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
-if (unlikely(var282 == NULL)) {
+var217 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
+if (unlikely(var217 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
+fatal_exit(1);
 }
-var280 = var282;
-RET_LABEL281:(void)0;
+var215 = var217;
+RET_LABEL216:(void)0;
 }
 }
 {
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var280) on <var280:ModelBuilder> */
-var285 = var280->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var280:ModelBuilder> */
-if (unlikely(var285 == NULL)) {
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var215) on <var215:ModelBuilder> */
+var220 = var215->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var215:ModelBuilder> */
+if (unlikely(var220 == 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);
 }
-var283 = var285;
-RET_LABEL284:(void)0;
+var218 = var220;
+RET_LABEL219:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var283) on <var283:ToolContext> */
-var288 = var283->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var283:ToolContext> */
-if (unlikely(var288 == NULL)) {
+{ /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var218) on <var218:ToolContext> */
+var223 = var218->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var218:ToolContext> */
+if (unlikely(var223 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 63);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 64);
+fatal_exit(1);
 }
-var286 = var288;
-RET_LABEL287:(void)0;
+var221 = var223;
+RET_LABEL222:(void)0;
 }
 }
 {
-{ /* Inline opts#Option#value (var286) on <var286:OptionBool> */
-var291 = var286->attrs[COLOR_opts__Option___value].val; /* _value on <var286:OptionBool> */
-var289 = var291;
-RET_LABEL290:(void)0;
+{ /* Inline opts#Option#value (var221) on <var221:OptionBool> */
+var226 = var221->attrs[COLOR_opts__Option___value].val; /* _value on <var221:OptionBool> */
+var224 = var226;
+RET_LABEL225:(void)0;
 }
 }
-var292 = ((struct instance_standard__Bool*)var289)->value; /* autounbox from nullable Object to Bool */;
-if (var292){
-if (varonce293) {
-var294 = varonce293;
+var227 = (short int)((long)(var224)>>2);
+if (var227){
+if (likely(varonce228!=NULL)) {
+var229 = varonce228;
 } else {
-var295 = "long count_attr_reads = 0;";
-var296 = 26;
-var297 = standard___standard__NativeString___to_s_with_length(var295, var296);
-var294 = var297;
-varonce293 = var294;
+var230 = "long count_attr_reads = 0;";
+var231 = standard___standard__NativeString___to_s_with_length(var230, 26l);
+var229 = var231;
+varonce228 = var229;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var294); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var229); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce298) {
-var299 = varonce298;
+if (likely(varonce232!=NULL)) {
+var233 = varonce232;
 } else {
-var300 = "long count_isset_checks = 0;";
-var301 = 28;
-var302 = standard___standard__NativeString___to_s_with_length(var300, var301);
-var299 = var302;
-varonce298 = var299;
+var234 = "long count_isset_checks = 0;";
+var235 = standard___standard__NativeString___to_s_with_length(var234, 28l);
+var233 = var235;
+varonce232 = var233;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var299); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var233); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
-var305 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
-if (unlikely(var305 == NULL)) {
+var238 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
+if (unlikely(var238 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
-var303 = var305;
-RET_LABEL304:(void)0;
+var236 = var238;
+RET_LABEL237:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#header (var303) on <var303:AbstractCompiler> */
-var308 = var303->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var303:AbstractCompiler> */
-if (unlikely(var308 == NULL)) {
+{ /* Inline abstract_compiler#AbstractCompiler#header (var236) on <var236:AbstractCompiler> */
+var241 = var236->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var236:AbstractCompiler> */
+if (unlikely(var241 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 523);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
+fatal_exit(1);
 }
-var306 = var308;
-RET_LABEL307:(void)0;
+var239 = var241;
+RET_LABEL240:(void)0;
 }
 }
-if (varonce309) {
-var310 = varonce309;
+if (likely(varonce242!=NULL)) {
+var243 = varonce242;
 } else {
-var311 = "extern long count_attr_reads;";
-var312 = 29;
-var313 = standard___standard__NativeString___to_s_with_length(var311, var312);
-var310 = var313;
-varonce309 = var310;
+var244 = "extern long count_attr_reads;";
+var245 = standard___standard__NativeString___to_s_with_length(var244, 29l);
+var243 = var245;
+varonce242 = var243;
 }
 {
-nit___nit__CodeWriter___add_decl(var306, var310); /* Direct call abstract_compiler#CodeWriter#add_decl on <var306:CodeWriter>*/
+nit___nit__CodeWriter___add_decl(var239, var243); /* Direct call abstract_compiler#CodeWriter#add_decl on <var239:CodeWriter>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
-var316 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
-if (unlikely(var316 == NULL)) {
+var248 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
+if (unlikely(var248 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
-var314 = var316;
-RET_LABEL315:(void)0;
+var246 = var248;
+RET_LABEL247:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#header (var314) on <var314:AbstractCompiler> */
-var319 = var314->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var314:AbstractCompiler> */
-if (unlikely(var319 == NULL)) {
+{ /* Inline abstract_compiler#AbstractCompiler#header (var246) on <var246:AbstractCompiler> */
+var251 = var246->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <var246:AbstractCompiler> */
+if (unlikely(var251 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 523);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
+fatal_exit(1);
 }
-var317 = var319;
-RET_LABEL318:(void)0;
+var249 = var251;
+RET_LABEL250:(void)0;
 }
 }
-if (varonce320) {
-var321 = varonce320;
+if (likely(varonce252!=NULL)) {
+var253 = varonce252;
 } else {
-var322 = "extern long count_isset_checks;";
-var323 = 31;
-var324 = standard___standard__NativeString___to_s_with_length(var322, var323);
-var321 = var324;
-varonce320 = var321;
+var254 = "extern long count_isset_checks;";
+var255 = standard___standard__NativeString___to_s_with_length(var254, 31l);
+var253 = var255;
+varonce252 = var253;
 }
 {
-nit___nit__CodeWriter___add_decl(var317, var321); /* Direct call abstract_compiler#CodeWriter#add_decl on <var317:CodeWriter>*/
+nit___nit__CodeWriter___add_decl(var249, var253); /* Direct call abstract_compiler#CodeWriter#add_decl on <var249:CodeWriter>*/
 }
 } else {
 }
-if (varonce325) {
-var326 = varonce325;
+if (likely(varonce256!=NULL)) {
+var257 = varonce256;
 } else {
-var327 = "void sig_handler(int signo){";
-var328 = 28;
-var329 = standard___standard__NativeString___to_s_with_length(var327, var328);
-var326 = var329;
-varonce325 = var326;
+var258 = "static void show_backtrace(void) {";
+var259 = standard___standard__NativeString___to_s_with_length(var258, 34l);
+var257 = var259;
+varonce256 = var257;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var326); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var257); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+}
+{
+var260 = nit___nit__Platform___supports_libunwind(var_platform);
 }
-if (varonce330) {
-var331 = varonce330;
+if (var260){
+if (likely(varonce261!=NULL)) {
+var262 = varonce261;
 } else {
-var332 = "PRINT_ERROR(\"Caught signal : %s\\n\", strsignal(signo));";
-var333 = 54;
-var334 = standard___standard__NativeString___to_s_with_length(var332, var333);
-var331 = var334;
-varonce330 = var331;
+var263 = "#ifndef NO_STACKTRACE";
+var264 = standard___standard__NativeString___to_s_with_length(var263, 21l);
+var262 = var264;
+varonce261 = var262;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var331); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var262); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce335) {
-var336 = varonce335;
+if (likely(varonce265!=NULL)) {
+var266 = varonce265;
 } else {
-var337 = "show_backtrace(signo);";
-var338 = 22;
-var339 = standard___standard__NativeString___to_s_with_length(var337, var338);
-var336 = var339;
-varonce335 = var336;
+var267 = "char* opt = getenv(\"NIT_NO_STACK\");";
+var268 = standard___standard__NativeString___to_s_with_length(var267, 35l);
+var266 = var268;
+varonce265 = var266;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var336); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var266); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce340) {
-var341 = varonce340;
+if (likely(varonce269!=NULL)) {
+var270 = varonce269;
 } else {
-var342 = "}";
-var343 = 1;
-var344 = standard___standard__NativeString___to_s_with_length(var342, var343);
-var341 = var344;
-varonce340 = var341;
+var271 = "unw_cursor_t cursor;";
+var272 = standard___standard__NativeString___to_s_with_length(var271, 20l);
+var270 = var272;
+varonce269 = var270;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var341); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var270); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce345) {
-var346 = varonce345;
+if (likely(varonce273!=NULL)) {
+var274 = varonce273;
 } else {
-var347 = "void show_backtrace (int signo) {";
-var348 = 33;
-var349 = standard___standard__NativeString___to_s_with_length(var347, var348);
-var346 = var349;
-varonce345 = var346;
+var275 = "if(opt==NULL){";
+var276 = standard___standard__NativeString___to_s_with_length(var275, 14l);
+var274 = var276;
+varonce273 = var274;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var346); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var274); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce351) {
-var352 = varonce351;
+if (likely(varonce277!=NULL)) {
+var278 = varonce277;
 } else {
-var353 = "nitstack";
-var354 = 8;
-var355 = standard___standard__NativeString___to_s_with_length(var353, var354);
-var352 = var355;
-varonce351 = var352;
+var279 = "unw_context_t uc;";
+var280 = standard___standard__NativeString___to_s_with_length(var279, 17l);
+var278 = var280;
+varonce277 = var278;
 }
-if (var_ost == NULL) {
-var356 = 0; /* <var352:String> cannot be null */
-} else {
-var357 = ((short int (*)(val* self, val* p0))(var_ost->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ost, var352) /* == on <var_ost:nullable String>*/;
-var356 = var357;
+{
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var278); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-var_358 = var356;
-if (var356){
-var350 = var_358;
-} else {
-if (varonce359) {
-var360 = varonce359;
+if (likely(varonce281!=NULL)) {
+var282 = varonce281;
 } else {
-var361 = "libunwind";
-var362 = 9;
-var363 = standard___standard__NativeString___to_s_with_length(var361, var362);
-var360 = var363;
-varonce359 = var360;
+var283 = "unw_word_t ip;";
+var284 = standard___standard__NativeString___to_s_with_length(var283, 14l);
+var282 = var284;
+varonce281 = var282;
+}
+{
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var282); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (var_ost == NULL) {
-var364 = 0; /* <var360:String> cannot be null */
+if (likely(varonce285!=NULL)) {
+var286 = varonce285;
 } else {
-var365 = ((short int (*)(val* self, val* p0))(var_ost->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ost, var360) /* == on <var_ost:nullable String>*/;
-var364 = var365;
+var287 = "char* procname = malloc(sizeof(char) * 100);";
+var288 = standard___standard__NativeString___to_s_with_length(var287, 44l);
+var286 = var288;
+varonce285 = var286;
 }
-var350 = var364;
+{
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var286); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (var350){
-if (varonce366) {
-var367 = varonce366;
+if (likely(varonce289!=NULL)) {
+var290 = varonce289;
 } else {
-var368 = "char* opt = getenv(\"NIT_NO_STACK\");";
-var369 = 35;
-var370 = standard___standard__NativeString___to_s_with_length(var368, var369);
-var367 = var370;
-varonce366 = var367;
+var291 = "unw_getcontext(&uc);";
+var292 = standard___standard__NativeString___to_s_with_length(var291, 20l);
+var290 = var292;
+varonce289 = var290;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var367); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var290); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce371) {
-var372 = varonce371;
+if (likely(varonce293!=NULL)) {
+var294 = varonce293;
 } else {
-var373 = "unw_cursor_t cursor;";
-var374 = 20;
-var375 = standard___standard__NativeString___to_s_with_length(var373, var374);
-var372 = var375;
-varonce371 = var372;
+var295 = "unw_init_local(&cursor, &uc);";
+var296 = standard___standard__NativeString___to_s_with_length(var295, 29l);
+var294 = var296;
+varonce293 = var294;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var372); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var294); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce376) {
-var377 = varonce376;
+if (likely(varonce297!=NULL)) {
+var298 = varonce297;
 } else {
-var378 = "if(opt==NULL){";
-var379 = 14;
-var380 = standard___standard__NativeString___to_s_with_length(var378, var379);
-var377 = var380;
-varonce376 = var377;
+var299 = "PRINT_ERROR(\"-------------------------------------------------\\n\");";
+var300 = standard___standard__NativeString___to_s_with_length(var299, 67l);
+var298 = var300;
+varonce297 = var298;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var377); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var298); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce381) {
-var382 = varonce381;
+if (likely(varonce301!=NULL)) {
+var302 = varonce301;
 } else {
-var383 = "unw_context_t uc;";
-var384 = 17;
-var385 = standard___standard__NativeString___to_s_with_length(var383, var384);
-var382 = var385;
-varonce381 = var382;
+var303 = "PRINT_ERROR(\"--   Stack Trace   ------------------------------\\n\");";
+var304 = standard___standard__NativeString___to_s_with_length(var303, 67l);
+var302 = var304;
+varonce301 = var302;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var382); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var302); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce386) {
-var387 = varonce386;
+if (likely(varonce305!=NULL)) {
+var306 = varonce305;
 } else {
-var388 = "unw_word_t ip;";
-var389 = 14;
-var390 = standard___standard__NativeString___to_s_with_length(var388, var389);
-var387 = var390;
-varonce386 = var387;
+var307 = "PRINT_ERROR(\"-------------------------------------------------\\n\");";
+var308 = standard___standard__NativeString___to_s_with_length(var307, 67l);
+var306 = var308;
+varonce305 = var306;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var387); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var306); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce391) {
-var392 = varonce391;
+if (likely(varonce309!=NULL)) {
+var310 = varonce309;
 } else {
-var393 = "char* procname = malloc(sizeof(char) * 100);";
-var394 = 44;
-var395 = standard___standard__NativeString___to_s_with_length(var393, var394);
-var392 = var395;
-varonce391 = var392;
+var311 = "while (unw_step(&cursor) > 0) {";
+var312 = standard___standard__NativeString___to_s_with_length(var311, 31l);
+var310 = var312;
+varonce309 = var310;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var392); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var310); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce396) {
-var397 = varonce396;
+if (likely(varonce313!=NULL)) {
+var314 = varonce313;
 } else {
-var398 = "unw_getcontext(&uc);";
-var399 = 20;
-var400 = standard___standard__NativeString___to_s_with_length(var398, var399);
-var397 = var400;
-varonce396 = var397;
+var315 = "\tunw_get_proc_name(&cursor, procname, 100, &ip);";
+var316 = standard___standard__NativeString___to_s_with_length(var315, 48l);
+var314 = var316;
+varonce313 = var314;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var397); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var314); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce401) {
-var402 = varonce401;
+if (likely(varonce317!=NULL)) {
+var318 = varonce317;
 } else {
-var403 = "unw_init_local(&cursor, &uc);";
-var404 = 29;
-var405 = standard___standard__NativeString___to_s_with_length(var403, var404);
-var402 = var405;
-varonce401 = var402;
+var319 = "\tconst char* recv = get_nit_name(procname, strlen(procname));";
+var320 = standard___standard__NativeString___to_s_with_length(var319, 61l);
+var318 = var320;
+varonce317 = var318;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var402); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var318); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce406) {
-var407 = varonce406;
+if (likely(varonce321!=NULL)) {
+var322 = varonce321;
 } else {
-var408 = "PRINT_ERROR(\"-------------------------------------------------\\n\");";
-var409 = 67;
-var410 = standard___standard__NativeString___to_s_with_length(var408, var409);
-var407 = var410;
-varonce406 = var407;
+var323 = "\tif (recv != NULL){";
+var324 = standard___standard__NativeString___to_s_with_length(var323, 19l);
+var322 = var324;
+varonce321 = var322;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var407); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var322); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce411) {
-var412 = varonce411;
+if (likely(varonce325!=NULL)) {
+var326 = varonce325;
 } else {
-var413 = "PRINT_ERROR(\"--   Stack Trace   ------------------------------\\n\");";
-var414 = 67;
-var415 = standard___standard__NativeString___to_s_with_length(var413, var414);
-var412 = var415;
-varonce411 = var412;
+var327 = "\t\tPRINT_ERROR(\"` %s\\n\", recv);";
+var328 = standard___standard__NativeString___to_s_with_length(var327, 30l);
+var326 = var328;
+varonce325 = var326;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var412); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var326); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce416) {
-var417 = varonce416;
+if (likely(varonce329!=NULL)) {
+var330 = varonce329;
 } else {
-var418 = "PRINT_ERROR(\"-------------------------------------------------\\n\");";
-var419 = 67;
-var420 = standard___standard__NativeString___to_s_with_length(var418, var419);
-var417 = var420;
-varonce416 = var417;
+var331 = "\t}else{";
+var332 = standard___standard__NativeString___to_s_with_length(var331, 7l);
+var330 = var332;
+varonce329 = var330;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var417); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var330); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce421) {
-var422 = varonce421;
+if (likely(varonce333!=NULL)) {
+var334 = varonce333;
 } else {
-var423 = "while (unw_step(&cursor) > 0) {";
-var424 = 31;
-var425 = standard___standard__NativeString___to_s_with_length(var423, var424);
-var422 = var425;
-varonce421 = var422;
+var335 = "\t\tPRINT_ERROR(\"` %s\\n\", procname);";
+var336 = standard___standard__NativeString___to_s_with_length(var335, 34l);
+var334 = var336;
+varonce333 = var334;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var422); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var334); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce426) {
-var427 = varonce426;
+if (likely(varonce337!=NULL)) {
+var338 = varonce337;
 } else {
-var428 = "\11unw_get_proc_name(&cursor, procname, 100, &ip);";
-var429 = 48;
-var430 = standard___standard__NativeString___to_s_with_length(var428, var429);
-var427 = var430;
-varonce426 = var427;
+var339 = "\t}";
+var340 = standard___standard__NativeString___to_s_with_length(var339, 2l);
+var338 = var340;
+varonce337 = var338;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var427); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var338); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce431) {
-var432 = varonce431;
+if (likely(varonce341!=NULL)) {
+var342 = varonce341;
 } else {
-var433 = "nitstack";
-var434 = 8;
-var435 = standard___standard__NativeString___to_s_with_length(var433, var434);
-var432 = var435;
-varonce431 = var432;
+var343 = "}";
+var344 = standard___standard__NativeString___to_s_with_length(var343, 1l);
+var342 = var344;
+varonce341 = var342;
 }
-if (var_ost == NULL) {
-var436 = 0; /* <var432:String> cannot be null */
-} else {
-var437 = ((short int (*)(val* self, val* p0))(var_ost->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ost, var432) /* == on <var_ost:nullable String>*/;
-var436 = var437;
+{
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var342); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (var436){
-if (varonce438) {
-var439 = varonce438;
+if (likely(varonce345!=NULL)) {
+var346 = varonce345;
 } else {
-var440 = "\11const char* recv = get_nit_name(procname, strlen(procname));";
-var441 = 61;
-var442 = standard___standard__NativeString___to_s_with_length(var440, var441);
-var439 = var442;
-varonce438 = var439;
+var347 = "PRINT_ERROR(\"-------------------------------------------------\\n\");";
+var348 = standard___standard__NativeString___to_s_with_length(var347, 67l);
+var346 = var348;
+varonce345 = var346;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var439); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var346); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce443) {
-var444 = varonce443;
+if (likely(varonce349!=NULL)) {
+var350 = varonce349;
 } else {
-var445 = "\11if (recv != NULL){";
-var446 = 19;
-var447 = standard___standard__NativeString___to_s_with_length(var445, var446);
-var444 = var447;
-varonce443 = var444;
+var351 = "free(procname);";
+var352 = standard___standard__NativeString___to_s_with_length(var351, 15l);
+var350 = var352;
+varonce349 = var350;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var444); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var350); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce448) {
-var449 = varonce448;
+if (likely(varonce353!=NULL)) {
+var354 = varonce353;
 } else {
-var450 = "\11\11PRINT_ERROR(\"` %s\\n\", recv);";
-var451 = 30;
-var452 = standard___standard__NativeString___to_s_with_length(var450, var451);
-var449 = var452;
-varonce448 = var449;
+var355 = "}";
+var356 = standard___standard__NativeString___to_s_with_length(var355, 1l);
+var354 = var356;
+varonce353 = var354;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var449); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var354); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce453) {
-var454 = varonce453;
+if (likely(varonce357!=NULL)) {
+var358 = varonce357;
 } else {
-var455 = "\11}else{";
-var456 = 7;
-var457 = standard___standard__NativeString___to_s_with_length(var455, var456);
-var454 = var457;
-varonce453 = var454;
+var359 = "#endif /* NO_STACKTRACE */";
+var360 = standard___standard__NativeString___to_s_with_length(var359, 26l);
+var358 = var360;
+varonce357 = var358;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var454); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var358); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+}
+} else {
 }
-if (varonce458) {
-var459 = varonce458;
+if (likely(varonce361!=NULL)) {
+var362 = varonce361;
 } else {
-var460 = "\11\11PRINT_ERROR(\"` %s\\n\", procname);";
-var461 = 34;
-var462 = standard___standard__NativeString___to_s_with_length(var460, var461);
-var459 = var462;
-varonce458 = var459;
+var363 = "}";
+var364 = standard___standard__NativeString___to_s_with_length(var363, 1l);
+var362 = var364;
+varonce361 = var362;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var459); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var362); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce463) {
-var464 = varonce463;
+if (likely(varonce365!=NULL)) {
+var366 = varonce365;
 } else {
-var465 = "\11}";
-var466 = 2;
-var467 = standard___standard__NativeString___to_s_with_length(var465, var466);
-var464 = var467;
-varonce463 = var464;
+var367 = "void sig_handler(int signo){";
+var368 = standard___standard__NativeString___to_s_with_length(var367, 28l);
+var366 = var368;
+varonce365 = var366;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var464); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var366); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
+if (likely(varonce369!=NULL)) {
+var370 = varonce369;
 } else {
-if (varonce468) {
-var469 = varonce468;
-} else {
-var470 = "\11PRINT_ERROR(\"` %s \\n\",procname);";
-var471 = 33;
-var472 = standard___standard__NativeString___to_s_with_length(var470, var471);
-var469 = var472;
-varonce468 = var469;
+var371 = "PRINT_ERROR(\"Caught signal : %s\\n\", strsignal(signo));";
+var372 = standard___standard__NativeString___to_s_with_length(var371, 54l);
+var370 = var372;
+varonce369 = var370;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var469); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var370); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
+if (likely(varonce373!=NULL)) {
+var374 = varonce373;
+} else {
+var375 = "show_backtrace();";
+var376 = standard___standard__NativeString___to_s_with_length(var375, 17l);
+var374 = var376;
+varonce373 = var374;
+}
+{
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var374); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce473) {
-var474 = varonce473;
+if (likely(varonce377!=NULL)) {
+var378 = varonce377;
 } else {
-var475 = "}";
-var476 = 1;
-var477 = standard___standard__NativeString___to_s_with_length(var475, var476);
-var474 = var477;
-varonce473 = var474;
+var379 = "signal(signo, SIG_DFL);";
+var380 = standard___standard__NativeString___to_s_with_length(var379, 23l);
+var378 = var380;
+varonce377 = var378;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var474); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var378); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce478) {
-var479 = varonce478;
+if (likely(varonce381!=NULL)) {
+var382 = varonce381;
 } else {
-var480 = "PRINT_ERROR(\"-------------------------------------------------\\n\");";
-var481 = 67;
-var482 = standard___standard__NativeString___to_s_with_length(var480, var481);
-var479 = var482;
-varonce478 = var479;
+var383 = "kill(getpid(), signo);";
+var384 = standard___standard__NativeString___to_s_with_length(var383, 22l);
+var382 = var384;
+varonce381 = var382;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var479); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var382); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce483) {
-var484 = varonce483;
+if (likely(varonce385!=NULL)) {
+var386 = varonce385;
 } else {
-var485 = "free(procname);";
-var486 = 15;
-var487 = standard___standard__NativeString___to_s_with_length(var485, var486);
-var484 = var487;
-varonce483 = var484;
+var387 = "}";
+var388 = standard___standard__NativeString___to_s_with_length(var387, 1l);
+var386 = var388;
+varonce385 = var386;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var484); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var386); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce488) {
-var489 = varonce488;
+if (likely(varonce389!=NULL)) {
+var390 = varonce389;
 } else {
-var490 = "}";
-var491 = 1;
-var492 = standard___standard__NativeString___to_s_with_length(var490, var491);
-var489 = var492;
-varonce488 = var489;
+var391 = "void fatal_exit(int status) {";
+var392 = standard___standard__NativeString___to_s_with_length(var391, 29l);
+var390 = var392;
+varonce389 = var390;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var489); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var390); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
+if (likely(varonce393!=NULL)) {
+var394 = varonce393;
 } else {
+var395 = "show_backtrace();";
+var396 = standard___standard__NativeString___to_s_with_length(var395, 17l);
+var394 = var396;
+varonce393 = var394;
+}
+{
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var394); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce493) {
-var494 = varonce493;
+if (likely(varonce397!=NULL)) {
+var398 = varonce397;
 } else {
-var495 = "exit(signo);";
-var496 = 12;
-var497 = standard___standard__NativeString___to_s_with_length(var495, var496);
-var494 = var497;
-varonce493 = var494;
+var399 = "exit(status);";
+var400 = standard___standard__NativeString___to_s_with_length(var399, 13l);
+var398 = var400;
+varonce397 = var398;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var494); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var398); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce498) {
-var499 = varonce498;
+if (likely(varonce401!=NULL)) {
+var402 = varonce401;
 } else {
-var500 = "}";
-var501 = 1;
-var502 = standard___standard__NativeString___to_s_with_length(var500, var501);
-var499 = var502;
-varonce498 = var499;
+var403 = "}";
+var404 = standard___standard__NativeString___to_s_with_length(var403, 1l);
+var402 = var404;
+varonce401 = var402;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var499); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var402); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
 if (var_no_main){
-if (varonce503) {
-var504 = varonce503;
+if (likely(varonce405!=NULL)) {
+var406 = varonce405;
 } else {
-var505 = "int nit_main(int argc, char** argv) {";
-var506 = 37;
-var507 = standard___standard__NativeString___to_s_with_length(var505, var506);
-var504 = var507;
-varonce503 = var504;
+var407 = "int nit_main(int argc, char** argv) {";
+var408 = standard___standard__NativeString___to_s_with_length(var407, 37l);
+var406 = var408;
+varonce405 = var406;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var504); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var406); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
 } else {
-if (varonce508) {
-var509 = varonce508;
+if (likely(varonce409!=NULL)) {
+var410 = varonce409;
 } else {
-var510 = "int main(int argc, char** argv) {";
-var511 = 33;
-var512 = standard___standard__NativeString___to_s_with_length(var510, var511);
-var509 = var512;
-varonce508 = var509;
+var411 = "int main(int argc, char** argv) {";
+var412 = standard___standard__NativeString___to_s_with_length(var411, 33l);
+var410 = var412;
+varonce409 = var410;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var509); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var410); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
 }
-if (varonce513) {
-var514 = varonce513;
+if (likely(varonce413!=NULL)) {
+var414 = varonce413;
 } else {
-var515 = "signal(SIGABRT, sig_handler);";
-var516 = 29;
-var517 = standard___standard__NativeString___to_s_with_length(var515, var516);
-var514 = var517;
-varonce513 = var514;
+var415 = "signal(SIGABRT, sig_handler);";
+var416 = standard___standard__NativeString___to_s_with_length(var415, 29l);
+var414 = var416;
+varonce413 = var414;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var514); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var414); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce518) {
-var519 = varonce518;
+if (likely(varonce417!=NULL)) {
+var418 = varonce417;
 } else {
-var520 = "signal(SIGFPE, sig_handler);";
-var521 = 28;
-var522 = standard___standard__NativeString___to_s_with_length(var520, var521);
-var519 = var522;
-varonce518 = var519;
+var419 = "signal(SIGFPE, sig_handler);";
+var420 = standard___standard__NativeString___to_s_with_length(var419, 28l);
+var418 = var420;
+varonce417 = var418;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var519); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var418); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce523) {
-var524 = varonce523;
+if (likely(varonce421!=NULL)) {
+var422 = varonce421;
 } else {
-var525 = "signal(SIGILL, sig_handler);";
-var526 = 28;
-var527 = standard___standard__NativeString___to_s_with_length(var525, var526);
-var524 = var527;
-varonce523 = var524;
+var423 = "signal(SIGILL, sig_handler);";
+var424 = standard___standard__NativeString___to_s_with_length(var423, 28l);
+var422 = var424;
+varonce421 = var422;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var524); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var422); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce528) {
-var529 = varonce528;
+if (likely(varonce425!=NULL)) {
+var426 = varonce425;
 } else {
-var530 = "signal(SIGINT, sig_handler);";
-var531 = 28;
-var532 = standard___standard__NativeString___to_s_with_length(var530, var531);
-var529 = var532;
-varonce528 = var529;
+var427 = "signal(SIGINT, sig_handler);";
+var428 = standard___standard__NativeString___to_s_with_length(var427, 28l);
+var426 = var428;
+varonce425 = var426;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var529); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var426); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce533) {
-var534 = varonce533;
+if (likely(varonce429!=NULL)) {
+var430 = varonce429;
 } else {
-var535 = "signal(SIGTERM, sig_handler);";
-var536 = 29;
-var537 = standard___standard__NativeString___to_s_with_length(var535, var536);
-var534 = var537;
-varonce533 = var534;
+var431 = "signal(SIGTERM, sig_handler);";
+var432 = standard___standard__NativeString___to_s_with_length(var431, 29l);
+var430 = var432;
+varonce429 = var430;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var534); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var430); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce538) {
-var539 = varonce538;
+if (likely(varonce433!=NULL)) {
+var434 = varonce433;
 } else {
-var540 = "signal(SIGSEGV, sig_handler);";
-var541 = 29;
-var542 = standard___standard__NativeString___to_s_with_length(var540, var541);
-var539 = var542;
-varonce538 = var539;
+var435 = "signal(SIGSEGV, sig_handler);";
+var436 = standard___standard__NativeString___to_s_with_length(var435, 29l);
+var434 = var436;
+varonce433 = var434;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var539); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var434); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce543) {
-var544 = varonce543;
+if (likely(varonce437!=NULL)) {
+var438 = varonce437;
 } else {
-var545 = "signal(SIGPIPE, sig_handler);";
-var546 = 29;
-var547 = standard___standard__NativeString___to_s_with_length(var545, var546);
-var544 = var547;
-varonce543 = var544;
+var439 = "signal(SIGPIPE, sig_handler);";
+var440 = standard___standard__NativeString___to_s_with_length(var439, 29l);
+var438 = var440;
+varonce437 = var438;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var544); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var438); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce548) {
-var549 = varonce548;
+if (likely(varonce441!=NULL)) {
+var442 = varonce441;
 } else {
-var550 = "glob_argc = argc; glob_argv = argv;";
-var551 = 35;
-var552 = standard___standard__NativeString___to_s_with_length(var550, var551);
-var549 = var552;
-varonce548 = var549;
+var443 = "glob_argc = argc; glob_argv = argv;";
+var444 = standard___standard__NativeString___to_s_with_length(var443, 35l);
+var442 = var444;
+varonce441 = var442;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var549); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var442); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce553) {
-var554 = varonce553;
+if (likely(varonce445!=NULL)) {
+var446 = varonce445;
 } else {
-var555 = "initialize_gc_option();";
-var556 = 23;
-var557 = standard___standard__NativeString___to_s_with_length(var555, var556);
-var554 = var557;
-varonce553 = var554;
+var447 = "initialize_gc_option();";
+var448 = standard___standard__NativeString___to_s_with_length(var447, 23l);
+var446 = var448;
+varonce445 = var446;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var554); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var446); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce558) {
-var559 = varonce558;
+if (likely(varonce449!=NULL)) {
+var450 = varonce449;
 } else {
-var560 = "initialize_nitni_global_refs();";
-var561 = 31;
-var562 = standard___standard__NativeString___to_s_with_length(var560, var561);
-var559 = var562;
-varonce558 = var559;
+var451 = "initialize_nitni_global_refs();";
+var452 = standard___standard__NativeString___to_s_with_length(var451, 31l);
+var450 = var452;
+varonce449 = var450;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var559); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var450); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:AbstractCompiler> */
-var565 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:AbstractCompiler> */
-if (unlikely(var565 == NULL)) {
+var455 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:AbstractCompiler> */
+if (unlikely(var455 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
-var563 = var565;
-RET_LABEL564:(void)0;
+var453 = var455;
+RET_LABEL454:(void)0;
 }
 }
 {
-var566 = nit__model___MModule___sys_type(var563);
+var456 = nit__model___MModule___sys_type(var453);
 }
-var_main_type = var566;
-var567 = NULL;
+var_main_type = var456;
 if (var_main_type == NULL) {
-var568 = 0; /* is null */
+var457 = 0; /* is null */
 } else {
-var568 = 1; /* arg is null and recv is not */
+var457 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_main_type,var567) on <var_main_type:nullable MClassType> */
-var_other = var567;
+{ /* Inline kernel#Object#!= (var_main_type,((val*)NULL)) on <var_main_type:nullable MClassType> */
+var_other = ((val*)NULL);
 {
-var571 = ((short int (*)(val* self, val* p0))(var_main_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_main_type, var_other) /* == on <var_main_type:nullable MClassType(MClassType)>*/;
+var460 = ((short int(*)(val* self, val* p0))(var_main_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_main_type, var_other); /* == on <var_main_type:nullable MClassType(MClassType)>*/
 }
-var572 = !var571;
-var569 = var572;
-goto RET_LABEL570;
-RET_LABEL570:(void)0;
+var461 = !var460;
+var458 = var461;
+goto RET_LABEL459;
+RET_LABEL459:(void)0;
 }
-var568 = var569;
+var457 = var458;
 }
-if (var568){
+if (var457){
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
-var575 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
-if (unlikely(var575 == NULL)) {
+var464 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
+if (unlikely(var464 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
-var573 = var575;
-RET_LABEL574:(void)0;
+var462 = var464;
+RET_LABEL463:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var573) on <var573:AbstractCompiler> */
-var578 = var573->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var573:AbstractCompiler> */
-if (unlikely(var578 == NULL)) {
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var462) on <var462:AbstractCompiler> */
+var467 = var462->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var462:AbstractCompiler> */
+if (unlikely(var467 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
-var576 = var578;
-RET_LABEL577:(void)0;
+var465 = var467;
+RET_LABEL466:(void)0;
 }
 }
-var_mainmodule = var576;
+var_mainmodule = var465;
 {
-var579 = ((val* (*)(val* self, val* p0))(var_v->class->vft[COLOR_nit__abstract_compiler__AbstractCompilerVisitor__init_instance]))(var_v, var_main_type) /* init_instance on <var_v:AbstractCompilerVisitor>*/;
+var468 = ((val*(*)(val* self, val* p0))(var_v->class->vft[COLOR_nit__abstract_compiler__AbstractCompilerVisitor__init_instance]))(var_v, var_main_type); /* init_instance on <var_v:AbstractCompilerVisitor>*/
 }
-var_glob_sys = var579;
-if (varonce580) {
-var581 = varonce580;
+var_glob_sys = var468;
+if (unlikely(varonce469==NULL)) {
+var470 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce471!=NULL)) {
+var472 = varonce471;
 } else {
-var582 = "glob_sys = ";
-var583 = 11;
-var584 = standard___standard__NativeString___to_s_with_length(var582, var583);
-var581 = var584;
-varonce580 = var581;
+var473 = "glob_sys = ";
+var474 = standard___standard__NativeString___to_s_with_length(var473, 11l);
+var472 = var474;
+varonce471 = var472;
 }
-if (varonce585) {
-var586 = varonce585;
+((struct instance_standard__NativeArray*)var470)->values[0]=var472;
+if (likely(varonce475!=NULL)) {
+var476 = varonce475;
 } else {
-var587 = ";";
-var588 = 1;
-var589 = standard___standard__NativeString___to_s_with_length(var587, var588);
-var586 = var589;
-varonce585 = var586;
+var477 = ";";
+var478 = standard___standard__NativeString___to_s_with_length(var477, 1l);
+var476 = var478;
+varonce475 = var476;
 }
-var590 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var590 = array_instance Array[Object] */
-var591 = 3;
-var592 = NEW_standard__NativeArray(var591, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var592)->values[0] = (val*) var581;
-((struct instance_standard__NativeArray*)var592)->values[1] = (val*) var_glob_sys;
-((struct instance_standard__NativeArray*)var592)->values[2] = (val*) var586;
-{
-((void (*)(val* self, val* p0, long p1))(var590->class->vft[COLOR_standard__array__Array__with_native]))(var590, var592, var591) /* with_native on <var590:Array[Object]>*/;
+((struct instance_standard__NativeArray*)var470)->values[2]=var476;
+} else {
+var470 = varonce469;
+varonce469 = NULL;
 }
+{
+var479 = ((val*(*)(val* self))(var_glob_sys->class->vft[COLOR_standard__string__Object__to_s]))(var_glob_sys); /* to_s on <var_glob_sys:RuntimeVariable>*/
 }
+((struct instance_standard__NativeArray*)var470)->values[1]=var479;
 {
-var593 = ((val* (*)(val* self))(var590->class->vft[COLOR_standard__string__Object__to_s]))(var590) /* to_s on <var590:Array[Object]>*/;
+var480 = ((val*(*)(val* self))(var470->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var470); /* native_to_s on <var470:NativeArray[String]>*/
 }
+varonce469 = var470;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var593); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var480); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce594) {
-var595 = varonce594;
+if (likely(varonce481!=NULL)) {
+var482 = varonce481;
 } else {
-var596 = "init";
-var597 = 4;
-var598 = standard___standard__NativeString___to_s_with_length(var596, var597);
-var595 = var598;
-varonce594 = var595;
+var483 = "init";
+var484 = standard___standard__NativeString___to_s_with_length(var483, 4l);
+var482 = var484;
+varonce481 = var482;
 }
 {
 { /* Inline model#MClassType#mclass (var_main_type) on <var_main_type:nullable MClassType(MClassType)> */
-var601 = var_main_type->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_main_type:nullable MClassType(MClassType)> */
-if (unlikely(var601 == NULL)) {
+var487 = var_main_type->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_main_type:nullable MClassType(MClassType)> */
+if (unlikely(var487 == 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);
 }
-var599 = var601;
-RET_LABEL600:(void)0;
+var485 = var487;
+RET_LABEL486:(void)0;
 }
 }
 {
-var602 = nit__model___MModule___try_get_primitive_method(var_mainmodule, var595, var599);
+var488 = nit__model___MModule___try_get_primitive_method(var_mainmodule, var482, var485);
 }
-var_main_init = var602;
-var603 = NULL;
+var_main_init = var488;
 if (var_main_init == NULL) {
-var604 = 0; /* is null */
+var489 = 0; /* is null */
 } else {
-var604 = 1; /* arg is null and recv is not */
+var489 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_main_init,var603) on <var_main_init:nullable MMethod> */
-var_other = var603;
+{ /* Inline kernel#Object#!= (var_main_init,((val*)NULL)) on <var_main_init:nullable MMethod> */
+var_other = ((val*)NULL);
 {
-var607 = ((short int (*)(val* self, val* p0))(var_main_init->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_main_init, var_other) /* == on <var_main_init:nullable MMethod(MMethod)>*/;
+var492 = ((short int(*)(val* self, val* p0))(var_main_init->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_main_init, var_other); /* == on <var_main_init:nullable MMethod(MMethod)>*/
 }
-var608 = !var607;
-var605 = var608;
-goto RET_LABEL606;
-RET_LABEL606:(void)0;
+var493 = !var492;
+var490 = var493;
+goto RET_LABEL491;
+RET_LABEL491:(void)0;
 }
-var604 = var605;
+var489 = var490;
 }
-if (var604){
-var609 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
-var610 = 1;
+if (var489){
+var494 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
 {
-standard___standard__Array___with_capacity(var609, var610); /* Direct call array#Array#with_capacity on <var609:Array[RuntimeVariable]>*/
+standard___standard__Array___with_capacity(var494, 1l); /* Direct call array#Array#with_capacity on <var494:Array[RuntimeVariable]>*/
 }
-var_611 = var609;
+var_495 = var494;
 {
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_611, var_glob_sys); /* Direct call array#AbstractArray#push on <var_611:Array[RuntimeVariable]>*/
+standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_495, var_glob_sys); /* Direct call array#AbstractArray#push on <var_495:Array[RuntimeVariable]>*/
 }
 {
-var612 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(var_v, var_main_init, var_611);
+var496 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(var_v, var_main_init, var_495);
 }
 } else {
 }
-if (varonce614) {
-var615 = varonce614;
+if (likely(varonce498!=NULL)) {
+var499 = varonce498;
 } else {
-var616 = "run";
-var617 = 3;
-var618 = standard___standard__NativeString___to_s_with_length(var616, var617);
-var615 = var618;
-varonce614 = var615;
+var500 = "run";
+var501 = standard___standard__NativeString___to_s_with_length(var500, 3l);
+var499 = var501;
+varonce498 = var499;
 }
 {
 { /* Inline model#MClassType#mclass (var_main_type) on <var_main_type:nullable MClassType(MClassType)> */
-var621 = var_main_type->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_main_type:nullable MClassType(MClassType)> */
-if (unlikely(var621 == NULL)) {
+var504 = var_main_type->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_main_type:nullable MClassType(MClassType)> */
+if (unlikely(var504 == 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);
 }
-var619 = var621;
-RET_LABEL620:(void)0;
+var502 = var504;
+RET_LABEL503:(void)0;
 }
 }
 {
-var622 = nit__model___MModule___try_get_primitive_method(var_mainmodule, var615, var619);
+var505 = nit__model___MModule___try_get_primitive_method(var_mainmodule, var499, var502);
 }
-if (var622!=NULL) {
-var613 = var622;
+if (var505!=NULL) {
+var497 = var505;
 } else {
-if (varonce623) {
-var624 = varonce623;
+if (likely(varonce506!=NULL)) {
+var507 = varonce506;
 } else {
-var625 = "main";
-var626 = 4;
-var627 = standard___standard__NativeString___to_s_with_length(var625, var626);
-var624 = var627;
-varonce623 = var624;
+var508 = "main";
+var509 = standard___standard__NativeString___to_s_with_length(var508, 4l);
+var507 = var509;
+varonce506 = var507;
 }
 {
 { /* Inline model#MClassType#mclass (var_main_type) on <var_main_type:nullable MClassType(MClassType)> */
-var630 = var_main_type->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_main_type:nullable MClassType(MClassType)> */
-if (unlikely(var630 == NULL)) {
+var512 = var_main_type->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_main_type:nullable MClassType(MClassType)> */
+if (unlikely(var512 == 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);
 }
-var628 = var630;
-RET_LABEL629:(void)0;
+var510 = var512;
+RET_LABEL511:(void)0;
 }
 }
 {
-var631 = nit__model___MModule___try_get_primitive_method(var_mainmodule, var624, var628);
+var513 = nit__model___MModule___try_get_primitive_method(var_mainmodule, var507, var510);
 }
-var613 = var631;
+var497 = var513;
 }
-var_main_method = var613;
-var632 = NULL;
+var_main_method = var497;
 if (var_main_method == NULL) {
-var633 = 0; /* is null */
+var514 = 0; /* is null */
 } else {
-var633 = 1; /* arg is null and recv is not */
+var514 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_main_method,var632) on <var_main_method:nullable MMethod> */
-var_other = var632;
+{ /* Inline kernel#Object#!= (var_main_method,((val*)NULL)) on <var_main_method:nullable MMethod> */
+var_other = ((val*)NULL);
 {
-var636 = ((short int (*)(val* self, val* p0))(var_main_method->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_main_method, var_other) /* == on <var_main_method:nullable MMethod(MMethod)>*/;
+var517 = ((short int(*)(val* self, val* p0))(var_main_method->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_main_method, var_other); /* == on <var_main_method:nullable MMethod(MMethod)>*/
 }
-var637 = !var636;
-var634 = var637;
-goto RET_LABEL635;
-RET_LABEL635:(void)0;
+var518 = !var517;
+var515 = var518;
+goto RET_LABEL516;
+RET_LABEL516:(void)0;
 }
-var633 = var634;
+var514 = var515;
 }
-if (var633){
-var638 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
-var639 = 1;
+if (var514){
+var519 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
 {
-standard___standard__Array___with_capacity(var638, var639); /* Direct call array#Array#with_capacity on <var638:Array[RuntimeVariable]>*/
+standard___standard__Array___with_capacity(var519, 1l); /* Direct call array#Array#with_capacity on <var519:Array[RuntimeVariable]>*/
 }
-var_640 = var638;
+var_520 = var519;
 {
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_640, var_glob_sys); /* Direct call array#AbstractArray#push on <var_640:Array[RuntimeVariable]>*/
+standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_520, var_glob_sys); /* Direct call array#AbstractArray#push on <var_520:Array[RuntimeVariable]>*/
 }
 {
-var641 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(var_v, var_main_method, var_640);
+var521 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(var_v, var_main_method, var_520);
 }
 } else {
 }
@@ -2788,1086 +2444,1015 @@ var641 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCo
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
-var644 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
-if (unlikely(var644 == NULL)) {
+var524 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
+if (unlikely(var524 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
+fatal_exit(1);
 }
-var642 = var644;
-RET_LABEL643:(void)0;
+var522 = var524;
+RET_LABEL523:(void)0;
 }
 }
 {
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var642) on <var642:ModelBuilder> */
-var647 = var642->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var642:ModelBuilder> */
-if (unlikely(var647 == NULL)) {
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var522) on <var522:ModelBuilder> */
+var527 = var522->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var522:ModelBuilder> */
+if (unlikely(var527 == 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);
 }
-var645 = var647;
-RET_LABEL646:(void)0;
+var525 = var527;
+RET_LABEL526:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (var645) on <var645:ToolContext> */
-var650 = var645->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var645:ToolContext> */
-if (unlikely(var650 == NULL)) {
+{ /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (var525) on <var525:ToolContext> */
+var530 = var525->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var525:ToolContext> */
+if (unlikely(var530 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 59);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 60);
+fatal_exit(1);
 }
-var648 = var650;
-RET_LABEL649:(void)0;
+var528 = var530;
+RET_LABEL529:(void)0;
 }
 }
 {
-{ /* Inline opts#Option#value (var648) on <var648:OptionBool> */
-var653 = var648->attrs[COLOR_opts__Option___value].val; /* _value on <var648:OptionBool> */
-var651 = var653;
-RET_LABEL652:(void)0;
+{ /* Inline opts#Option#value (var528) on <var528:OptionBool> */
+var533 = var528->attrs[COLOR_opts__Option___value].val; /* _value on <var528:OptionBool> */
+var531 = var533;
+RET_LABEL532:(void)0;
 }
 }
-var654 = ((struct instance_standard__Bool*)var651)->value; /* autounbox from nullable Object to Bool */;
-if (var654){
-if (varonce655) {
-var656 = varonce655;
+var534 = (short int)((long)(var531)>>2);
+if (var534){
+if (likely(varonce535!=NULL)) {
+var536 = varonce535;
 } else {
-var657 = "long count_type_test_resolved_total = 0;";
-var658 = 40;
-var659 = standard___standard__NativeString___to_s_with_length(var657, var658);
-var656 = var659;
-varonce655 = var656;
+var537 = "long count_type_test_resolved_total = 0;";
+var538 = standard___standard__NativeString___to_s_with_length(var537, 40l);
+var536 = var538;
+varonce535 = var536;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var656); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var536); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce660) {
-var661 = varonce660;
+if (likely(varonce539!=NULL)) {
+var540 = varonce539;
 } else {
-var662 = "long count_type_test_unresolved_total = 0;";
-var663 = 42;
-var664 = standard___standard__NativeString___to_s_with_length(var662, var663);
-var661 = var664;
-varonce660 = var661;
+var541 = "long count_type_test_unresolved_total = 0;";
+var542 = standard___standard__NativeString___to_s_with_length(var541, 42l);
+var540 = var542;
+varonce539 = var540;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var661); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var540); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce665) {
-var666 = varonce665;
+if (likely(varonce543!=NULL)) {
+var544 = varonce543;
 } else {
-var667 = "long count_type_test_skipped_total = 0;";
-var668 = 39;
-var669 = standard___standard__NativeString___to_s_with_length(var667, var668);
-var666 = var669;
-varonce665 = var666;
+var545 = "long count_type_test_skipped_total = 0;";
+var546 = standard___standard__NativeString___to_s_with_length(var545, 39l);
+var544 = var546;
+varonce543 = var544;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var666); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var544); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce670) {
-var671 = varonce670;
+if (likely(varonce547!=NULL)) {
+var548 = varonce547;
 } else {
-var672 = "long count_type_test_total_total = 0;";
-var673 = 37;
-var674 = standard___standard__NativeString___to_s_with_length(var672, var673);
-var671 = var674;
-varonce670 = var671;
+var549 = "long count_type_test_total_total = 0;";
+var550 = standard___standard__NativeString___to_s_with_length(var549, 37l);
+var548 = var550;
+varonce547 = var548;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var671); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var548); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_tags (self) on <self:AbstractCompiler> */
-var677 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
-if (unlikely(var677 == NULL)) {
+var553 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
+if (unlikely(var553 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_tags");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 963);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1014);
+fatal_exit(1);
 }
-var675 = var677;
-RET_LABEL676:(void)0;
+var551 = var553;
+RET_LABEL552:(void)0;
 }
 }
-var_678 = var675;
+var_554 = var551;
 {
-var679 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_678);
+var555 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_554);
 }
-var_680 = var679;
+var_556 = var555;
 for(;;) {
 {
-var681 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_680);
+var557 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_556);
 }
-if (var681){
+if (var557){
 {
-var682 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_680);
+var558 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_556);
 }
-var_tag683 = var682;
-if (varonce684) {
-var685 = varonce684;
+var_tag559 = var558;
+if (unlikely(varonce560==NULL)) {
+var561 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce562!=NULL)) {
+var563 = varonce562;
 } else {
-var686 = "long count_type_test_total_";
-var687 = 27;
-var688 = standard___standard__NativeString___to_s_with_length(var686, var687);
-var685 = var688;
-varonce684 = var685;
+var564 = "long count_type_test_total_";
+var565 = standard___standard__NativeString___to_s_with_length(var564, 27l);
+var563 = var565;
+varonce562 = var563;
 }
-if (varonce689) {
-var690 = varonce689;
+((struct instance_standard__NativeArray*)var561)->values[0]=var563;
+if (likely(varonce566!=NULL)) {
+var567 = varonce566;
 } else {
-var691 = ";";
-var692 = 1;
-var693 = standard___standard__NativeString___to_s_with_length(var691, var692);
-var690 = var693;
-varonce689 = var690;
-}
-var694 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var694 = array_instance Array[Object] */
-var695 = 3;
-var696 = NEW_standard__NativeArray(var695, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var696)->values[0] = (val*) var685;
-((struct instance_standard__NativeArray*)var696)->values[1] = (val*) var_tag683;
-((struct instance_standard__NativeArray*)var696)->values[2] = (val*) var690;
-{
-((void (*)(val* self, val* p0, long p1))(var694->class->vft[COLOR_standard__array__Array__with_native]))(var694, var696, var695) /* with_native on <var694:Array[Object]>*/;
+var568 = ";";
+var569 = standard___standard__NativeString___to_s_with_length(var568, 1l);
+var567 = var569;
+varonce566 = var567;
 }
+((struct instance_standard__NativeArray*)var561)->values[2]=var567;
+} else {
+var561 = varonce560;
+varonce560 = NULL;
 }
+((struct instance_standard__NativeArray*)var561)->values[1]=var_tag559;
 {
-var697 = ((val* (*)(val* self))(var694->class->vft[COLOR_standard__string__Object__to_s]))(var694) /* to_s on <var694:Array[Object]>*/;
+var570 = ((val*(*)(val* self))(var561->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var561); /* native_to_s on <var561:NativeArray[String]>*/
 }
+varonce560 = var561;
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var697); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var570); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce698) {
-var699 = varonce698;
+if (unlikely(varonce571==NULL)) {
+var572 = NEW_standard__NativeArray(9l, &type_standard__NativeArray__standard__String);
+if (likely(varonce573!=NULL)) {
+var574 = varonce573;
 } else {
-var700 = "count_type_test_total_";
-var701 = 22;
-var702 = standard___standard__NativeString___to_s_with_length(var700, var701);
-var699 = var702;
-varonce698 = var699;
+var575 = "count_type_test_total_";
+var576 = standard___standard__NativeString___to_s_with_length(var575, 22l);
+var574 = var576;
+varonce573 = var574;
 }
-if (varonce703) {
-var704 = varonce703;
+((struct instance_standard__NativeArray*)var572)->values[0]=var574;
+if (likely(varonce577!=NULL)) {
+var578 = varonce577;
 } else {
-var705 = " = count_type_test_resolved_";
-var706 = 28;
-var707 = standard___standard__NativeString___to_s_with_length(var705, var706);
-var704 = var707;
-varonce703 = var704;
+var579 = " = count_type_test_resolved_";
+var580 = standard___standard__NativeString___to_s_with_length(var579, 28l);
+var578 = var580;
+varonce577 = var578;
 }
-if (varonce708) {
-var709 = varonce708;
+((struct instance_standard__NativeArray*)var572)->values[2]=var578;
+if (likely(varonce581!=NULL)) {
+var582 = varonce581;
 } else {
-var710 = " + count_type_test_unresolved_";
-var711 = 30;
-var712 = standard___standard__NativeString___to_s_with_length(var710, var711);
-var709 = var712;
-varonce708 = var709;
+var583 = " + count_type_test_unresolved_";
+var584 = standard___standard__NativeString___to_s_with_length(var583, 30l);
+var582 = var584;
+varonce581 = var582;
 }
-if (varonce713) {
-var714 = varonce713;
+((struct instance_standard__NativeArray*)var572)->values[4]=var582;
+if (likely(varonce585!=NULL)) {
+var586 = varonce585;
 } else {
-var715 = " + count_type_test_skipped_";
-var716 = 27;
-var717 = standard___standard__NativeString___to_s_with_length(var715, var716);
-var714 = var717;
-varonce713 = var714;
+var587 = " + count_type_test_skipped_";
+var588 = standard___standard__NativeString___to_s_with_length(var587, 27l);
+var586 = var588;
+varonce585 = var586;
 }
-if (varonce718) {
-var719 = varonce718;
+((struct instance_standard__NativeArray*)var572)->values[6]=var586;
+if (likely(varonce589!=NULL)) {
+var590 = varonce589;
 } else {
-var720 = ";";
-var721 = 1;
-var722 = standard___standard__NativeString___to_s_with_length(var720, var721);
-var719 = var722;
-varonce718 = var719;
-}
-var723 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var723 = array_instance Array[Object] */
-var724 = 9;
-var725 = NEW_standard__NativeArray(var724, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var725)->values[0] = (val*) var699;
-((struct instance_standard__NativeArray*)var725)->values[1] = (val*) var_tag683;
-((struct instance_standard__NativeArray*)var725)->values[2] = (val*) var704;
-((struct instance_standard__NativeArray*)var725)->values[3] = (val*) var_tag683;
-((struct instance_standard__NativeArray*)var725)->values[4] = (val*) var709;
-((struct instance_standard__NativeArray*)var725)->values[5] = (val*) var_tag683;
-((struct instance_standard__NativeArray*)var725)->values[6] = (val*) var714;
-((struct instance_standard__NativeArray*)var725)->values[7] = (val*) var_tag683;
-((struct instance_standard__NativeArray*)var725)->values[8] = (val*) var719;
-{
-((void (*)(val* self, val* p0, long p1))(var723->class->vft[COLOR_standard__array__Array__with_native]))(var723, var725, var724) /* with_native on <var723:Array[Object]>*/;
+var591 = ";";
+var592 = standard___standard__NativeString___to_s_with_length(var591, 1l);
+var590 = var592;
+varonce589 = var590;
 }
+((struct instance_standard__NativeArray*)var572)->values[8]=var590;
+} else {
+var572 = varonce571;
+varonce571 = NULL;
 }
+((struct instance_standard__NativeArray*)var572)->values[1]=var_tag559;
+((struct instance_standard__NativeArray*)var572)->values[3]=var_tag559;
+((struct instance_standard__NativeArray*)var572)->values[5]=var_tag559;
+((struct instance_standard__NativeArray*)var572)->values[7]=var_tag559;
 {
-var726 = ((val* (*)(val* self))(var723->class->vft[COLOR_standard__string__Object__to_s]))(var723) /* to_s on <var723:Array[Object]>*/;
+var593 = ((val*(*)(val* self))(var572->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var572); /* native_to_s on <var572:NativeArray[String]>*/
 }
+varonce571 = var572;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var726); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var593); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce727) {
-var728 = varonce727;
+if (unlikely(varonce594==NULL)) {
+var595 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce596!=NULL)) {
+var597 = varonce596;
 } else {
-var729 = "count_type_test_resolved_total += count_type_test_resolved_";
-var730 = 59;
-var731 = standard___standard__NativeString___to_s_with_length(var729, var730);
-var728 = var731;
-varonce727 = var728;
+var598 = "count_type_test_resolved_total += count_type_test_resolved_";
+var599 = standard___standard__NativeString___to_s_with_length(var598, 59l);
+var597 = var599;
+varonce596 = var597;
 }
-if (varonce732) {
-var733 = varonce732;
+((struct instance_standard__NativeArray*)var595)->values[0]=var597;
+if (likely(varonce600!=NULL)) {
+var601 = varonce600;
 } else {
-var734 = ";";
-var735 = 1;
-var736 = standard___standard__NativeString___to_s_with_length(var734, var735);
-var733 = var736;
-varonce732 = var733;
-}
-var737 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var737 = array_instance Array[Object] */
-var738 = 3;
-var739 = NEW_standard__NativeArray(var738, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var739)->values[0] = (val*) var728;
-((struct instance_standard__NativeArray*)var739)->values[1] = (val*) var_tag683;
-((struct instance_standard__NativeArray*)var739)->values[2] = (val*) var733;
-{
-((void (*)(val* self, val* p0, long p1))(var737->class->vft[COLOR_standard__array__Array__with_native]))(var737, var739, var738) /* with_native on <var737:Array[Object]>*/;
+var602 = ";";
+var603 = standard___standard__NativeString___to_s_with_length(var602, 1l);
+var601 = var603;
+varonce600 = var601;
 }
+((struct instance_standard__NativeArray*)var595)->values[2]=var601;
+} else {
+var595 = varonce594;
+varonce594 = NULL;
 }
+((struct instance_standard__NativeArray*)var595)->values[1]=var_tag559;
 {
-var740 = ((val* (*)(val* self))(var737->class->vft[COLOR_standard__string__Object__to_s]))(var737) /* to_s on <var737:Array[Object]>*/;
+var604 = ((val*(*)(val* self))(var595->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var595); /* native_to_s on <var595:NativeArray[String]>*/
 }
+varonce594 = var595;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var740); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var604); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce741) {
-var742 = varonce741;
+if (unlikely(varonce605==NULL)) {
+var606 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce607!=NULL)) {
+var608 = varonce607;
 } else {
-var743 = "count_type_test_unresolved_total += count_type_test_unresolved_";
-var744 = 63;
-var745 = standard___standard__NativeString___to_s_with_length(var743, var744);
-var742 = var745;
-varonce741 = var742;
+var609 = "count_type_test_unresolved_total += count_type_test_unresolved_";
+var610 = standard___standard__NativeString___to_s_with_length(var609, 63l);
+var608 = var610;
+varonce607 = var608;
 }
-if (varonce746) {
-var747 = varonce746;
+((struct instance_standard__NativeArray*)var606)->values[0]=var608;
+if (likely(varonce611!=NULL)) {
+var612 = varonce611;
 } else {
-var748 = ";";
-var749 = 1;
-var750 = standard___standard__NativeString___to_s_with_length(var748, var749);
-var747 = var750;
-varonce746 = var747;
-}
-var751 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var751 = array_instance Array[Object] */
-var752 = 3;
-var753 = NEW_standard__NativeArray(var752, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var753)->values[0] = (val*) var742;
-((struct instance_standard__NativeArray*)var753)->values[1] = (val*) var_tag683;
-((struct instance_standard__NativeArray*)var753)->values[2] = (val*) var747;
-{
-((void (*)(val* self, val* p0, long p1))(var751->class->vft[COLOR_standard__array__Array__with_native]))(var751, var753, var752) /* with_native on <var751:Array[Object]>*/;
+var613 = ";";
+var614 = standard___standard__NativeString___to_s_with_length(var613, 1l);
+var612 = var614;
+varonce611 = var612;
 }
+((struct instance_standard__NativeArray*)var606)->values[2]=var612;
+} else {
+var606 = varonce605;
+varonce605 = NULL;
 }
+((struct instance_standard__NativeArray*)var606)->values[1]=var_tag559;
 {
-var754 = ((val* (*)(val* self))(var751->class->vft[COLOR_standard__string__Object__to_s]))(var751) /* to_s on <var751:Array[Object]>*/;
+var615 = ((val*(*)(val* self))(var606->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var606); /* native_to_s on <var606:NativeArray[String]>*/
 }
+varonce605 = var606;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var754); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var615); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce755) {
-var756 = varonce755;
+if (unlikely(varonce616==NULL)) {
+var617 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce618!=NULL)) {
+var619 = varonce618;
 } else {
-var757 = "count_type_test_skipped_total += count_type_test_skipped_";
-var758 = 57;
-var759 = standard___standard__NativeString___to_s_with_length(var757, var758);
-var756 = var759;
-varonce755 = var756;
+var620 = "count_type_test_skipped_total += count_type_test_skipped_";
+var621 = standard___standard__NativeString___to_s_with_length(var620, 57l);
+var619 = var621;
+varonce618 = var619;
 }
-if (varonce760) {
-var761 = varonce760;
+((struct instance_standard__NativeArray*)var617)->values[0]=var619;
+if (likely(varonce622!=NULL)) {
+var623 = varonce622;
 } else {
-var762 = ";";
-var763 = 1;
-var764 = standard___standard__NativeString___to_s_with_length(var762, var763);
-var761 = var764;
-varonce760 = var761;
-}
-var765 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var765 = array_instance Array[Object] */
-var766 = 3;
-var767 = NEW_standard__NativeArray(var766, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var767)->values[0] = (val*) var756;
-((struct instance_standard__NativeArray*)var767)->values[1] = (val*) var_tag683;
-((struct instance_standard__NativeArray*)var767)->values[2] = (val*) var761;
-{
-((void (*)(val* self, val* p0, long p1))(var765->class->vft[COLOR_standard__array__Array__with_native]))(var765, var767, var766) /* with_native on <var765:Array[Object]>*/;
+var624 = ";";
+var625 = standard___standard__NativeString___to_s_with_length(var624, 1l);
+var623 = var625;
+varonce622 = var623;
 }
+((struct instance_standard__NativeArray*)var617)->values[2]=var623;
+} else {
+var617 = varonce616;
+varonce616 = NULL;
 }
+((struct instance_standard__NativeArray*)var617)->values[1]=var_tag559;
 {
-var768 = ((val* (*)(val* self))(var765->class->vft[COLOR_standard__string__Object__to_s]))(var765) /* to_s on <var765:Array[Object]>*/;
+var626 = ((val*(*)(val* self))(var617->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var617); /* native_to_s on <var617:NativeArray[String]>*/
 }
+varonce616 = var617;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var768); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var626); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce769) {
-var770 = varonce769;
+if (unlikely(varonce627==NULL)) {
+var628 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce629!=NULL)) {
+var630 = varonce629;
 } else {
-var771 = "count_type_test_total_total += count_type_test_total_";
-var772 = 53;
-var773 = standard___standard__NativeString___to_s_with_length(var771, var772);
-var770 = var773;
-varonce769 = var770;
+var631 = "count_type_test_total_total += count_type_test_total_";
+var632 = standard___standard__NativeString___to_s_with_length(var631, 53l);
+var630 = var632;
+varonce629 = var630;
 }
-if (varonce774) {
-var775 = varonce774;
+((struct instance_standard__NativeArray*)var628)->values[0]=var630;
+if (likely(varonce633!=NULL)) {
+var634 = varonce633;
 } else {
-var776 = ";";
-var777 = 1;
-var778 = standard___standard__NativeString___to_s_with_length(var776, var777);
-var775 = var778;
-varonce774 = var775;
-}
-var779 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var779 = array_instance Array[Object] */
-var780 = 3;
-var781 = NEW_standard__NativeArray(var780, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var781)->values[0] = (val*) var770;
-((struct instance_standard__NativeArray*)var781)->values[1] = (val*) var_tag683;
-((struct instance_standard__NativeArray*)var781)->values[2] = (val*) var775;
-{
-((void (*)(val* self, val* p0, long p1))(var779->class->vft[COLOR_standard__array__Array__with_native]))(var779, var781, var780) /* with_native on <var779:Array[Object]>*/;
+var635 = ";";
+var636 = standard___standard__NativeString___to_s_with_length(var635, 1l);
+var634 = var636;
+varonce633 = var634;
 }
+((struct instance_standard__NativeArray*)var628)->values[2]=var634;
+} else {
+var628 = varonce627;
+varonce627 = NULL;
 }
+((struct instance_standard__NativeArray*)var628)->values[1]=var_tag559;
 {
-var782 = ((val* (*)(val* self))(var779->class->vft[COLOR_standard__string__Object__to_s]))(var779) /* to_s on <var779:Array[Object]>*/;
+var637 = ((val*(*)(val* self))(var628->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var628); /* native_to_s on <var628:NativeArray[String]>*/
 }
+varonce627 = var628;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var782); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var637); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_680); /* Direct call array#ArrayIterator#next on <var_680:ArrayIterator[String]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_556); /* Direct call array#ArrayIterator#next on <var_556:ArrayIterator[String]>*/
 }
 } else {
-goto BREAK_label783;
+goto BREAK_label638;
 }
 }
-BREAK_label783: (void)0;
+BREAK_label638: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_680) on <var_680:ArrayIterator[String]> */
-RET_LABEL784:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_556); /* Direct call array#ArrayIterator#finish on <var_556:ArrayIterator[String]>*/
 }
-if (varonce785) {
-var786 = varonce785;
+if (likely(varonce639!=NULL)) {
+var640 = varonce639;
 } else {
-var787 = "printf(\"# dynamic count_type_test: total %l\\n\");";
-var788 = 48;
-var789 = standard___standard__NativeString___to_s_with_length(var787, var788);
-var786 = var789;
-varonce785 = var786;
+var641 = "printf(\"# dynamic count_type_test: total %l\\n\");";
+var642 = standard___standard__NativeString___to_s_with_length(var641, 48l);
+var640 = var642;
+varonce639 = var640;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var786); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var640); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce790) {
-var791 = varonce790;
+if (likely(varonce643!=NULL)) {
+var644 = varonce643;
 } else {
-var792 = "printf(\"\\tresolved\\tunresolved\\tskipped\\ttotal\\n\");";
-var793 = 51;
-var794 = standard___standard__NativeString___to_s_with_length(var792, var793);
-var791 = var794;
-varonce790 = var791;
+var645 = "printf(\"\\tresolved\\tunresolved\\tskipped\\ttotal\\n\");";
+var646 = standard___standard__NativeString___to_s_with_length(var645, 51l);
+var644 = var646;
+varonce643 = var644;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var791); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var644); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_tags (self) on <self:AbstractCompiler> */
-var797 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
-if (unlikely(var797 == NULL)) {
+var649 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
+if (unlikely(var649 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_tags");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 963);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1014);
+fatal_exit(1);
 }
-var795 = var797;
-RET_LABEL796:(void)0;
+var647 = var649;
+RET_LABEL648:(void)0;
 }
 }
 {
-var798 = standard__array___Collection___to_a(var795);
+var650 = standard__array___Collection___to_a(var647);
 }
-var_tags = var798;
-if (varonce799) {
-var800 = varonce799;
+var_tags = var650;
+if (likely(varonce651!=NULL)) {
+var652 = varonce651;
 } else {
-var801 = "total";
-var802 = 5;
-var803 = standard___standard__NativeString___to_s_with_length(var801, var802);
-var800 = var803;
-varonce799 = var800;
+var653 = "total";
+var654 = standard___standard__NativeString___to_s_with_length(var653, 5l);
+var652 = var654;
+varonce651 = var652;
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_tags, var800); /* Direct call array#Array#add on <var_tags:Array[String]>*/
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_tags, var652); /* Direct call array#Array#add on <var_tags:Array[String]>*/
 }
-var_804 = var_tags;
+var_655 = var_tags;
 {
-var805 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_804);
+var656 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_655);
 }
-var_806 = var805;
+var_657 = var656;
 for(;;) {
 {
-var807 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_806);
+var658 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_657);
 }
-if (var807){
+if (var658){
 {
-var808 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_806);
+var659 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_657);
 }
-var_tag809 = var808;
-if (varonce810) {
-var811 = varonce810;
+var_tag660 = var659;
+if (unlikely(varonce661==NULL)) {
+var662 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce663!=NULL)) {
+var664 = varonce663;
 } else {
-var812 = "printf(\"";
-var813 = 8;
-var814 = standard___standard__NativeString___to_s_with_length(var812, var813);
-var811 = var814;
-varonce810 = var811;
+var665 = "printf(\"";
+var666 = standard___standard__NativeString___to_s_with_length(var665, 8l);
+var664 = var666;
+varonce663 = var664;
 }
-if (varonce815) {
-var816 = varonce815;
+((struct instance_standard__NativeArray*)var662)->values[0]=var664;
+if (likely(varonce667!=NULL)) {
+var668 = varonce667;
 } else {
-var817 = "\");";
-var818 = 3;
-var819 = standard___standard__NativeString___to_s_with_length(var817, var818);
-var816 = var819;
-varonce815 = var816;
-}
-var820 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var820 = array_instance Array[Object] */
-var821 = 3;
-var822 = NEW_standard__NativeArray(var821, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var822)->values[0] = (val*) var811;
-((struct instance_standard__NativeArray*)var822)->values[1] = (val*) var_tag809;
-((struct instance_standard__NativeArray*)var822)->values[2] = (val*) var816;
-{
-((void (*)(val* self, val* p0, long p1))(var820->class->vft[COLOR_standard__array__Array__with_native]))(var820, var822, var821) /* with_native on <var820:Array[Object]>*/;
+var669 = "\");";
+var670 = standard___standard__NativeString___to_s_with_length(var669, 3l);
+var668 = var670;
+varonce667 = var668;
 }
+((struct instance_standard__NativeArray*)var662)->values[2]=var668;
+} else {
+var662 = varonce661;
+varonce661 = NULL;
 }
+((struct instance_standard__NativeArray*)var662)->values[1]=var_tag660;
 {
-var823 = ((val* (*)(val* self))(var820->class->vft[COLOR_standard__string__Object__to_s]))(var820) /* to_s on <var820:Array[Object]>*/;
+var671 = ((val*(*)(val* self))(var662->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var662); /* native_to_s on <var662:NativeArray[String]>*/
 }
+varonce661 = var662;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var823); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var671); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce824) {
-var825 = varonce824;
+if (unlikely(varonce672==NULL)) {
+var673 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce674!=NULL)) {
+var675 = varonce674;
 } else {
-var826 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_resolved_";
-var827 = 50;
-var828 = standard___standard__NativeString___to_s_with_length(var826, var827);
-var825 = var828;
-varonce824 = var825;
+var676 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_resolved_";
+var677 = standard___standard__NativeString___to_s_with_length(var676, 50l);
+var675 = var677;
+varonce674 = var675;
 }
-if (varonce829) {
-var830 = varonce829;
+((struct instance_standard__NativeArray*)var673)->values[0]=var675;
+if (likely(varonce678!=NULL)) {
+var679 = varonce678;
 } else {
-var831 = ", 100.0*count_type_test_resolved_";
-var832 = 33;
-var833 = standard___standard__NativeString___to_s_with_length(var831, var832);
-var830 = var833;
-varonce829 = var830;
+var680 = ", 100.0*count_type_test_resolved_";
+var681 = standard___standard__NativeString___to_s_with_length(var680, 33l);
+var679 = var681;
+varonce678 = var679;
 }
-if (varonce834) {
-var835 = varonce834;
+((struct instance_standard__NativeArray*)var673)->values[2]=var679;
+if (likely(varonce682!=NULL)) {
+var683 = varonce682;
 } else {
-var836 = "/count_type_test_total_total);";
-var837 = 30;
-var838 = standard___standard__NativeString___to_s_with_length(var836, var837);
-var835 = var838;
-varonce834 = var835;
-}
-var839 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var839 = array_instance Array[Object] */
-var840 = 5;
-var841 = NEW_standard__NativeArray(var840, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var841)->values[0] = (val*) var825;
-((struct instance_standard__NativeArray*)var841)->values[1] = (val*) var_tag809;
-((struct instance_standard__NativeArray*)var841)->values[2] = (val*) var830;
-((struct instance_standard__NativeArray*)var841)->values[3] = (val*) var_tag809;
-((struct instance_standard__NativeArray*)var841)->values[4] = (val*) var835;
-{
-((void (*)(val* self, val* p0, long p1))(var839->class->vft[COLOR_standard__array__Array__with_native]))(var839, var841, var840) /* with_native on <var839:Array[Object]>*/;
+var684 = "/count_type_test_total_total);";
+var685 = standard___standard__NativeString___to_s_with_length(var684, 30l);
+var683 = var685;
+varonce682 = var683;
 }
+((struct instance_standard__NativeArray*)var673)->values[4]=var683;
+} else {
+var673 = varonce672;
+varonce672 = NULL;
 }
+((struct instance_standard__NativeArray*)var673)->values[1]=var_tag660;
+((struct instance_standard__NativeArray*)var673)->values[3]=var_tag660;
 {
-var842 = ((val* (*)(val* self))(var839->class->vft[COLOR_standard__string__Object__to_s]))(var839) /* to_s on <var839:Array[Object]>*/;
+var686 = ((val*(*)(val* self))(var673->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var673); /* native_to_s on <var673:NativeArray[String]>*/
 }
+varonce672 = var673;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var842); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var686); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce843) {
-var844 = varonce843;
+if (unlikely(varonce687==NULL)) {
+var688 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce689!=NULL)) {
+var690 = varonce689;
 } else {
-var845 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_unresolved_";
-var846 = 52;
-var847 = standard___standard__NativeString___to_s_with_length(var845, var846);
-var844 = var847;
-varonce843 = var844;
+var691 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_unresolved_";
+var692 = standard___standard__NativeString___to_s_with_length(var691, 52l);
+var690 = var692;
+varonce689 = var690;
 }
-if (varonce848) {
-var849 = varonce848;
+((struct instance_standard__NativeArray*)var688)->values[0]=var690;
+if (likely(varonce693!=NULL)) {
+var694 = varonce693;
 } else {
-var850 = ", 100.0*count_type_test_unresolved_";
-var851 = 35;
-var852 = standard___standard__NativeString___to_s_with_length(var850, var851);
-var849 = var852;
-varonce848 = var849;
+var695 = ", 100.0*count_type_test_unresolved_";
+var696 = standard___standard__NativeString___to_s_with_length(var695, 35l);
+var694 = var696;
+varonce693 = var694;
 }
-if (varonce853) {
-var854 = varonce853;
+((struct instance_standard__NativeArray*)var688)->values[2]=var694;
+if (likely(varonce697!=NULL)) {
+var698 = varonce697;
 } else {
-var855 = "/count_type_test_total_total);";
-var856 = 30;
-var857 = standard___standard__NativeString___to_s_with_length(var855, var856);
-var854 = var857;
-varonce853 = var854;
-}
-var858 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var858 = array_instance Array[Object] */
-var859 = 5;
-var860 = NEW_standard__NativeArray(var859, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var860)->values[0] = (val*) var844;
-((struct instance_standard__NativeArray*)var860)->values[1] = (val*) var_tag809;
-((struct instance_standard__NativeArray*)var860)->values[2] = (val*) var849;
-((struct instance_standard__NativeArray*)var860)->values[3] = (val*) var_tag809;
-((struct instance_standard__NativeArray*)var860)->values[4] = (val*) var854;
-{
-((void (*)(val* self, val* p0, long p1))(var858->class->vft[COLOR_standard__array__Array__with_native]))(var858, var860, var859) /* with_native on <var858:Array[Object]>*/;
+var699 = "/count_type_test_total_total);";
+var700 = standard___standard__NativeString___to_s_with_length(var699, 30l);
+var698 = var700;
+varonce697 = var698;
 }
+((struct instance_standard__NativeArray*)var688)->values[4]=var698;
+} else {
+var688 = varonce687;
+varonce687 = NULL;
 }
+((struct instance_standard__NativeArray*)var688)->values[1]=var_tag660;
+((struct instance_standard__NativeArray*)var688)->values[3]=var_tag660;
 {
-var861 = ((val* (*)(val* self))(var858->class->vft[COLOR_standard__string__Object__to_s]))(var858) /* to_s on <var858:Array[Object]>*/;
+var701 = ((val*(*)(val* self))(var688->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var688); /* native_to_s on <var688:NativeArray[String]>*/
 }
+varonce687 = var688;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var861); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var701); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce862) {
-var863 = varonce862;
+if (unlikely(varonce702==NULL)) {
+var703 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce704!=NULL)) {
+var705 = varonce704;
 } else {
-var864 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_skipped_";
-var865 = 49;
-var866 = standard___standard__NativeString___to_s_with_length(var864, var865);
-var863 = var866;
-varonce862 = var863;
+var706 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_skipped_";
+var707 = standard___standard__NativeString___to_s_with_length(var706, 49l);
+var705 = var707;
+varonce704 = var705;
 }
-if (varonce867) {
-var868 = varonce867;
+((struct instance_standard__NativeArray*)var703)->values[0]=var705;
+if (likely(varonce708!=NULL)) {
+var709 = varonce708;
 } else {
-var869 = ", 100.0*count_type_test_skipped_";
-var870 = 32;
-var871 = standard___standard__NativeString___to_s_with_length(var869, var870);
-var868 = var871;
-varonce867 = var868;
+var710 = ", 100.0*count_type_test_skipped_";
+var711 = standard___standard__NativeString___to_s_with_length(var710, 32l);
+var709 = var711;
+varonce708 = var709;
 }
-if (varonce872) {
-var873 = varonce872;
+((struct instance_standard__NativeArray*)var703)->values[2]=var709;
+if (likely(varonce712!=NULL)) {
+var713 = varonce712;
 } else {
-var874 = "/count_type_test_total_total);";
-var875 = 30;
-var876 = standard___standard__NativeString___to_s_with_length(var874, var875);
-var873 = var876;
-varonce872 = var873;
-}
-var877 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var877 = array_instance Array[Object] */
-var878 = 5;
-var879 = NEW_standard__NativeArray(var878, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var879)->values[0] = (val*) var863;
-((struct instance_standard__NativeArray*)var879)->values[1] = (val*) var_tag809;
-((struct instance_standard__NativeArray*)var879)->values[2] = (val*) var868;
-((struct instance_standard__NativeArray*)var879)->values[3] = (val*) var_tag809;
-((struct instance_standard__NativeArray*)var879)->values[4] = (val*) var873;
-{
-((void (*)(val* self, val* p0, long p1))(var877->class->vft[COLOR_standard__array__Array__with_native]))(var877, var879, var878) /* with_native on <var877:Array[Object]>*/;
+var714 = "/count_type_test_total_total);";
+var715 = standard___standard__NativeString___to_s_with_length(var714, 30l);
+var713 = var715;
+varonce712 = var713;
 }
+((struct instance_standard__NativeArray*)var703)->values[4]=var713;
+} else {
+var703 = varonce702;
+varonce702 = NULL;
 }
+((struct instance_standard__NativeArray*)var703)->values[1]=var_tag660;
+((struct instance_standard__NativeArray*)var703)->values[3]=var_tag660;
 {
-var880 = ((val* (*)(val* self))(var877->class->vft[COLOR_standard__string__Object__to_s]))(var877) /* to_s on <var877:Array[Object]>*/;
+var716 = ((val*(*)(val* self))(var703->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var703); /* native_to_s on <var703:NativeArray[String]>*/
 }
+varonce702 = var703;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var880); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var716); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce881) {
-var882 = varonce881;
+if (unlikely(varonce717==NULL)) {
+var718 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce719!=NULL)) {
+var720 = varonce719;
 } else {
-var883 = "printf(\"\\t%ld (%.2f%%)\\n\", count_type_test_total_";
-var884 = 49;
-var885 = standard___standard__NativeString___to_s_with_length(var883, var884);
-var882 = var885;
-varonce881 = var882;
+var721 = "printf(\"\\t%ld (%.2f%%)\\n\", count_type_test_total_";
+var722 = standard___standard__NativeString___to_s_with_length(var721, 49l);
+var720 = var722;
+varonce719 = var720;
 }
-if (varonce886) {
-var887 = varonce886;
+((struct instance_standard__NativeArray*)var718)->values[0]=var720;
+if (likely(varonce723!=NULL)) {
+var724 = varonce723;
 } else {
-var888 = ", 100.0*count_type_test_total_";
-var889 = 30;
-var890 = standard___standard__NativeString___to_s_with_length(var888, var889);
-var887 = var890;
-varonce886 = var887;
+var725 = ", 100.0*count_type_test_total_";
+var726 = standard___standard__NativeString___to_s_with_length(var725, 30l);
+var724 = var726;
+varonce723 = var724;
 }
-if (varonce891) {
-var892 = varonce891;
+((struct instance_standard__NativeArray*)var718)->values[2]=var724;
+if (likely(varonce727!=NULL)) {
+var728 = varonce727;
 } else {
-var893 = "/count_type_test_total_total);";
-var894 = 30;
-var895 = standard___standard__NativeString___to_s_with_length(var893, var894);
-var892 = var895;
-varonce891 = var892;
-}
-var896 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var896 = array_instance Array[Object] */
-var897 = 5;
-var898 = NEW_standard__NativeArray(var897, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var898)->values[0] = (val*) var882;
-((struct instance_standard__NativeArray*)var898)->values[1] = (val*) var_tag809;
-((struct instance_standard__NativeArray*)var898)->values[2] = (val*) var887;
-((struct instance_standard__NativeArray*)var898)->values[3] = (val*) var_tag809;
-((struct instance_standard__NativeArray*)var898)->values[4] = (val*) var892;
-{
-((void (*)(val* self, val* p0, long p1))(var896->class->vft[COLOR_standard__array__Array__with_native]))(var896, var898, var897) /* with_native on <var896:Array[Object]>*/;
+var729 = "/count_type_test_total_total);";
+var730 = standard___standard__NativeString___to_s_with_length(var729, 30l);
+var728 = var730;
+varonce727 = var728;
 }
+((struct instance_standard__NativeArray*)var718)->values[4]=var728;
+} else {
+var718 = varonce717;
+varonce717 = NULL;
 }
+((struct instance_standard__NativeArray*)var718)->values[1]=var_tag660;
+((struct instance_standard__NativeArray*)var718)->values[3]=var_tag660;
 {
-var899 = ((val* (*)(val* self))(var896->class->vft[COLOR_standard__string__Object__to_s]))(var896) /* to_s on <var896:Array[Object]>*/;
+var731 = ((val*(*)(val* self))(var718->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var718); /* native_to_s on <var718:NativeArray[String]>*/
 }
+varonce717 = var718;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var899); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var731); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_806); /* Direct call array#ArrayIterator#next on <var_806:ArrayIterator[String]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_657); /* Direct call array#ArrayIterator#next on <var_657:ArrayIterator[String]>*/
 }
 } else {
-goto BREAK_label900;
+goto BREAK_label732;
 }
 }
-BREAK_label900: (void)0;
+BREAK_label732: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_806) on <var_806:ArrayIterator[String]> */
-RET_LABEL901:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_657); /* Direct call array#ArrayIterator#finish on <var_657:ArrayIterator[String]>*/
 }
 } else {
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
-var904 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
-if (unlikely(var904 == NULL)) {
+var735 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
+if (unlikely(var735 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
+fatal_exit(1);
 }
-var902 = var904;
-RET_LABEL903:(void)0;
+var733 = var735;
+RET_LABEL734:(void)0;
 }
 }
 {
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var902) on <var902:ModelBuilder> */
-var907 = var902->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var902:ModelBuilder> */
-if (unlikely(var907 == NULL)) {
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var733) on <var733:ModelBuilder> */
+var738 = var733->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var733:ModelBuilder> */
+if (unlikely(var738 == 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);
 }
-var905 = var907;
-RET_LABEL906:(void)0;
+var736 = var738;
+RET_LABEL737:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var905) on <var905:ToolContext> */
-var910 = var905->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var905:ToolContext> */
-if (unlikely(var910 == NULL)) {
+{ /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var736) on <var736:ToolContext> */
+var741 = var736->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var736:ToolContext> */
+if (unlikely(var741 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 61);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 62);
+fatal_exit(1);
 }
-var908 = var910;
-RET_LABEL909:(void)0;
+var739 = var741;
+RET_LABEL740:(void)0;
 }
 }
 {
-{ /* Inline opts#Option#value (var908) on <var908:OptionBool> */
-var913 = var908->attrs[COLOR_opts__Option___value].val; /* _value on <var908:OptionBool> */
-var911 = var913;
-RET_LABEL912:(void)0;
+{ /* Inline opts#Option#value (var739) on <var739:OptionBool> */
+var744 = var739->attrs[COLOR_opts__Option___value].val; /* _value on <var739:OptionBool> */
+var742 = var744;
+RET_LABEL743:(void)0;
 }
 }
-var914 = ((struct instance_standard__Bool*)var911)->value; /* autounbox from nullable Object to Bool */;
-if (var914){
-if (varonce915) {
-var916 = varonce915;
+var745 = (short int)((long)(var742)>>2);
+if (var745){
+if (likely(varonce746!=NULL)) {
+var747 = varonce746;
 } else {
-var917 = "long count_invoke_total;";
-var918 = 24;
-var919 = standard___standard__NativeString___to_s_with_length(var917, var918);
-var916 = var919;
-varonce915 = var916;
+var748 = "long count_invoke_total;";
+var749 = standard___standard__NativeString___to_s_with_length(var748, 24l);
+var747 = var749;
+varonce746 = var747;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_decl(var_v, var916); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(var_v, var747); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce920) {
-var921 = varonce920;
+if (likely(varonce750!=NULL)) {
+var751 = varonce750;
 } else {
-var922 = "count_invoke_total = count_invoke_by_tables + count_invoke_by_direct + count_invoke_by_inline;";
-var923 = 94;
-var924 = standard___standard__NativeString___to_s_with_length(var922, var923);
-var921 = var924;
-varonce920 = var921;
+var752 = "count_invoke_total = count_invoke_by_tables + count_invoke_by_direct + count_invoke_by_inline;";
+var753 = standard___standard__NativeString___to_s_with_length(var752, 94l);
+var751 = var753;
+varonce750 = var751;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var921); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var751); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce925) {
-var926 = varonce925;
+if (likely(varonce754!=NULL)) {
+var755 = varonce754;
 } else {
-var927 = "printf(\"# dynamic count_invocation: total %ld\\n\", count_invoke_total);";
-var928 = 70;
-var929 = standard___standard__NativeString___to_s_with_length(var927, var928);
-var926 = var929;
-varonce925 = var926;
+var756 = "printf(\"# dynamic count_invocation: total %ld\\n\", count_invoke_total);";
+var757 = standard___standard__NativeString___to_s_with_length(var756, 70l);
+var755 = var757;
+varonce754 = var755;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var926); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var755); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce930) {
-var931 = varonce930;
+if (likely(varonce758!=NULL)) {
+var759 = varonce758;
 } else {
-var932 = "printf(\"by table: %ld (%.2f%%)\\n\", count_invoke_by_tables, 100.0*count_invoke_by_tables/count_invoke_total);";
-var933 = 108;
-var934 = standard___standard__NativeString___to_s_with_length(var932, var933);
-var931 = var934;
-varonce930 = var931;
+var760 = "printf(\"by table: %ld (%.2f%%)\\n\", count_invoke_by_tables, 100.0*count_invoke_by_tables/count_invoke_total);";
+var761 = standard___standard__NativeString___to_s_with_length(var760, 108l);
+var759 = var761;
+varonce758 = var759;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var931); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var759); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce935) {
-var936 = varonce935;
+if (likely(varonce762!=NULL)) {
+var763 = varonce762;
 } else {
-var937 = "printf(\"direct:   %ld (%.2f%%)\\n\", count_invoke_by_direct, 100.0*count_invoke_by_direct/count_invoke_total);";
-var938 = 108;
-var939 = standard___standard__NativeString___to_s_with_length(var937, var938);
-var936 = var939;
-varonce935 = var936;
+var764 = "printf(\"direct:   %ld (%.2f%%)\\n\", count_invoke_by_direct, 100.0*count_invoke_by_direct/count_invoke_total);";
+var765 = standard___standard__NativeString___to_s_with_length(var764, 108l);
+var763 = var765;
+varonce762 = var763;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var936); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var763); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce940) {
-var941 = varonce940;
+if (likely(varonce766!=NULL)) {
+var767 = varonce766;
 } else {
-var942 = "printf(\"inlined:  %ld (%.2f%%)\\n\", count_invoke_by_inline, 100.0*count_invoke_by_inline/count_invoke_total);";
-var943 = 108;
-var944 = standard___standard__NativeString___to_s_with_length(var942, var943);
-var941 = var944;
-varonce940 = var941;
+var768 = "printf(\"inlined:  %ld (%.2f%%)\\n\", count_invoke_by_inline, 100.0*count_invoke_by_inline/count_invoke_total);";
+var769 = standard___standard__NativeString___to_s_with_length(var768, 108l);
+var767 = var769;
+varonce766 = var767;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var941); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var767); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
 } else {
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
-var947 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
-if (unlikely(var947 == NULL)) {
+var772 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
+if (unlikely(var772 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
+fatal_exit(1);
 }
-var945 = var947;
-RET_LABEL946:(void)0;
+var770 = var772;
+RET_LABEL771:(void)0;
 }
 }
 {
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var945) on <var945:ModelBuilder> */
-var950 = var945->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var945:ModelBuilder> */
-if (unlikely(var950 == NULL)) {
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var770) on <var770:ModelBuilder> */
+var775 = var770->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var770:ModelBuilder> */
+if (unlikely(var775 == 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);
 }
-var948 = var950;
-RET_LABEL949:(void)0;
+var773 = var775;
+RET_LABEL774:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var948) on <var948:ToolContext> */
-var953 = var948->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var948:ToolContext> */
-if (unlikely(var953 == NULL)) {
+{ /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var773) on <var773:ToolContext> */
+var778 = var773->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var773:ToolContext> */
+if (unlikely(var778 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 63);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 64);
+fatal_exit(1);
 }
-var951 = var953;
-RET_LABEL952:(void)0;
+var776 = var778;
+RET_LABEL777:(void)0;
 }
 }
 {
-{ /* Inline opts#Option#value (var951) on <var951:OptionBool> */
-var956 = var951->attrs[COLOR_opts__Option___value].val; /* _value on <var951:OptionBool> */
-var954 = var956;
-RET_LABEL955:(void)0;
+{ /* Inline opts#Option#value (var776) on <var776:OptionBool> */
+var781 = var776->attrs[COLOR_opts__Option___value].val; /* _value on <var776:OptionBool> */
+var779 = var781;
+RET_LABEL780:(void)0;
 }
 }
-var957 = ((struct instance_standard__Bool*)var954)->value; /* autounbox from nullable Object to Bool */;
-if (var957){
-if (varonce958) {
-var959 = varonce958;
+var782 = (short int)((long)(var779)>>2);
+if (var782){
+if (likely(varonce783!=NULL)) {
+var784 = varonce783;
 } else {
-var960 = "printf(\"# dynamic attribute reads: %ld\\n\", count_attr_reads);";
-var961 = 61;
-var962 = standard___standard__NativeString___to_s_with_length(var960, var961);
-var959 = var962;
-varonce958 = var959;
+var785 = "printf(\"# dynamic attribute reads: %ld\\n\", count_attr_reads);";
+var786 = standard___standard__NativeString___to_s_with_length(var785, 61l);
+var784 = var786;
+varonce783 = var784;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var959); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var784); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce963) {
-var964 = varonce963;
+if (likely(varonce787!=NULL)) {
+var788 = varonce787;
 } else {
-var965 = "printf(\"# dynamic isset checks: %ld\\n\", count_isset_checks);";
-var966 = 60;
-var967 = standard___standard__NativeString___to_s_with_length(var965, var966);
-var964 = var967;
-varonce963 = var964;
+var789 = "printf(\"# dynamic isset checks: %ld\\n\", count_isset_checks);";
+var790 = standard___standard__NativeString___to_s_with_length(var789, 60l);
+var788 = var790;
+varonce787 = var788;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var964); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var788); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
 } else {
 }
-if (varonce968) {
-var969 = varonce968;
+if (likely(varonce791!=NULL)) {
+var792 = varonce791;
 } else {
-var970 = "return 0;";
-var971 = 9;
-var972 = standard___standard__NativeString___to_s_with_length(var970, var971);
-var969 = var972;
-varonce968 = var969;
+var793 = "return 0;";
+var794 = standard___standard__NativeString___to_s_with_length(var793, 9l);
+var792 = var794;
+varonce791 = var792;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var969); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var792); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce973) {
-var974 = varonce973;
+if (likely(varonce795!=NULL)) {
+var796 = varonce795;
 } else {
-var975 = "}";
-var976 = 1;
-var977 = standard___standard__NativeString___to_s_with_length(var975, var976);
-var974 = var977;
-varonce973 = var974;
+var797 = "}";
+var798 = standard___standard__NativeString___to_s_with_length(var797, 1l);
+var796 = var798;
+varonce795 = var796;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var974); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var796); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:AbstractCompiler> */
-var980 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:AbstractCompiler> */
-if (unlikely(var980 == NULL)) {
+var801 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:AbstractCompiler> */
+if (unlikely(var801 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
-var978 = var980;
-RET_LABEL979:(void)0;
+var799 = var801;
+RET_LABEL800:(void)0;
 }
 }
 {
-{ /* Inline mmodule#MModule#in_importation (var978) on <var978:MModule> */
-var983 = var978->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var978:MModule> */
-if (unlikely(var983 == NULL)) {
+{ /* Inline mmodule#MModule#in_importation (var799) on <var799:MModule> */
+var804 = var799->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var799:MModule> */
+if (unlikely(var804 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 96);
-show_backtrace(1);
+fatal_exit(1);
 }
-var981 = var983;
-RET_LABEL982:(void)0;
+var802 = var804;
+RET_LABEL803:(void)0;
 }
 }
 {
-var984 = poset___poset__POSetElement___greaters(var981);
+var805 = poset___poset__POSetElement___greaters(var802);
 }
-var_985 = var984;
+var_806 = var805;
 {
-var986 = ((val* (*)(val* self))(var_985->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_985) /* iterator on <var_985:Collection[MModule]>*/;
+var807 = ((val*(*)(val* self))((((long)var_806&3)?class_info[((long)var_806&3)]:var_806->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_806); /* iterator on <var_806:Collection[MModule]>*/
 }
-var_987 = var986;
+var_808 = var807;
 for(;;) {
 {
-var988 = ((short int (*)(val* self))(var_987->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_987) /* is_ok on <var_987:Iterator[MModule]>*/;
+var809 = ((short int(*)(val* self))((((long)var_808&3)?class_info[((long)var_808&3)]:var_808->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_808); /* is_ok on <var_808:Iterator[MModule]>*/
 }
-if (var988){
+if (var809){
 {
-var989 = ((val* (*)(val* self))(var_987->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_987) /* item on <var_987:Iterator[MModule]>*/;
+var810 = ((val*(*)(val* self))((((long)var_808&3)?class_info[((long)var_808&3)]:var_808->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_808); /* item on <var_808:Iterator[MModule]>*/
 }
-var_m = var989;
-if (varonce990) {
-var991 = varonce990;
+var_m = var810;
+if (likely(varonce811!=NULL)) {
+var812 = varonce811;
 } else {
-var992 = "FILE_";
-var993 = 5;
-var994 = standard___standard__NativeString___to_s_with_length(var992, var993);
-var991 = var994;
-varonce990 = var991;
+var813 = "FILE_";
+var814 = standard___standard__NativeString___to_s_with_length(var813, 5l);
+var812 = var814;
+varonce811 = var812;
 }
 {
-var995 = nit___nit__MModule___nit__model_base__MEntity__c_name(var_m);
+var815 = nit___nit__MModule___nit__model_base__MEntity__c_name(var_m);
 }
 {
-var996 = ((val* (*)(val* self, val* p0))(var991->class->vft[COLOR_standard__string__String___43d]))(var991, var995) /* + on <var991:String>*/;
+var816 = ((val*(*)(val* self, val* p0))(var812->class->vft[COLOR_standard__string__String___43d]))(var812, var815); /* + on <var812:String>*/
+}
+var_f = var816;
+if (unlikely(varonce817==NULL)) {
+var818 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce819!=NULL)) {
+var820 = varonce819;
+} else {
+var821 = "const char ";
+var822 = standard___standard__NativeString___to_s_with_length(var821, 11l);
+var820 = var822;
+varonce819 = var820;
+}
+((struct instance_standard__NativeArray*)var818)->values[0]=var820;
+if (likely(varonce823!=NULL)) {
+var824 = varonce823;
+} else {
+var825 = "[] = \"";
+var826 = standard___standard__NativeString___to_s_with_length(var825, 6l);
+var824 = var826;
+varonce823 = var824;
 }
-var_f = var996;
-if (varonce997) {
-var998 = varonce997;
+((struct instance_standard__NativeArray*)var818)->values[2]=var824;
+if (likely(varonce827!=NULL)) {
+var828 = varonce827;
 } else {
-var999 = "const char ";
-var1000 = 11;
-var1001 = standard___standard__NativeString___to_s_with_length(var999, var1000);
-var998 = var1001;
-varonce997 = var998;
+var829 = "\";";
+var830 = standard___standard__NativeString___to_s_with_length(var829, 2l);
+var828 = var830;
+varonce827 = var828;
 }
-if (varonce1002) {
-var1003 = varonce1002;
+((struct instance_standard__NativeArray*)var818)->values[4]=var828;
 } else {
-var1004 = "[] = \"";
-var1005 = 6;
-var1006 = standard___standard__NativeString___to_s_with_length(var1004, var1005);
-var1003 = var1006;
-varonce1002 = var1003;
+var818 = varonce817;
+varonce817 = NULL;
 }
+((struct instance_standard__NativeArray*)var818)->values[1]=var_f;
 {
 { /* Inline mmodule#MModule#location (var_m) on <var_m:MModule> */
-var1009 = var_m->attrs[COLOR_nit__mmodule__MModule___location].val; /* _location on <var_m:MModule> */
-if (unlikely(var1009 == NULL)) {
+var833 = var_m->attrs[COLOR_nit__mmodule__MModule___location].val; /* _location on <var_m:MModule> */
+if (unlikely(var833 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 90);
-show_backtrace(1);
+fatal_exit(1);
 }
-var1007 = var1009;
-RET_LABEL1008:(void)0;
+var831 = var833;
+RET_LABEL832:(void)0;
 }
 }
 {
-{ /* Inline location#Location#file (var1007) on <var1007:Location> */
-var1012 = var1007->attrs[COLOR_nit__location__Location___file].val; /* _file on <var1007:Location> */
-var1010 = var1012;
-RET_LABEL1011:(void)0;
+{ /* Inline location#Location#file (var831) on <var831:Location> */
+var836 = var831->attrs[COLOR_nit__location__Location___file].val; /* _file on <var831:Location> */
+var834 = var836;
+RET_LABEL835:(void)0;
 }
 }
-if (var1010 == NULL) {
+if (var834 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 862);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 913);
+fatal_exit(1);
 } else {
-{ /* Inline location#SourceFile#filename (var1010) on <var1010:nullable SourceFile> */
-if (unlikely(var1010 == NULL)) {
+{ /* Inline location#SourceFile#filename (var834) on <var834:nullable SourceFile> */
+if (unlikely(var834 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__location, 22);
-show_backtrace(1);
+fatal_exit(1);
 }
-var1015 = var1010->attrs[COLOR_nit__location__SourceFile___filename].val; /* _filename on <var1010:nullable SourceFile> */
-if (unlikely(var1015 == NULL)) {
+var839 = var834->attrs[COLOR_nit__location__SourceFile___filename].val; /* _filename on <var834:nullable SourceFile> */
+if (unlikely(var839 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__location, 22);
-show_backtrace(1);
-}
-var1013 = var1015;
-RET_LABEL1014:(void)0;
+fatal_exit(1);
 }
+var837 = var839;
+RET_LABEL838:(void)0;
 }
-{
-var1016 = standard___standard__Text___escape_to_c(var1013);
-}
-if (varonce1017) {
-var1018 = varonce1017;
-} else {
-var1019 = "\";";
-var1020 = 2;
-var1021 = standard___standard__NativeString___to_s_with_length(var1019, var1020);
-var1018 = var1021;
-varonce1017 = var1018;
 }
-var1022 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var1022 = array_instance Array[Object] */
-var1023 = 5;
-var1024 = NEW_standard__NativeArray(var1023, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var1024)->values[0] = (val*) var998;
-((struct instance_standard__NativeArray*)var1024)->values[1] = (val*) var_f;
-((struct instance_standard__NativeArray*)var1024)->values[2] = (val*) var1003;
-((struct instance_standard__NativeArray*)var1024)->values[3] = (val*) var1016;
-((struct instance_standard__NativeArray*)var1024)->values[4] = (val*) var1018;
 {
-((void (*)(val* self, val* p0, long p1))(var1022->class->vft[COLOR_standard__array__Array__with_native]))(var1022, var1024, var1023) /* with_native on <var1022:Array[Object]>*/;
-}
+var840 = standard___standard__Text___escape_to_c(var837);
 }
+((struct instance_standard__NativeArray*)var818)->values[3]=var840;
 {
-var1025 = ((val* (*)(val* self))(var1022->class->vft[COLOR_standard__string__Object__to_s]))(var1022) /* to_s on <var1022:Array[Object]>*/;
+var841 = ((val*(*)(val* self))(var818->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var818); /* native_to_s on <var818:NativeArray[String]>*/
 }
+varonce817 = var818;
 {
-nit___nit__AbstractCompilerVisitor___add(var_v, var1025); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(var_v, var841); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
 }
-if (varonce1026) {
-var1027 = varonce1026;
+if (unlikely(varonce842==NULL)) {
+var843 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce844!=NULL)) {
+var845 = varonce844;
 } else {
-var1028 = "extern const char ";
-var1029 = 18;
-var1030 = standard___standard__NativeString___to_s_with_length(var1028, var1029);
-var1027 = var1030;
-varonce1026 = var1027;
+var846 = "extern const char ";
+var847 = standard___standard__NativeString___to_s_with_length(var846, 18l);
+var845 = var847;
+varonce844 = var845;
 }
-if (varonce1031) {
-var1032 = varonce1031;
+((struct instance_standard__NativeArray*)var843)->values[0]=var845;
+if (likely(varonce848!=NULL)) {
+var849 = varonce848;
 } else {
-var1033 = "[];";
-var1034 = 3;
-var1035 = standard___standard__NativeString___to_s_with_length(var1033, var1034);
-var1032 = var1035;
-varonce1031 = var1032;
-}
-var1036 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var1036 = array_instance Array[Object] */
-var1037 = 3;
-var1038 = NEW_standard__NativeArray(var1037, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var1038)->values[0] = (val*) var1027;
-((struct instance_standard__NativeArray*)var1038)->values[1] = (val*) var_f;
-((struct instance_standard__NativeArray*)var1038)->values[2] = (val*) var1032;
-{
-((void (*)(val* self, val* p0, long p1))(var1036->class->vft[COLOR_standard__array__Array__with_native]))(var1036, var1038, var1037) /* with_native on <var1036:Array[Object]>*/;
+var850 = "[];";
+var851 = standard___standard__NativeString___to_s_with_length(var850, 3l);
+var849 = var851;
+varonce848 = var849;
 }
+((struct instance_standard__NativeArray*)var843)->values[2]=var849;
+} else {
+var843 = varonce842;
+varonce842 = NULL;
 }
+((struct instance_standard__NativeArray*)var843)->values[1]=var_f;
 {
-var1039 = ((val* (*)(val* self))(var1036->class->vft[COLOR_standard__string__Object__to_s]))(var1036) /* to_s on <var1036:Array[Object]>*/;
+var852 = ((val*(*)(val* self))(var843->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var843); /* native_to_s on <var843:NativeArray[String]>*/
 }
+varonce842 = var843;
 {
-nit___nit__AbstractCompiler___provide_declaration(self, var_f, var1039); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:AbstractCompiler>*/
+nit___nit__AbstractCompiler___provide_declaration(self, var_f, var852); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:AbstractCompiler>*/
 }
 {
-((void (*)(val* self))(var_987->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_987) /* next on <var_987:Iterator[MModule]>*/;
+((void(*)(val* self))((((long)var_808&3)?class_info[((long)var_808&3)]:var_808->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_808); /* next on <var_808:Iterator[MModule]>*/
 }
 } else {
-goto BREAK_label1040;
+goto BREAK_label853;
 }
 }
-BREAK_label1040: (void)0;
+BREAK_label853: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_987) on <var_987:Iterator[MModule]> */
-RET_LABEL1041:(void)0;
-}
+((void(*)(val* self))((((long)var_808&3)?class_info[((long)var_808&3)]:var_808->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_808); /* finish on <var_808:Iterator[MModule]>*/
 }
 RET_LABEL:;
 }
@@ -3878,19 +3463,17 @@ val* var_v /* var v: AbstractCompilerVisitor */;
 static val* varonce;
 val* var1 /* : String */;
 char* var2 /* : NativeString */;
-long var3 /* : Int */;
-val* var4 /* : FlatString */;
+val* var3 /* : FlatString */;
 {
-var = ((val* (*)(val* self))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:AbstractCompiler>*/;
+var = ((val*(*)(val* self))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompiler__new_visitor]))(self); /* new_visitor on <self:AbstractCompiler>*/
 }
 var_v = var;
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var1 = varonce;
 } else {
-var2 = "struct nitni_global_ref_list_t *nitni_global_ref_list;\nvoid initialize_nitni_global_refs() {\n\11nitni_global_ref_list = (struct nitni_global_ref_list_t*)nit_alloc(sizeof(struct nitni_global_ref_list_t));\n\11nitni_global_ref_list->head = NULL;\n\11nitni_global_ref_list->tail = NULL;\n}\n\nvoid nitni_global_ref_add( struct nitni_ref *ref ) {\n\11if ( nitni_global_ref_list->head == NULL ) {\n\11\11nitni_global_ref_list->head = ref;\n\11\11ref->prev = NULL;\n\11} else {\n\11\11nitni_global_ref_list->tail->next = ref;\n\11\11ref->prev = nitni_global_ref_list->tail;\n\11}\n\11nitni_global_ref_list->tail = ref;\n\n\11ref->next = NULL;\n}\n\nvoid nitni_global_ref_remove( struct nitni_ref *ref ) {\n\11if ( ref->prev == NULL ) {\n\11\11nitni_global_ref_list->head = ref->next;\n\11} else {\n\11\11ref->prev->next = ref->next;\n\11}\n\n\11if ( ref->next == NULL ) {\n\11\11nitni_global_ref_list->tail = ref->prev;\n\11} else {\n\11\11ref->next->prev = ref->prev;\n\11}\n}\n\nextern void nitni_global_ref_incr( struct nitni_ref *ref ) {\n\11if ( ref->count == 0 ) /* not registered */\n\11{\n\11\11/* add to list */\n\11\11nitni_global_ref_add( ref );\n\11}\n\n\11ref->count ++;\n}\n\nextern void nitni_global_ref_decr( struct nitni_ref *ref ) {\n\11if ( ref->count == 1 ) /* was last reference */\n\11{\n\11\11/* remove from list */\n\11\11nitni_global_ref_remove( ref );\n\11}\n\n\11ref->count --;\n}\n";
-var3 = 1260;
-var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
-var1 = var4;
+var2 = "struct nitni_global_ref_list_t *nitni_global_ref_list;\nvoid initialize_nitni_global_refs() {\n\tnitni_global_ref_list = (struct nitni_global_ref_list_t*)nit_alloc(sizeof(struct nitni_global_ref_list_t));\n\tnitni_global_ref_list->head = NULL;\n\tnitni_global_ref_list->tail = NULL;\n}\n\nvoid nitni_global_ref_add( struct nitni_ref *ref ) {\n\tif ( nitni_global_ref_list->head == NULL ) {\n\t\tnitni_global_ref_list->head = ref;\n\t\tref->prev = NULL;\n\t} else {\n\t\tnitni_global_ref_list->tail->next = ref;\n\t\tref->prev = nitni_global_ref_list->tail;\n\t}\n\tnitni_global_ref_list->tail = ref;\n\n\tref->next = NULL;\n}\n\nvoid nitni_global_ref_remove( struct nitni_ref *ref ) {\n\tif ( ref->prev == NULL ) {\n\t\tnitni_global_ref_list->head = ref->next;\n\t} else {\n\t\tref->prev->next = ref->next;\n\t}\n\n\tif ( ref->next == NULL ) {\n\t\tnitni_global_ref_list->tail = ref->prev;\n\t} else {\n\t\tref->next->prev = ref->prev;\n\t}\n}\n\nextern void nitni_global_ref_incr( struct nitni_ref *ref ) {\n\tif ( ref->count == 0 ) /* not registered */\n\t{\n\t\t/* add to list */\n\t\tnitni_global_ref_add( ref );\n\t}\n\n\tref->count ++;\n}\n\nextern void nitni_global_ref_decr( struct nitni_ref *ref ) {\n\tif ( ref->count == 1 ) /* was last reference */\n\t{\n\t\t/* remove from list */\n\t\tnitni_global_ref_remove( ref );\n\t}\n\n\tref->count --;\n}\n";
+var3 = standard___standard__NativeString___to_s_with_length(var2, 1260l);
+var1 = var3;
 varonce = var1;
 }
 {
@@ -3905,8 +3488,8 @@ val* var1 /* : Array[ExternFile] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <self:AbstractCompiler> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 928);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 979);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -3919,8 +3502,8 @@ val* var1 /* : Array[String] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <self:AbstractCompiler> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 931);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 982);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -3933,8 +3516,8 @@ val* var1 /* : ArraySet[String] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___seen_extern].val; /* _seen_extern on <self:AbstractCompiler> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen_extern");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 934);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 985);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -3985,8 +3568,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (unlikely(!var)) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 937);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 988);
+fatal_exit(1);
 }
 var_v = p0;
 var_recv = p1;
@@ -3996,8 +3579,8 @@ var_mtype = p2;
 var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:AbstractCompiler> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -4015,8 +3598,8 @@ var_cds = var5;
 var8 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:AbstractCompiler> */
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -4044,8 +3627,8 @@ var_cd = var12;
 var15 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
 if (unlikely(var15 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
+fatal_exit(1);
 }
 var13 = var15;
 RET_LABEL14:(void)0;
@@ -4069,7 +3652,7 @@ var21 = standard__array___standard__array__ArrayIterator___standard__abstract_co
 }
 var_npropdef = var21;
 {
-nit__abstract_compiler___AAttrPropdef___init_expr(var_npropdef, var_v, var_recv); /* Direct call abstract_compiler#AAttrPropdef#init_expr on <var_npropdef:AAttrPropdef>*/
+nit__separate_compiler___AAttrPropdef___init_expr(var_npropdef, var_v, var_recv); /* Direct call separate_compiler#AAttrPropdef#init_expr on <var_npropdef:AAttrPropdef>*/
 }
 {
 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_19); /* Direct call array#ArrayIterator#next on <var_19:ArrayIterator[AAttrPropdef]>*/
@@ -4080,22 +3663,18 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_19) on <var_19:ArrayIterator[AAttrPropdef]> */
-RET_LABEL22:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_19); /* Direct call array#ArrayIterator#finish on <var_19:ArrayIterator[AAttrPropdef]>*/
 }
 {
 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_10); /* Direct call array#ArrayIterator#next on <var_10:ArrayIterator[MClassDef]>*/
 }
 } else {
-goto BREAK_label23;
+goto BREAK_label22;
 }
 }
-BREAK_label23: (void)0;
+BREAK_label22: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_10) on <var_10:ArrayIterator[MClassDef]> */
-RET_LABEL24:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_10); /* Direct call array#ArrayIterator#finish on <var_10:ArrayIterator[MClassDef]>*/
 }
 RET_LABEL:;
 }
@@ -4106,8 +3685,8 @@ val* var1 /* : Array[String] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_tags");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 963);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1014);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -4120,8 +3699,8 @@ val* var1 /* : HashMap[String, Int] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_resolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 964);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1015);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -4134,8 +3713,8 @@ val* var1 /* : HashMap[String, Int] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_unresolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 965);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1016);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -4148,8 +3727,8 @@ val* var1 /* : HashMap[String, Int] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_skipped");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 966);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1017);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -4168,8 +3747,7 @@ val* var_6 /* var : ArrayIterator[String] */;
 short int var7 /* : Bool */;
 val* var8 /* : nullable Object */;
 val* var_tag /* var tag: String */;
-long var9 /* : Int */;
-val* var10 /* : nullable Object */;
+val* var9 /* : nullable Object */;
 var1 = NEW_standard__HashMap(&type_standard__HashMap__standard__String__standard__Int);
 {
 standard___standard__HashMap___standard__kernel__Object__init(var1); /* Direct call hash_collection#HashMap#init on <var1:HashMap[String, Int]>*/
@@ -4180,8 +3758,8 @@ var_res = var1;
 var4 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
 if (unlikely(var4 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_tags");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 963);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1014);
+fatal_exit(1);
 }
 var2 = var4;
 RET_LABEL3:(void)0;
@@ -4201,10 +3779,9 @@ if (var7){
 var8 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_6);
 }
 var_tag = var8;
-var9 = 0;
 {
-var10 = BOX_standard__Int(var9); /* autobox from Int to nullable Object */
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_res, var_tag, var10); /* Direct call hash_collection#HashMap#[]= on <var_res:HashMap[String, Int]>*/
+var9 = (val*)(0l<<2|1);
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_res, var_tag, var9); /* Direct call hash_collection#HashMap#[]= on <var_res:HashMap[String, Int]>*/
 }
 {
 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_6); /* Direct call array#ArrayIterator#next on <var_6:ArrayIterator[String]>*/
@@ -4215,9 +3792,7 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_6) on <var_6:ArrayIterator[String]> */
-RET_LABEL11:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_6); /* Direct call array#ArrayIterator#finish on <var_6:ArrayIterator[String]>*/
 }
 var = var_res;
 goto RET_LABEL;
@@ -4235,15 +3810,15 @@ val* var8 /* : OptionBool */;
 val* var9 /* : nullable Object */;
 val* var11 /* : nullable Object */;
 short int var12 /* : Bool */;
+val* var13 /* : Sys */;
 static val* varonce;
-val* var13 /* : String */;
-char* var14 /* : NativeString */;
-long var15 /* : Int */;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
 val* var16 /* : FlatString */;
-static val* varonce17;
-val* var18 /* : String */;
-char* var19 /* : NativeString */;
-long var20 /* : Int */;
+val* var17 /* : Sys */;
+static val* varonce18;
+val* var19 /* : String */;
+char* var20 /* : NativeString */;
 val* var21 /* : FlatString */;
 val* var22 /* : HashMap[String, Int] */;
 val* var_count_type_test_total /* var count_type_test_total: HashMap[String, Int] */;
@@ -4252,306 +3827,288 @@ val* var25 /* : HashMap[String, Int] */;
 static val* varonce26;
 val* var27 /* : String */;
 char* var28 /* : NativeString */;
-long var29 /* : Int */;
-val* var30 /* : FlatString */;
-long var31 /* : Int */;
-val* var32 /* : nullable Object */;
+val* var29 /* : FlatString */;
+val* var30 /* : nullable Object */;
+val* var31 /* : HashMap[String, Int] */;
 val* var33 /* : HashMap[String, Int] */;
-val* var35 /* : HashMap[String, Int] */;
-static val* varonce36;
-val* var37 /* : String */;
-char* var38 /* : NativeString */;
-long var39 /* : Int */;
-val* var40 /* : FlatString */;
-long var41 /* : Int */;
-val* var42 /* : nullable Object */;
-val* var43 /* : HashMap[String, Int] */;
-val* var45 /* : HashMap[String, Int] */;
-static val* varonce46;
-val* var47 /* : String */;
-char* var48 /* : NativeString */;
-long var49 /* : Int */;
+static val* varonce34;
+val* var35 /* : String */;
+char* var36 /* : NativeString */;
+val* var37 /* : FlatString */;
+val* var38 /* : nullable Object */;
+val* var39 /* : HashMap[String, Int] */;
+val* var41 /* : HashMap[String, Int] */;
+static val* varonce42;
+val* var43 /* : String */;
+char* var44 /* : NativeString */;
+val* var45 /* : FlatString */;
+val* var46 /* : nullable Object */;
+static val* varonce47;
+val* var48 /* : String */;
+char* var49 /* : NativeString */;
 val* var50 /* : FlatString */;
-long var51 /* : Int */;
-val* var52 /* : nullable Object */;
-static val* varonce53;
-val* var54 /* : String */;
-char* var55 /* : NativeString */;
-long var56 /* : Int */;
-val* var57 /* : FlatString */;
-long var58 /* : Int */;
-val* var59 /* : nullable Object */;
-val* var60 /* : Array[String] */;
-val* var62 /* : Array[String] */;
+val* var51 /* : nullable Object */;
+val* var52 /* : Array[String] */;
+val* var54 /* : Array[String] */;
 val* var_ /* var : Array[String] */;
-val* var63 /* : ArrayIterator[nullable Object] */;
-val* var_64 /* var : ArrayIterator[String] */;
-short int var65 /* : Bool */;
-val* var66 /* : nullable Object */;
+val* var55 /* : ArrayIterator[nullable Object] */;
+val* var_56 /* var : ArrayIterator[String] */;
+short int var57 /* : Bool */;
+val* var58 /* : nullable Object */;
 val* var_tag /* var tag: String */;
-val* var67 /* : HashMap[String, Int] */;
-val* var69 /* : HashMap[String, Int] */;
-val* var70 /* : nullable Object */;
-val* var71 /* : HashMap[String, Int] */;
-val* var73 /* : HashMap[String, Int] */;
-val* var74 /* : nullable Object */;
-long var75 /* : Int */;
-short int var77 /* : Bool */;
+val* var59 /* : HashMap[String, Int] */;
+val* var61 /* : HashMap[String, Int] */;
+val* var62 /* : nullable Object */;
+val* var63 /* : HashMap[String, Int] */;
+val* var65 /* : HashMap[String, Int] */;
+val* var66 /* : nullable Object */;
+long var67 /* : Int */;
+short int var69 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var78 /* : Int */;
-long var79 /* : Int */;
-long var80 /* : Int */;
-val* var81 /* : HashMap[String, Int] */;
-val* var83 /* : HashMap[String, Int] */;
-val* var84 /* : nullable Object */;
-long var85 /* : Int */;
-short int var87 /* : Bool */;
-int cltype88;
-int idtype89;
-const char* var_class_name90;
-long var91 /* : Int */;
-long var92 /* : Int */;
-val* var93 /* : nullable Object */;
-val* var94 /* : HashMap[String, Int] */;
+long var70 /* : Int */;
+long var71 /* : Int */;
+long var72 /* : Int */;
+val* var73 /* : HashMap[String, Int] */;
+val* var75 /* : HashMap[String, Int] */;
+val* var76 /* : nullable Object */;
+long var77 /* : Int */;
+short int var79 /* : Bool */;
+int cltype80;
+int idtype81;
+const char* var_class_name82;
+long var83 /* : Int */;
+long var84 /* : Int */;
+val* var85 /* : nullable Object */;
+val* var86 /* : HashMap[String, Int] */;
+val* var88 /* : HashMap[String, Int] */;
+val* var_89 /* var : HashMap[String, Int] */;
+static val* varonce90;
+val* var91 /* : String */;
+char* var92 /* : NativeString */;
+val* var93 /* : FlatString */;
+val* var_94 /* var : String */;
+val* var95 /* : nullable Object */;
 val* var96 /* : HashMap[String, Int] */;
-val* var_97 /* var : HashMap[String, Int] */;
-static val* varonce98;
-val* var99 /* : String */;
-char* var100 /* : NativeString */;
-long var101 /* : Int */;
-val* var102 /* : FlatString */;
-val* var_103 /* var : String */;
-val* var104 /* : nullable Object */;
-val* var105 /* : HashMap[String, Int] */;
-val* var107 /* : HashMap[String, Int] */;
-val* var108 /* : nullable Object */;
-long var109 /* : Int */;
-short int var111 /* : Bool */;
-int cltype112;
-int idtype113;
-const char* var_class_name114;
-long var115 /* : Int */;
-long var116 /* : Int */;
-long var117 /* : Int */;
-val* var118 /* : nullable Object */;
-val* var119 /* : HashMap[String, Int] */;
-val* var121 /* : HashMap[String, Int] */;
-val* var_122 /* var : HashMap[String, Int] */;
-static val* varonce123;
-val* var124 /* : String */;
-char* var125 /* : NativeString */;
-long var126 /* : Int */;
-val* var127 /* : FlatString */;
-val* var_128 /* var : String */;
-val* var129 /* : nullable Object */;
-val* var130 /* : HashMap[String, Int] */;
-val* var132 /* : HashMap[String, Int] */;
+val* var98 /* : HashMap[String, Int] */;
+val* var99 /* : nullable Object */;
+long var100 /* : Int */;
+short int var102 /* : Bool */;
+int cltype103;
+int idtype104;
+const char* var_class_name105;
+long var106 /* : Int */;
+long var107 /* : Int */;
+long var108 /* : Int */;
+val* var109 /* : nullable Object */;
+val* var110 /* : HashMap[String, Int] */;
+val* var112 /* : HashMap[String, Int] */;
+val* var_113 /* var : HashMap[String, Int] */;
+static val* varonce114;
+val* var115 /* : String */;
+char* var116 /* : NativeString */;
+val* var117 /* : FlatString */;
+val* var_118 /* var : String */;
+val* var119 /* : nullable Object */;
+val* var120 /* : HashMap[String, Int] */;
+val* var122 /* : HashMap[String, Int] */;
+val* var123 /* : nullable Object */;
+long var124 /* : Int */;
+short int var126 /* : Bool */;
+int cltype127;
+int idtype128;
+const char* var_class_name129;
+long var130 /* : Int */;
+long var131 /* : Int */;
+long var132 /* : Int */;
 val* var133 /* : nullable Object */;
-long var134 /* : Int */;
-short int var136 /* : Bool */;
-int cltype137;
-int idtype138;
-const char* var_class_name139;
-long var140 /* : Int */;
-long var141 /* : Int */;
-long var142 /* : Int */;
+val* var134 /* : HashMap[String, Int] */;
+val* var136 /* : HashMap[String, Int] */;
+val* var_137 /* var : HashMap[String, Int] */;
+static val* varonce138;
+val* var139 /* : String */;
+char* var140 /* : NativeString */;
+val* var141 /* : FlatString */;
+val* var_142 /* var : String */;
 val* var143 /* : nullable Object */;
 val* var144 /* : HashMap[String, Int] */;
 val* var146 /* : HashMap[String, Int] */;
-val* var_147 /* var : HashMap[String, Int] */;
-static val* varonce148;
-val* var149 /* : String */;
-char* var150 /* : NativeString */;
-long var151 /* : Int */;
-val* var152 /* : FlatString */;
-val* var_153 /* var : String */;
-val* var154 /* : nullable Object */;
-val* var155 /* : HashMap[String, Int] */;
-val* var157 /* : HashMap[String, Int] */;
-val* var158 /* : nullable Object */;
-long var159 /* : Int */;
-short int var161 /* : Bool */;
-int cltype162;
-int idtype163;
-const char* var_class_name164;
-long var165 /* : Int */;
+val* var147 /* : nullable Object */;
+long var148 /* : Int */;
+short int var150 /* : Bool */;
+int cltype151;
+int idtype152;
+const char* var_class_name153;
+long var154 /* : Int */;
+long var155 /* : Int */;
+long var156 /* : Int */;
+val* var157 /* : nullable Object */;
+val* var_158 /* var : HashMap[String, Int] */;
+static val* varonce159;
+val* var160 /* : String */;
+char* var161 /* : NativeString */;
+val* var162 /* : FlatString */;
+val* var_163 /* var : String */;
+val* var164 /* : nullable Object */;
+val* var165 /* : nullable Object */;
 long var166 /* : Int */;
-long var167 /* : Int */;
-val* var168 /* : nullable Object */;
-val* var_169 /* var : HashMap[String, Int] */;
-static val* varonce170;
-val* var171 /* : String */;
-char* var172 /* : NativeString */;
+short int var168 /* : Bool */;
+int cltype169;
+int idtype170;
+const char* var_class_name171;
+long var172 /* : Int */;
 long var173 /* : Int */;
-val* var174 /* : FlatString */;
-val* var_175 /* var : String */;
-val* var176 /* : nullable Object */;
-val* var177 /* : nullable Object */;
-long var178 /* : Int */;
-short int var180 /* : Bool */;
-int cltype181;
-int idtype182;
-const char* var_class_name183;
-long var184 /* : Int */;
-long var185 /* : Int */;
-long var186 /* : Int */;
-val* var187 /* : nullable Object */;
-static val* varonce189;
-val* var190 /* : String */;
-char* var191 /* : NativeString */;
-long var192 /* : Int */;
-val* var193 /* : FlatString */;
-val* var194 /* : nullable Object */;
-long var195 /* : Int */;
+long var174 /* : Int */;
+val* var175 /* : nullable Object */;
+static val* varonce176;
+val* var177 /* : String */;
+char* var178 /* : NativeString */;
+val* var179 /* : FlatString */;
+val* var180 /* : nullable Object */;
+long var181 /* : Int */;
 long var_count_type_test /* var count_type_test: Int */;
-val* var196 /* : Array[String] */;
-val* var198 /* : Array[String] */;
-val* var199 /* : Array[nullable Object] */;
+val* var182 /* : Array[String] */;
+val* var184 /* : Array[String] */;
+val* var185 /* : Array[nullable Object] */;
 val* var_tags /* var tags: Array[String] */;
+static val* varonce186;
+val* var187 /* : String */;
+char* var188 /* : NativeString */;
+val* var189 /* : FlatString */;
+val* var_190 /* var : Array[String] */;
+val* var191 /* : ArrayIterator[nullable Object] */;
+val* var_192 /* var : ArrayIterator[String] */;
+short int var193 /* : Bool */;
+val* var194 /* : nullable Object */;
+val* var_tag195 /* var tag: String */;
+val* var196 /* : Sys */;
+val* var197 /* : Array[Object] */;
+val* var198 /* : NativeArray[Object] */;
+val* var199 /* : Sys */;
+val* var201 /* : NativeArray[String] */;
 static val* varonce200;
-val* var201 /* : String */;
-char* var202 /* : NativeString */;
-long var203 /* : Int */;
-val* var204 /* : FlatString */;
-val* var_205 /* var : Array[String] */;
-val* var206 /* : ArrayIterator[nullable Object] */;
-val* var_207 /* var : ArrayIterator[String] */;
-short int var208 /* : Bool */;
-val* var209 /* : nullable Object */;
-val* var_tag210 /* var tag: String */;
-val* var211 /* : Array[Object] */;
-long var212 /* : Int */;
-val* var213 /* : NativeArray[Object] */;
-static val* varonce214;
-val* var215 /* : String */;
-char* var216 /* : NativeString */;
-long var217 /* : Int */;
-val* var218 /* : FlatString */;
-val* var219 /* : HashMap[String, Int] */;
+static val* varonce202;
+val* var203 /* : String */;
+char* var204 /* : NativeString */;
+val* var205 /* : FlatString */;
+static val* varonce206;
+val* var207 /* : String */;
+char* var208 /* : NativeString */;
+val* var209 /* : FlatString */;
+static val* varonce210;
+val* var211 /* : String */;
+char* var212 /* : NativeString */;
+val* var213 /* : FlatString */;
+val* var214 /* : HashMap[String, Int] */;
+val* var216 /* : HashMap[String, Int] */;
+val* var217 /* : nullable Object */;
+val* var218 /* : String */;
+long var219 /* : Int */;
+val* var220 /* : Sys */;
 val* var221 /* : HashMap[String, Int] */;
-val* var222 /* : nullable Object */;
-static val* varonce223;
-val* var224 /* : String */;
-char* var225 /* : NativeString */;
+val* var223 /* : HashMap[String, Int] */;
+val* var224 /* : nullable Object */;
+val* var225 /* : String */;
 long var226 /* : Int */;
-val* var227 /* : FlatString */;
-val* var228 /* : HashMap[String, Int] */;
-val* var230 /* : HashMap[String, Int] */;
-val* var231 /* : nullable Object */;
-val* var232 /* : String */;
-long var233 /* : Int */;
-static val* varonce234;
-val* var235 /* : String */;
-char* var236 /* : NativeString */;
-long var237 /* : Int */;
-val* var238 /* : FlatString */;
-val* var239 /* : Array[Object] */;
-long var240 /* : Int */;
-val* var241 /* : NativeArray[Object] */;
+val* var227 /* : String */;
+val* var228 /* : Array[Object] */;
+val* var229 /* : NativeArray[Object] */;
+val* var230 /* : Sys */;
+val* var232 /* : NativeArray[String] */;
+static val* varonce231;
+static val* varonce233;
+val* var234 /* : String */;
+char* var235 /* : NativeString */;
+val* var236 /* : FlatString */;
+static val* varonce237;
+val* var238 /* : String */;
+char* var239 /* : NativeString */;
+val* var240 /* : FlatString */;
+static val* varonce241;
 val* var242 /* : String */;
-val* var243 /* : Array[Object] */;
-long var244 /* : Int */;
-val* var245 /* : NativeArray[Object] */;
-static val* varonce246;
-val* var247 /* : String */;
-char* var248 /* : NativeString */;
-long var249 /* : Int */;
-val* var250 /* : FlatString */;
-val* var251 /* : HashMap[String, Int] */;
-val* var253 /* : HashMap[String, Int] */;
-val* var254 /* : nullable Object */;
-static val* varonce255;
+char* var243 /* : NativeString */;
+val* var244 /* : FlatString */;
+val* var245 /* : HashMap[String, Int] */;
+val* var247 /* : HashMap[String, Int] */;
+val* var248 /* : nullable Object */;
+val* var249 /* : String */;
+long var250 /* : Int */;
+val* var251 /* : Sys */;
+val* var252 /* : HashMap[String, Int] */;
+val* var254 /* : HashMap[String, Int] */;
+val* var255 /* : nullable Object */;
 val* var256 /* : String */;
-char* var257 /* : NativeString */;
-long var258 /* : Int */;
-val* var259 /* : FlatString */;
-val* var260 /* : HashMap[String, Int] */;
-val* var262 /* : HashMap[String, Int] */;
-val* var263 /* : nullable Object */;
-val* var264 /* : String */;
-long var265 /* : Int */;
-static val* varonce266;
-val* var267 /* : String */;
-char* var268 /* : NativeString */;
-long var269 /* : Int */;
-val* var270 /* : FlatString */;
-val* var271 /* : Array[Object] */;
-long var272 /* : Int */;
-val* var273 /* : NativeArray[Object] */;
-val* var274 /* : String */;
-val* var275 /* : Array[Object] */;
-long var276 /* : Int */;
-val* var277 /* : NativeArray[Object] */;
-static val* varonce278;
-val* var279 /* : String */;
-char* var280 /* : NativeString */;
+long var257 /* : Int */;
+val* var258 /* : String */;
+val* var259 /* : Array[Object] */;
+val* var260 /* : NativeArray[Object] */;
+val* var261 /* : Sys */;
+val* var263 /* : NativeArray[String] */;
+static val* varonce262;
+static val* varonce264;
+val* var265 /* : String */;
+char* var266 /* : NativeString */;
+val* var267 /* : FlatString */;
+static val* varonce268;
+val* var269 /* : String */;
+char* var270 /* : NativeString */;
+val* var271 /* : FlatString */;
+static val* varonce272;
+val* var273 /* : String */;
+char* var274 /* : NativeString */;
+val* var275 /* : FlatString */;
+val* var276 /* : HashMap[String, Int] */;
+val* var278 /* : HashMap[String, Int] */;
+val* var279 /* : nullable Object */;
+val* var280 /* : String */;
 long var281 /* : Int */;
-val* var282 /* : FlatString */;
+val* var282 /* : Sys */;
 val* var283 /* : HashMap[String, Int] */;
 val* var285 /* : HashMap[String, Int] */;
 val* var286 /* : nullable Object */;
-static val* varonce287;
-val* var288 /* : String */;
-char* var289 /* : NativeString */;
-long var290 /* : Int */;
-val* var291 /* : FlatString */;
-val* var292 /* : HashMap[String, Int] */;
-val* var294 /* : HashMap[String, Int] */;
-val* var295 /* : nullable Object */;
+val* var287 /* : String */;
+long var288 /* : Int */;
+val* var289 /* : String */;
+val* var290 /* : Array[Object] */;
+val* var291 /* : NativeArray[Object] */;
+val* var292 /* : Sys */;
+val* var294 /* : NativeArray[String] */;
+static val* varonce293;
+static val* varonce295;
 val* var296 /* : String */;
-long var297 /* : Int */;
-static val* varonce298;
-val* var299 /* : String */;
-char* var300 /* : NativeString */;
-long var301 /* : Int */;
+char* var297 /* : NativeString */;
+val* var298 /* : FlatString */;
+static val* varonce299;
+val* var300 /* : String */;
+char* var301 /* : NativeString */;
 val* var302 /* : FlatString */;
-val* var303 /* : Array[Object] */;
-long var304 /* : Int */;
-val* var305 /* : NativeArray[Object] */;
-val* var306 /* : String */;
-val* var307 /* : Array[Object] */;
-long var308 /* : Int */;
-val* var309 /* : NativeArray[Object] */;
-static val* varonce310;
-val* var311 /* : String */;
-char* var312 /* : NativeString */;
+static val* varonce303;
+val* var304 /* : String */;
+char* var305 /* : NativeString */;
+val* var306 /* : FlatString */;
+val* var307 /* : nullable Object */;
+val* var308 /* : String */;
+long var309 /* : Int */;
+val* var310 /* : Sys */;
+val* var311 /* : nullable Object */;
+val* var312 /* : String */;
 long var313 /* : Int */;
-val* var314 /* : FlatString */;
-val* var315 /* : nullable Object */;
-static val* varonce316;
-val* var317 /* : String */;
-char* var318 /* : NativeString */;
-long var319 /* : Int */;
-val* var320 /* : FlatString */;
-val* var321 /* : nullable Object */;
-val* var322 /* : String */;
-long var323 /* : Int */;
-static val* varonce324;
-val* var325 /* : String */;
-char* var326 /* : NativeString */;
-long var327 /* : Int */;
-val* var328 /* : FlatString */;
-val* var329 /* : Array[Object] */;
-long var330 /* : Int */;
-val* var331 /* : NativeArray[Object] */;
-val* var332 /* : String */;
-val* var333 /* : Array[Object] */;
-long var334 /* : Int */;
-val* var335 /* : NativeArray[Object] */;
-static val* varonce336;
-val* var337 /* : String */;
-char* var338 /* : NativeString */;
-long var339 /* : Int */;
-val* var340 /* : FlatString */;
+val* var314 /* : String */;
+val* var315 /* : Array[Object] */;
+val* var316 /* : NativeArray[Object] */;
+val* var317 /* : Sys */;
+static val* varonce318;
+val* var319 /* : String */;
+char* var320 /* : NativeString */;
+val* var321 /* : FlatString */;
 {
 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
 var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -4563,7 +4120,7 @@ var5 = var->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val;
 if (unlikely(var5 == 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);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -4574,8 +4131,8 @@ RET_LABEL4:(void)0;
 var8 = var3->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var3:ToolContext> */
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 59);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 60);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -4588,31 +4145,31 @@ var9 = var11;
 RET_LABEL10:(void)0;
 }
 }
-var12 = ((struct instance_standard__Bool*)var9)->value; /* autounbox from nullable Object to Bool */;
+var12 = (short int)((long)(var9)>>2);
 if (var12){
-if (varonce) {
-var13 = varonce;
+var13 = glob_sys;
+if (likely(varonce!=NULL)) {
+var14 = varonce;
 } else {
-var14 = "# static count_type_test";
-var15 = 24;
-var16 = standard___standard__NativeString___to_s_with_length(var14, var15);
-var13 = var16;
-varonce = var13;
+var15 = "# static count_type_test";
+var16 = standard___standard__NativeString___to_s_with_length(var15, 24l);
+var14 = var16;
+varonce = var14;
 }
 {
-standard__file___Object___print(self, var13); /* Direct call file#Object#print on <self:AbstractCompiler>*/
+standard__file___Sys___print(var13, var14); /* Direct call file#Sys#print on <var13:Sys>*/
 }
-if (varonce17) {
-var18 = varonce17;
+var17 = glob_sys;
+if (likely(varonce18!=NULL)) {
+var19 = varonce18;
 } else {
-var19 = "\11resolved:\11unresolved\11skipped\11total";
-var20 = 35;
-var21 = standard___standard__NativeString___to_s_with_length(var19, var20);
-var18 = var21;
-varonce17 = var18;
+var20 = "\tresolved:\tunresolved\tskipped\ttotal";
+var21 = standard___standard__NativeString___to_s_with_length(var20, 35l);
+var19 = var21;
+varonce18 = var19;
 }
 {
-standard__file___Object___print(self, var18); /* Direct call file#Object#print on <self:AbstractCompiler>*/
+standard__file___Sys___print(var17, var19); /* Direct call file#Sys#print on <var17:Sys>*/
 }
 {
 var22 = nit___nit__AbstractCompiler___init_count_type_test_tags(self);
@@ -4623,439 +4180,427 @@ var_count_type_test_total = var22;
 var25 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
 if (unlikely(var25 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_resolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 964);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1015);
+fatal_exit(1);
 }
 var23 = var25;
 RET_LABEL24:(void)0;
 }
 }
-if (varonce26) {
+if (likely(varonce26!=NULL)) {
 var27 = varonce26;
 } else {
 var28 = "total";
-var29 = 5;
-var30 = standard___standard__NativeString___to_s_with_length(var28, var29);
-var27 = var30;
+var29 = standard___standard__NativeString___to_s_with_length(var28, 5l);
+var27 = var29;
 varonce26 = var27;
 }
-var31 = 0;
 {
-var32 = BOX_standard__Int(var31); /* autobox from Int to nullable Object */
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var23, var27, var32); /* Direct call hash_collection#HashMap#[]= on <var23:HashMap[String, Int]>*/
+var30 = (val*)(0l<<2|1);
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var23, var27, var30); /* Direct call hash_collection#HashMap#[]= on <var23:HashMap[String, Int]>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_unresolved (self) on <self:AbstractCompiler> */
-var35 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
-if (unlikely(var35 == NULL)) {
+var33 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
+if (unlikely(var33 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_unresolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 965);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1016);
+fatal_exit(1);
 }
-var33 = var35;
-RET_LABEL34:(void)0;
+var31 = var33;
+RET_LABEL32:(void)0;
 }
 }
-if (varonce36) {
-var37 = varonce36;
+if (likely(varonce34!=NULL)) {
+var35 = varonce34;
 } else {
-var38 = "total";
-var39 = 5;
-var40 = standard___standard__NativeString___to_s_with_length(var38, var39);
-var37 = var40;
-varonce36 = var37;
+var36 = "total";
+var37 = standard___standard__NativeString___to_s_with_length(var36, 5l);
+var35 = var37;
+varonce34 = var35;
 }
-var41 = 0;
 {
-var42 = BOX_standard__Int(var41); /* autobox from Int to nullable Object */
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var33, var37, var42); /* Direct call hash_collection#HashMap#[]= on <var33:HashMap[String, Int]>*/
+var38 = (val*)(0l<<2|1);
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var31, var35, var38); /* Direct call hash_collection#HashMap#[]= on <var31:HashMap[String, Int]>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_skipped (self) on <self:AbstractCompiler> */
-var45 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
-if (unlikely(var45 == NULL)) {
+var41 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
+if (unlikely(var41 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_skipped");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 966);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1017);
+fatal_exit(1);
 }
-var43 = var45;
-RET_LABEL44:(void)0;
+var39 = var41;
+RET_LABEL40:(void)0;
 }
 }
-if (varonce46) {
-var47 = varonce46;
+if (likely(varonce42!=NULL)) {
+var43 = varonce42;
 } else {
-var48 = "total";
-var49 = 5;
-var50 = standard___standard__NativeString___to_s_with_length(var48, var49);
-var47 = var50;
-varonce46 = var47;
+var44 = "total";
+var45 = standard___standard__NativeString___to_s_with_length(var44, 5l);
+var43 = var45;
+varonce42 = var43;
 }
-var51 = 0;
 {
-var52 = BOX_standard__Int(var51); /* autobox from Int to nullable Object */
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var43, var47, var52); /* Direct call hash_collection#HashMap#[]= on <var43:HashMap[String, Int]>*/
+var46 = (val*)(0l<<2|1);
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var39, var43, var46); /* Direct call hash_collection#HashMap#[]= on <var39:HashMap[String, Int]>*/
 }
-if (varonce53) {
-var54 = varonce53;
+if (likely(varonce47!=NULL)) {
+var48 = varonce47;
 } else {
-var55 = "total";
-var56 = 5;
-var57 = standard___standard__NativeString___to_s_with_length(var55, var56);
-var54 = var57;
-varonce53 = var54;
+var49 = "total";
+var50 = standard___standard__NativeString___to_s_with_length(var49, 5l);
+var48 = var50;
+varonce47 = var48;
 }
-var58 = 0;
 {
-var59 = BOX_standard__Int(var58); /* autobox from Int to nullable Object */
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_count_type_test_total, var54, var59); /* Direct call hash_collection#HashMap#[]= on <var_count_type_test_total:HashMap[String, Int]>*/
+var51 = (val*)(0l<<2|1);
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_count_type_test_total, var48, var51); /* Direct call hash_collection#HashMap#[]= on <var_count_type_test_total:HashMap[String, Int]>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_tags (self) on <self:AbstractCompiler> */
-var62 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
-if (unlikely(var62 == NULL)) {
+var54 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
+if (unlikely(var54 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_tags");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 963);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1014);
+fatal_exit(1);
 }
-var60 = var62;
-RET_LABEL61:(void)0;
+var52 = var54;
+RET_LABEL53:(void)0;
 }
 }
-var_ = var60;
+var_ = var52;
 {
-var63 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var55 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
 }
-var_64 = var63;
+var_56 = var55;
 for(;;) {
 {
-var65 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_64);
+var57 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_56);
 }
-if (var65){
+if (var57){
 {
-var66 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_64);
+var58 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_56);
 }
-var_tag = var66;
+var_tag = var58;
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_resolved (self) on <self:AbstractCompiler> */
-var69 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
-if (unlikely(var69 == NULL)) {
+var61 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
+if (unlikely(var61 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_resolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 964);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1015);
+fatal_exit(1);
 }
-var67 = var69;
-RET_LABEL68:(void)0;
+var59 = var61;
+RET_LABEL60:(void)0;
 }
 }
 {
-var70 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var67, var_tag);
+var62 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var59, var_tag);
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_unresolved (self) on <self:AbstractCompiler> */
-var73 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
-if (unlikely(var73 == NULL)) {
+var65 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
+if (unlikely(var65 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_unresolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 965);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1016);
+fatal_exit(1);
 }
-var71 = var73;
-RET_LABEL72:(void)0;
+var63 = var65;
+RET_LABEL64:(void)0;
 }
 }
 {
-var74 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var71, var_tag);
+var66 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var63, var_tag);
 }
 {
-{ /* Inline kernel#Int#+ (var70,var74) on <var70:nullable Object(Int)> */
-/* Covariant cast for argument 0 (i) <var74:nullable Object(Int)> isa OTHER */
-/* <var74:nullable Object(Int)> isa OTHER */
-var77 = 1; /* easy <var74:nullable Object(Int)> isa OTHER*/
-if (unlikely(!var77)) {
-var_class_name = var74 == NULL ? "null" : var74->type->name;
+{ /* Inline kernel#Int#+ (var62,var66) on <var62:nullable Object(Int)> */
+/* Covariant cast for argument 0 (i) <var66:nullable Object(Int)> isa OTHER */
+/* <var66:nullable Object(Int)> isa OTHER */
+var69 = 1; /* easy <var66:nullable Object(Int)> isa OTHER*/
+if (unlikely(!var69)) {
+var_class_name = var66 == NULL ? "null" : (((long)var66&3)?type_info[((long)var66&3)]:var66->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
-}
-var78 = ((struct instance_standard__Int*)var70)->value; /* autounbox from nullable Object to Int */;
-var79 = ((struct instance_standard__Int*)var74)->value; /* autounbox from nullable Object to Int */;
-var80 = var78 + var79;
-var75 = var80;
-goto RET_LABEL76;
-RET_LABEL76:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
+}
+var70 = (long)(var62)>>2;
+var71 = (long)(var66)>>2;
+var72 = var70 + var71;
+var67 = var72;
+goto RET_LABEL68;
+RET_LABEL68:(void)0;
 }
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_skipped (self) on <self:AbstractCompiler> */
-var83 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
-if (unlikely(var83 == NULL)) {
+var75 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
+if (unlikely(var75 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_skipped");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 966);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1017);
+fatal_exit(1);
 }
-var81 = var83;
-RET_LABEL82:(void)0;
+var73 = var75;
+RET_LABEL74:(void)0;
 }
 }
 {
-var84 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var81, var_tag);
+var76 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var73, var_tag);
 }
 {
-{ /* Inline kernel#Int#+ (var75,var84) on <var75:Int> */
-/* Covariant cast for argument 0 (i) <var84:nullable Object(Int)> isa OTHER */
-/* <var84:nullable Object(Int)> isa OTHER */
-var87 = 1; /* easy <var84:nullable Object(Int)> isa OTHER*/
-if (unlikely(!var87)) {
-var_class_name90 = var84 == NULL ? "null" : var84->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name90);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (var67,var76) on <var67:Int> */
+/* Covariant cast for argument 0 (i) <var76:nullable Object(Int)> isa OTHER */
+/* <var76:nullable Object(Int)> isa OTHER */
+var79 = 1; /* easy <var76:nullable Object(Int)> isa OTHER*/
+if (unlikely(!var79)) {
+var_class_name82 = var76 == NULL ? "null" : (((long)var76&3)?type_info[((long)var76&3)]:var76->type)->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name82);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var91 = ((struct instance_standard__Int*)var84)->value; /* autounbox from nullable Object to Int */;
-var92 = var75 + var91;
-var85 = var92;
-goto RET_LABEL86;
-RET_LABEL86:(void)0;
+var83 = (long)(var76)>>2;
+var84 = var67 + var83;
+var77 = var84;
+goto RET_LABEL78;
+RET_LABEL78:(void)0;
 }
 }
 {
-var93 = BOX_standard__Int(var85); /* autobox from Int to nullable Object */
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_count_type_test_total, var_tag, var93); /* Direct call hash_collection#HashMap#[]= on <var_count_type_test_total:HashMap[String, Int]>*/
+var85 = (val*)(var77<<2|1);
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_count_type_test_total, var_tag, var85); /* Direct call hash_collection#HashMap#[]= on <var_count_type_test_total:HashMap[String, Int]>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_resolved (self) on <self:AbstractCompiler> */
-var96 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
-if (unlikely(var96 == NULL)) {
+var88 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
+if (unlikely(var88 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_resolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 964);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1015);
+fatal_exit(1);
 }
-var94 = var96;
-RET_LABEL95:(void)0;
+var86 = var88;
+RET_LABEL87:(void)0;
 }
 }
-var_97 = var94;
-if (varonce98) {
-var99 = varonce98;
+var_89 = var86;
+if (likely(varonce90!=NULL)) {
+var91 = varonce90;
 } else {
-var100 = "total";
-var101 = 5;
-var102 = standard___standard__NativeString___to_s_with_length(var100, var101);
-var99 = var102;
-varonce98 = var99;
+var92 = "total";
+var93 = standard___standard__NativeString___to_s_with_length(var92, 5l);
+var91 = var93;
+varonce90 = var91;
 }
-var_103 = var99;
+var_94 = var91;
 {
-var104 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_97, var_103);
+var95 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_89, var_94);
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_resolved (self) on <self:AbstractCompiler> */
-var107 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
-if (unlikely(var107 == NULL)) {
+var98 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
+if (unlikely(var98 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_resolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 964);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1015);
+fatal_exit(1);
 }
-var105 = var107;
-RET_LABEL106:(void)0;
+var96 = var98;
+RET_LABEL97:(void)0;
 }
 }
 {
-var108 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var105, var_tag);
+var99 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var96, var_tag);
 }
 {
-{ /* Inline kernel#Int#+ (var104,var108) on <var104:nullable Object(Int)> */
-/* Covariant cast for argument 0 (i) <var108:nullable Object(Int)> isa OTHER */
-/* <var108:nullable Object(Int)> isa OTHER */
-var111 = 1; /* easy <var108:nullable Object(Int)> isa OTHER*/
-if (unlikely(!var111)) {
-var_class_name114 = var108 == NULL ? "null" : var108->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name114);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (var95,var99) on <var95:nullable Object(Int)> */
+/* Covariant cast for argument 0 (i) <var99:nullable Object(Int)> isa OTHER */
+/* <var99:nullable Object(Int)> isa OTHER */
+var102 = 1; /* easy <var99:nullable Object(Int)> isa OTHER*/
+if (unlikely(!var102)) {
+var_class_name105 = var99 == NULL ? "null" : (((long)var99&3)?type_info[((long)var99&3)]:var99->type)->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name105);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var115 = ((struct instance_standard__Int*)var104)->value; /* autounbox from nullable Object to Int */;
-var116 = ((struct instance_standard__Int*)var108)->value; /* autounbox from nullable Object to Int */;
-var117 = var115 + var116;
-var109 = var117;
-goto RET_LABEL110;
-RET_LABEL110:(void)0;
+var106 = (long)(var95)>>2;
+var107 = (long)(var99)>>2;
+var108 = var106 + var107;
+var100 = var108;
+goto RET_LABEL101;
+RET_LABEL101:(void)0;
 }
 }
 {
-var118 = BOX_standard__Int(var109); /* autobox from Int to nullable Object */
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_97, var_103, var118); /* Direct call hash_collection#HashMap#[]= on <var_97:HashMap[String, Int]>*/
+var109 = (val*)(var100<<2|1);
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_89, var_94, var109); /* Direct call hash_collection#HashMap#[]= on <var_89:HashMap[String, Int]>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_unresolved (self) on <self:AbstractCompiler> */
-var121 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
-if (unlikely(var121 == NULL)) {
+var112 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
+if (unlikely(var112 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_unresolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 965);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1016);
+fatal_exit(1);
 }
-var119 = var121;
-RET_LABEL120:(void)0;
+var110 = var112;
+RET_LABEL111:(void)0;
 }
 }
-var_122 = var119;
-if (varonce123) {
-var124 = varonce123;
+var_113 = var110;
+if (likely(varonce114!=NULL)) {
+var115 = varonce114;
 } else {
-var125 = "total";
-var126 = 5;
-var127 = standard___standard__NativeString___to_s_with_length(var125, var126);
-var124 = var127;
-varonce123 = var124;
+var116 = "total";
+var117 = standard___standard__NativeString___to_s_with_length(var116, 5l);
+var115 = var117;
+varonce114 = var115;
 }
-var_128 = var124;
+var_118 = var115;
 {
-var129 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_122, var_128);
+var119 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_113, var_118);
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_unresolved (self) on <self:AbstractCompiler> */
-var132 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
-if (unlikely(var132 == NULL)) {
+var122 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
+if (unlikely(var122 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_unresolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 965);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1016);
+fatal_exit(1);
 }
-var130 = var132;
-RET_LABEL131:(void)0;
+var120 = var122;
+RET_LABEL121:(void)0;
 }
 }
 {
-var133 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var130, var_tag);
+var123 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var120, var_tag);
 }
 {
-{ /* Inline kernel#Int#+ (var129,var133) on <var129:nullable Object(Int)> */
-/* Covariant cast for argument 0 (i) <var133:nullable Object(Int)> isa OTHER */
-/* <var133:nullable Object(Int)> isa OTHER */
-var136 = 1; /* easy <var133:nullable Object(Int)> isa OTHER*/
-if (unlikely(!var136)) {
-var_class_name139 = var133 == NULL ? "null" : var133->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name139);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (var119,var123) on <var119:nullable Object(Int)> */
+/* Covariant cast for argument 0 (i) <var123:nullable Object(Int)> isa OTHER */
+/* <var123:nullable Object(Int)> isa OTHER */
+var126 = 1; /* easy <var123:nullable Object(Int)> isa OTHER*/
+if (unlikely(!var126)) {
+var_class_name129 = var123 == NULL ? "null" : (((long)var123&3)?type_info[((long)var123&3)]:var123->type)->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name129);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var140 = ((struct instance_standard__Int*)var129)->value; /* autounbox from nullable Object to Int */;
-var141 = ((struct instance_standard__Int*)var133)->value; /* autounbox from nullable Object to Int */;
-var142 = var140 + var141;
-var134 = var142;
-goto RET_LABEL135;
-RET_LABEL135:(void)0;
+var130 = (long)(var119)>>2;
+var131 = (long)(var123)>>2;
+var132 = var130 + var131;
+var124 = var132;
+goto RET_LABEL125;
+RET_LABEL125:(void)0;
 }
 }
 {
-var143 = BOX_standard__Int(var134); /* autobox from Int to nullable Object */
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_122, var_128, var143); /* Direct call hash_collection#HashMap#[]= on <var_122:HashMap[String, Int]>*/
+var133 = (val*)(var124<<2|1);
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_113, var_118, var133); /* Direct call hash_collection#HashMap#[]= on <var_113:HashMap[String, Int]>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_skipped (self) on <self:AbstractCompiler> */
-var146 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
-if (unlikely(var146 == NULL)) {
+var136 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
+if (unlikely(var136 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_skipped");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 966);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1017);
+fatal_exit(1);
 }
-var144 = var146;
-RET_LABEL145:(void)0;
+var134 = var136;
+RET_LABEL135:(void)0;
 }
 }
-var_147 = var144;
-if (varonce148) {
-var149 = varonce148;
+var_137 = var134;
+if (likely(varonce138!=NULL)) {
+var139 = varonce138;
 } else {
-var150 = "total";
-var151 = 5;
-var152 = standard___standard__NativeString___to_s_with_length(var150, var151);
-var149 = var152;
-varonce148 = var149;
+var140 = "total";
+var141 = standard___standard__NativeString___to_s_with_length(var140, 5l);
+var139 = var141;
+varonce138 = var139;
 }
-var_153 = var149;
+var_142 = var139;
 {
-var154 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_147, var_153);
+var143 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_137, var_142);
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_skipped (self) on <self:AbstractCompiler> */
-var157 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
-if (unlikely(var157 == NULL)) {
+var146 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
+if (unlikely(var146 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_skipped");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 966);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1017);
+fatal_exit(1);
 }
-var155 = var157;
-RET_LABEL156:(void)0;
+var144 = var146;
+RET_LABEL145:(void)0;
 }
 }
 {
-var158 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var155, var_tag);
+var147 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var144, var_tag);
 }
 {
-{ /* Inline kernel#Int#+ (var154,var158) on <var154:nullable Object(Int)> */
-/* Covariant cast for argument 0 (i) <var158:nullable Object(Int)> isa OTHER */
-/* <var158:nullable Object(Int)> isa OTHER */
-var161 = 1; /* easy <var158:nullable Object(Int)> isa OTHER*/
-if (unlikely(!var161)) {
-var_class_name164 = var158 == NULL ? "null" : var158->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name164);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (var143,var147) on <var143:nullable Object(Int)> */
+/* Covariant cast for argument 0 (i) <var147:nullable Object(Int)> isa OTHER */
+/* <var147:nullable Object(Int)> isa OTHER */
+var150 = 1; /* easy <var147:nullable Object(Int)> isa OTHER*/
+if (unlikely(!var150)) {
+var_class_name153 = var147 == NULL ? "null" : (((long)var147&3)?type_info[((long)var147&3)]:var147->type)->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name153);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var165 = ((struct instance_standard__Int*)var154)->value; /* autounbox from nullable Object to Int */;
-var166 = ((struct instance_standard__Int*)var158)->value; /* autounbox from nullable Object to Int */;
-var167 = var165 + var166;
-var159 = var167;
-goto RET_LABEL160;
-RET_LABEL160:(void)0;
+var154 = (long)(var143)>>2;
+var155 = (long)(var147)>>2;
+var156 = var154 + var155;
+var148 = var156;
+goto RET_LABEL149;
+RET_LABEL149:(void)0;
 }
 }
 {
-var168 = BOX_standard__Int(var159); /* autobox from Int to nullable Object */
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_147, var_153, var168); /* Direct call hash_collection#HashMap#[]= on <var_147:HashMap[String, Int]>*/
+var157 = (val*)(var148<<2|1);
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_137, var_142, var157); /* Direct call hash_collection#HashMap#[]= on <var_137:HashMap[String, Int]>*/
 }
-var_169 = var_count_type_test_total;
-if (varonce170) {
-var171 = varonce170;
+var_158 = var_count_type_test_total;
+if (likely(varonce159!=NULL)) {
+var160 = varonce159;
 } else {
-var172 = "total";
-var173 = 5;
-var174 = standard___standard__NativeString___to_s_with_length(var172, var173);
-var171 = var174;
-varonce170 = var171;
+var161 = "total";
+var162 = standard___standard__NativeString___to_s_with_length(var161, 5l);
+var160 = var162;
+varonce159 = var160;
 }
-var_175 = var171;
+var_163 = var160;
 {
-var176 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_169, var_175);
+var164 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_158, var_163);
 }
 {
-var177 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_count_type_test_total, var_tag);
+var165 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_count_type_test_total, var_tag);
 }
 {
-{ /* Inline kernel#Int#+ (var176,var177) on <var176:nullable Object(Int)> */
-/* Covariant cast for argument 0 (i) <var177:nullable Object(Int)> isa OTHER */
-/* <var177:nullable Object(Int)> isa OTHER */
-var180 = 1; /* easy <var177:nullable Object(Int)> isa OTHER*/
-if (unlikely(!var180)) {
-var_class_name183 = var177 == NULL ? "null" : var177->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name183);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (var164,var165) on <var164:nullable Object(Int)> */
+/* Covariant cast for argument 0 (i) <var165:nullable Object(Int)> isa OTHER */
+/* <var165:nullable Object(Int)> isa OTHER */
+var168 = 1; /* easy <var165:nullable Object(Int)> isa OTHER*/
+if (unlikely(!var168)) {
+var_class_name171 = var165 == NULL ? "null" : (((long)var165&3)?type_info[((long)var165&3)]:var165->type)->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name171);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var184 = ((struct instance_standard__Int*)var176)->value; /* autounbox from nullable Object to Int */;
-var185 = ((struct instance_standard__Int*)var177)->value; /* autounbox from nullable Object to Int */;
-var186 = var184 + var185;
-var178 = var186;
-goto RET_LABEL179;
-RET_LABEL179:(void)0;
+var172 = (long)(var164)>>2;
+var173 = (long)(var165)>>2;
+var174 = var172 + var173;
+var166 = var174;
+goto RET_LABEL167;
+RET_LABEL167:(void)0;
 }
 }
 {
-var187 = BOX_standard__Int(var178); /* autobox from Int to nullable Object */
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_169, var_175, var187); /* Direct call hash_collection#HashMap#[]= on <var_169:HashMap[String, Int]>*/
+var175 = (val*)(var166<<2|1);
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_158, var_163, var175); /* Direct call hash_collection#HashMap#[]= on <var_158:HashMap[String, Int]>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_64); /* Direct call array#ArrayIterator#next on <var_64:ArrayIterator[String]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_56); /* Direct call array#ArrayIterator#next on <var_56:ArrayIterator[String]>*/
 }
 } else {
 goto BREAK_label;
@@ -5063,434 +4608,424 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_64) on <var_64:ArrayIterator[String]> */
-RET_LABEL188:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_56); /* Direct call array#ArrayIterator#finish on <var_56:ArrayIterator[String]>*/
 }
-if (varonce189) {
-var190 = varonce189;
+if (likely(varonce176!=NULL)) {
+var177 = varonce176;
 } else {
-var191 = "total";
-var192 = 5;
-var193 = standard___standard__NativeString___to_s_with_length(var191, var192);
-var190 = var193;
-varonce189 = var190;
+var178 = "total";
+var179 = standard___standard__NativeString___to_s_with_length(var178, 5l);
+var177 = var179;
+varonce176 = var177;
 }
 {
-var194 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_count_type_test_total, var190);
+var180 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_count_type_test_total, var177);
 }
-var195 = ((struct instance_standard__Int*)var194)->value; /* autounbox from nullable Object to Int */;
-var_count_type_test = var195;
+var181 = (long)(var180)>>2;
+var_count_type_test = var181;
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_tags (self) on <self:AbstractCompiler> */
-var198 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
-if (unlikely(var198 == NULL)) {
+var184 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_tags].val; /* _count_type_test_tags on <self:AbstractCompiler> */
+if (unlikely(var184 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_tags");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 963);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1014);
+fatal_exit(1);
 }
-var196 = var198;
-RET_LABEL197:(void)0;
+var182 = var184;
+RET_LABEL183:(void)0;
 }
 }
 {
-var199 = standard__array___Collection___to_a(var196);
+var185 = standard__array___Collection___to_a(var182);
 }
-var_tags = var199;
-if (varonce200) {
-var201 = varonce200;
+var_tags = var185;
+if (likely(varonce186!=NULL)) {
+var187 = varonce186;
 } else {
-var202 = "total";
-var203 = 5;
-var204 = standard___standard__NativeString___to_s_with_length(var202, var203);
-var201 = var204;
-varonce200 = var201;
+var188 = "total";
+var189 = standard___standard__NativeString___to_s_with_length(var188, 5l);
+var187 = var189;
+varonce186 = var187;
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_tags, var201); /* Direct call array#Array#add on <var_tags:Array[String]>*/
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_tags, var187); /* Direct call array#Array#add on <var_tags:Array[String]>*/
 }
-var_205 = var_tags;
+var_190 = var_tags;
 {
-var206 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_205);
+var191 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_190);
 }
-var_207 = var206;
+var_192 = var191;
 for(;;) {
 {
-var208 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_207);
+var193 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_192);
 }
-if (var208){
+if (var193){
 {
-var209 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_207);
+var194 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_192);
 }
-var_tag210 = var209;
-var211 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var211 = array_instance Array[Object] */
-var212 = 1;
-var213 = NEW_standard__NativeArray(var212, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var213)->values[0] = (val*) var_tag210;
+var_tag195 = var194;
+var196 = glob_sys;
+var197 = NEW_standard__Array(&type_standard__Array__standard__Object);
+{ /* var197 = array_instance Array[Object] */
+var198 = NEW_standard__NativeArray(1l, &type_standard__NativeArray__standard__Object);
+((struct instance_standard__NativeArray*)var198)->values[0] = (val*) var_tag195;
 {
-((void (*)(val* self, val* p0, long p1))(var211->class->vft[COLOR_standard__array__Array__with_native]))(var211, var213, var212) /* with_native on <var211:Array[Object]>*/;
+((void(*)(val* self, val* p0, long p1))(var197->class->vft[COLOR_standard__array__Array__with_native]))(var197, var198, 1l); /* with_native on <var197:Array[Object]>*/
 }
 }
 {
-standard__file___Object___printn(self, var211); /* Direct call file#Object#printn on <self:AbstractCompiler>*/
+standard__file___Sys___printn(var196, var197); /* Direct call file#Sys#printn on <var196:Sys>*/
+}
+var199 = glob_sys;
+if (unlikely(varonce200==NULL)) {
+var201 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce202!=NULL)) {
+var203 = varonce202;
+} else {
+var204 = "\t";
+var205 = standard___standard__NativeString___to_s_with_length(var204, 1l);
+var203 = var205;
+varonce202 = var203;
+}
+((struct instance_standard__NativeArray*)var201)->values[0]=var203;
+if (likely(varonce206!=NULL)) {
+var207 = varonce206;
+} else {
+var208 = " (";
+var209 = standard___standard__NativeString___to_s_with_length(var208, 2l);
+var207 = var209;
+varonce206 = var207;
+}
+((struct instance_standard__NativeArray*)var201)->values[2]=var207;
+if (likely(varonce210!=NULL)) {
+var211 = varonce210;
+} else {
+var212 = "%)";
+var213 = standard___standard__NativeString___to_s_with_length(var212, 2l);
+var211 = var213;
+varonce210 = var211;
 }
-if (varonce214) {
-var215 = varonce214;
+((struct instance_standard__NativeArray*)var201)->values[4]=var211;
 } else {
-var216 = "\11";
-var217 = 1;
-var218 = standard___standard__NativeString___to_s_with_length(var216, var217);
-var215 = var218;
-varonce214 = var215;
+var201 = varonce200;
+varonce200 = NULL;
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_resolved (self) on <self:AbstractCompiler> */
-var221 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
-if (unlikely(var221 == NULL)) {
+var216 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
+if (unlikely(var216 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_resolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 964);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1015);
+fatal_exit(1);
 }
-var219 = var221;
-RET_LABEL220:(void)0;
+var214 = var216;
+RET_LABEL215:(void)0;
 }
 }
 {
-var222 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var219, var_tag210);
-}
-if (varonce223) {
-var224 = varonce223;
-} else {
-var225 = " (";
-var226 = 2;
-var227 = standard___standard__NativeString___to_s_with_length(var225, var226);
-var224 = var227;
-varonce223 = var224;
+var217 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var214, var_tag195);
 }
+var219 = (long)(var217)>>2;
+var218 = standard__string___Int___Object__to_s(var219);
+((struct instance_standard__NativeArray*)var201)->values[1]=var218;
+var220 = glob_sys;
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_resolved (self) on <self:AbstractCompiler> */
-var230 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
-if (unlikely(var230 == NULL)) {
+var223 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <self:AbstractCompiler> */
+if (unlikely(var223 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_resolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 964);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1015);
+fatal_exit(1);
 }
-var228 = var230;
-RET_LABEL229:(void)0;
+var221 = var223;
+RET_LABEL222:(void)0;
 }
 }
 {
-var231 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var228, var_tag210);
+var224 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var221, var_tag195);
 }
 {
-var233 = ((struct instance_standard__Int*)var231)->value; /* autounbox from nullable Object to Int */;
-var232 = nit___nit__AbstractCompiler___div(self, var233, var_count_type_test);
+var226 = (long)(var224)>>2;
+var225 = counter___standard__Sys___div(var220, var226, var_count_type_test);
 }
-if (varonce234) {
-var235 = varonce234;
-} else {
-var236 = "%)";
-var237 = 2;
-var238 = standard___standard__NativeString___to_s_with_length(var236, var237);
-var235 = var238;
-varonce234 = var235;
+((struct instance_standard__NativeArray*)var201)->values[3]=var225;
+{
+var227 = ((val*(*)(val* self))(var201->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var201); /* native_to_s on <var201:NativeArray[String]>*/
 }
-var239 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var239 = array_instance Array[Object] */
-var240 = 5;
-var241 = NEW_standard__NativeArray(var240, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var241)->values[0] = (val*) var215;
-((struct instance_standard__NativeArray*)var241)->values[1] = (val*) var222;
-((struct instance_standard__NativeArray*)var241)->values[2] = (val*) var224;
-((struct instance_standard__NativeArray*)var241)->values[3] = (val*) var232;
-((struct instance_standard__NativeArray*)var241)->values[4] = (val*) var235;
+varonce200 = var201;
+var228 = NEW_standard__Array(&type_standard__Array__standard__Object);
+{ /* var228 = array_instance Array[Object] */
+var229 = NEW_standard__NativeArray(1l, &type_standard__NativeArray__standard__Object);
+((struct instance_standard__NativeArray*)var229)->values[0] = (val*) var227;
 {
-((void (*)(val* self, val* p0, long p1))(var239->class->vft[COLOR_standard__array__Array__with_native]))(var239, var241, var240) /* with_native on <var239:Array[Object]>*/;
+((void(*)(val* self, val* p0, long p1))(var228->class->vft[COLOR_standard__array__Array__with_native]))(var228, var229, 1l); /* with_native on <var228:Array[Object]>*/
 }
 }
 {
-var242 = ((val* (*)(val* self))(var239->class->vft[COLOR_standard__string__Object__to_s]))(var239) /* to_s on <var239:Array[Object]>*/;
+standard__file___Sys___printn(var199, var228); /* Direct call file#Sys#printn on <var199:Sys>*/
 }
-var243 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var243 = array_instance Array[Object] */
-var244 = 1;
-var245 = NEW_standard__NativeArray(var244, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var245)->values[0] = (val*) var242;
-{
-((void (*)(val* self, val* p0, long p1))(var243->class->vft[COLOR_standard__array__Array__with_native]))(var243, var245, var244) /* with_native on <var243:Array[Object]>*/;
+var230 = glob_sys;
+if (unlikely(varonce231==NULL)) {
+var232 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce233!=NULL)) {
+var234 = varonce233;
+} else {
+var235 = "\t";
+var236 = standard___standard__NativeString___to_s_with_length(var235, 1l);
+var234 = var236;
+varonce233 = var234;
 }
+((struct instance_standard__NativeArray*)var232)->values[0]=var234;
+if (likely(varonce237!=NULL)) {
+var238 = varonce237;
+} else {
+var239 = " (";
+var240 = standard___standard__NativeString___to_s_with_length(var239, 2l);
+var238 = var240;
+varonce237 = var238;
 }
-{
-standard__file___Object___printn(self, var243); /* Direct call file#Object#printn on <self:AbstractCompiler>*/
+((struct instance_standard__NativeArray*)var232)->values[2]=var238;
+if (likely(varonce241!=NULL)) {
+var242 = varonce241;
+} else {
+var243 = "%)";
+var244 = standard___standard__NativeString___to_s_with_length(var243, 2l);
+var242 = var244;
+varonce241 = var242;
 }
-if (varonce246) {
-var247 = varonce246;
+((struct instance_standard__NativeArray*)var232)->values[4]=var242;
 } else {
-var248 = "\11";
-var249 = 1;
-var250 = standard___standard__NativeString___to_s_with_length(var248, var249);
-var247 = var250;
-varonce246 = var247;
+var232 = varonce231;
+varonce231 = NULL;
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_unresolved (self) on <self:AbstractCompiler> */
-var253 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
-if (unlikely(var253 == NULL)) {
+var247 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
+if (unlikely(var247 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_unresolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 965);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1016);
+fatal_exit(1);
 }
-var251 = var253;
-RET_LABEL252:(void)0;
+var245 = var247;
+RET_LABEL246:(void)0;
 }
 }
 {
-var254 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var251, var_tag210);
-}
-if (varonce255) {
-var256 = varonce255;
-} else {
-var257 = " (";
-var258 = 2;
-var259 = standard___standard__NativeString___to_s_with_length(var257, var258);
-var256 = var259;
-varonce255 = var256;
+var248 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var245, var_tag195);
 }
+var250 = (long)(var248)>>2;
+var249 = standard__string___Int___Object__to_s(var250);
+((struct instance_standard__NativeArray*)var232)->values[1]=var249;
+var251 = glob_sys;
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_unresolved (self) on <self:AbstractCompiler> */
-var262 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
-if (unlikely(var262 == NULL)) {
+var254 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <self:AbstractCompiler> */
+if (unlikely(var254 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_unresolved");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 965);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1016);
+fatal_exit(1);
 }
-var260 = var262;
-RET_LABEL261:(void)0;
+var252 = var254;
+RET_LABEL253:(void)0;
 }
 }
 {
-var263 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var260, var_tag210);
+var255 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var252, var_tag195);
 }
 {
-var265 = ((struct instance_standard__Int*)var263)->value; /* autounbox from nullable Object to Int */;
-var264 = nit___nit__AbstractCompiler___div(self, var265, var_count_type_test);
+var257 = (long)(var255)>>2;
+var256 = counter___standard__Sys___div(var251, var257, var_count_type_test);
 }
-if (varonce266) {
-var267 = varonce266;
-} else {
-var268 = "%)";
-var269 = 2;
-var270 = standard___standard__NativeString___to_s_with_length(var268, var269);
-var267 = var270;
-varonce266 = var267;
+((struct instance_standard__NativeArray*)var232)->values[3]=var256;
+{
+var258 = ((val*(*)(val* self))(var232->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var232); /* native_to_s on <var232:NativeArray[String]>*/
 }
-var271 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var271 = array_instance Array[Object] */
-var272 = 5;
-var273 = NEW_standard__NativeArray(var272, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var273)->values[0] = (val*) var247;
-((struct instance_standard__NativeArray*)var273)->values[1] = (val*) var254;
-((struct instance_standard__NativeArray*)var273)->values[2] = (val*) var256;
-((struct instance_standard__NativeArray*)var273)->values[3] = (val*) var264;
-((struct instance_standard__NativeArray*)var273)->values[4] = (val*) var267;
+varonce231 = var232;
+var259 = NEW_standard__Array(&type_standard__Array__standard__Object);
+{ /* var259 = array_instance Array[Object] */
+var260 = NEW_standard__NativeArray(1l, &type_standard__NativeArray__standard__Object);
+((struct instance_standard__NativeArray*)var260)->values[0] = (val*) var258;
 {
-((void (*)(val* self, val* p0, long p1))(var271->class->vft[COLOR_standard__array__Array__with_native]))(var271, var273, var272) /* with_native on <var271:Array[Object]>*/;
+((void(*)(val* self, val* p0, long p1))(var259->class->vft[COLOR_standard__array__Array__with_native]))(var259, var260, 1l); /* with_native on <var259:Array[Object]>*/
 }
 }
 {
-var274 = ((val* (*)(val* self))(var271->class->vft[COLOR_standard__string__Object__to_s]))(var271) /* to_s on <var271:Array[Object]>*/;
+standard__file___Sys___printn(var230, var259); /* Direct call file#Sys#printn on <var230:Sys>*/
 }
-var275 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var275 = array_instance Array[Object] */
-var276 = 1;
-var277 = NEW_standard__NativeArray(var276, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var277)->values[0] = (val*) var274;
-{
-((void (*)(val* self, val* p0, long p1))(var275->class->vft[COLOR_standard__array__Array__with_native]))(var275, var277, var276) /* with_native on <var275:Array[Object]>*/;
+var261 = glob_sys;
+if (unlikely(varonce262==NULL)) {
+var263 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce264!=NULL)) {
+var265 = varonce264;
+} else {
+var266 = "\t";
+var267 = standard___standard__NativeString___to_s_with_length(var266, 1l);
+var265 = var267;
+varonce264 = var265;
 }
+((struct instance_standard__NativeArray*)var263)->values[0]=var265;
+if (likely(varonce268!=NULL)) {
+var269 = varonce268;
+} else {
+var270 = " (";
+var271 = standard___standard__NativeString___to_s_with_length(var270, 2l);
+var269 = var271;
+varonce268 = var269;
 }
-{
-standard__file___Object___printn(self, var275); /* Direct call file#Object#printn on <self:AbstractCompiler>*/
+((struct instance_standard__NativeArray*)var263)->values[2]=var269;
+if (likely(varonce272!=NULL)) {
+var273 = varonce272;
+} else {
+var274 = "%)";
+var275 = standard___standard__NativeString___to_s_with_length(var274, 2l);
+var273 = var275;
+varonce272 = var273;
 }
-if (varonce278) {
-var279 = varonce278;
+((struct instance_standard__NativeArray*)var263)->values[4]=var273;
 } else {
-var280 = "\11";
-var281 = 1;
-var282 = standard___standard__NativeString___to_s_with_length(var280, var281);
-var279 = var282;
-varonce278 = var279;
+var263 = varonce262;
+varonce262 = NULL;
 }
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_skipped (self) on <self:AbstractCompiler> */
-var285 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
-if (unlikely(var285 == NULL)) {
+var278 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
+if (unlikely(var278 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_skipped");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 966);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1017);
+fatal_exit(1);
 }
-var283 = var285;
-RET_LABEL284:(void)0;
+var276 = var278;
+RET_LABEL277:(void)0;
 }
 }
 {
-var286 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var283, var_tag210);
-}
-if (varonce287) {
-var288 = varonce287;
-} else {
-var289 = " (";
-var290 = 2;
-var291 = standard___standard__NativeString___to_s_with_length(var289, var290);
-var288 = var291;
-varonce287 = var288;
+var279 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var276, var_tag195);
 }
+var281 = (long)(var279)>>2;
+var280 = standard__string___Int___Object__to_s(var281);
+((struct instance_standard__NativeArray*)var263)->values[1]=var280;
+var282 = glob_sys;
 {
 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_skipped (self) on <self:AbstractCompiler> */
-var294 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
-if (unlikely(var294 == NULL)) {
+var285 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <self:AbstractCompiler> */
+if (unlikely(var285 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_skipped");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 966);
-show_backtrace(1);
-}
-var292 = var294;
-RET_LABEL293:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1017);
+fatal_exit(1);
 }
+var283 = var285;
+RET_LABEL284:(void)0;
 }
-{
-var295 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var292, var_tag210);
 }
 {
-var297 = ((struct instance_standard__Int*)var295)->value; /* autounbox from nullable Object to Int */;
-var296 = nit___nit__AbstractCompiler___div(self, var297, var_count_type_test);
-}
-if (varonce298) {
-var299 = varonce298;
-} else {
-var300 = "%)";
-var301 = 2;
-var302 = standard___standard__NativeString___to_s_with_length(var300, var301);
-var299 = var302;
-varonce298 = var299;
+var286 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var283, var_tag195);
 }
-var303 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var303 = array_instance Array[Object] */
-var304 = 5;
-var305 = NEW_standard__NativeArray(var304, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var305)->values[0] = (val*) var279;
-((struct instance_standard__NativeArray*)var305)->values[1] = (val*) var286;
-((struct instance_standard__NativeArray*)var305)->values[2] = (val*) var288;
-((struct instance_standard__NativeArray*)var305)->values[3] = (val*) var296;
-((struct instance_standard__NativeArray*)var305)->values[4] = (val*) var299;
 {
-((void (*)(val* self, val* p0, long p1))(var303->class->vft[COLOR_standard__array__Array__with_native]))(var303, var305, var304) /* with_native on <var303:Array[Object]>*/;
-}
+var288 = (long)(var286)>>2;
+var287 = counter___standard__Sys___div(var282, var288, var_count_type_test);
 }
+((struct instance_standard__NativeArray*)var263)->values[3]=var287;
 {
-var306 = ((val* (*)(val* self))(var303->class->vft[COLOR_standard__string__Object__to_s]))(var303) /* to_s on <var303:Array[Object]>*/;
+var289 = ((val*(*)(val* self))(var263->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var263); /* native_to_s on <var263:NativeArray[String]>*/
 }
-var307 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var307 = array_instance Array[Object] */
-var308 = 1;
-var309 = NEW_standard__NativeArray(var308, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var309)->values[0] = (val*) var306;
+varonce262 = var263;
+var290 = NEW_standard__Array(&type_standard__Array__standard__Object);
+{ /* var290 = array_instance Array[Object] */
+var291 = NEW_standard__NativeArray(1l, &type_standard__NativeArray__standard__Object);
+((struct instance_standard__NativeArray*)var291)->values[0] = (val*) var289;
 {
-((void (*)(val* self, val* p0, long p1))(var307->class->vft[COLOR_standard__array__Array__with_native]))(var307, var309, var308) /* with_native on <var307:Array[Object]>*/;
+((void(*)(val* self, val* p0, long p1))(var290->class->vft[COLOR_standard__array__Array__with_native]))(var290, var291, 1l); /* with_native on <var290:Array[Object]>*/
 }
 }
 {
-standard__file___Object___printn(self, var307); /* Direct call file#Object#printn on <self:AbstractCompiler>*/
+standard__file___Sys___printn(var261, var290); /* Direct call file#Sys#printn on <var261:Sys>*/
 }
-if (varonce310) {
-var311 = varonce310;
+var292 = glob_sys;
+if (unlikely(varonce293==NULL)) {
+var294 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce295!=NULL)) {
+var296 = varonce295;
 } else {
-var312 = "\11";
-var313 = 1;
-var314 = standard___standard__NativeString___to_s_with_length(var312, var313);
-var311 = var314;
-varonce310 = var311;
+var297 = "\t";
+var298 = standard___standard__NativeString___to_s_with_length(var297, 1l);
+var296 = var298;
+varonce295 = var296;
 }
-{
-var315 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_count_type_test_total, var_tag210);
+((struct instance_standard__NativeArray*)var294)->values[0]=var296;
+if (likely(varonce299!=NULL)) {
+var300 = varonce299;
+} else {
+var301 = " (";
+var302 = standard___standard__NativeString___to_s_with_length(var301, 2l);
+var300 = var302;
+varonce299 = var300;
 }
-if (varonce316) {
-var317 = varonce316;
+((struct instance_standard__NativeArray*)var294)->values[2]=var300;
+if (likely(varonce303!=NULL)) {
+var304 = varonce303;
 } else {
-var318 = " (";
-var319 = 2;
-var320 = standard___standard__NativeString___to_s_with_length(var318, var319);
-var317 = var320;
-varonce316 = var317;
+var305 = "%)";
+var306 = standard___standard__NativeString___to_s_with_length(var305, 2l);
+var304 = var306;
+varonce303 = var304;
 }
-{
-var321 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_count_type_test_total, var_tag210);
+((struct instance_standard__NativeArray*)var294)->values[4]=var304;
+} else {
+var294 = varonce293;
+varonce293 = NULL;
 }
 {
-var323 = ((struct instance_standard__Int*)var321)->value; /* autounbox from nullable Object to Int */;
-var322 = nit___nit__AbstractCompiler___div(self, var323, var_count_type_test);
-}
-if (varonce324) {
-var325 = varonce324;
-} else {
-var326 = "%)";
-var327 = 2;
-var328 = standard___standard__NativeString___to_s_with_length(var326, var327);
-var325 = var328;
-varonce324 = var325;
+var307 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_count_type_test_total, var_tag195);
 }
-var329 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var329 = array_instance Array[Object] */
-var330 = 5;
-var331 = NEW_standard__NativeArray(var330, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var331)->values[0] = (val*) var311;
-((struct instance_standard__NativeArray*)var331)->values[1] = (val*) var315;
-((struct instance_standard__NativeArray*)var331)->values[2] = (val*) var317;
-((struct instance_standard__NativeArray*)var331)->values[3] = (val*) var322;
-((struct instance_standard__NativeArray*)var331)->values[4] = (val*) var325;
+var309 = (long)(var307)>>2;
+var308 = standard__string___Int___Object__to_s(var309);
+((struct instance_standard__NativeArray*)var294)->values[1]=var308;
+var310 = glob_sys;
 {
-((void (*)(val* self, val* p0, long p1))(var329->class->vft[COLOR_standard__array__Array__with_native]))(var329, var331, var330) /* with_native on <var329:Array[Object]>*/;
+var311 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_count_type_test_total, var_tag195);
 }
+{
+var313 = (long)(var311)>>2;
+var312 = counter___standard__Sys___div(var310, var313, var_count_type_test);
 }
+((struct instance_standard__NativeArray*)var294)->values[3]=var312;
 {
-var332 = ((val* (*)(val* self))(var329->class->vft[COLOR_standard__string__Object__to_s]))(var329) /* to_s on <var329:Array[Object]>*/;
+var314 = ((val*(*)(val* self))(var294->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var294); /* native_to_s on <var294:NativeArray[String]>*/
 }
-var333 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var333 = array_instance Array[Object] */
-var334 = 1;
-var335 = NEW_standard__NativeArray(var334, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var335)->values[0] = (val*) var332;
+varonce293 = var294;
+var315 = NEW_standard__Array(&type_standard__Array__standard__Object);
+{ /* var315 = array_instance Array[Object] */
+var316 = NEW_standard__NativeArray(1l, &type_standard__NativeArray__standard__Object);
+((struct instance_standard__NativeArray*)var316)->values[0] = (val*) var314;
 {
-((void (*)(val* self, val* p0, long p1))(var333->class->vft[COLOR_standard__array__Array__with_native]))(var333, var335, var334) /* with_native on <var333:Array[Object]>*/;
+((void(*)(val* self, val* p0, long p1))(var315->class->vft[COLOR_standard__array__Array__with_native]))(var315, var316, 1l); /* with_native on <var315:Array[Object]>*/
 }
 }
 {
-standard__file___Object___printn(self, var333); /* Direct call file#Object#printn on <self:AbstractCompiler>*/
+standard__file___Sys___printn(var292, var315); /* Direct call file#Sys#printn on <var292:Sys>*/
 }
-if (varonce336) {
-var337 = varonce336;
+var317 = glob_sys;
+if (likely(varonce318!=NULL)) {
+var319 = varonce318;
 } else {
-var338 = "";
-var339 = 0;
-var340 = standard___standard__NativeString___to_s_with_length(var338, var339);
-var337 = var340;
-varonce336 = var337;
+var320 = "";
+var321 = standard___standard__NativeString___to_s_with_length(var320, 0l);
+var319 = var321;
+varonce318 = var319;
 }
 {
-standard__file___Object___print(self, var337); /* Direct call file#Object#print on <self:AbstractCompiler>*/
+standard__file___Sys___print(var317, var319); /* Direct call file#Sys#print on <var317:Sys>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_207); /* Direct call array#ArrayIterator#next on <var_207:ArrayIterator[String]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_192); /* Direct call array#ArrayIterator#next on <var_192:ArrayIterator[String]>*/
 }
 } else {
-goto BREAK_label341;
+goto BREAK_label322;
 }
 }
-BREAK_label341: (void)0;
+BREAK_label322: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_207) on <var_207:ArrayIterator[String]> */
-RET_LABEL342:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_192); /* Direct call array#ArrayIterator#finish on <var_192:ArrayIterator[String]>*/
 }
 } else {
 }
@@ -5499,147 +5034,11 @@ RET_LABEL:;
 /* method abstract_compiler#AbstractCompiler#finalize_ffi_for_module for (self: AbstractCompiler, MModule) */
 void nit___nit__AbstractCompiler___finalize_ffi_for_module(val* self, val* p0) {
 val* var_mmodule /* var mmodule: MModule */;
-val* var_c /* var c: AbstractCompiler */;
 var_mmodule = p0;
 {
-{ /* Inline abstract_compiler#MModule#finalize_ffi (var_mmodule,self) on <var_mmodule:MModule> */
-var_c = self;
-RET_LABEL1:(void)0;
-}
-}
-RET_LABEL:;
-}
-/* method abstract_compiler#AbstractCompiler#div for (self: AbstractCompiler, Int, Int): String */
-val* nit___nit__AbstractCompiler___div(val* self, long p0, long p1) {
-val* var /* : String */;
-long var_a /* var a: Int */;
-long var_b /* var b: Int */;
-long var1 /* : Int */;
-short int var2 /* : Bool */;
-short int var4 /* : Bool */;
-static val* varonce;
-val* var5 /* : String */;
-char* var6 /* : NativeString */;
-long var7 /* : Int */;
-val* var8 /* : FlatString */;
-long var9 /* : Int */;
-long var10 /* : Int */;
-short int var12 /* : Bool */;
-int cltype;
-int idtype;
-const char* var_class_name;
-long var13 /* : Int */;
-long var14 /* : Int */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
-const char* var_class_name19;
-long var20 /* : Int */;
-double var21 /* : Float */;
-double var23 /* : Float */;
-double var24 /* : Float */;
-double var25 /* : Float */;
-short int var27 /* : Bool */;
-int cltype28;
-int idtype29;
-const char* var_class_name30;
-double var31 /* : Float */;
-long var32 /* : Int */;
-val* var33 /* : String */;
-var_a = p0;
-var_b = p1;
-var1 = 0;
-{
-{ /* Inline kernel#Int#== (var_b,var1) on <var_b:Int> */
-var4 = var_b == var1;
-var2 = var4;
-goto RET_LABEL3;
-RET_LABEL3:(void)0;
-}
-}
-if (var2){
-if (varonce) {
-var5 = varonce;
-} else {
-var6 = "n/a";
-var7 = 3;
-var8 = standard___standard__NativeString___to_s_with_length(var6, var7);
-var5 = var8;
-varonce = var5;
-}
-var = var5;
-goto RET_LABEL;
-} else {
-}
-var9 = 10000;
-{
-{ /* Inline kernel#Int#* (var_a,var9) on <var_a:Int> */
-/* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
-/* <var9:Int> isa OTHER */
-var12 = 1; /* easy <var9:Int> isa OTHER*/
-if (unlikely(!var12)) {
-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, 417);
-show_backtrace(1);
-}
-var13 = var_a * var9;
-var10 = var13;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
-}
-}
-{
-{ /* Inline kernel#Int#/ (var10,var_b) on <var10:Int> */
-/* Covariant cast for argument 0 (i) <var_b:Int> isa OTHER */
-/* <var_b:Int> isa OTHER */
-var16 = 1; /* easy <var_b:Int> isa OTHER*/
-if (unlikely(!var16)) {
-var_class_name19 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name19);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 418);
-show_backtrace(1);
-}
-var20 = var10 / var_b;
-var14 = var20;
-goto RET_LABEL15;
-RET_LABEL15:(void)0;
-}
-}
-{
-{ /* Inline kernel#Int#to_f (var14) on <var14:Int> */
-var23 = (double)var14;
-var21 = var23;
-goto RET_LABEL22;
-RET_LABEL22:(void)0;
-}
-}
-var24 = 100.0;
-{
-{ /* Inline kernel#Float#/ (var21,var24) on <var21:Float> */
-/* Covariant cast for argument 0 (i) <var24:Float> isa OTHER */
-/* <var24:Float> isa OTHER */
-var27 = 1; /* easy <var24:Float> isa OTHER*/
-if (unlikely(!var27)) {
-var_class_name30 = type_standard__Float.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 330);
-show_backtrace(1);
-}
-var31 = var21 / var24;
-var25 = var31;
-goto RET_LABEL26;
-RET_LABEL26:(void)0;
-}
-}
-var32 = 2;
-{
-var33 = standard__string___Float___to_precision(var25, var32);
+nit__light___MModule___finalize_ffi(var_mmodule, self); /* Direct call light#MModule#finalize_ffi on <var_mmodule:MModule>*/
 }
-var = var33;
-goto RET_LABEL;
 RET_LABEL:;
-return var;
 }
 /* method abstract_compiler#CodeFile#name for (self: CodeFile): String */
 val* nit___nit__CodeFile___name(val* self) {
@@ -5648,8 +5047,8 @@ val* var1 /* : String */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__CodeFile___name].val; /* _name on <self:CodeFile> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1030);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1073);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -5667,8 +5066,8 @@ val* var1 /* : Array[CodeWriter] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__CodeFile___writers].val; /* _writers on <self:CodeFile> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1031);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1074);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -5681,8 +5080,8 @@ val* var1 /* : HashSet[String] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__CodeFile___required_declarations].val; /* _required_declarations on <self:CodeFile> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _required_declarations");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1032);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1075);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -5691,7 +5090,7 @@ return var;
 /* method abstract_compiler#CodeFile#init for (self: CodeFile) */
 void nit___nit__CodeFile___standard__kernel__Object__init(val* self) {
 {
-((void (*)(val* self))(self->class->vft[COLOR_nit___nit__CodeFile___standard__kernel__Object__init]))(self) /* init on <self:CodeFile>*/;
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__CodeFile___standard__kernel__Object__init]))(self); /* init on <self:CodeFile>*/
 }
 RET_LABEL:;
 }
@@ -5702,8 +5101,8 @@ val* var1 /* : CodeFile */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__CodeWriter___file].val; /* _file on <self:CodeWriter> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _file");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1037);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1080);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -5721,8 +5120,8 @@ val* var1 /* : List[String] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__CodeWriter___lines].val; /* _lines on <self:CodeWriter> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lines");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1038);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1081);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -5735,8 +5134,8 @@ val* var1 /* : List[String] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <self:CodeWriter> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1039);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1082);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -5753,8 +5152,8 @@ var_s = p0;
 var2 = self->attrs[COLOR_nit__abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <self:CodeWriter> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1039);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1082);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -5776,8 +5175,8 @@ val* var5 /* : Array[CodeWriter] */;
 var2 = self->attrs[COLOR_nit__abstract_compiler__CodeWriter___file].val; /* _file on <self:CodeWriter> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _file");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1037);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1080);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -5788,8 +5187,8 @@ RET_LABEL1:(void)0;
 var5 = var->attrs[COLOR_nit__abstract_compiler__CodeFile___writers].val; /* _writers on <var:CodeFile> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1031);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1074);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -5807,8 +5206,8 @@ val* var1 /* : AbstractCompiler */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -5834,8 +5233,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (unlikely(!var)) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val = p0; /* _compiler on <self:AbstractCompilerVisitor> */
 RET_LABEL:;
@@ -5881,8 +5280,8 @@ val* var7 /* : MClassType */;
 var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -5893,8 +5292,8 @@ RET_LABEL2:(void)0;
 var6 = var1->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var1:AbstractCompiler> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -5921,8 +5320,8 @@ val* var7 /* : MClassType */;
 var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -5933,8 +5332,8 @@ RET_LABEL2:(void)0;
 var6 = var1->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var1:AbstractCompiler> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -5955,8 +5354,8 @@ val* var1 /* : CodeWriter */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___writer].val; /* _writer on <self:AbstractCompilerVisitor> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writer");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1074);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1117);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -5981,8 +5380,8 @@ var = NEW_nit__CodeWriter(&type_nit__CodeWriter);
 var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -5993,8 +5392,8 @@ RET_LABEL2:(void)0;
 var6 = var1->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___files].val; /* _files on <var1:AbstractCompiler> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 516);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 562);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -6004,10 +5403,10 @@ RET_LABEL5:(void)0;
 var7 = standard___standard__List___standard__abstract_collection__SequenceRead__last(var4);
 }
 {
-((void (*)(val* self, val* p0))(var->class->vft[COLOR_nit__abstract_compiler__CodeWriter__file_61d]))(var, var7) /* file= on <var:CodeWriter>*/;
+((void(*)(val* self, val* p0))(var->class->vft[COLOR_nit__abstract_compiler__CodeWriter__file_61d]))(var, var7); /* file= on <var:CodeWriter>*/
 }
 {
-((void (*)(val* self))(var->class->vft[COLOR_standard__kernel__Object__init]))(var) /* init on <var:CodeWriter>*/;
+((void(*)(val* self))(var->class->vft[COLOR_standard__kernel__Object__init]))(var); /* init on <var:CodeWriter>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#writer= (self,var) on <self:AbstractCompilerVisitor> */
@@ -6017,48 +5416,6 @@ RET_LABEL8:(void)0;
 }
 RET_LABEL:;
 }
-/* method abstract_compiler#AbstractCompilerVisitor#get_class for (self: AbstractCompilerVisitor, String): MClass */
-val* nit___nit__AbstractCompilerVisitor___get_class(val* self, val* p0) {
-val* var /* : MClass */;
-val* var_name /* var name: String */;
-val* var1 /* : AbstractCompiler */;
-val* var3 /* : AbstractCompiler */;
-val* var4 /* : MModule */;
-val* var6 /* : MModule */;
-val* var7 /* : MClass */;
-var_name = p0;
-{
-{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
-var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-}
-{
-{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var1) on <var1:AbstractCompiler> */
-var6 = var1->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var1:AbstractCompiler> */
-if (unlikely(var6 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-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 abstract_compiler#AbstractCompilerVisitor#get_property for (self: AbstractCompilerVisitor, String, MType): MMethod */
 val* nit___nit__AbstractCompilerVisitor___get_property(val* self, val* p0, val* p1) {
 val* var /* : MMethod */;
@@ -6092,16 +5449,16 @@ var1 = var_recv->type->type_table[cltype] == idtype;
 }
 if (unlikely(!var1)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1087);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1127);
+fatal_exit(1);
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
 var4 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var4 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var2 = var4;
 RET_LABEL3:(void)0;
@@ -6112,8 +5469,8 @@ RET_LABEL3:(void)0;
 var7 = var2->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var2:AbstractCompiler> */
 if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
+fatal_exit(1);
 }
 var5 = var7;
 RET_LABEL6:(void)0;
@@ -6131,8 +5488,8 @@ RET_LABEL9:(void)0;
 var13 = var_recv->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_recv:MType(MClassType)> */
 if (unlikely(var13 == 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);
 }
 var11 = var13;
 RET_LABEL12:(void)0;
@@ -6143,8 +5500,8 @@ RET_LABEL12:(void)0;
 var16 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var14 = var16;
 RET_LABEL15:(void)0;
@@ -6155,8 +5512,8 @@ RET_LABEL15:(void)0;
 var19 = var14->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var14:AbstractCompiler> */
 if (unlikely(var19 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
 var17 = var19;
 RET_LABEL18:(void)0;
@@ -6184,66 +5541,61 @@ short int var7 /* : Bool */;
 short int var8 /* : Bool */;
 val* var9 /* : nullable Object */;
 val* var_recv /* var recv: RuntimeVariable */;
-long var10 /* : Int */;
 long var_i /* var i: Int */;
 val* var_ /* var : Array[MProperty] */;
-val* var11 /* : ArrayIterator[nullable Object] */;
-val* var_12 /* var : ArrayIterator[MProperty] */;
-short int var13 /* : Bool */;
-val* var14 /* : nullable Object */;
+val* var10 /* : ArrayIterator[nullable Object] */;
+val* var_11 /* var : ArrayIterator[MProperty] */;
+short int var12 /* : Bool */;
+val* var13 /* : nullable Object */;
 val* var_p /* var p: MProperty */;
-short int var15 /* : Bool */;
+short int var14 /* : Bool */;
 int cltype;
 int idtype;
-val* var16 /* : Array[RuntimeVariable] */;
-long var17 /* : Int */;
-val* var_18 /* var : Array[RuntimeVariable] */;
+val* var15 /* : Array[RuntimeVariable] */;
+val* var_16 /* var : Array[RuntimeVariable] */;
 val* var_args /* var args: Array[RuntimeVariable] */;
+val* var17 /* : MPropDef */;
 val* var19 /* : MPropDef */;
-val* var21 /* : MPropDef */;
+val* var20 /* : nullable MSignature */;
 val* var22 /* : nullable MSignature */;
-val* var24 /* : nullable MSignature */;
+val* var23 /* : Array[MParameter] */;
 val* var25 /* : Array[MParameter] */;
-val* var27 /* : Array[MParameter] */;
-val* var_28 /* var : Array[MParameter] */;
-val* var29 /* : ArrayIterator[nullable Object] */;
-val* var_30 /* var : ArrayIterator[MParameter] */;
-short int var31 /* : Bool */;
-val* var32 /* : nullable Object */;
+val* var_26 /* var : Array[MParameter] */;
+val* var27 /* : ArrayIterator[nullable Object] */;
+val* var_28 /* var : ArrayIterator[MParameter] */;
+short int var29 /* : Bool */;
+val* var30 /* : nullable Object */;
 val* var_x /* var x: MParameter */;
-val* var33 /* : nullable Object */;
-long var34 /* : Int */;
-long var35 /* : Int */;
-short int var37 /* : Bool */;
-int cltype38;
-int idtype39;
+val* var31 /* : nullable Object */;
+long var32 /* : Int */;
+short int var34 /* : Bool */;
+int cltype35;
+int idtype36;
 const char* var_class_name;
-long var40 /* : Int */;
-val* var42 /* : nullable RuntimeVariable */;
-short int var43 /* : Bool */;
-int cltype44;
-int idtype45;
-val* var46 /* : nullable Object */;
-long var47 /* : Int */;
-long var48 /* : Int */;
-short int var50 /* : Bool */;
-int cltype51;
-int idtype52;
-const char* var_class_name53;
-long var54 /* : Int */;
-long var57 /* : Int */;
-long var59 /* : Int */;
-short int var60 /* : Bool */;
-short int var62 /* : Bool */;
+long var37 /* : Int */;
+val* var38 /* : nullable RuntimeVariable */;
+short int var39 /* : Bool */;
+int cltype40;
+int idtype41;
+val* var42 /* : nullable Object */;
+long var43 /* : Int */;
+short int var45 /* : Bool */;
+int cltype46;
+int idtype47;
+const char* var_class_name48;
+long var49 /* : Int */;
+long var51 /* : Int */;
+long var53 /* : Int */;
+short int var54 /* : Bool */;
+short int var56 /* : Bool */;
+val* var57 /* : MMethod */;
+val* var59 /* : MMethod */;
+val* var60 /* : Array[RuntimeVariable] */;
+val* var_61 /* var : Array[RuntimeVariable] */;
+val* var62 /* : nullable RuntimeVariable */;
 val* var63 /* : MMethod */;
 val* var65 /* : MMethod */;
-val* var66 /* : Array[RuntimeVariable] */;
-long var67 /* : Int */;
-val* var_68 /* var : Array[RuntimeVariable] */;
-val* var69 /* : nullable RuntimeVariable */;
-val* var70 /* : MMethod */;
-val* var72 /* : MMethod */;
-val* var73 /* : nullable RuntimeVariable */;
+val* var66 /* : nullable RuntimeVariable */;
 var_callsite = p0;
 var_arguments = p1;
 {
@@ -6251,8 +5603,8 @@ var_arguments = p1;
 var3 = var_callsite->attrs[COLOR_nit__typing__CallSite___mpropdef].val; /* _mpropdef on <var_callsite:CallSite> */
 if (unlikely(var3 == 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);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -6263,8 +5615,8 @@ RET_LABEL2:(void)0;
 var6 = var1->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var1:MMethodDef> */
 if (unlikely(var6 == 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);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -6280,122 +5632,119 @@ if (var8){
 var9 = standard___standard__SequenceRead___Collection__first(var_arguments);
 }
 var_recv = var9;
-var10 = 1;
-var_i = var10;
+var_i = 1l;
 var_ = var_initializers;
 {
-var11 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var10 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
 }
-var_12 = var11;
+var_11 = var10;
 for(;;) {
 {
-var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_12);
+var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_11);
 }
-if (var13){
+if (var12){
 {
-var14 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_12);
+var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_11);
 }
-var_p = var14;
+var_p = var13;
 /* <var_p:MProperty> isa MMethod */
 cltype = type_nit__MMethod.color;
 idtype = type_nit__MMethod.id;
 if(cltype >= var_p->type->table_size) {
-var15 = 0;
+var14 = 0;
 } else {
-var15 = var_p->type->type_table[cltype] == idtype;
+var14 = var_p->type->type_table[cltype] == idtype;
 }
-if (var15){
-var16 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
-var17 = 1;
+if (var14){
+var15 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
 {
-standard___standard__Array___with_capacity(var16, var17); /* Direct call array#Array#with_capacity on <var16:Array[RuntimeVariable]>*/
+standard___standard__Array___with_capacity(var15, 1l); /* Direct call array#Array#with_capacity on <var15:Array[RuntimeVariable]>*/
 }
-var_18 = var16;
+var_16 = var15;
 {
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_18, var_recv); /* Direct call array#AbstractArray#push on <var_18:Array[RuntimeVariable]>*/
+standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_16, var_recv); /* Direct call array#AbstractArray#push on <var_16:Array[RuntimeVariable]>*/
 }
-var_args = var_18;
+var_args = var_16;
 {
 { /* Inline model#MProperty#intro (var_p) on <var_p:MProperty(MMethod)> */
-var21 = var_p->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_p:MProperty(MMethod)> */
-if (unlikely(var21 == NULL)) {
+var19 = var_p->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_p:MProperty(MMethod)> */
+if (unlikely(var19 == 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);
 }
-var19 = var21;
-RET_LABEL20:(void)0;
+var17 = var19;
+RET_LABEL18:(void)0;
 }
 }
 {
-{ /* Inline model#MMethodDef#msignature (var19) on <var19:MPropDef(MMethodDef)> */
-var24 = var19->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var19:MPropDef(MMethodDef)> */
-var22 = var24;
-RET_LABEL23:(void)0;
+{ /* Inline model#MMethodDef#msignature (var17) on <var17:MPropDef(MMethodDef)> */
+var22 = var17->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var17:MPropDef(MMethodDef)> */
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
-if (var22 == NULL) {
+if (var20 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1101);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1141);
+fatal_exit(1);
 } else {
-{ /* Inline model#MSignature#mparameters (var22) on <var22:nullable MSignature> */
-if (unlikely(var22 == NULL)) {
+{ /* Inline model#MSignature#mparameters (var20) on <var20:nullable MSignature> */
+if (unlikely(var20 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
+fatal_exit(1);
 }
-var27 = var22->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var22:nullable MSignature> */
-if (unlikely(var27 == NULL)) {
+var25 = var20->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var20:nullable MSignature> */
+if (unlikely(var25 == 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);
 }
-var25 = var27;
-RET_LABEL26:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
-var_28 = var25;
+var_26 = var23;
 {
-var29 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_28);
+var27 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_26);
 }
-var_30 = var29;
+var_28 = var27;
 for(;;) {
 {
-var31 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_30);
+var29 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_28);
 }
-if (var31){
+if (var29){
 {
-var32 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_30);
+var30 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_28);
 }
-var_x = var32;
+var_x = var30;
 {
-var33 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var_i);
+var31 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var_i);
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_args, var33); /* Direct call array#Array#add on <var_args:Array[RuntimeVariable]>*/
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_args, var31); /* Direct call array#Array#add on <var_args:Array[RuntimeVariable]>*/
 }
-var34 = 1;
 {
-{ /* Inline kernel#Int#+ (var_i,var34) on <var_i:Int> */
-/* Covariant cast for argument 0 (i) <var34:Int> isa OTHER */
-/* <var34:Int> isa OTHER */
-var37 = 1; /* easy <var34:Int> isa OTHER*/
-if (unlikely(!var37)) {
+{ /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var34 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var34)) {
 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, 413);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var40 = var_i + var34;
-var35 = var40;
-goto RET_LABEL36;
-RET_LABEL36:(void)0;
+var37 = var_i + 1l;
+var32 = var37;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
 }
 }
-var_i = var35;
+var_i = var32;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_30); /* Direct call array#ArrayIterator#next on <var_30:ArrayIterator[MParameter]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_28); /* Direct call array#ArrayIterator#next on <var_28:ArrayIterator[MParameter]>*/
 }
 } else {
 goto BREAK_label;
@@ -6403,139 +5752,143 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_30) on <var_30:ArrayIterator[MParameter]> */
-RET_LABEL41:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_28); /* Direct call array#ArrayIterator#finish on <var_28:ArrayIterator[MParameter]>*/
 }
 {
-var42 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(self, var_p, var_args);
+var38 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(self, var_p, var_args);
 }
 } else {
 /* <var_p:MProperty> isa MAttribute */
-cltype44 = type_nit__MAttribute.color;
-idtype45 = type_nit__MAttribute.id;
-if(cltype44 >= var_p->type->table_size) {
-var43 = 0;
+cltype40 = type_nit__MAttribute.color;
+idtype41 = type_nit__MAttribute.id;
+if(cltype40 >= var_p->type->table_size) {
+var39 = 0;
 } else {
-var43 = var_p->type->type_table[cltype44] == idtype45;
+var39 = var_p->type->type_table[cltype40] == idtype41;
 }
-if (var43){
+if (var39){
 {
-var46 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var_i);
+var42 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var_i);
 }
 {
-nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__write_attribute(self, var_p, var_recv, var46); /* Direct call separate_compiler#SeparateCompilerVisitor#write_attribute on <self:AbstractCompilerVisitor>*/
+nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__write_attribute(self, var_p, var_recv, var42); /* Direct call separate_compiler#SeparateCompilerVisitor#write_attribute on <self:AbstractCompilerVisitor>*/
 }
-var47 = 1;
 {
-{ /* Inline kernel#Int#+ (var_i,var47) on <var_i:Int> */
-/* Covariant cast for argument 0 (i) <var47:Int> isa OTHER */
-/* <var47:Int> isa OTHER */
-var50 = 1; /* easy <var47:Int> isa OTHER*/
-if (unlikely(!var50)) {
-var_class_name53 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name53);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var45 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var45)) {
+var_class_name48 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var54 = var_i + var47;
-var48 = var54;
-goto RET_LABEL49;
-RET_LABEL49:(void)0;
+var49 = var_i + 1l;
+var43 = var49;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
 }
 }
-var_i = var48;
+var_i = var43;
 } else {
 PRINT_ERROR("Runtime error: %s", "Aborted");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1109);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1149);
+fatal_exit(1);
 }
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_12); /* Direct call array#ArrayIterator#next on <var_12:ArrayIterator[MProperty]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_11); /* Direct call array#ArrayIterator#next on <var_11:ArrayIterator[MProperty]>*/
 }
 } else {
-goto BREAK_label55;
+goto BREAK_label50;
 }
 }
-BREAK_label55: (void)0;
+BREAK_label50: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_12) on <var_12:ArrayIterator[MProperty]> */
-RET_LABEL56:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_11); /* Direct call array#ArrayIterator#finish on <var_11:ArrayIterator[MProperty]>*/
 }
 {
 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
-var59 = var_arguments->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
-var57 = var59;
-RET_LABEL58:(void)0;
+var53 = var_arguments->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
+var51 = var53;
+RET_LABEL52:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#== (var_i,var57) on <var_i:Int> */
-var62 = var_i == var57;
-var60 = var62;
-goto RET_LABEL61;
-RET_LABEL61:(void)0;
+{ /* Inline kernel#Int#== (var_i,var51) on <var_i:Int> */
+var56 = var_i == var51;
+var54 = var56;
+goto RET_LABEL55;
+RET_LABEL55:(void)0;
 }
 }
-if (unlikely(!var60)) {
+if (unlikely(!var54)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1111);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1151);
+fatal_exit(1);
 }
 {
 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:CallSite> */
-var65 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:CallSite> */
-if (unlikely(var65 == NULL)) {
+var59 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:CallSite> */
+if (unlikely(var59 == 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);
 }
-var63 = var65;
-RET_LABEL64:(void)0;
+var57 = var59;
+RET_LABEL58:(void)0;
 }
 }
-var66 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
-var67 = 1;
+var60 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
 {
-standard___standard__Array___with_capacity(var66, var67); /* Direct call array#Array#with_capacity on <var66:Array[RuntimeVariable]>*/
+standard___standard__Array___with_capacity(var60, 1l); /* Direct call array#Array#with_capacity on <var60:Array[RuntimeVariable]>*/
 }
-var_68 = var66;
+var_61 = var60;
 {
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_68, var_recv); /* Direct call array#AbstractArray#push on <var_68:Array[RuntimeVariable]>*/
+standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_61, var_recv); /* Direct call array#AbstractArray#push on <var_61:Array[RuntimeVariable]>*/
 }
 {
-var69 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(self, var63, var_68);
+var62 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(self, var57, var_61);
 }
-var = var69;
+var = var62;
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:CallSite> */
-var72 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:CallSite> */
-if (unlikely(var72 == NULL)) {
+var65 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:CallSite> */
+if (unlikely(var65 == 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);
 }
-var70 = var72;
-RET_LABEL71:(void)0;
+var63 = var65;
+RET_LABEL64:(void)0;
 }
 }
 {
-var73 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(self, var70, var_arguments);
+var66 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(self, var63, var_arguments);
 }
-var = var73;
+var = var66;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_compiler#AbstractCompilerVisitor#varargize for (self: AbstractCompilerVisitor, MMethodDef, RuntimeVariable, SequenceRead[AExpr]): Array[RuntimeVariable] */
-val* nit___nit__AbstractCompilerVisitor___varargize(val* self, val* p0, val* p1, val* p2) {
+/* method abstract_compiler#AbstractCompilerVisitor#calloc_array for (self: AbstractCompilerVisitor, MType, Array[RuntimeVariable]) */
+void nit___nit__AbstractCompilerVisitor___calloc_array(val* self, val* p0, val* p1) {
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : self->type->name;
+PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "calloc_array", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1161);
+fatal_exit(1);
+RET_LABEL:;
+}
+/* method abstract_compiler#AbstractCompilerVisitor#varargize for (self: AbstractCompilerVisitor, MMethodDef, nullable SignatureMap, RuntimeVariable, SequenceRead[AExpr]): Array[RuntimeVariable] */
+val* nit___nit__AbstractCompilerVisitor___varargize(val* self, val* p0, val* p1, val* p2, val* p3) {
 val* var /* : Array[RuntimeVariable] */;
 val* var_mpropdef /* var mpropdef: MMethodDef */;
+val* var_map /* var map: nullable SignatureMap */;
 val* var_recv /* var recv: RuntimeVariable */;
 val* var_args /* var args: SequenceRead[AExpr] */;
 val* var1 /* : MSignature */;
@@ -6546,101 +5899,86 @@ val* var7 /* : nullable MSignature */;
 val* var_msignature /* var msignature: MSignature */;
 val* var8 /* : Array[RuntimeVariable] */;
 val* var_res /* var res: Array[RuntimeVariable] */;
-short int var9 /* : Bool */;
-long var10 /* : Int */;
-long var12 /* : Int */;
-long var_vararg_rank /* var vararg_rank: Int */;
-long var13 /* : Int */;
-long var14 /* : Int */;
-long var15 /* : Int */;
-short int var17 /* : Bool */;
-int cltype;
-int idtype;
-const char* var_class_name;
-long var18 /* : Int */;
-long var_vararg_len /* var vararg_len: Int */;
+long var9 /* : Int */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var16 /* : Bool */;
+short int var18 /* : Bool */;
 long var19 /* : Int */;
-short int var20 /* : Bool */;
-short int var22 /* : Bool */;
-int cltype23;
-int idtype24;
-const char* var_class_name25;
+long var20 /* : Int */;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
+val* var_ /* var : SequenceRead[AExpr] */;
+val* var24 /* : Iterator[nullable Object] */;
+val* var_25 /* var : IndexedIterator[AExpr] */;
 short int var26 /* : Bool */;
-long var27 /* : Int */;
-long var28 /* : Int */;
-long var_i /* var i: Int */;
-long var29 /* : Int */;
-long var_ /* var : Int */;
-short int var30 /* : Bool */;
-short int var32 /* : Bool */;
-int cltype33;
-int idtype34;
-const char* var_class_name35;
-short int var36 /* : Bool */;
-short int var37 /* : Bool */;
-short int var39 /* : Bool */;
-val* var40 /* : nullable Object */;
+val* var27 /* : nullable Object */;
 val* var_ne /* var ne: AExpr */;
+val* var28 /* : RuntimeVariable */;
+val* var29 /* : Array[RuntimeVariable] */;
+long var30 /* : Int */;
+val* var_exprs /* var exprs: Array[RuntimeVariable] */;
+val* var_31 /* var : SequenceRead[AExpr] */;
+val* var32 /* : Iterator[nullable Object] */;
+val* var_33 /* var : IndexedIterator[AExpr] */;
+short int var34 /* : Bool */;
+val* var35 /* : nullable Object */;
+val* var_ne36 /* var ne: AExpr */;
+val* var37 /* : RuntimeVariable */;
+long var_i /* var i: Int */;
+long var39 /* : Int */;
+long var_40 /* var : Int */;
 short int var41 /* : Bool */;
-int cltype42;
-int idtype43;
-val* var44 /* : AExpr */;
-val* var46 /* : AExpr */;
-val* var47 /* : null */;
-val* var48 /* : RuntimeVariable */;
-val* var_e /* var e: RuntimeVariable */;
-val* var49 /* : Array[RuntimeVariable] */;
-val* var_vararg /* var vararg: Array[RuntimeVariable] */;
-long var_j /* var j: Int */;
-long var50 /* : Int */;
-short int var52 /* : Bool */;
-int cltype53;
-int idtype54;
-const char* var_class_name55;
-long var56 /* : Int */;
-long var_57 /* var : Int */;
-short int var58 /* : Bool */;
+short int var43 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var44 /* : Bool */;
+val* var45 /* : Array[MParameter] */;
+val* var47 /* : Array[MParameter] */;
+val* var48 /* : nullable Object */;
+val* var_param /* var param: MParameter */;
+val* var49 /* : ArrayMap[Int, Int] */;
+val* var51 /* : ArrayMap[Int, Int] */;
+val* var52 /* : nullable Object */;
+val* var53 /* : nullable Object */;
+val* var_j /* var j: nullable Int */;
+short int var54 /* : Bool */;
+short int var55 /* : Bool */;
+short int var57 /* : Bool */;
+val* var58 /* : RuntimeVariable */;
 short int var60 /* : Bool */;
-int cltype61;
-int idtype62;
-const char* var_class_name63;
-short int var64 /* : Bool */;
-val* var65 /* : nullable Object */;
-val* var66 /* : null */;
-val* var67 /* : RuntimeVariable */;
-val* var_e68 /* var e: RuntimeVariable */;
-long var69 /* : Int */;
-long var70 /* : Int */;
-val* var72 /* : Array[MParameter] */;
-val* var74 /* : Array[MParameter] */;
-val* var75 /* : nullable Object */;
-val* var76 /* : MType */;
-val* var78 /* : MType */;
+short int var61 /* : Bool */;
+short int var63 /* : Bool */;
+short int var_64 /* var : Bool */;
+long var65 /* : Int */;
+long var67 /* : Int */;
+short int var68 /* : Bool */;
+short int var70 /* : Bool */;
+int cltype71;
+int idtype72;
+const char* var_class_name73;
+short int var74 /* : Bool */;
+long var75 /* : Int */;
+long var77 /* : Int */;
+val* var78 /* : Array[nullable Object] */;
+long var79 /* : Int */;
+val* var_vararg /* var vararg: Array[RuntimeVariable] */;
+val* var80 /* : MType */;
+val* var82 /* : MType */;
 val* var_elttype /* var elttype: MType */;
-val* var79 /* : RuntimeVariable */;
+val* var83 /* : RuntimeVariable */;
 val* var_arg /* var arg: RuntimeVariable */;
-long var_j80 /* var j: Int */;
-short int var81 /* : Bool */;
-short int var83 /* : Bool */;
-int cltype84;
-int idtype85;
-const char* var_class_name86;
-short int var87 /* : Bool */;
-long var88 /* : Int */;
-short int var90 /* : Bool */;
-int cltype91;
-int idtype92;
-const char* var_class_name93;
-long var94 /* : Int */;
-val* var95 /* : nullable Object */;
-val* var96 /* : null */;
-val* var97 /* : RuntimeVariable */;
-val* var_e98 /* var e: RuntimeVariable */;
-long var99 /* : Int */;
-long var100 /* : Int */;
+val* var84 /* : nullable Object */;
+long var85 /* : Int */;
+long var86 /* : Int */;
 var_mpropdef = p0;
-var_recv = p1;
-var_args = p2;
+var_map = p1;
+var_recv = p2;
+var_args = p3;
 {
 { /* Inline model#MMethodDef#new_msignature (var_mpropdef) on <var_mpropdef:MMethodDef> */
 var4 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___new_msignature].val; /* _new_msignature on <var_mpropdef:MMethodDef> */
@@ -6660,8 +5998,8 @@ RET_LABEL6:(void)0;
 }
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1130);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1178);
+fatal_exit(1);
 }
 var1 = var5;
 }
@@ -6675,300 +6013,308 @@ var_res = var8;
 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var_recv); /* Direct call array#Array#add on <var_res:Array[RuntimeVariable]>*/
 }
 {
-var9 = ((short int (*)(val* self))(var_args->class->vft[COLOR_standard__abstract_collection__Collection__is_empty]))(var_args) /* is_empty on <var_args:SequenceRead[AExpr]>*/;
-}
-if (var9){
-var = var_res;
-goto RET_LABEL;
-} else {
+var9 = nit___nit__MSignature___arity(var_msignature);
 }
 {
-{ /* Inline model#MSignature#vararg_rank (var_msignature) on <var_msignature:MSignature> */
-var12 = var_msignature->attrs[COLOR_nit__model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:MSignature> */
+{ /* Inline kernel#Int#== (var9,0l) on <var9:Int> */
+var12 = var9 == 0l;
 var10 = var12;
+goto RET_LABEL11;
 RET_LABEL11:(void)0;
 }
 }
-var_vararg_rank = var10;
-{
-var13 = ((long (*)(val* self))(var_args->class->vft[COLOR_standard__abstract_collection__Collection__length]))(var_args) /* length on <var_args:SequenceRead[AExpr]>*/;
+if (var10){
+var = var_res;
+goto RET_LABEL;
+} else {
 }
-{
-var14 = nit___nit__MSignature___arity(var_msignature);
+if (var_map == NULL) {
+var13 = 1; /* is null */
+} else {
+var13 = 0; /* arg is null but recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#== (var_map,((val*)NULL)) on <var_map:nullable SignatureMap> */
+var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Int#- (var13,var14) on <var13:Int> */
-/* Covariant cast for argument 0 (i) <var14:Int> isa OTHER */
-/* <var14:Int> isa OTHER */
-var17 = 1; /* easy <var14:Int> isa OTHER*/
-if (unlikely(!var17)) {
-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, 416);
-show_backtrace(1);
+{ /* Inline kernel#Object#is_same_instance (var_map,var_other) on <var_map:nullable SignatureMap(SignatureMap)> */
+var18 = var_map == var_other;
+var16 = var18;
+goto RET_LABEL17;
+RET_LABEL17:(void)0;
 }
-var18 = var13 - var14;
-var15 = var18;
-goto RET_LABEL16;
-RET_LABEL16:(void)0;
 }
+var14 = var16;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
+}
+var13 = var14;
 }
-var_vararg_len = var15;
-var19 = 0;
+if (var13){
 {
-{ /* Inline kernel#Int#< (var_vararg_len,var19) on <var_vararg_len: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)) {
-var_class_name25 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
+var19 = ((long(*)(val* self))((((long)var_args&3)?class_info[((long)var_args&3)]:var_args->class)->vft[COLOR_standard__abstract_collection__Collection__length]))(var_args); /* length on <var_args:SequenceRead[AExpr]>*/
 }
-var26 = var_vararg_len < var19;
-var20 = var26;
-goto RET_LABEL21;
-RET_LABEL21:(void)0;
+{
+var20 = nit___nit__MSignature___arity(var_msignature);
 }
+{
+{ /* Inline kernel#Int#== (var19,var20) on <var19:Int> */
+var23 = var19 == var20;
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
 }
-if (var20){
-var27 = 0;
-var_vararg_len = var27;
-} else {
 }
-var28 = 0;
-var_i = var28;
+if (unlikely(!var21)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1185);
+fatal_exit(1);
+}
+var_ = var_args;
 {
-var29 = nit___nit__MSignature___arity(var_msignature);
+var24 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:SequenceRead[AExpr]>*/
 }
-var_ = var29;
+var_25 = var24;
 for(;;) {
 {
-{ /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
-/* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
-/* <var_:Int> isa OTHER */
-var32 = 1; /* easy <var_:Int> isa OTHER*/
-if (unlikely(!var32)) {
-var_class_name35 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
-}
-var36 = var_i < var_;
-var30 = var36;
-goto RET_LABEL31;
-RET_LABEL31:(void)0;
+var26 = ((short int(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_25); /* is_ok on <var_25:IndexedIterator[AExpr]>*/
 }
+if (var26){
+{
+var27 = ((val*(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_25); /* item on <var_25:IndexedIterator[AExpr]>*/
 }
-if (var30){
+var_ne = var27;
 {
-{ /* Inline kernel#Int#== (var_i,var_vararg_rank) on <var_i:Int> */
-var39 = var_i == var_vararg_rank;
-var37 = var39;
-goto RET_LABEL38;
-RET_LABEL38:(void)0;
+var28 = nit___nit__AbstractCompilerVisitor___expr(self, var_ne, ((val*)NULL));
 }
+{
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var28); /* Direct call array#Array#add on <var_res:Array[RuntimeVariable]>*/
 }
-if (var37){
 {
-var40 = ((val* (*)(val* self, long p0))(var_args->class->vft[COLOR_standard__abstract_collection__SequenceRead___91d_93d]))(var_args, var_i) /* [] on <var_args:SequenceRead[AExpr]>*/;
+((void(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_25); /* next on <var_25:IndexedIterator[AExpr]>*/
 }
-var_ne = var40;
-/* <var_ne:AExpr> isa AVarargExpr */
-cltype42 = type_nit__AVarargExpr.color;
-idtype43 = type_nit__AVarargExpr.id;
-if(cltype42 >= var_ne->type->table_size) {
-var41 = 0;
 } else {
-var41 = var_ne->type->type_table[cltype42] == idtype43;
+goto BREAK_label;
 }
-if (var41){
-{
-{ /* Inline parser_nodes#AVarargExpr#n_expr (var_ne) on <var_ne:AExpr(AVarargExpr)> */
-var46 = var_ne->attrs[COLOR_nit__parser_nodes__AVarargExpr___n_expr].val; /* _n_expr on <var_ne:AExpr(AVarargExpr)> */
-if (unlikely(var46 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2343);
-show_backtrace(1);
 }
-var44 = var46;
-RET_LABEL45:(void)0;
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_25); /* finish on <var_25:IndexedIterator[AExpr]>*/
 }
+var = var_res;
+goto RET_LABEL;
+} else {
 }
-var47 = NULL;
+var29 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
 {
-var48 = nit___nit__AbstractCompilerVisitor___expr(self, var44, var47);
+var30 = ((long(*)(val* self))((((long)var_args&3)?class_info[((long)var_args&3)]:var_args->class)->vft[COLOR_standard__abstract_collection__Collection__length]))(var_args); /* length on <var_args:SequenceRead[AExpr]>*/
 }
-var_e = var48;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var_e); /* Direct call array#Array#add on <var_res:Array[RuntimeVariable]>*/
+standard___standard__Array___with_capacity(var29, var30); /* Direct call array#Array#with_capacity on <var29:Array[RuntimeVariable]>*/
 }
-goto BREAK_label;
-} else {
+var_exprs = var29;
+var_31 = var_args;
+{
+var32 = ((val*(*)(val* self))((((long)var_31&3)?class_info[((long)var_31&3)]:var_31->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_31); /* iterator on <var_31:SequenceRead[AExpr]>*/
 }
-var49 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
+var_33 = var32;
+for(;;) {
 {
-standard___standard__Array___standard__kernel__Object__init(var49); /* Direct call array#Array#init on <var49:Array[RuntimeVariable]>*/
+var34 = ((short int(*)(val* self))((((long)var_33&3)?class_info[((long)var_33&3)]:var_33->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_33); /* is_ok on <var_33:IndexedIterator[AExpr]>*/
 }
-var_vararg = var49;
-var_j = var_vararg_rank;
+if (var34){
 {
-{ /* Inline kernel#Int#+ (var_vararg_rank,var_vararg_len) on <var_vararg_rank:Int> */
-/* Covariant cast for argument 0 (i) <var_vararg_len:Int> isa OTHER */
-/* <var_vararg_len:Int> isa OTHER */
-var52 = 1; /* easy <var_vararg_len:Int> isa OTHER*/
-if (unlikely(!var52)) {
-var_class_name55 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name55);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+var35 = ((val*(*)(val* self))((((long)var_33&3)?class_info[((long)var_33&3)]:var_33->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_33); /* item on <var_33:IndexedIterator[AExpr]>*/
 }
-var56 = var_vararg_rank + var_vararg_len;
-var50 = var56;
-goto RET_LABEL51;
-RET_LABEL51:(void)0;
+var_ne36 = var35;
+{
+var37 = nit___nit__AbstractCompilerVisitor___expr(self, var_ne36, ((val*)NULL));
 }
+{
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_exprs, var37); /* Direct call array#Array#add on <var_exprs:Array[RuntimeVariable]>*/
 }
-var_57 = var50;
-for(;;) {
 {
-{ /* Inline kernel#Int#<= (var_j,var_57) on <var_j:Int> */
-/* Covariant cast for argument 0 (i) <var_57:Int> isa OTHER */
-/* <var_57:Int> isa OTHER */
-var60 = 1; /* easy <var_57:Int> isa OTHER*/
-if (unlikely(!var60)) {
-var_class_name63 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name63);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 409);
-show_backtrace(1);
-}
-var64 = var_j <= var_57;
-var58 = var64;
-goto RET_LABEL59;
-RET_LABEL59:(void)0;
+((void(*)(val* self))((((long)var_33&3)?class_info[((long)var_33&3)]:var_33->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_33); /* next on <var_33:IndexedIterator[AExpr]>*/
 }
+} else {
+goto BREAK_label38;
 }
-if (var58){
-{
-var65 = ((val* (*)(val* self, long p0))(var_args->class->vft[COLOR_standard__abstract_collection__SequenceRead___91d_93d]))(var_args, var_j) /* [] on <var_args:SequenceRead[AExpr]>*/;
 }
-var66 = NULL;
+BREAK_label38: (void)0;
 {
-var67 = nit___nit__AbstractCompilerVisitor___expr(self, var65, var66);
+((void(*)(val* self))((((long)var_33&3)?class_info[((long)var_33&3)]:var_33->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_33); /* finish on <var_33:IndexedIterator[AExpr]>*/
 }
-var_e68 = var67;
+var_i = 0l;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_vararg, var_e68); /* Direct call array#Array#add on <var_vararg:Array[RuntimeVariable]>*/
+var39 = nit___nit__MSignature___arity(var_msignature);
 }
-var69 = 1;
+var_40 = var39;
+for(;;) {
 {
-var70 = standard___standard__Int___Discrete__successor(var_j, var69);
+{ /* Inline kernel#Int#< (var_i,var_40) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_40:Int> isa OTHER */
+/* <var_40:Int> isa OTHER */
+var43 = 1; /* easy <var_40:Int> isa OTHER*/
+if (unlikely(!var43)) {
+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, 534);
+fatal_exit(1);
 }
-var_j = var70;
-} else {
-goto BREAK_label71;
+var44 = var_i < var_40;
+var41 = var44;
+goto RET_LABEL42;
+RET_LABEL42:(void)0;
 }
 }
-BREAK_label71: (void)0;
+if (var41){
 {
 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
-var74 = var_msignature->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
-if (unlikely(var74 == NULL)) {
+var47 = var_msignature->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
+if (unlikely(var47 == 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);
 }
-var72 = var74;
-RET_LABEL73:(void)0;
+var45 = var47;
+RET_LABEL46:(void)0;
 }
 }
 {
-var75 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var72, var_vararg_rank);
+var48 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var45, var_i);
 }
+var_param = var48;
 {
-{ /* Inline model#MParameter#mtype (var75) on <var75:nullable Object(MParameter)> */
-var78 = var75->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var75:nullable Object(MParameter)> */
-if (unlikely(var78 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
-show_backtrace(1);
+{ /* Inline typing#SignatureMap#map (var_map) on <var_map:nullable SignatureMap(SignatureMap)> */
+var51 = var_map->attrs[COLOR_nit__typing__SignatureMap___map].val; /* _map on <var_map:nullable SignatureMap(SignatureMap)> */
+if (unlikely(var51 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 597);
+fatal_exit(1);
+}
+var49 = var51;
+RET_LABEL50:(void)0;
 }
-var76 = var78;
-RET_LABEL77:(void)0;
 }
+{
+var53 = (val*)(var_i<<2|1);
+var52 = standard___standard__MapRead___get_or_null(var49, var53);
+}
+var_j = var52;
+if (var_j == NULL) {
+var54 = 1; /* is null */
+} else {
+var54 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Int#== (var_j,((val*)NULL)) on <var_j:nullable Int> */
+var57 = 0; /* incompatible types Int vs. null; cannot be NULL */
+var55 = var57;
+goto RET_LABEL56;
+RET_LABEL56:(void)0;
 }
-var_elttype = var76;
+var54 = var55;
+}
+if (var54){
 {
-var79 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__vararg_instance(self, var_mpropdef, var_recv, var_vararg, var_elttype);
+var58 = nit___nit__AbstractCompilerVisitor___null_instance(self);
 }
-var_arg = var79;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var_arg); /* Direct call array#Array#add on <var_res:Array[RuntimeVariable]>*/
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var58); /* Direct call array#Array#add on <var_res:Array[RuntimeVariable]>*/
 }
+goto BREAK_label59;
 } else {
-var_j80 = var_i;
+}
 {
-{ /* Inline kernel#Int#> (var_i,var_vararg_rank) on <var_i:Int> */
-/* Covariant cast for argument 0 (i) <var_vararg_rank:Int> isa OTHER */
-/* <var_vararg_rank:Int> isa OTHER */
-var83 = 1; /* easy <var_vararg_rank:Int> isa OTHER*/
-if (unlikely(!var83)) {
-var_class_name86 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name86);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
-show_backtrace(1);
+{ /* Inline model#MParameter#is_vararg (var_param) on <var_param:MParameter> */
+var63 = var_param->attrs[COLOR_nit__model__MParameter___is_vararg].s; /* _is_vararg on <var_param:MParameter> */
+var61 = var63;
+RET_LABEL62:(void)0;
+}
 }
-var87 = var_i > var_vararg_rank;
-var81 = var87;
-goto RET_LABEL82;
-RET_LABEL82:(void)0;
+var_64 = var61;
+if (var61){
+{
+{ /* Inline typing#SignatureMap#vararg_decl (var_map) on <var_map:nullable SignatureMap(SignatureMap)> */
+var67 = var_map->attrs[COLOR_nit__typing__SignatureMap___vararg_decl].l; /* _vararg_decl on <var_map:nullable SignatureMap(SignatureMap)> */
+var65 = var67;
+RET_LABEL66:(void)0;
 }
 }
-if (var81){
 {
-{ /* Inline kernel#Int#+ (var_j80,var_vararg_len) on <var_j80:Int> */
-/* Covariant cast for argument 0 (i) <var_vararg_len:Int> isa OTHER */
-/* <var_vararg_len:Int> isa OTHER */
-var90 = 1; /* easy <var_vararg_len:Int> isa OTHER*/
-if (unlikely(!var90)) {
-var_class_name93 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name93);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#> (var65,0l) on <var65:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var70 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var70)) {
+var_class_name73 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name73);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
 }
-var94 = var_j80 + var_vararg_len;
-var88 = var94;
-goto RET_LABEL89;
-RET_LABEL89:(void)0;
+var74 = var65 > 0l;
+var68 = var74;
+goto RET_LABEL69;
+RET_LABEL69:(void)0;
 }
 }
-var_j80 = var88;
+var60 = var68;
 } else {
+var60 = var_64;
 }
+if (var60){
 {
-var95 = ((val* (*)(val* self, long p0))(var_args->class->vft[COLOR_standard__abstract_collection__SequenceRead___91d_93d]))(var_args, var_j80) /* [] on <var_args:SequenceRead[AExpr]>*/;
+{ /* Inline typing#SignatureMap#vararg_decl (var_map) on <var_map:nullable SignatureMap(SignatureMap)> */
+var77 = var_map->attrs[COLOR_nit__typing__SignatureMap___vararg_decl].l; /* _vararg_decl on <var_map:nullable SignatureMap(SignatureMap)> */
+var75 = var77;
+RET_LABEL76:(void)0;
+}
 }
-var96 = NULL;
 {
-var97 = nit___nit__AbstractCompilerVisitor___expr(self, var95, var96);
+var79 = (long)(var_j)>>2;
+var78 = standard___standard__AbstractArrayRead___sub(var_exprs, var79, var75);
 }
-var_e98 = var97;
+var_vararg = var78;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var_e98); /* Direct call array#Array#add on <var_res:Array[RuntimeVariable]>*/
+{ /* Inline model#MParameter#mtype (var_param) on <var_param:MParameter> */
+var82 = var_param->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_param:MParameter> */
+if (unlikely(var82 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
+fatal_exit(1);
 }
+var80 = var82;
+RET_LABEL81:(void)0;
 }
-BREAK_label: (void)0;
-var99 = 1;
+}
+var_elttype = var80;
 {
-var100 = standard___standard__Int___Discrete__successor(var_i, var99);
+var83 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__vararg_instance(self, var_mpropdef, var_recv, var_vararg, var_elttype);
 }
-var_i = var100;
+var_arg = var83;
+{
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var_arg); /* Direct call array#Array#add on <var_res:Array[RuntimeVariable]>*/
+}
+goto BREAK_label59;
+} else {
+}
+{
+var85 = (long)(var_j)>>2;
+var84 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_exprs, var85);
+}
+{
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var84); /* Direct call array#Array#add on <var_res:Array[RuntimeVariable]>*/
+}
+BREAK_label59: (void)0;
+{
+var86 = standard___standard__Int___Discrete__successor(var_i, 1l);
+}
+var_i = var86;
 } else {
-goto BREAK_label101;
+goto BREAK_label87;
 }
 }
-BREAK_label101: (void)0;
+BREAK_label87: (void)0;
 var = var_res;
 goto RET_LABEL;
 RET_LABEL:;
@@ -6991,7 +6337,7 @@ val* var14 /* : MClassType */;
 val* var15 /* : MType */;
 var_mtype = p0;
 {
-var1 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+var1 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
 }
 var2 = !var1;
 if (var2){
@@ -7004,8 +6350,8 @@ goto RET_LABEL;
 var5 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -7016,8 +6362,8 @@ RET_LABEL4:(void)0;
 var8 = var3->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var3:AbstractCompiler> */
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -7032,27 +6378,27 @@ RET_LABEL10:(void)0;
 }
 if (var9 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1172);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1225);
+fatal_exit(1);
 } else {
 { /* Inline abstract_compiler#StaticFrame#receiver (var9) on <var9:nullable StaticFrame> */
 if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1728);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1832);
+fatal_exit(1);
 }
 var14 = var9->attrs[COLOR_nit__abstract_compiler__StaticFrame___receiver].val; /* _receiver on <var9:nullable StaticFrame> */
 if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1728);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1832);
+fatal_exit(1);
 }
 var12 = var14;
 RET_LABEL13:(void)0;
 }
 }
 {
-var15 = ((val* (*)(val* self, val* p0, val* p1))(var_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_mtype, var6, var12) /* 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, var6, var12); /* anchor_to on <var_mtype:MType>*/
 }
 var = var15;
 goto RET_LABEL;
@@ -7076,12 +6422,11 @@ val* var12 /* : AbstractCompiler */;
 val* var14 /* : AbstractCompiler */;
 val* var15 /* : MModule */;
 val* var17 /* : MModule */;
-short int var18 /* : Bool */;
-val* var19 /* : MType */;
+val* var18 /* : MType */;
 var_mtype = p0;
 var_recv = p1;
 {
-var1 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+var1 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
 }
 var2 = !var1;
 if (var2){
@@ -7094,8 +6439,8 @@ goto RET_LABEL;
 var5 = var_recv->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_recv:RuntimeVariable> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1787);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -7110,20 +6455,20 @@ RET_LABEL7:(void)0;
 }
 if (var6 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1178);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1231);
+fatal_exit(1);
 } else {
 { /* Inline abstract_compiler#StaticFrame#receiver (var6) on <var6:nullable StaticFrame> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1728);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1832);
+fatal_exit(1);
 }
 var11 = var6->attrs[COLOR_nit__abstract_compiler__StaticFrame___receiver].val; /* _receiver on <var6:nullable StaticFrame> */
 if (unlikely(var11 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1728);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1832);
+fatal_exit(1);
 }
 var9 = var11;
 RET_LABEL10:(void)0;
@@ -7134,8 +6479,8 @@ RET_LABEL10:(void)0;
 var14 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var12 = var14;
 RET_LABEL13:(void)0;
@@ -7146,18 +6491,17 @@ RET_LABEL13:(void)0;
 var17 = var12->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var12:AbstractCompiler> */
 if (unlikely(var17 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
 var15 = var17;
 RET_LABEL16:(void)0;
 }
 }
-var18 = 1;
 {
-var19 = ((val* (*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_mtype->class->vft[COLOR_nit__model__MType__resolve_for]))(var_mtype, var3, var9, var15, var18) /* resolve_for on <var_mtype:MType>*/;
+var18 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_mtype->class->vft[COLOR_nit__model__MType__resolve_for]))(var_mtype, var3, var9, var15, 1); /* resolve_for on <var_mtype:MType>*/
 }
-var = var19;
+var = var18;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -7175,31 +6519,29 @@ val* var5 /* : AbstractCompiler */;
 val* var7 /* : AbstractCompiler */;
 val* var8 /* : MModule */;
 val* var10 /* : MModule */;
-val* var11 /* : null */;
+short int var11 /* : Bool */;
 short int var12 /* : Bool */;
 short int var13 /* : Bool */;
-short int var14 /* : Bool */;
 int cltype;
 int idtype;
 short int var_ /* var : Bool */;
-val* var15 /* : MType */;
-val* var17 /* : MType */;
-val* var18 /* : AbstractCompiler */;
-val* var20 /* : AbstractCompiler */;
-val* var21 /* : MModule */;
-val* var23 /* : MModule */;
-val* var24 /* : null */;
-short int var25 /* : Bool */;
-val* var26 /* : RuntimeVariable */;
+val* var14 /* : MType */;
+val* var16 /* : MType */;
+val* var17 /* : AbstractCompiler */;
+val* var19 /* : AbstractCompiler */;
+val* var20 /* : MModule */;
+val* var22 /* : MModule */;
+short int var23 /* : Bool */;
+val* var24 /* : RuntimeVariable */;
+val* var25 /* : String */;
 val* var27 /* : String */;
-val* var29 /* : String */;
+val* var28 /* : MType */;
 val* var30 /* : MType */;
-val* var32 /* : MType */;
 val* var_res /* var res: RuntimeVariable */;
-val* var33 /* : RuntimeVariable */;
+val* var31 /* : RuntimeVariable */;
+val* var32 /* : String */;
 val* var34 /* : String */;
-val* var36 /* : String */;
-val* var_res37 /* var res: RuntimeVariable */;
+val* var_res35 /* var res: RuntimeVariable */;
 var_value = p0;
 var_mtype = p1;
 {
@@ -7211,8 +6553,8 @@ var_mtype = var1;
 var4 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_value:RuntimeVariable> */
 if (unlikely(var4 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1787);
+fatal_exit(1);
 }
 var2 = var4;
 RET_LABEL3:(void)0;
@@ -7224,8 +6566,8 @@ var_valmtype = var2;
 var7 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var5 = var7;
 RET_LABEL6:(void)0;
@@ -7236,18 +6578,17 @@ RET_LABEL6:(void)0;
 var10 = var5->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var5:AbstractCompiler> */
 if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
 var8 = var10;
 RET_LABEL9:(void)0;
 }
 }
-var11 = NULL;
 {
-var12 = nit___nit__MType___is_subtype(var_valmtype, var8, var11, var_mtype);
+var11 = nit___nit__MType___is_subtype(var_valmtype, var8, ((val*)NULL), var_mtype);
 }
-if (var12){
+if (var11){
 var = var_value;
 goto RET_LABEL;
 } else {
@@ -7256,125 +6597,124 @@ goto RET_LABEL;
 cltype = type_nit__MNullableType.color;
 idtype = type_nit__MNullableType.id;
 if(cltype >= var_valmtype->type->table_size) {
-var14 = 0;
+var13 = 0;
 } else {
-var14 = var_valmtype->type->type_table[cltype] == idtype;
+var13 = var_valmtype->type->type_table[cltype] == idtype;
 }
-var_ = var14;
-if (var14){
+var_ = var13;
+if (var13){
 {
-{ /* Inline model#MNullableType#mtype (var_valmtype) on <var_valmtype:MType(MNullableType)> */
-var17 = var_valmtype->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <var_valmtype:MType(MNullableType)> */
-if (unlikely(var17 == NULL)) {
+{ /* Inline model#MProxyType#mtype (var_valmtype) on <var_valmtype:MType(MNullableType)> */
+var16 = var_valmtype->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <var_valmtype:MType(MNullableType)> */
+if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var15 = var17;
-RET_LABEL16:(void)0;
+var14 = var16;
+RET_LABEL15:(void)0;
 }
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
-var20 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
-if (unlikely(var20 == NULL)) {
+var19 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
+if (unlikely(var19 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
-var18 = var20;
-RET_LABEL19:(void)0;
+var17 = var19;
+RET_LABEL18:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var18) on <var18:AbstractCompiler> */
-var23 = var18->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var18:AbstractCompiler> */
-if (unlikely(var23 == NULL)) {
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var17) on <var17:AbstractCompiler> */
+var22 = var17->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var17:AbstractCompiler> */
+if (unlikely(var22 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
-var21 = var23;
-RET_LABEL22:(void)0;
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
-var24 = NULL;
 {
-var25 = nit___nit__MType___is_subtype(var15, var21, var24, var_mtype);
+var23 = nit___nit__MType___is_subtype(var14, var20, ((val*)NULL), var_mtype);
 }
-var13 = var25;
+var12 = var23;
 } else {
-var13 = var_;
+var12 = var_;
 }
-if (var13){
-var26 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
+if (var12){
+var24 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
 {
 { /* Inline abstract_compiler#RuntimeVariable#name (var_value) on <var_value:RuntimeVariable> */
-var29 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_value:RuntimeVariable> */
-if (unlikely(var29 == NULL)) {
+var27 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_value:RuntimeVariable> */
+if (unlikely(var27 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1677);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1781);
+fatal_exit(1);
 }
-var27 = var29;
-RET_LABEL28:(void)0;
+var25 = var27;
+RET_LABEL26:(void)0;
 }
 }
 {
-{ /* Inline model#MNullableType#mtype (var_valmtype) on <var_valmtype:MType(MNullableType)> */
-var32 = var_valmtype->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <var_valmtype:MType(MNullableType)> */
-if (unlikely(var32 == NULL)) {
+{ /* Inline model#MProxyType#mtype (var_valmtype) on <var_valmtype:MType(MNullableType)> */
+var30 = var_valmtype->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <var_valmtype:MType(MNullableType)> */
+if (unlikely(var30 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var30 = var32;
-RET_LABEL31:(void)0;
+var28 = var30;
+RET_LABEL29:(void)0;
 }
 }
 {
-((void (*)(val* self, val* p0))(var26->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var26, var27) /* name= on <var26:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var24->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var24, var25); /* name= on <var24:RuntimeVariable>*/
 }
 {
-((void (*)(val* self, val* p0))(var26->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var26, var_valmtype) /* mtype= on <var26:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var24->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var24, var_valmtype); /* mtype= on <var24:RuntimeVariable>*/
 }
 {
-((void (*)(val* self, val* p0))(var26->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var26, var30) /* mcasttype= on <var26:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var24->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var24, var28); /* mcasttype= on <var24:RuntimeVariable>*/
 }
 {
-((void (*)(val* self))(var26->class->vft[COLOR_standard__kernel__Object__init]))(var26) /* init on <var26:RuntimeVariable>*/;
+((void(*)(val* self))(var24->class->vft[COLOR_standard__kernel__Object__init]))(var24); /* init on <var24:RuntimeVariable>*/
 }
-var_res = var26;
+var_res = var24;
 var = var_res;
 goto RET_LABEL;
 } else {
-var33 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
+var31 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
 {
 { /* Inline abstract_compiler#RuntimeVariable#name (var_value) on <var_value:RuntimeVariable> */
-var36 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_value:RuntimeVariable> */
-if (unlikely(var36 == NULL)) {
+var34 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_value:RuntimeVariable> */
+if (unlikely(var34 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1677);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1781);
+fatal_exit(1);
 }
-var34 = var36;
-RET_LABEL35:(void)0;
+var32 = var34;
+RET_LABEL33:(void)0;
 }
 }
 {
-((void (*)(val* self, val* p0))(var33->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var33, var34) /* name= on <var33:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var31->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var31, var32); /* name= on <var31:RuntimeVariable>*/
 }
 {
-((void (*)(val* self, val* p0))(var33->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var33, var_valmtype) /* mtype= on <var33:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var31->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var31, var_valmtype); /* mtype= on <var31:RuntimeVariable>*/
 }
 {
-((void (*)(val* self, val* p0))(var33->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var33, var_mtype) /* mcasttype= on <var33:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var31->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var31, var_mtype); /* mcasttype= on <var31:RuntimeVariable>*/
 }
 {
-((void (*)(val* self))(var33->class->vft[COLOR_standard__kernel__Object__init]))(var33) /* init on <var33:RuntimeVariable>*/;
+((void(*)(val* self))(var31->class->vft[COLOR_standard__kernel__Object__init]))(var31); /* init on <var31:RuntimeVariable>*/
 }
-var_res37 = var33;
-var = var_res37;
+var_res35 = var31;
+var = var_res35;
 goto RET_LABEL;
 }
 RET_LABEL:;
@@ -7409,16 +6749,16 @@ var1 = var_t->type->type_table[cltype] == idtype;
 }
 if (unlikely(!var1)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1241);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1294);
+fatal_exit(1);
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
 var4 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var4 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var2 = var4;
 RET_LABEL3:(void)0;
@@ -7429,8 +6769,8 @@ RET_LABEL3:(void)0;
 var7 = var2->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var2:AbstractCompiler> */
 if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
 var5 = var7;
 RET_LABEL6:(void)0;
@@ -7476,16 +6816,16 @@ var1 = var_t->type->type_table[cltype] == idtype;
 }
 if (unlikely(!var1)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1249);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1302);
+fatal_exit(1);
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
 var4 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var4 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var2 = var4;
 RET_LABEL3:(void)0;
@@ -7496,8 +6836,8 @@ RET_LABEL3:(void)0;
 var7 = var2->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var2:AbstractCompiler> */
 if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
 var5 = var7;
 RET_LABEL6:(void)0;
@@ -7542,38 +6882,34 @@ short int var24 /* : Bool */;
 int cltype25;
 int idtype26;
 short int var_maybenull /* var maybenull: Bool */;
+val* var27 /* : NativeArray[String] */;
 static val* varonce;
-val* var27 /* : String */;
-char* var28 /* : NativeString */;
-long var29 /* : Int */;
-val* var30 /* : FlatString */;
-static val* varonce31;
-val* var32 /* : String */;
-char* var33 /* : NativeString */;
-long var34 /* : Int */;
+static val* varonce28;
+val* var29 /* : String */;
+char* var30 /* : NativeString */;
+val* var31 /* : FlatString */;
+static val* varonce32;
+val* var33 /* : String */;
+char* var34 /* : NativeString */;
 val* var35 /* : FlatString */;
-val* var36 /* : Array[Object] */;
-long var37 /* : Int */;
-val* var38 /* : NativeArray[Object] */;
+val* var36 /* : String */;
+val* var37 /* : String */;
+static val* varonce38;
 val* var39 /* : String */;
-static val* varonce40;
-val* var41 /* : String */;
-char* var42 /* : NativeString */;
-long var43 /* : Int */;
-val* var44 /* : FlatString */;
-static val* varonce45;
-val* var46 /* : String */;
-char* var47 /* : NativeString */;
-long var48 /* : Int */;
-val* var49 /* : FlatString */;
+char* var40 /* : NativeString */;
+val* var41 /* : FlatString */;
+static val* varonce42;
+val* var43 /* : String */;
+char* var44 /* : NativeString */;
+val* var45 /* : FlatString */;
 var_recv = p0;
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
 var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -7584,8 +6920,8 @@ RET_LABEL1:(void)0;
 var5 = var->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var:AbstractCompiler> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -7597,7 +6933,7 @@ var8 = var3->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val
 if (unlikely(var8 == 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);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -7608,8 +6944,8 @@ RET_LABEL7:(void)0;
 var11 = var6->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_no_check_null].val; /* _opt_no_check_null on <var6:ToolContext> */
 if (unlikely(var11 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 55);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 56);
+fatal_exit(1);
 }
 var9 = var11;
 RET_LABEL10:(void)0;
@@ -7622,7 +6958,7 @@ var12 = var14;
 RET_LABEL13:(void)0;
 }
 }
-var15 = ((struct instance_standard__Bool*)var12)->value; /* autounbox from nullable Object to Bool */;
+var15 = (short int)((long)(var12)>>2);
 if (var15){
 goto RET_LABEL;
 } else {
@@ -7632,8 +6968,8 @@ goto RET_LABEL;
 var19 = var_recv->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_recv:RuntimeVariable> */
 if (unlikely(var19 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1787);
+fatal_exit(1);
 }
 var17 = var19;
 RET_LABEL18:(void)0;
@@ -7656,8 +6992,8 @@ var16 = var_;
 var23 = var_recv->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_recv:RuntimeVariable> */
 if (unlikely(var23 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1787);
+fatal_exit(1);
 }
 var21 = var23;
 RET_LABEL22:(void)0;
@@ -7675,64 +7011,62 @@ var16 = var24;
 }
 var_maybenull = var16;
 if (var_maybenull){
-if (varonce) {
-var27 = varonce;
+if (unlikely(varonce==NULL)) {
+var27 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce28!=NULL)) {
+var29 = varonce28;
 } else {
-var28 = "if (unlikely(";
-var29 = 13;
-var30 = standard___standard__NativeString___to_s_with_length(var28, var29);
-var27 = var30;
-varonce = var27;
+var30 = "if (unlikely(";
+var31 = standard___standard__NativeString___to_s_with_length(var30, 13l);
+var29 = var31;
+varonce28 = var29;
 }
-if (varonce31) {
-var32 = varonce31;
+((struct instance_standard__NativeArray*)var27)->values[0]=var29;
+if (likely(varonce32!=NULL)) {
+var33 = varonce32;
 } else {
-var33 = " == NULL)) {";
-var34 = 12;
-var35 = standard___standard__NativeString___to_s_with_length(var33, var34);
-var32 = var35;
-varonce31 = var32;
+var34 = " == NULL)) {";
+var35 = standard___standard__NativeString___to_s_with_length(var34, 12l);
+var33 = var35;
+varonce32 = var33;
 }
-var36 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var36 = array_instance Array[Object] */
-var37 = 3;
-var38 = NEW_standard__NativeArray(var37, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var38)->values[0] = (val*) var27;
-((struct instance_standard__NativeArray*)var38)->values[1] = (val*) var_recv;
-((struct instance_standard__NativeArray*)var38)->values[2] = (val*) var32;
-{
-((void (*)(val* self, val* p0, long p1))(var36->class->vft[COLOR_standard__array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
+((struct instance_standard__NativeArray*)var27)->values[2]=var33;
+} else {
+var27 = varonce;
+varonce = NULL;
 }
+{
+var36 = ((val*(*)(val* self))(var_recv->class->vft[COLOR_standard__string__Object__to_s]))(var_recv); /* to_s on <var_recv:RuntimeVariable>*/
 }
+((struct instance_standard__NativeArray*)var27)->values[1]=var36;
 {
-var39 = ((val* (*)(val* self))(var36->class->vft[COLOR_standard__string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
+var37 = ((val*(*)(val* self))(var27->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var27); /* native_to_s on <var27:NativeArray[String]>*/
 }
+varonce = var27;
 {
-nit___nit__AbstractCompilerVisitor___add(self, var39); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(self, var37); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
 }
-if (varonce40) {
-var41 = varonce40;
+if (likely(varonce38!=NULL)) {
+var39 = varonce38;
 } else {
-var42 = "Receiver is null";
-var43 = 16;
-var44 = standard___standard__NativeString___to_s_with_length(var42, var43);
-var41 = var44;
-varonce40 = var41;
+var40 = "Receiver is null";
+var41 = standard___standard__NativeString___to_s_with_length(var40, 16l);
+var39 = var41;
+varonce38 = var39;
 }
 {
-nit___nit__AbstractCompilerVisitor___add_abort(self, var41); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_abort(self, var39); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:AbstractCompilerVisitor>*/
 }
-if (varonce45) {
-var46 = varonce45;
+if (likely(varonce42!=NULL)) {
+var43 = varonce42;
 } else {
-var47 = "}";
-var48 = 1;
-var49 = standard___standard__NativeString___to_s_with_length(var47, var48);
-var46 = var49;
-varonce45 = var46;
+var44 = "}";
+var45 = standard___standard__NativeString___to_s_with_length(var44, 1l);
+var43 = var45;
+varonce42 = var43;
 }
 {
-nit___nit__AbstractCompilerVisitor___add(self, var46); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(self, var43); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
 }
 } else {
 }
@@ -7745,8 +7079,8 @@ val* var1 /* : HashSet[String] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___names].val; /* _names on <self:AbstractCompilerVisitor> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1282);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1335);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -7779,37 +7113,35 @@ val* var8 /* : HashSet[String] */;
 long var9 /* : Int */;
 long var11 /* : Int */;
 long var12 /* : Int */;
-long var13 /* : Int */;
-short int var15 /* : Bool */;
+short int var14 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var16 /* : Int */;
+long var15 /* : Int */;
 long var_i /* var i: Int */;
+val* var16 /* : String */;
 val* var17 /* : String */;
-val* var18 /* : String */;
 val* var_s2 /* var s2: String */;
-val* var19 /* : HashSet[String] */;
-val* var21 /* : HashSet[String] */;
+val* var18 /* : HashSet[String] */;
+val* var20 /* : HashSet[String] */;
+short int var21 /* : Bool */;
 short int var22 /* : Bool */;
-short int var23 /* : Bool */;
-val* var25 /* : HashSet[String] */;
-val* var27 /* : HashSet[String] */;
-long var28 /* : Int */;
-long var29 /* : Int */;
-short int var31 /* : Bool */;
-int cltype32;
-int idtype33;
-const char* var_class_name34;
-long var35 /* : Int */;
+val* var24 /* : HashSet[String] */;
+val* var26 /* : HashSet[String] */;
+long var27 /* : Int */;
+short int var29 /* : Bool */;
+int cltype30;
+int idtype31;
+const char* var_class_name32;
+long var33 /* : Int */;
 var_s = p0;
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#names (self) on <self:AbstractCompilerVisitor> */
 var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___names].val; /* _names on <self:AbstractCompilerVisitor> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1282);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1335);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -7825,8 +7157,8 @@ if (var5){
 var8 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___names].val; /* _names on <self:AbstractCompilerVisitor> */
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1282);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1335);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -7846,94 +7178,92 @@ var9 = var11;
 RET_LABEL10:(void)0;
 }
 }
-var12 = 1;
 {
-{ /* Inline kernel#Int#+ (var9,var12) on <var9:Int> */
-/* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
-/* <var12:Int> isa OTHER */
-var15 = 1; /* easy <var12:Int> isa OTHER*/
-if (unlikely(!var15)) {
+{ /* Inline kernel#Int#+ (var9,1l) on <var9:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var14 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var14)) {
 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, 413);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var16 = var9 + var12;
-var13 = var16;
-goto RET_LABEL14;
-RET_LABEL14:(void)0;
+var15 = var9 + 1l;
+var12 = var15;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
 }
-var_i = var13;
+var_i = var12;
 for(;;) {
 {
-var17 = standard__string___Int___Object__to_s(var_i);
+var16 = standard__string___Int___Object__to_s(var_i);
 }
 {
-var18 = ((val* (*)(val* self, val* p0))(var_s->class->vft[COLOR_standard__string__String___43d]))(var_s, var17) /* + on <var_s:String>*/;
+var17 = ((val*(*)(val* self, val* p0))(var_s->class->vft[COLOR_standard__string__String___43d]))(var_s, var16); /* + on <var_s:String>*/
 }
-var_s2 = var18;
+var_s2 = var17;
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#names (self) on <self:AbstractCompilerVisitor> */
-var21 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___names].val; /* _names on <self:AbstractCompilerVisitor> */
-if (unlikely(var21 == NULL)) {
+var20 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___names].val; /* _names on <self:AbstractCompilerVisitor> */
+if (unlikely(var20 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1282);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1335);
+fatal_exit(1);
 }
-var19 = var21;
-RET_LABEL20:(void)0;
+var18 = var20;
+RET_LABEL19:(void)0;
 }
 }
 {
-var22 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var19, var_s2);
+var21 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var18, var_s2);
 }
-var23 = !var22;
-if (var23){
+var22 = !var21;
+if (var22){
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#last= (self,var_i) on <self:AbstractCompilerVisitor> */
 self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___last].l = var_i; /* _last on <self:AbstractCompilerVisitor> */
-RET_LABEL24:(void)0;
+RET_LABEL23:(void)0;
 }
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#names (self) on <self:AbstractCompilerVisitor> */
-var27 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___names].val; /* _names on <self:AbstractCompilerVisitor> */
-if (unlikely(var27 == NULL)) {
+var26 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___names].val; /* _names on <self:AbstractCompilerVisitor> */
+if (unlikely(var26 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1282);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1335);
+fatal_exit(1);
 }
-var25 = var27;
-RET_LABEL26:(void)0;
+var24 = var26;
+RET_LABEL25:(void)0;
 }
 }
 {
-standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var25, var_s2); /* Direct call hash_collection#HashSet#add on <var25:HashSet[String]>*/
+standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var24, var_s2); /* Direct call hash_collection#HashSet#add on <var24:HashSet[String]>*/
 }
 var = var_s2;
 goto RET_LABEL;
 } else {
 }
-var28 = 1;
 {
-{ /* Inline kernel#Int#+ (var_i,var28) on <var_i:Int> */
-/* Covariant cast for argument 0 (i) <var28:Int> isa OTHER */
-/* <var28:Int> isa OTHER */
-var31 = 1; /* easy <var28:Int> isa OTHER*/
-if (unlikely(!var31)) {
-var_class_name34 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var29 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var29)) {
+var_class_name32 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var35 = var_i + var28;
-var29 = var35;
-goto RET_LABEL30;
-RET_LABEL30:(void)0;
+var33 = var_i + 1l;
+var27 = var33;
+goto RET_LABEL28;
+RET_LABEL28:(void)0;
 }
 }
-var_i = var29;
+var_i = var27;
 }
 RET_LABEL:;
 return var;
@@ -7942,195 +7272,189 @@ return var;
 val* nit___nit__AbstractCompilerVisitor___escapemark_name(val* self, val* p0) {
 val* var /* : String */;
 val* var_e /* var e: nullable EscapeMark */;
-val* var1 /* : null */;
+short int var1 /* : Bool */;
 short int var2 /* : Bool */;
-short int var3 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var4 /* : Bool */;
 short int var5 /* : Bool */;
-short int var6 /* : Bool */;
-val* var7 /* : nullable StaticFrame */;
-val* var9 /* : nullable StaticFrame */;
-val* var10 /* : HashMap[EscapeMark, String] */;
-val* var12 /* : HashMap[EscapeMark, String] */;
-short int var13 /* : Bool */;
-val* var14 /* : nullable StaticFrame */;
-val* var16 /* : nullable StaticFrame */;
-val* var17 /* : HashMap[EscapeMark, String] */;
-val* var19 /* : HashMap[EscapeMark, String] */;
-val* var20 /* : nullable Object */;
-val* var21 /* : nullable String */;
-val* var23 /* : nullable String */;
+val* var6 /* : nullable StaticFrame */;
+val* var8 /* : nullable StaticFrame */;
+val* var9 /* : HashMap[EscapeMark, String] */;
+val* var11 /* : HashMap[EscapeMark, String] */;
+short int var12 /* : Bool */;
+val* var13 /* : nullable StaticFrame */;
+val* var15 /* : nullable StaticFrame */;
+val* var16 /* : HashMap[EscapeMark, String] */;
+val* var18 /* : HashMap[EscapeMark, String] */;
+val* var19 /* : nullable Object */;
+val* var20 /* : nullable String */;
+val* var22 /* : nullable String */;
 val* var_name /* var name: nullable String */;
-val* var24 /* : null */;
-short int var25 /* : Bool */;
-short int var26 /* : Bool */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
 static val* varonce;
-val* var27 /* : String */;
-char* var28 /* : NativeString */;
-long var29 /* : Int */;
-val* var30 /* : FlatString */;
-val* var31 /* : String */;
-val* var32 /* : nullable StaticFrame */;
-val* var34 /* : nullable StaticFrame */;
-val* var35 /* : HashMap[EscapeMark, String] */;
-val* var37 /* : HashMap[EscapeMark, String] */;
+val* var25 /* : String */;
+char* var26 /* : NativeString */;
+val* var27 /* : FlatString */;
+val* var28 /* : String */;
+val* var29 /* : nullable StaticFrame */;
+val* var31 /* : nullable StaticFrame */;
+val* var32 /* : HashMap[EscapeMark, String] */;
+val* var34 /* : HashMap[EscapeMark, String] */;
 var_e = p0;
-var1 = NULL;
 if (var_e == NULL) {
-var2 = 0; /* is null */
+var1 = 0; /* is null */
 } else {
-var2 = 1; /* arg is null and recv is not */
+var1 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_e,var1) on <var_e:nullable EscapeMark> */
-var_other = var1;
+{ /* Inline kernel#Object#!= (var_e,((val*)NULL)) on <var_e:nullable EscapeMark> */
+var_other = ((val*)NULL);
 {
-var5 = ((short int (*)(val* self, val* p0))(var_e->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_e, var_other) /* == on <var_e:nullable EscapeMark(EscapeMark)>*/;
+var4 = ((short int(*)(val* self, val* p0))(var_e->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_e, var_other); /* == on <var_e:nullable EscapeMark(EscapeMark)>*/
 }
-var6 = !var5;
-var3 = var6;
-goto RET_LABEL4;
-RET_LABEL4:(void)0;
+var5 = !var4;
+var2 = var5;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
-var2 = var3;
+var1 = var2;
 }
-if (unlikely(!var2)) {
+if (unlikely(!var1)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1307);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1360);
+fatal_exit(1);
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:AbstractCompilerVisitor> */
-var9 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:AbstractCompilerVisitor> */
-var7 = var9;
-RET_LABEL8:(void)0;
+var8 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:AbstractCompilerVisitor> */
+var6 = var8;
+RET_LABEL7:(void)0;
 }
 }
-if (var7 == NULL) {
+if (var6 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1308);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1361);
+fatal_exit(1);
 } else {
-{ /* Inline abstract_compiler#StaticFrame#escapemark_names (var7) on <var7:nullable StaticFrame> */
-if (unlikely(var7 == NULL)) {
+{ /* Inline abstract_compiler#StaticFrame#escapemark_names (var6) on <var6:nullable StaticFrame> */
+if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1740);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1844);
+fatal_exit(1);
 }
-var12 = var7->attrs[COLOR_nit__abstract_compiler__StaticFrame___escapemark_names].val; /* _escapemark_names on <var7:nullable StaticFrame> */
-if (unlikely(var12 == NULL)) {
+var11 = var6->attrs[COLOR_nit__abstract_compiler__StaticFrame___escapemark_names].val; /* _escapemark_names on <var6:nullable StaticFrame> */
+if (unlikely(var11 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapemark_names");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1740);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1844);
+fatal_exit(1);
 }
-var10 = var12;
-RET_LABEL11:(void)0;
+var9 = var11;
+RET_LABEL10:(void)0;
 }
 }
 {
-var13 = standard___standard__MapRead___has_key(var10, var_e);
+var12 = standard___standard__HashMap___standard__abstract_collection__MapRead__has_key(var9, var_e);
 }
-if (var13){
+if (var12){
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:AbstractCompilerVisitor> */
-var16 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:AbstractCompilerVisitor> */
-var14 = var16;
-RET_LABEL15:(void)0;
+var15 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:AbstractCompilerVisitor> */
+var13 = var15;
+RET_LABEL14:(void)0;
 }
 }
-if (var14 == NULL) {
+if (var13 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1308);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1361);
+fatal_exit(1);
 } else {
-{ /* Inline abstract_compiler#StaticFrame#escapemark_names (var14) on <var14:nullable StaticFrame> */
-if (unlikely(var14 == NULL)) {
+{ /* Inline abstract_compiler#StaticFrame#escapemark_names (var13) on <var13:nullable StaticFrame> */
+if (unlikely(var13 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1740);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1844);
+fatal_exit(1);
 }
-var19 = var14->attrs[COLOR_nit__abstract_compiler__StaticFrame___escapemark_names].val; /* _escapemark_names on <var14:nullable StaticFrame> */
-if (unlikely(var19 == NULL)) {
+var18 = var13->attrs[COLOR_nit__abstract_compiler__StaticFrame___escapemark_names].val; /* _escapemark_names on <var13:nullable StaticFrame> */
+if (unlikely(var18 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapemark_names");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1740);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1844);
+fatal_exit(1);
 }
-var17 = var19;
-RET_LABEL18:(void)0;
+var16 = var18;
+RET_LABEL17:(void)0;
 }
 }
 {
-var20 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var17, var_e);
+var19 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var16, var_e);
 }
-var = var20;
+var = var19;
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline scope#EscapeMark#name (var_e) on <var_e:nullable EscapeMark(EscapeMark)> */
-var23 = var_e->attrs[COLOR_nit__scope__EscapeMark___name].val; /* _name on <var_e:nullable EscapeMark(EscapeMark)> */
-var21 = var23;
-RET_LABEL22:(void)0;
+var22 = var_e->attrs[COLOR_nit__scope__EscapeMark___name].val; /* _name on <var_e:nullable EscapeMark(EscapeMark)> */
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
-var_name = var21;
-var24 = NULL;
+var_name = var20;
 if (var_name == NULL) {
-var25 = 1; /* is null */
+var23 = 1; /* is null */
 } else {
-var25 = 0; /* arg is null but recv is not */
+var23 = 0; /* arg is null but recv is not */
 }
 if (0) {
-var26 = ((short int (*)(val* self, val* p0))(var_name->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_name, var24) /* == on <var_name:nullable String>*/;
-var25 = var26;
+var24 = ((short int(*)(val* self, val* p0))(var_name->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_name, ((val*)NULL)); /* == on <var_name:nullable String>*/
+var23 = var24;
 }
-if (var25){
-if (varonce) {
-var27 = varonce;
+if (var23){
+if (likely(varonce!=NULL)) {
+var25 = varonce;
 } else {
-var28 = "label";
-var29 = 5;
-var30 = standard___standard__NativeString___to_s_with_length(var28, var29);
-var27 = var30;
-varonce = var27;
+var26 = "label";
+var27 = standard___standard__NativeString___to_s_with_length(var26, 5l);
+var25 = var27;
+varonce = var25;
 }
-var_name = var27;
+var_name = var25;
 } else {
 }
 {
-var31 = nit___nit__AbstractCompilerVisitor___get_name(self, var_name);
+var28 = nit___nit__AbstractCompilerVisitor___get_name(self, var_name);
 }
-var_name = var31;
+var_name = var28;
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:AbstractCompilerVisitor> */
-var34 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:AbstractCompilerVisitor> */
-var32 = var34;
-RET_LABEL33:(void)0;
+var31 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:AbstractCompilerVisitor> */
+var29 = var31;
+RET_LABEL30:(void)0;
 }
 }
-if (var32 == NULL) {
+if (var29 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1312);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1365);
+fatal_exit(1);
 } else {
-{ /* Inline abstract_compiler#StaticFrame#escapemark_names (var32) on <var32:nullable StaticFrame> */
-if (unlikely(var32 == NULL)) {
+{ /* Inline abstract_compiler#StaticFrame#escapemark_names (var29) on <var29:nullable StaticFrame> */
+if (unlikely(var29 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1740);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1844);
+fatal_exit(1);
 }
-var37 = var32->attrs[COLOR_nit__abstract_compiler__StaticFrame___escapemark_names].val; /* _escapemark_names on <var32:nullable StaticFrame> */
-if (unlikely(var37 == NULL)) {
+var34 = var29->attrs[COLOR_nit__abstract_compiler__StaticFrame___escapemark_names].val; /* _escapemark_names on <var29:nullable StaticFrame> */
+if (unlikely(var34 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapemark_names");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1740);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1844);
+fatal_exit(1);
 }
-var35 = var37;
-RET_LABEL36:(void)0;
+var32 = var34;
+RET_LABEL33:(void)0;
 }
 }
 {
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var35, var_e, var_name); /* Direct call hash_collection#HashMap#[]= on <var35:HashMap[EscapeMark, String]>*/
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var32, var_e, var_name); /* Direct call hash_collection#HashMap#[]= on <var32:HashMap[EscapeMark, String]>*/
 }
 var = var_name;
 goto RET_LABEL;
@@ -8140,114 +7464,106 @@ return var;
 /* method abstract_compiler#AbstractCompilerVisitor#add_escape_label for (self: AbstractCompilerVisitor, nullable EscapeMark) */
 void nit___nit__AbstractCompilerVisitor___add_escape_label(val* self, val* p0) {
 val* var_e /* var e: nullable EscapeMark */;
-val* var /* : null */;
+short int var /* : Bool */;
 short int var1 /* : Bool */;
-short int var2 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var4 /* : Bool */;
-short int var6 /* : Bool */;
-val* var7 /* : Array[AEscapeExpr] */;
-val* var9 /* : Array[AEscapeExpr] */;
-short int var10 /* : Bool */;
+short int var3 /* : Bool */;
+short int var5 /* : Bool */;
+val* var6 /* : Array[AEscapeExpr] */;
+val* var8 /* : Array[AEscapeExpr] */;
+short int var9 /* : Bool */;
+val* var10 /* : NativeArray[String] */;
 static val* varonce;
-val* var11 /* : String */;
-char* var12 /* : NativeString */;
-long var13 /* : Int */;
+static val* varonce11;
+val* var12 /* : String */;
+char* var13 /* : NativeString */;
 val* var14 /* : FlatString */;
-val* var15 /* : String */;
-static val* varonce16;
-val* var17 /* : String */;
-char* var18 /* : NativeString */;
-long var19 /* : Int */;
-val* var20 /* : FlatString */;
-val* var21 /* : Array[Object] */;
-long var22 /* : Int */;
-val* var23 /* : NativeArray[Object] */;
-val* var24 /* : String */;
+static val* varonce15;
+val* var16 /* : String */;
+char* var17 /* : NativeString */;
+val* var18 /* : FlatString */;
+val* var19 /* : String */;
+val* var20 /* : String */;
 var_e = p0;
-var = NULL;
 if (var_e == NULL) {
-var1 = 1; /* is null */
+var = 1; /* is null */
 } else {
-var1 = 0; /* arg is null but recv is not */
+var = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_e,var) on <var_e:nullable EscapeMark> */
-var_other = var;
+{ /* Inline kernel#Object#== (var_e,((val*)NULL)) on <var_e:nullable EscapeMark> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_e,var_other) on <var_e:nullable EscapeMark(EscapeMark)> */
-var6 = var_e == var_other;
-var4 = var6;
-goto RET_LABEL5;
-RET_LABEL5:(void)0;
+var5 = var_e == var_other;
+var3 = var5;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
 }
 }
-var2 = var4;
-goto RET_LABEL3;
-RET_LABEL3:(void)0;
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
 }
-var1 = var2;
+var = var1;
 }
-if (var1){
+if (var){
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline scope#EscapeMark#escapes (var_e) on <var_e:nullable EscapeMark(EscapeMark)> */
-var9 = var_e->attrs[COLOR_nit__scope__EscapeMark___escapes].val; /* _escapes on <var_e:nullable EscapeMark(EscapeMark)> */
-if (unlikely(var9 == NULL)) {
+var8 = var_e->attrs[COLOR_nit__scope__EscapeMark___escapes].val; /* _escapes on <var_e:nullable EscapeMark(EscapeMark)> */
+if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__scope, 58);
-show_backtrace(1);
+fatal_exit(1);
 }
-var7 = var9;
-RET_LABEL8:(void)0;
+var6 = var8;
+RET_LABEL7:(void)0;
 }
 }
 {
-var10 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var7);
+var9 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var6);
 }
-if (var10){
+if (var9){
 goto RET_LABEL;
 } else {
 }
-if (varonce) {
-var11 = varonce;
+if (unlikely(varonce==NULL)) {
+var10 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce11!=NULL)) {
+var12 = varonce11;
 } else {
-var12 = "BREAK_";
-var13 = 6;
-var14 = standard___standard__NativeString___to_s_with_length(var12, var13);
-var11 = var14;
-varonce = var11;
+var13 = "BREAK_";
+var14 = standard___standard__NativeString___to_s_with_length(var13, 6l);
+var12 = var14;
+varonce11 = var12;
 }
-{
-var15 = nit___nit__AbstractCompilerVisitor___escapemark_name(self, var_e);
+((struct instance_standard__NativeArray*)var10)->values[0]=var12;
+if (likely(varonce15!=NULL)) {
+var16 = varonce15;
+} else {
+var17 = ": (void)0;";
+var18 = standard___standard__NativeString___to_s_with_length(var17, 10l);
+var16 = var18;
+varonce15 = var16;
 }
-if (varonce16) {
-var17 = varonce16;
+((struct instance_standard__NativeArray*)var10)->values[2]=var16;
 } else {
-var18 = ": (void)0;";
-var19 = 10;
-var20 = standard___standard__NativeString___to_s_with_length(var18, var19);
-var17 = var20;
-varonce16 = var17;
+var10 = varonce;
+varonce = NULL;
 }
-var21 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var21 = array_instance Array[Object] */
-var22 = 3;
-var23 = NEW_standard__NativeArray(var22, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var23)->values[0] = (val*) var11;
-((struct instance_standard__NativeArray*)var23)->values[1] = (val*) var15;
-((struct instance_standard__NativeArray*)var23)->values[2] = (val*) var17;
 {
-((void (*)(val* self, val* p0, long p1))(var21->class->vft[COLOR_standard__array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Object]>*/;
-}
+var19 = nit___nit__AbstractCompilerVisitor___escapemark_name(self, var_e);
 }
+((struct instance_standard__NativeArray*)var10)->values[1]=var19;
 {
-var24 = ((val* (*)(val* self))(var21->class->vft[COLOR_standard__string__Object__to_s]))(var21) /* to_s on <var21:Array[Object]>*/;
+var20 = ((val*(*)(val* self))(var10->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var10); /* native_to_s on <var10:NativeArray[String]>*/
 }
+varonce = var10;
 {
-nit___nit__AbstractCompilerVisitor___add(self, var24); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(self, var20); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
 }
 RET_LABEL:;
 }
@@ -8258,8 +7574,8 @@ val* var1 /* : HashMap[Variable, RuntimeVariable] */;
 var1 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___variables].val; /* _variables on <self:AbstractCompilerVisitor> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1330);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1383);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -8275,67 +7591,62 @@ short int var4 /* : Bool */;
 val* var5 /* : HashMap[Variable, RuntimeVariable] */;
 val* var7 /* : HashMap[Variable, RuntimeVariable] */;
 val* var8 /* : nullable Object */;
+val* var9 /* : NativeArray[String] */;
 static val* varonce;
-val* var9 /* : String */;
-char* var10 /* : NativeString */;
-long var11 /* : Int */;
-val* var12 /* : FlatString */;
-val* var13 /* : String */;
-val* var15 /* : String */;
-val* var16 /* : Array[Object] */;
-long var17 /* : Int */;
-val* var18 /* : NativeArray[Object] */;
-val* var19 /* : String */;
-val* var20 /* : String */;
+static val* varonce10;
+val* var11 /* : String */;
+char* var12 /* : NativeString */;
+val* var13 /* : FlatString */;
+val* var14 /* : String */;
+val* var16 /* : String */;
+val* var17 /* : String */;
+val* var18 /* : String */;
 val* var_name /* var name: String */;
+val* var19 /* : nullable MType */;
 val* var21 /* : nullable MType */;
-val* var23 /* : nullable MType */;
 val* var_mtype /* var mtype: MType */;
-val* var24 /* : MType */;
-val* var25 /* : RuntimeVariable */;
+val* var22 /* : MType */;
+val* var23 /* : RuntimeVariable */;
 val* var_res /* var res: RuntimeVariable */;
-val* var26 /* : String */;
-static val* varonce27;
-val* var28 /* : String */;
-char* var29 /* : NativeString */;
-long var30 /* : Int */;
-val* var31 /* : FlatString */;
-static val* varonce32;
-val* var33 /* : String */;
-char* var34 /* : NativeString */;
-long var35 /* : Int */;
-val* var36 /* : FlatString */;
-static val* varonce37;
-val* var38 /* : String */;
-char* var39 /* : NativeString */;
-long var40 /* : Int */;
+val* var25 /* : NativeArray[String] */;
+static val* varonce24;
+static val* varonce26;
+val* var27 /* : String */;
+char* var28 /* : NativeString */;
+val* var29 /* : FlatString */;
+static val* varonce30;
+val* var31 /* : String */;
+char* var32 /* : NativeString */;
+val* var33 /* : FlatString */;
+static val* varonce34;
+val* var35 /* : String */;
+char* var36 /* : NativeString */;
+val* var37 /* : FlatString */;
+static val* varonce38;
+val* var39 /* : String */;
+char* var40 /* : NativeString */;
 val* var41 /* : FlatString */;
-static val* varonce42;
+val* var42 /* : String */;
 val* var43 /* : String */;
-char* var44 /* : NativeString */;
-long var45 /* : Int */;
-val* var46 /* : FlatString */;
-val* var47 /* : Array[Object] */;
-long var48 /* : Int */;
-val* var49 /* : NativeArray[Object] */;
-val* var50 /* : String */;
-val* var51 /* : HashMap[Variable, RuntimeVariable] */;
-val* var53 /* : HashMap[Variable, RuntimeVariable] */;
+val* var44 /* : String */;
+val* var45 /* : String */;
+val* var46 /* : HashMap[Variable, RuntimeVariable] */;
+val* var48 /* : HashMap[Variable, RuntimeVariable] */;
 var_variable = p0;
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#variables (self) on <self:AbstractCompilerVisitor> */
 var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___variables].val; /* _variables on <self:AbstractCompilerVisitor> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1330);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1383);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
 }
 }
 {
-var4 = standard___standard__MapRead___has_key(var1, var_variable);
+var4 = standard___standard__HashMap___standard__abstract_collection__MapRead__has_key(var1, var_variable);
 }
 if (var4){
 {
@@ -8343,8 +7654,8 @@ if (var4){
 var7 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___variables].val; /* _variables on <self:AbstractCompilerVisitor> */
 if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1330);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1383);
+fatal_exit(1);
 }
 var5 = var7;
 RET_LABEL6:(void)0;
@@ -8356,150 +7667,149 @@ var8 = standard___standard__HashMap___standard__abstract_collection__MapRead___9
 var = var8;
 goto RET_LABEL;
 } else {
-if (varonce) {
-var9 = varonce;
+if (unlikely(varonce==NULL)) {
+var9 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce10!=NULL)) {
+var11 = varonce10;
 } else {
-var10 = "var_";
-var11 = 4;
-var12 = standard___standard__NativeString___to_s_with_length(var10, var11);
-var9 = var12;
-varonce = var9;
+var12 = "var_";
+var13 = standard___standard__NativeString___to_s_with_length(var12, 4l);
+var11 = var13;
+varonce10 = var11;
+}
+((struct instance_standard__NativeArray*)var9)->values[0]=var11;
+} else {
+var9 = varonce;
+varonce = NULL;
 }
 {
 { /* Inline scope#Variable#name (var_variable) on <var_variable:Variable> */
-var15 = var_variable->attrs[COLOR_nit__scope__Variable___name].val; /* _name on <var_variable:Variable> */
-if (unlikely(var15 == NULL)) {
+var16 = var_variable->attrs[COLOR_nit__scope__Variable___name].val; /* _name on <var_variable:Variable> */
+if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__scope, 35);
-show_backtrace(1);
-}
-var13 = var15;
-RET_LABEL14:(void)0;
+fatal_exit(1);
 }
-}
-var16 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var16 = array_instance Array[Object] */
-var17 = 2;
-var18 = NEW_standard__NativeArray(var17, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var18)->values[0] = (val*) var9;
-((struct instance_standard__NativeArray*)var18)->values[1] = (val*) var13;
-{
-((void (*)(val* self, val* p0, long p1))(var16->class->vft[COLOR_standard__array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
+var14 = var16;
+RET_LABEL15:(void)0;
 }
 }
+((struct instance_standard__NativeArray*)var9)->values[1]=var14;
 {
-var19 = ((val* (*)(val* self))(var16->class->vft[COLOR_standard__string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
+var17 = ((val*(*)(val* self))(var9->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var9); /* native_to_s on <var9:NativeArray[String]>*/
 }
+varonce = var9;
 {
-var20 = nit___nit__AbstractCompilerVisitor___get_name(self, var19);
+var18 = nit___nit__AbstractCompilerVisitor___get_name(self, var17);
 }
-var_name = var20;
+var_name = var18;
 {
 { /* Inline typing#Variable#declared_type (var_variable) on <var_variable:Variable> */
-var23 = var_variable->attrs[COLOR_nit__typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
-var21 = var23;
-RET_LABEL22:(void)0;
+var21 = var_variable->attrs[COLOR_nit__typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
+var19 = var21;
+RET_LABEL20:(void)0;
 }
 }
-if (unlikely(var21 == NULL)) {
+if (unlikely(var19 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1339);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1392);
+fatal_exit(1);
 }
-var_mtype = var21;
+var_mtype = var19;
 {
-var24 = nit___nit__AbstractCompilerVisitor___anchor(self, var_mtype);
+var22 = nit___nit__AbstractCompilerVisitor___anchor(self, var_mtype);
 }
-var_mtype = var24;
-var25 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
+var_mtype = var22;
+var23 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
 {
-((void (*)(val* self, val* p0))(var25->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var25, var_name) /* name= on <var25:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var23->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var23, var_name); /* name= on <var23:RuntimeVariable>*/
 }
 {
-((void (*)(val* self, val* p0))(var25->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var25, var_mtype) /* mtype= on <var25:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var23->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var23, var_mtype); /* mtype= on <var23:RuntimeVariable>*/
 }
 {
-((void (*)(val* self, val* p0))(var25->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var25, var_mtype) /* mcasttype= on <var25:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var23->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var23, var_mtype); /* mcasttype= on <var23:RuntimeVariable>*/
 }
 {
-((void (*)(val* self))(var25->class->vft[COLOR_standard__kernel__Object__init]))(var25) /* init on <var25:RuntimeVariable>*/;
+((void(*)(val* self))(var23->class->vft[COLOR_standard__kernel__Object__init]))(var23); /* init on <var23:RuntimeVariable>*/
 }
-var_res = var25;
-{
-var26 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
+var_res = var23;
+if (unlikely(varonce24==NULL)) {
+var25 = NEW_standard__NativeArray(8l, &type_standard__NativeArray__standard__String);
+if (likely(varonce26!=NULL)) {
+var27 = varonce26;
+} else {
+var28 = " ";
+var29 = standard___standard__NativeString___to_s_with_length(var28, 1l);
+var27 = var29;
+varonce26 = var27;
 }
-if (varonce27) {
-var28 = varonce27;
+((struct instance_standard__NativeArray*)var25)->values[1]=var27;
+if (likely(varonce30!=NULL)) {
+var31 = varonce30;
 } else {
-var29 = " ";
-var30 = 1;
-var31 = standard___standard__NativeString___to_s_with_length(var29, var30);
-var28 = var31;
-varonce27 = var28;
+var32 = " /* var ";
+var33 = standard___standard__NativeString___to_s_with_length(var32, 8l);
+var31 = var33;
+varonce30 = var31;
 }
-if (varonce32) {
-var33 = varonce32;
+((struct instance_standard__NativeArray*)var25)->values[3]=var31;
+if (likely(varonce34!=NULL)) {
+var35 = varonce34;
 } else {
-var34 = " /* var ";
-var35 = 8;
-var36 = standard___standard__NativeString___to_s_with_length(var34, var35);
-var33 = var36;
-varonce32 = var33;
+var36 = ": ";
+var37 = standard___standard__NativeString___to_s_with_length(var36, 2l);
+var35 = var37;
+varonce34 = var35;
 }
-if (varonce37) {
-var38 = varonce37;
+((struct instance_standard__NativeArray*)var25)->values[5]=var35;
+if (likely(varonce38!=NULL)) {
+var39 = varonce38;
 } else {
-var39 = ": ";
-var40 = 2;
-var41 = standard___standard__NativeString___to_s_with_length(var39, var40);
-var38 = var41;
-varonce37 = var38;
+var40 = " */;";
+var41 = standard___standard__NativeString___to_s_with_length(var40, 4l);
+var39 = var41;
+varonce38 = var39;
 }
-if (varonce42) {
-var43 = varonce42;
+((struct instance_standard__NativeArray*)var25)->values[7]=var39;
 } else {
-var44 = " */;";
-var45 = 4;
-var46 = standard___standard__NativeString___to_s_with_length(var44, var45);
-var43 = var46;
-varonce42 = var43;
+var25 = varonce24;
+varonce24 = NULL;
+}
+{
+var42 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var_mtype); /* ctype on <var_mtype:MType>*/
 }
-var47 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var47 = array_instance Array[Object] */
-var48 = 8;
-var49 = NEW_standard__NativeArray(var48, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var49)->values[0] = (val*) var26;
-((struct instance_standard__NativeArray*)var49)->values[1] = (val*) var28;
-((struct instance_standard__NativeArray*)var49)->values[2] = (val*) var_name;
-((struct instance_standard__NativeArray*)var49)->values[3] = (val*) var33;
-((struct instance_standard__NativeArray*)var49)->values[4] = (val*) var_variable;
-((struct instance_standard__NativeArray*)var49)->values[5] = (val*) var38;
-((struct instance_standard__NativeArray*)var49)->values[6] = (val*) var_mtype;
-((struct instance_standard__NativeArray*)var49)->values[7] = (val*) var43;
+((struct instance_standard__NativeArray*)var25)->values[0]=var42;
+((struct instance_standard__NativeArray*)var25)->values[2]=var_name;
 {
-((void (*)(val* self, val* p0, long p1))(var47->class->vft[COLOR_standard__array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[Object]>*/;
+var43 = ((val*(*)(val* self))(var_variable->class->vft[COLOR_standard__string__Object__to_s]))(var_variable); /* to_s on <var_variable:Variable>*/
 }
+((struct instance_standard__NativeArray*)var25)->values[4]=var43;
+{
+var44 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
 }
+((struct instance_standard__NativeArray*)var25)->values[6]=var44;
 {
-var50 = ((val* (*)(val* self))(var47->class->vft[COLOR_standard__string__Object__to_s]))(var47) /* to_s on <var47:Array[Object]>*/;
+var45 = ((val*(*)(val* self))(var25->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var25); /* native_to_s on <var25:NativeArray[String]>*/
 }
+varonce24 = var25;
 {
-nit___nit__AbstractCompilerVisitor___add_decl(self, var50); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(self, var45); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:AbstractCompilerVisitor>*/
 }
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#variables (self) on <self:AbstractCompilerVisitor> */
-var53 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___variables].val; /* _variables on <self:AbstractCompilerVisitor> */
-if (unlikely(var53 == NULL)) {
+var48 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___variables].val; /* _variables on <self:AbstractCompilerVisitor> */
+if (unlikely(var48 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _variables");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1330);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1383);
+fatal_exit(1);
 }
-var51 = var53;
-RET_LABEL52:(void)0;
+var46 = var48;
+RET_LABEL47:(void)0;
 }
 }
 {
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var51, var_variable, var_res); /* Direct call hash_collection#HashMap#[]= on <var51:HashMap[Variable, RuntimeVariable]>*/
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var46, var_variable, var_res); /* Direct call hash_collection#HashMap#[]= on <var46:HashMap[Variable, RuntimeVariable]>*/
 }
 var = var_res;
 goto RET_LABEL;
@@ -8515,113 +7825,107 @@ val* var1 /* : MType */;
 static val* varonce;
 val* var2 /* : String */;
 char* var3 /* : NativeString */;
-long var4 /* : Int */;
-val* var5 /* : FlatString */;
-val* var6 /* : String */;
+val* var4 /* : FlatString */;
+val* var5 /* : String */;
 val* var_name /* var name: String */;
-val* var7 /* : RuntimeVariable */;
+val* var6 /* : RuntimeVariable */;
 val* var_res /* var res: RuntimeVariable */;
-val* var8 /* : String */;
+val* var8 /* : NativeArray[String] */;
+static val* varonce7;
 static val* varonce9;
 val* var10 /* : String */;
 char* var11 /* : NativeString */;
-long var12 /* : Int */;
-val* var13 /* : FlatString */;
-static val* varonce14;
-val* var15 /* : String */;
-char* var16 /* : NativeString */;
-long var17 /* : Int */;
-val* var18 /* : FlatString */;
-static val* varonce19;
-val* var20 /* : String */;
-char* var21 /* : NativeString */;
-long var22 /* : Int */;
-val* var23 /* : FlatString */;
-val* var24 /* : Array[Object] */;
-long var25 /* : Int */;
-val* var26 /* : NativeArray[Object] */;
-val* var27 /* : String */;
+val* var12 /* : FlatString */;
+static val* varonce13;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
+val* var16 /* : FlatString */;
+static val* varonce17;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+val* var20 /* : FlatString */;
+val* var21 /* : String */;
+val* var22 /* : String */;
+val* var23 /* : String */;
 var_mtype = p0;
 {
 var1 = nit___nit__AbstractCompilerVisitor___anchor(self, var_mtype);
 }
 var_mtype = var1;
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var2 = varonce;
 } else {
 var3 = "var";
-var4 = 3;
-var5 = standard___standard__NativeString___to_s_with_length(var3, var4);
-var2 = var5;
+var4 = standard___standard__NativeString___to_s_with_length(var3, 3l);
+var2 = var4;
 varonce = var2;
 }
 {
-var6 = nit___nit__AbstractCompilerVisitor___get_name(self, var2);
-}
-var_name = var6;
-var7 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
-{
-((void (*)(val* self, val* p0))(var7->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var7, var_name) /* name= on <var7:RuntimeVariable>*/;
+var5 = nit___nit__AbstractCompilerVisitor___get_name(self, var2);
 }
+var_name = var5;
+var6 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
 {
-((void (*)(val* self, val* p0))(var7->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var7, var_mtype) /* mtype= on <var7:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var6->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var6, var_name); /* name= on <var6:RuntimeVariable>*/
 }
 {
-((void (*)(val* self, val* p0))(var7->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var7, var_mtype) /* mcasttype= on <var7:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var6->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var6, var_mtype); /* mtype= on <var6:RuntimeVariable>*/
 }
 {
-((void (*)(val* self))(var7->class->vft[COLOR_standard__kernel__Object__init]))(var7) /* init on <var7:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var6->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var6, var_mtype); /* mcasttype= on <var6:RuntimeVariable>*/
 }
-var_res = var7;
 {
-var8 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
+((void(*)(val* self))(var6->class->vft[COLOR_standard__kernel__Object__init]))(var6); /* init on <var6:RuntimeVariable>*/
 }
-if (varonce9) {
+var_res = var6;
+if (unlikely(varonce7==NULL)) {
+var8 = NEW_standard__NativeArray(6l, &type_standard__NativeArray__standard__String);
+if (likely(varonce9!=NULL)) {
 var10 = varonce9;
 } else {
 var11 = " ";
-var12 = 1;
-var13 = standard___standard__NativeString___to_s_with_length(var11, var12);
-var10 = var13;
+var12 = standard___standard__NativeString___to_s_with_length(var11, 1l);
+var10 = var12;
 varonce9 = var10;
 }
-if (varonce14) {
-var15 = varonce14;
+((struct instance_standard__NativeArray*)var8)->values[1]=var10;
+if (likely(varonce13!=NULL)) {
+var14 = varonce13;
+} else {
+var15 = " /* : ";
+var16 = standard___standard__NativeString___to_s_with_length(var15, 6l);
+var14 = var16;
+varonce13 = var14;
+}
+((struct instance_standard__NativeArray*)var8)->values[3]=var14;
+if (likely(varonce17!=NULL)) {
+var18 = varonce17;
 } else {
-var16 = " /* : ";
-var17 = 6;
-var18 = standard___standard__NativeString___to_s_with_length(var16, var17);
-var15 = var18;
-varonce14 = var15;
+var19 = " */;";
+var20 = standard___standard__NativeString___to_s_with_length(var19, 4l);
+var18 = var20;
+varonce17 = var18;
 }
-if (varonce19) {
-var20 = varonce19;
+((struct instance_standard__NativeArray*)var8)->values[5]=var18;
 } else {
-var21 = " */;";
-var22 = 4;
-var23 = standard___standard__NativeString___to_s_with_length(var21, var22);
-var20 = var23;
-varonce19 = var20;
+var8 = varonce7;
+varonce7 = NULL;
 }
-var24 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var24 = array_instance Array[Object] */
-var25 = 6;
-var26 = NEW_standard__NativeArray(var25, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var26)->values[0] = (val*) var8;
-((struct instance_standard__NativeArray*)var26)->values[1] = (val*) var10;
-((struct instance_standard__NativeArray*)var26)->values[2] = (val*) var_name;
-((struct instance_standard__NativeArray*)var26)->values[3] = (val*) var15;
-((struct instance_standard__NativeArray*)var26)->values[4] = (val*) var_mtype;
-((struct instance_standard__NativeArray*)var26)->values[5] = (val*) var20;
 {
-((void (*)(val* self, val* p0, long p1))(var24->class->vft[COLOR_standard__array__Array__with_native]))(var24, var26, var25) /* with_native on <var24:Array[Object]>*/;
+var21 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var_mtype); /* ctype on <var_mtype:MType>*/
 }
+((struct instance_standard__NativeArray*)var8)->values[0]=var21;
+((struct instance_standard__NativeArray*)var8)->values[2]=var_name;
+{
+var22 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
 }
+((struct instance_standard__NativeArray*)var8)->values[4]=var22;
 {
-var27 = ((val* (*)(val* self))(var24->class->vft[COLOR_standard__string__Object__to_s]))(var24) /* to_s on <var24:Array[Object]>*/;
+var23 = ((val*(*)(val* self))(var8->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var8); /* native_to_s on <var8:NativeArray[String]>*/
 }
+varonce7 = var8;
 {
-nit___nit__AbstractCompilerVisitor___add_decl(self, var27); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(self, var23); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:AbstractCompilerVisitor>*/
 }
 var = var_res;
 goto RET_LABEL;
@@ -8636,113 +7940,107 @@ val* var1 /* : MType */;
 static val* varonce;
 val* var2 /* : String */;
 char* var3 /* : NativeString */;
-long var4 /* : Int */;
-val* var5 /* : FlatString */;
-val* var6 /* : String */;
+val* var4 /* : FlatString */;
+val* var5 /* : String */;
 val* var_name /* var name: String */;
-val* var7 /* : RuntimeVariable */;
+val* var6 /* : RuntimeVariable */;
 val* var_res /* var res: RuntimeVariable */;
-val* var8 /* : String */;
+val* var8 /* : NativeArray[String] */;
+static val* varonce7;
 static val* varonce9;
 val* var10 /* : String */;
 char* var11 /* : NativeString */;
-long var12 /* : Int */;
-val* var13 /* : FlatString */;
-static val* varonce14;
-val* var15 /* : String */;
-char* var16 /* : NativeString */;
-long var17 /* : Int */;
-val* var18 /* : FlatString */;
-static val* varonce19;
-val* var20 /* : String */;
-char* var21 /* : NativeString */;
-long var22 /* : Int */;
-val* var23 /* : FlatString */;
-val* var24 /* : Array[Object] */;
-long var25 /* : Int */;
-val* var26 /* : NativeArray[Object] */;
-val* var27 /* : String */;
+val* var12 /* : FlatString */;
+static val* varonce13;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
+val* var16 /* : FlatString */;
+static val* varonce17;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+val* var20 /* : FlatString */;
+val* var21 /* : String */;
+val* var22 /* : String */;
+val* var23 /* : String */;
 var_mtype = p0;
 {
 var1 = nit___nit__AbstractCompilerVisitor___anchor(self, var_mtype);
 }
 var_mtype = var1;
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var2 = varonce;
 } else {
 var3 = "var";
-var4 = 3;
-var5 = standard___standard__NativeString___to_s_with_length(var3, var4);
-var2 = var5;
+var4 = standard___standard__NativeString___to_s_with_length(var3, 3l);
+var2 = var4;
 varonce = var2;
 }
 {
-var6 = nit___nit__AbstractCompilerVisitor___get_name(self, var2);
-}
-var_name = var6;
-var7 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
-{
-((void (*)(val* self, val* p0))(var7->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var7, var_name) /* name= on <var7:RuntimeVariable>*/;
+var5 = nit___nit__AbstractCompilerVisitor___get_name(self, var2);
 }
+var_name = var5;
+var6 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
 {
-((void (*)(val* self, val* p0))(var7->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var7, var_mtype) /* mtype= on <var7:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var6->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var6, var_name); /* name= on <var6:RuntimeVariable>*/
 }
 {
-((void (*)(val* self, val* p0))(var7->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var7, var_mtype) /* mcasttype= on <var7:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var6->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var6, var_mtype); /* mtype= on <var6:RuntimeVariable>*/
 }
 {
-((void (*)(val* self))(var7->class->vft[COLOR_standard__kernel__Object__init]))(var7) /* init on <var7:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var6->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var6, var_mtype); /* mcasttype= on <var6:RuntimeVariable>*/
 }
-var_res = var7;
 {
-var8 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__abstract_compiler__MType__ctype_extern]))(var_mtype) /* ctype_extern on <var_mtype:MType>*/;
+((void(*)(val* self))(var6->class->vft[COLOR_standard__kernel__Object__init]))(var6); /* init on <var6:RuntimeVariable>*/
 }
-if (varonce9) {
+var_res = var6;
+if (unlikely(varonce7==NULL)) {
+var8 = NEW_standard__NativeArray(6l, &type_standard__NativeArray__standard__String);
+if (likely(varonce9!=NULL)) {
 var10 = varonce9;
 } else {
 var11 = " ";
-var12 = 1;
-var13 = standard___standard__NativeString___to_s_with_length(var11, var12);
-var10 = var13;
+var12 = standard___standard__NativeString___to_s_with_length(var11, 1l);
+var10 = var12;
 varonce9 = var10;
 }
-if (varonce14) {
-var15 = varonce14;
+((struct instance_standard__NativeArray*)var8)->values[1]=var10;
+if (likely(varonce13!=NULL)) {
+var14 = varonce13;
 } else {
-var16 = " /* : ";
-var17 = 6;
-var18 = standard___standard__NativeString___to_s_with_length(var16, var17);
-var15 = var18;
-varonce14 = var15;
+var15 = " /* : ";
+var16 = standard___standard__NativeString___to_s_with_length(var15, 6l);
+var14 = var16;
+varonce13 = var14;
 }
-if (varonce19) {
-var20 = varonce19;
+((struct instance_standard__NativeArray*)var8)->values[3]=var14;
+if (likely(varonce17!=NULL)) {
+var18 = varonce17;
+} else {
+var19 = " for extern */;";
+var20 = standard___standard__NativeString___to_s_with_length(var19, 15l);
+var18 = var20;
+varonce17 = var18;
+}
+((struct instance_standard__NativeArray*)var8)->values[5]=var18;
 } else {
-var21 = " for extern */;";
-var22 = 15;
-var23 = standard___standard__NativeString___to_s_with_length(var21, var22);
-var20 = var23;
-varonce19 = var20;
+var8 = varonce7;
+varonce7 = NULL;
 }
-var24 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var24 = array_instance Array[Object] */
-var25 = 6;
-var26 = NEW_standard__NativeArray(var25, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var26)->values[0] = (val*) var8;
-((struct instance_standard__NativeArray*)var26)->values[1] = (val*) var10;
-((struct instance_standard__NativeArray*)var26)->values[2] = (val*) var_name;
-((struct instance_standard__NativeArray*)var26)->values[3] = (val*) var15;
-((struct instance_standard__NativeArray*)var26)->values[4] = (val*) var_mtype;
-((struct instance_standard__NativeArray*)var26)->values[5] = (val*) var20;
 {
-((void (*)(val* self, val* p0, long p1))(var24->class->vft[COLOR_standard__array__Array__with_native]))(var24, var26, var25) /* with_native on <var24:Array[Object]>*/;
+var21 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__abstract_compiler__MType__ctype_extern]))(var_mtype); /* ctype_extern on <var_mtype:MType>*/
 }
+((struct instance_standard__NativeArray*)var8)->values[0]=var21;
+((struct instance_standard__NativeArray*)var8)->values[2]=var_name;
+{
+var22 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
 }
+((struct instance_standard__NativeArray*)var8)->values[4]=var22;
 {
-var27 = ((val* (*)(val* self))(var24->class->vft[COLOR_standard__string__Object__to_s]))(var24) /* to_s on <var24:Array[Object]>*/;
+var23 = ((val*(*)(val* self))(var8->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var8); /* native_to_s on <var8:NativeArray[String]>*/
 }
+varonce7 = var8;
 {
-nit___nit__AbstractCompilerVisitor___add_decl(self, var27); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(self, var23); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:AbstractCompilerVisitor>*/
 }
 var = var_res;
 goto RET_LABEL;
@@ -8757,26 +8055,23 @@ val* var_name /* var name: String */;
 val* var1 /* : MType */;
 val* var2 /* : RuntimeVariable */;
 val* var_res /* var res: RuntimeVariable */;
-val* var3 /* : String */;
+val* var3 /* : NativeArray[String] */;
 static val* varonce;
-val* var4 /* : String */;
-char* var5 /* : NativeString */;
-long var6 /* : Int */;
+static val* varonce4;
+val* var5 /* : String */;
+char* var6 /* : NativeString */;
 val* var7 /* : FlatString */;
 static val* varonce8;
 val* var9 /* : String */;
 char* var10 /* : NativeString */;
-long var11 /* : Int */;
-val* var12 /* : FlatString */;
-static val* varonce13;
-val* var14 /* : String */;
-char* var15 /* : NativeString */;
-long var16 /* : Int */;
-val* var17 /* : FlatString */;
-val* var18 /* : Array[Object] */;
-long var19 /* : Int */;
-val* var20 /* : NativeArray[Object] */;
-val* var21 /* : String */;
+val* var11 /* : FlatString */;
+static val* varonce12;
+val* var13 /* : String */;
+char* var14 /* : NativeString */;
+val* var15 /* : FlatString */;
+val* var16 /* : String */;
+val* var17 /* : String */;
+val* var18 /* : String */;
 var_mtype = p0;
 var_name = p1;
 {
@@ -8785,67 +8080,66 @@ var1 = nit___nit__AbstractCompilerVisitor___anchor(self, var_mtype);
 var_mtype = var1;
 var2 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
 {
-((void (*)(val* self, val* p0))(var2->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var2, var_name) /* name= on <var2:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var2->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var2, var_name); /* name= on <var2:RuntimeVariable>*/
 }
 {
-((void (*)(val* self, val* p0))(var2->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var2, var_mtype) /* mtype= on <var2:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var2->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var2, var_mtype); /* mtype= on <var2:RuntimeVariable>*/
 }
 {
-((void (*)(val* self, val* p0))(var2->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var2, var_mtype) /* mcasttype= on <var2:RuntimeVariable>*/;
+((void(*)(val* self, val* p0))(var2->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var2, var_mtype); /* mcasttype= on <var2:RuntimeVariable>*/
 }
 {
-((void (*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2) /* init on <var2:RuntimeVariable>*/;
+((void(*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2); /* init on <var2:RuntimeVariable>*/
 }
 var_res = var2;
-{
-var3 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
-}
-if (varonce) {
-var4 = varonce;
+if (unlikely(varonce==NULL)) {
+var3 = NEW_standard__NativeArray(6l, &type_standard__NativeArray__standard__String);
+if (likely(varonce4!=NULL)) {
+var5 = varonce4;
 } else {
-var5 = " ";
-var6 = 1;
-var7 = standard___standard__NativeString___to_s_with_length(var5, var6);
-var4 = var7;
-varonce = var4;
+var6 = " ";
+var7 = standard___standard__NativeString___to_s_with_length(var6, 1l);
+var5 = var7;
+varonce4 = var5;
 }
-if (varonce8) {
+((struct instance_standard__NativeArray*)var3)->values[1]=var5;
+if (likely(varonce8!=NULL)) {
 var9 = varonce8;
 } else {
 var10 = " /* : ";
-var11 = 6;
-var12 = standard___standard__NativeString___to_s_with_length(var10, var11);
-var9 = var12;
+var11 = standard___standard__NativeString___to_s_with_length(var10, 6l);
+var9 = var11;
 varonce8 = var9;
 }
-if (varonce13) {
-var14 = varonce13;
+((struct instance_standard__NativeArray*)var3)->values[3]=var9;
+if (likely(varonce12!=NULL)) {
+var13 = varonce12;
 } else {
-var15 = " */;";
-var16 = 4;
-var17 = standard___standard__NativeString___to_s_with_length(var15, var16);
-var14 = var17;
-varonce13 = var14;
+var14 = " */;";
+var15 = standard___standard__NativeString___to_s_with_length(var14, 4l);
+var13 = var15;
+varonce12 = var13;
+}
+((struct instance_standard__NativeArray*)var3)->values[5]=var13;
+} else {
+var3 = varonce;
+varonce = NULL;
 }
-var18 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var18 = array_instance Array[Object] */
-var19 = 6;
-var20 = NEW_standard__NativeArray(var19, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var20)->values[0] = (val*) var3;
-((struct instance_standard__NativeArray*)var20)->values[1] = (val*) var4;
-((struct instance_standard__NativeArray*)var20)->values[2] = (val*) var_name;
-((struct instance_standard__NativeArray*)var20)->values[3] = (val*) var9;
-((struct instance_standard__NativeArray*)var20)->values[4] = (val*) var_mtype;
-((struct instance_standard__NativeArray*)var20)->values[5] = (val*) var14;
 {
-((void (*)(val* self, val* p0, long p1))(var18->class->vft[COLOR_standard__array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
+var16 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var_mtype); /* ctype on <var_mtype:MType>*/
 }
+((struct instance_standard__NativeArray*)var3)->values[0]=var16;
+((struct instance_standard__NativeArray*)var3)->values[2]=var_name;
+{
+var17 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
 }
+((struct instance_standard__NativeArray*)var3)->values[4]=var17;
 {
-var21 = ((val* (*)(val* self))(var18->class->vft[COLOR_standard__string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
+var18 = ((val*(*)(val* self))(var3->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var3); /* native_to_s on <var3:NativeArray[String]>*/
 }
+varonce = var3;
 {
-nit___nit__AbstractCompilerVisitor___add_decl(self, var21); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add_decl(self, var18); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:AbstractCompilerVisitor>*/
 }
 var = var_res;
 goto RET_LABEL;
@@ -8859,20 +8153,19 @@ val* var_right /* var right: RuntimeVariable */;
 val* var /* : MType */;
 val* var2 /* : MType */;
 val* var3 /* : RuntimeVariable */;
+val* var4 /* : NativeArray[String] */;
 static val* varonce;
-val* var4 /* : String */;
-char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : FlatString */;
-static val* varonce8;
-val* var9 /* : String */;
-char* var10 /* : NativeString */;
-long var11 /* : Int */;
+static val* varonce5;
+val* var6 /* : String */;
+char* var7 /* : NativeString */;
+val* var8 /* : FlatString */;
+static val* varonce9;
+val* var10 /* : String */;
+char* var11 /* : NativeString */;
 val* var12 /* : FlatString */;
-val* var13 /* : Array[Object] */;
-long var14 /* : Int */;
-val* var15 /* : NativeArray[Object] */;
-val* var16 /* : String */;
+val* var13 /* : String */;
+val* var14 /* : String */;
+val* var15 /* : String */;
 var_left = p0;
 var_right = p1;
 {
@@ -8880,8 +8173,8 @@ var_right = p1;
 var2 = var_left->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_left:RuntimeVariable> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1784);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -8891,41 +8184,44 @@ RET_LABEL1:(void)0;
 var3 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__autobox(self, var_right, var);
 }
 var_right = var3;
-if (varonce) {
-var4 = varonce;
+if (unlikely(varonce==NULL)) {
+var4 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
+if (likely(varonce5!=NULL)) {
+var6 = varonce5;
 } else {
-var5 = " = ";
-var6 = 3;
-var7 = standard___standard__NativeString___to_s_with_length(var5, var6);
-var4 = var7;
-varonce = var4;
+var7 = " = ";
+var8 = standard___standard__NativeString___to_s_with_length(var7, 3l);
+var6 = var8;
+varonce5 = var6;
 }
-if (varonce8) {
-var9 = varonce8;
+((struct instance_standard__NativeArray*)var4)->values[1]=var6;
+if (likely(varonce9!=NULL)) {
+var10 = varonce9;
 } else {
-var10 = ";";
-var11 = 1;
-var12 = standard___standard__NativeString___to_s_with_length(var10, var11);
-var9 = var12;
-varonce8 = var9;
+var11 = ";";
+var12 = standard___standard__NativeString___to_s_with_length(var11, 1l);
+var10 = var12;
+varonce9 = var10;
+}
+((struct instance_standard__NativeArray*)var4)->values[3]=var10;
+} else {
+var4 = varonce;
+varonce = NULL;
 }
-var13 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var13 = array_instance Array[Object] */
-var14 = 4;
-var15 = NEW_standard__NativeArray(var14, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var15)->values[0] = (val*) var_left;
-((struct instance_standard__NativeArray*)var15)->values[1] = (val*) var4;
-((struct instance_standard__NativeArray*)var15)->values[2] = (val*) var_right;
-((struct instance_standard__NativeArray*)var15)->values[3] = (val*) var9;
 {
-((void (*)(val* self, val* p0, long p1))(var13->class->vft[COLOR_standard__array__Array__with_native]))(var13, var15, var14) /* with_native on <var13:Array[Object]>*/;
+var13 = ((val*(*)(val* self))(var_left->class->vft[COLOR_standard__string__Object__to_s]))(var_left); /* to_s on <var_left:RuntimeVariable>*/
 }
+((struct instance_standard__NativeArray*)var4)->values[0]=var13;
+{
+var14 = ((val*(*)(val* self))(var_right->class->vft[COLOR_standard__string__Object__to_s]))(var_right); /* to_s on <var_right:RuntimeVariable>*/
 }
+((struct instance_standard__NativeArray*)var4)->values[2]=var14;
 {
-var16 = ((val* (*)(val* self))(var13->class->vft[COLOR_standard__string__Object__to_s]))(var13) /* to_s on <var13:Array[Object]>*/;
+var15 = ((val*(*)(val* self))(var4->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var4); /* native_to_s on <var4:NativeArray[String]>*/
 }
+varonce = var4;
 {
-nit___nit__AbstractCompilerVisitor___add(self, var16); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(self, var15); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
 }
 RET_LABEL:;
 }
@@ -8942,47 +8238,37 @@ val* var7 /* : String */;
 static val* varonce;
 val* var8 /* : String */;
 char* var9 /* : NativeString */;
-long var10 /* : Int */;
-val* var11 /* : FlatString */;
-short int var12 /* : Bool */;
+val* var10 /* : FlatString */;
+short int var11 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var13 /* : Bool */;
 short int var14 /* : Bool */;
 short int var15 /* : Bool */;
-static val* varonce16;
-val* var17 /* : String */;
-char* var18 /* : NativeString */;
-long var19 /* : Int */;
-val* var20 /* : FlatString */;
-short int var21 /* : Bool */;
-val* var22 /* : RuntimeVariable */;
+short int var16 /* : Bool */;
+val* var17 /* : RuntimeVariable */;
 val* var_recv /* var recv: nullable Object */;
+static val* varonce18;
+val* var19 /* : String */;
+char* var20 /* : NativeString */;
+val* var21 /* : FlatString */;
+short int var22 /* : Bool */;
 static val* varonce23;
 val* var24 /* : String */;
 char* var25 /* : NativeString */;
-long var26 /* : Int */;
-val* var27 /* : FlatString */;
-short int var28 /* : Bool */;
-static val* varonce29;
-val* var30 /* : String */;
-char* var31 /* : NativeString */;
-long var32 /* : Int */;
+val* var26 /* : FlatString */;
+val* var27 /* : RuntimeVariable */;
+val* var29 /* : NativeArray[String] */;
+static val* varonce28;
+static val* varonce30;
+val* var31 /* : String */;
+char* var32 /* : NativeString */;
 val* var33 /* : FlatString */;
-val* var34 /* : RuntimeVariable */;
-static val* varonce35;
-val* var36 /* : String */;
-char* var37 /* : NativeString */;
-long var38 /* : Int */;
-val* var39 /* : FlatString */;
-static val* varonce40;
-val* var41 /* : String */;
-char* var42 /* : NativeString */;
-long var43 /* : Int */;
-val* var44 /* : FlatString */;
-val* var45 /* : Array[Object] */;
-long var46 /* : Int */;
-val* var47 /* : NativeArray[Object] */;
-val* var48 /* : String */;
-val* var49 /* : RuntimeVariable */;
+static val* varonce34;
+val* var35 /* : String */;
+char* var36 /* : NativeString */;
+val* var37 /* : FlatString */;
+val* var38 /* : String */;
+val* var39 /* : RuntimeVariable */;
 var_mtype = p0;
 {
 var1 = nit__abstract_compiler___MClassType___MType__ctype(var_mtype);
@@ -8993,8 +8279,8 @@ var_ctype = var1;
 var4 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
 if (unlikely(var4 == 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);
 }
 var2 = var4;
 RET_LABEL3:(void)0;
@@ -9005,120 +8291,106 @@ RET_LABEL3:(void)0;
 var7 = var2->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var2:MClass> */
 if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 348);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
+fatal_exit(1);
 }
 var5 = var7;
 RET_LABEL6:(void)0;
 }
 }
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var8 = varonce;
 } else {
 var9 = "NativeArray";
-var10 = 11;
-var11 = standard___standard__NativeString___to_s_with_length(var9, var10);
-var8 = var11;
+var10 = standard___standard__NativeString___to_s_with_length(var9, 11l);
+var8 = var10;
 varonce = var8;
 }
 {
 { /* Inline kernel#Object#!= (var5,var8) on <var5:String> */
 var_other = var8;
 {
-var14 = ((short int (*)(val* self, val* p0))(var5->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var5, var_other) /* == on <var5:String>*/;
+var13 = ((short int(*)(val* self, val* p0))(var5->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var5, var_other); /* == on <var5:String>*/
 }
-var15 = !var14;
-var12 = var15;
-goto RET_LABEL13;
-RET_LABEL13:(void)0;
+var14 = !var13;
+var11 = var14;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
 }
 }
-if (unlikely(!var12)) {
+if (unlikely(!var11)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1397);
-show_backtrace(1);
-}
-if (varonce16) {
-var17 = varonce16;
-} else {
-var18 = "val*";
-var19 = 4;
-var20 = standard___standard__NativeString___to_s_with_length(var18, var19);
-var17 = var20;
-varonce16 = var17;
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1450);
+fatal_exit(1);
 }
 {
-var21 = ((short int (*)(val* self, val* p0))(var_ctype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ctype, var17) /* == on <var_ctype:String>*/;
+var15 = nit__abstract_compiler___MClassType___MType__is_c_primitive(var_mtype);
 }
-if (var21){
+var16 = !var15;
+if (var16){
 {
-var22 = ((val* (*)(val* self, val* p0))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompilerVisitor__init_instance]))(self, var_mtype) /* init_instance on <self:AbstractCompilerVisitor>*/;
+var17 = ((val*(*)(val* self, val* p0))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompilerVisitor__init_instance]))(self, var_mtype); /* init_instance on <self:AbstractCompilerVisitor>*/
 }
-var_recv = var22;
+var_recv = var17;
 } else {
-if (varonce23) {
-var24 = varonce23;
+if (likely(varonce18!=NULL)) {
+var19 = varonce18;
 } else {
-var25 = "char*";
-var26 = 5;
-var27 = standard___standard__NativeString___to_s_with_length(var25, var26);
-var24 = var27;
-varonce23 = var24;
+var20 = "char*";
+var21 = standard___standard__NativeString___to_s_with_length(var20, 5l);
+var19 = var21;
+varonce18 = var19;
 }
 {
-var28 = ((short int (*)(val* self, val* p0))(var_ctype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ctype, var24) /* == on <var_ctype:String>*/;
+var22 = ((short int(*)(val* self, val* p0))(var_ctype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ctype, var19); /* == on <var_ctype:String>*/
 }
-if (var28){
-if (varonce29) {
-var30 = varonce29;
+if (var22){
+if (likely(varonce23!=NULL)) {
+var24 = varonce23;
 } else {
-var31 = "NULL/*special!*/";
-var32 = 16;
-var33 = standard___standard__NativeString___to_s_with_length(var31, var32);
-var30 = var33;
-varonce29 = var30;
+var25 = "NULL/*special!*/";
+var26 = standard___standard__NativeString___to_s_with_length(var25, 16l);
+var24 = var26;
+varonce23 = var24;
 }
 {
-var34 = nit___nit__AbstractCompilerVisitor___new_expr(self, var30, var_mtype);
+var27 = nit___nit__AbstractCompilerVisitor___new_expr(self, var24, var_mtype);
 }
-var_recv = var34;
+var_recv = var27;
 } else {
-if (varonce35) {
-var36 = varonce35;
+if (unlikely(varonce28==NULL)) {
+var29 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce30!=NULL)) {
+var31 = varonce30;
 } else {
-var37 = "(";
-var38 = 1;
-var39 = standard___standard__NativeString___to_s_with_length(var37, var38);
-var36 = var39;
-varonce35 = var36;
+var32 = "(";
+var33 = standard___standard__NativeString___to_s_with_length(var32, 1l);
+var31 = var33;
+varonce30 = var31;
 }
-if (varonce40) {
-var41 = varonce40;
+((struct instance_standard__NativeArray*)var29)->values[0]=var31;
+if (likely(varonce34!=NULL)) {
+var35 = varonce34;
 } else {
-var42 = ")0/*special!*/";
-var43 = 14;
-var44 = standard___standard__NativeString___to_s_with_length(var42, var43);
-var41 = var44;
-varonce40 = var41;
-}
-var45 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var45 = array_instance Array[Object] */
-var46 = 3;
-var47 = NEW_standard__NativeArray(var46, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var47)->values[0] = (val*) var36;
-((struct instance_standard__NativeArray*)var47)->values[1] = (val*) var_ctype;
-((struct instance_standard__NativeArray*)var47)->values[2] = (val*) var41;
-{
-((void (*)(val* self, val* p0, long p1))(var45->class->vft[COLOR_standard__array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
+var36 = ")0/*special!*/";
+var37 = standard___standard__NativeString___to_s_with_length(var36, 14l);
+var35 = var37;
+varonce34 = var35;
 }
+((struct instance_standard__NativeArray*)var29)->values[2]=var35;
+} else {
+var29 = varonce28;
+varonce28 = NULL;
 }
+((struct instance_standard__NativeArray*)var29)->values[1]=var_ctype;
 {
-var48 = ((val* (*)(val* self))(var45->class->vft[COLOR_standard__string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
+var38 = ((val*(*)(val* self))(var29->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var29); /* native_to_s on <var29:NativeArray[String]>*/
 }
+varonce28 = var29;
 {
-var49 = nit___nit__AbstractCompilerVisitor___new_expr(self, var48, var_mtype);
+var39 = nit___nit__AbstractCompilerVisitor___new_expr(self, var38, var_mtype);
 }
-var_recv = var49;
+var_recv = var39;
 }
 }
 var = var_recv;
@@ -9140,44 +8412,40 @@ val* var9 /* : nullable MClassType */;
 val* var_finalizable_type /* var finalizable_type: nullable MClassType */;
 short int var10 /* : Bool */;
 short int var11 /* : Bool */;
-val* var12 /* : null */;
+short int var12 /* : Bool */;
 short int var13 /* : Bool */;
-short int var14 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var15 /* : Bool */;
 short int var16 /* : Bool */;
-short int var17 /* : Bool */;
 short int var_ /* var : Bool */;
+short int var17 /* : Bool */;
 short int var18 /* : Bool */;
-short int var19 /* : Bool */;
-short int var_20 /* var : Bool */;
-val* var21 /* : AbstractCompiler */;
-val* var23 /* : AbstractCompiler */;
-val* var24 /* : MModule */;
-val* var26 /* : MModule */;
-val* var27 /* : null */;
-short int var28 /* : Bool */;
+short int var_19 /* var : Bool */;
+val* var20 /* : AbstractCompiler */;
+val* var22 /* : AbstractCompiler */;
+val* var23 /* : MModule */;
+val* var25 /* : MModule */;
+short int var26 /* : Bool */;
+val* var27 /* : NativeArray[String] */;
 static val* varonce;
+static val* varonce28;
 val* var29 /* : String */;
 char* var30 /* : NativeString */;
-long var31 /* : Int */;
-val* var32 /* : FlatString */;
-static val* varonce33;
-val* var34 /* : String */;
-char* var35 /* : NativeString */;
-long var36 /* : Int */;
-val* var37 /* : FlatString */;
-val* var38 /* : Array[Object] */;
-long var39 /* : Int */;
-val* var40 /* : NativeArray[Object] */;
-val* var41 /* : String */;
+val* var31 /* : FlatString */;
+static val* varonce32;
+val* var33 /* : String */;
+char* var34 /* : NativeString */;
+val* var35 /* : FlatString */;
+val* var36 /* : String */;
+val* var37 /* : String */;
 var_recv = p0;
 {
 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_recv) on <var_recv:RuntimeVariable> */
 var2 = var_recv->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_recv:RuntimeVariable> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1784);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -9189,8 +8457,8 @@ var_mtype = var;
 var5 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -9201,8 +8469,8 @@ RET_LABEL4:(void)0;
 var8 = var3->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var3:AbstractCompiler> */
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -9212,325 +8480,1327 @@ RET_LABEL7:(void)0;
 var9 = nit__model___MModule___finalizable_type(var6);
 }
 var_finalizable_type = var9;
-var12 = NULL;
 if (var_finalizable_type == NULL) {
-var13 = 0; /* is null */
+var12 = 0; /* is null */
 } else {
-var13 = 1; /* arg is null and recv is not */
+var12 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_finalizable_type,var12) on <var_finalizable_type:nullable MClassType> */
-var_other = var12;
+{ /* Inline kernel#Object#!= (var_finalizable_type,((val*)NULL)) on <var_finalizable_type:nullable MClassType> */
+var_other = ((val*)NULL);
 {
-var16 = ((short int (*)(val* self, val* p0))(var_finalizable_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_finalizable_type, var_other) /* == on <var_finalizable_type:nullable MClassType(MClassType)>*/;
+var15 = ((short int(*)(val* self, val* p0))(var_finalizable_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_finalizable_type, var_other); /* == on <var_finalizable_type:nullable MClassType(MClassType)>*/
 }
-var17 = !var16;
-var14 = var17;
-goto RET_LABEL15;
-RET_LABEL15:(void)0;
+var16 = !var15;
+var13 = var16;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
 }
-var13 = var14;
+var12 = var13;
 }
-var_ = var13;
-if (var13){
+var_ = var12;
+if (var12){
 {
-var18 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+var17 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
 }
-var19 = !var18;
-var11 = var19;
+var18 = !var17;
+var11 = var18;
 } else {
 var11 = var_;
 }
-var_20 = var11;
+var_19 = var11;
 if (var11){
 {
 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
-var23 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
-if (unlikely(var23 == NULL)) {
+var22 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
+if (unlikely(var22 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
 }
-var21 = var23;
-RET_LABEL22:(void)0;
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
 {
-{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var21) on <var21:AbstractCompiler> */
-var26 = var21->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var21:AbstractCompiler> */
-if (unlikely(var26 == NULL)) {
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var20) on <var20:AbstractCompiler> */
+var25 = var20->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var20:AbstractCompiler> */
+if (unlikely(var25 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
-var27 = NULL;
 {
-var28 = nit___nit__MType___is_subtype(var_mtype, var24, var27, var_finalizable_type);
+var26 = nit___nit__MType___is_subtype(var_mtype, var23, ((val*)NULL), var_finalizable_type);
 }
-var10 = var28;
+var10 = var26;
 } else {
-var10 = var_20;
+var10 = var_19;
 }
 if (var10){
-if (varonce) {
-var29 = varonce;
+if (unlikely(varonce==NULL)) {
+var27 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce28!=NULL)) {
+var29 = varonce28;
 } else {
 var30 = "gc_register_finalizer(";
-var31 = 22;
-var32 = standard___standard__NativeString___to_s_with_length(var30, var31);
-var29 = var32;
-varonce = var29;
+var31 = standard___standard__NativeString___to_s_with_length(var30, 22l);
+var29 = var31;
+varonce28 = var29;
+}
+((struct instance_standard__NativeArray*)var27)->values[0]=var29;
+if (likely(varonce32!=NULL)) {
+var33 = varonce32;
+} else {
+var34 = ");";
+var35 = standard___standard__NativeString___to_s_with_length(var34, 2l);
+var33 = var35;
+varonce32 = var33;
 }
-if (varonce33) {
-var34 = varonce33;
+((struct instance_standard__NativeArray*)var27)->values[2]=var33;
 } else {
-var35 = ");";
-var36 = 2;
-var37 = standard___standard__NativeString___to_s_with_length(var35, var36);
-var34 = var37;
-varonce33 = var34;
+var27 = varonce;
+varonce = NULL;
 }
-var38 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var38 = array_instance Array[Object] */
-var39 = 3;
-var40 = NEW_standard__NativeArray(var39, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var40)->values[0] = (val*) var29;
-((struct instance_standard__NativeArray*)var40)->values[1] = (val*) var_recv;
-((struct instance_standard__NativeArray*)var40)->values[2] = (val*) var34;
 {
-((void (*)(val* self, val* p0, long p1))(var38->class->vft[COLOR_standard__array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[Object]>*/;
-}
+var36 = ((val*(*)(val* self))(var_recv->class->vft[COLOR_standard__string__Object__to_s]))(var_recv); /* to_s on <var_recv:RuntimeVariable>*/
 }
+((struct instance_standard__NativeArray*)var27)->values[1]=var36;
 {
-var41 = ((val* (*)(val* self))(var38->class->vft[COLOR_standard__string__Object__to_s]))(var38) /* to_s on <var38:Array[Object]>*/;
+var37 = ((val*(*)(val* self))(var27->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var27); /* native_to_s on <var27:NativeArray[String]>*/
 }
+varonce = var27;
 {
-nit___nit__AbstractCompilerVisitor___add(self, var41); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+nit___nit__AbstractCompilerVisitor___add(self, var37); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
 }
 } else {
 }
 RET_LABEL:;
 }
+/* method abstract_compiler#AbstractCompilerVisitor#mmodule for (self: AbstractCompilerVisitor): MModule */
+val* nit___nit__AbstractCompilerVisitor___mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : AbstractCompiler */;
+val* var3 /* : AbstractCompiler */;
+val* var4 /* : MModule */;
+val* var6 /* : MModule */;
+{
+{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
+var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var1) on <var1:AbstractCompiler> */
+var6 = var1->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var1:AbstractCompiler> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+var = var4;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
 /* method abstract_compiler#AbstractCompilerVisitor#int_instance for (self: AbstractCompilerVisitor, Int): RuntimeVariable */
 val* nit___nit__AbstractCompilerVisitor___int_instance(val* self, long p0) {
 val* var /* : RuntimeVariable */;
 long var_value /* var value: Int */;
+val* var1 /* : MModule */;
+val* var2 /* : MClassType */;
+val* var_t /* var t: MClassType */;
+val* var3 /* : RuntimeVariable */;
+val* var4 /* : NativeArray[String] */;
 static val* varonce;
-val* var1 /* : String */;
-char* var2 /* : NativeString */;
-long var3 /* : Int */;
-val* var4 /* : FlatString */;
-val* var5 /* : MClass */;
-val* var6 /* : MClassType */;
-val* var8 /* : MClassType */;
-val* var9 /* : RuntimeVariable */;
+static val* varonce5;
+val* var6 /* : String */;
+char* var7 /* : NativeString */;
+val* var8 /* : FlatString */;
+val* var9 /* : String */;
+val* var10 /* : String */;
 val* var_res /* var res: RuntimeVariable */;
-static val* varonce10;
-val* var11 /* : String */;
-char* var12 /* : NativeString */;
-long var13 /* : Int */;
-val* var14 /* : FlatString */;
-static val* varonce15;
-val* var16 /* : String */;
-char* var17 /* : NativeString */;
-long var18 /* : Int */;
-val* var19 /* : FlatString */;
-val* var20 /* : Array[Object] */;
-long var21 /* : Int */;
-val* var22 /* : NativeArray[Object] */;
-val* var23 /* : Object */;
-val* var24 /* : String */;
 var_value = p0;
-if (varonce) {
-var1 = varonce;
-} else {
-var2 = "Int";
-var3 = 3;
-var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
-var1 = var4;
-varonce = var1;
-}
 {
-var5 = nit___nit__AbstractCompilerVisitor___get_class(self, var1);
+var1 = nit___nit__AbstractCompilerVisitor___mmodule(self);
 }
 {
-{ /* Inline model#MClass#mclass_type (var5) on <var5:MClass> */
-var8 = var5->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var5:MClass> */
-if (unlikely(var8 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
-show_backtrace(1);
+var2 = nit__model___MModule___int_type(var1);
 }
+var_t = var2;
+var3 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
+if (unlikely(varonce==NULL)) {
+var4 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce5!=NULL)) {
+var6 = varonce5;
+} else {
+var7 = "l";
+var8 = standard___standard__NativeString___to_s_with_length(var7, 1l);
 var6 = var8;
-RET_LABEL7:(void)0;
+varonce5 = var6;
 }
+((struct instance_standard__NativeArray*)var4)->values[1]=var6;
+} else {
+var4 = varonce;
+varonce = NULL;
 }
 {
-var9 = nit___nit__AbstractCompilerVisitor___new_var(self, var6);
-}
-var_res = var9;
-if (varonce10) {
-var11 = varonce10;
-} else {
-var12 = " = ";
-var13 = 3;
-var14 = standard___standard__NativeString___to_s_with_length(var12, var13);
-var11 = var14;
-varonce10 = var11;
+var9 = standard__string___Int___Object__to_s(var_value);
 }
-if (varonce15) {
-var16 = varonce15;
-} else {
-var17 = ";";
-var18 = 1;
-var19 = standard___standard__NativeString___to_s_with_length(var17, var18);
-var16 = var19;
-varonce15 = var16;
+((struct instance_standard__NativeArray*)var4)->values[0]=var9;
+{
+var10 = ((val*(*)(val* self))(var4->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var4); /* native_to_s on <var4:NativeArray[String]>*/
 }
-var20 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var20 = array_instance Array[Object] */
-var21 = 4;
-var22 = NEW_standard__NativeArray(var21, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var22)->values[0] = (val*) var_res;
-((struct instance_standard__NativeArray*)var22)->values[1] = (val*) var11;
-var23 = BOX_standard__Int(var_value); /* autobox from Int to Object */
-((struct instance_standard__NativeArray*)var22)->values[2] = (val*) var23;
-((struct instance_standard__NativeArray*)var22)->values[3] = (val*) var16;
+varonce = var4;
 {
-((void (*)(val* self, val* p0, long p1))(var20->class->vft[COLOR_standard__array__Array__with_native]))(var20, var22, var21) /* with_native on <var20:Array[Object]>*/;
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var3, var10); /* name= on <var3:RuntimeVariable>*/
 }
+{
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var3, var_t); /* mtype= on <var3:RuntimeVariable>*/
 }
 {
-var24 = ((val* (*)(val* self))(var20->class->vft[COLOR_standard__string__Object__to_s]))(var20) /* to_s on <var20:Array[Object]>*/;
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var3, var_t); /* mcasttype= on <var3:RuntimeVariable>*/
 }
 {
-nit___nit__AbstractCompilerVisitor___add(self, var24); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+((void(*)(val* self))(var3->class->vft[COLOR_standard__kernel__Object__init]))(var3); /* init on <var3:RuntimeVariable>*/
 }
+var_res = var3;
 var = var_res;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_compiler#AbstractCompilerVisitor#bool_instance for (self: AbstractCompilerVisitor, Bool): RuntimeVariable */
-val* nit___nit__AbstractCompilerVisitor___bool_instance(val* self, short int p0) {
+/* method abstract_compiler#AbstractCompilerVisitor#byte_instance for (self: AbstractCompilerVisitor, Byte): RuntimeVariable */
+val* nit___nit__AbstractCompilerVisitor___byte_instance(val* self, unsigned char p0) {
 val* var /* : RuntimeVariable */;
-short int var_value /* var value: Bool */;
+unsigned char var_value /* var value: Byte */;
+val* var1 /* : MModule */;
+val* var2 /* : MClassType */;
+val* var_t /* var t: MClassType */;
+val* var3 /* : RuntimeVariable */;
+val* var4 /* : NativeArray[String] */;
 static val* varonce;
-val* var1 /* : String */;
-char* var2 /* : NativeString */;
-long var3 /* : Int */;
-val* var4 /* : FlatString */;
-val* var5 /* : MClass */;
-val* var6 /* : MClassType */;
-val* var8 /* : MClassType */;
-val* var9 /* : RuntimeVariable */;
+static val* varonce5;
+val* var6 /* : String */;
+char* var7 /* : NativeString */;
+val* var8 /* : FlatString */;
+static val* varonce9;
+val* var10 /* : String */;
+char* var11 /* : NativeString */;
+val* var12 /* : FlatString */;
+val* var13 /* : String */;
+val* var14 /* : String */;
 val* var_res /* var res: RuntimeVariable */;
-static val* varonce10;
-val* var11 /* : String */;
-char* var12 /* : NativeString */;
-long var13 /* : Int */;
-val* var14 /* : FlatString */;
-val* var15 /* : Array[Object] */;
-long var16 /* : Int */;
-val* var17 /* : NativeArray[Object] */;
-val* var18 /* : String */;
-static val* varonce19;
-val* var20 /* : String */;
-char* var21 /* : NativeString */;
-long var22 /* : Int */;
-val* var23 /* : FlatString */;
-val* var24 /* : Array[Object] */;
-long var25 /* : Int */;
-val* var26 /* : NativeArray[Object] */;
-val* var27 /* : String */;
 var_value = p0;
-if (varonce) {
-var1 = varonce;
-} else {
-var2 = "Bool";
-var3 = 4;
-var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
-var1 = var4;
-varonce = var1;
-}
 {
-var5 = nit___nit__AbstractCompilerVisitor___get_class(self, var1);
+var1 = nit___nit__AbstractCompilerVisitor___mmodule(self);
 }
 {
-{ /* Inline model#MClass#mclass_type (var5) on <var5:MClass> */
-var8 = var5->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var5:MClass> */
-if (unlikely(var8 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
-show_backtrace(1);
+var2 = nit__model___MModule___byte_type(var1);
 }
+var_t = var2;
+var3 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
+if (unlikely(varonce==NULL)) {
+var4 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce5!=NULL)) {
+var6 = varonce5;
+} else {
+var7 = "((unsigned char)";
+var8 = standard___standard__NativeString___to_s_with_length(var7, 16l);
 var6 = var8;
-RET_LABEL7:(void)0;
+varonce5 = var6;
+}
+((struct instance_standard__NativeArray*)var4)->values[0]=var6;
+if (likely(varonce9!=NULL)) {
+var10 = varonce9;
+} else {
+var11 = ")";
+var12 = standard___standard__NativeString___to_s_with_length(var11, 1l);
+var10 = var12;
+varonce9 = var10;
+}
+((struct instance_standard__NativeArray*)var4)->values[2]=var10;
+} else {
+var4 = varonce;
+varonce = NULL;
 }
+{
+var13 = standard__string___Byte___Object__to_s(var_value);
 }
+((struct instance_standard__NativeArray*)var4)->values[1]=var13;
 {
-var9 = nit___nit__AbstractCompilerVisitor___new_var(self, var6);
+var14 = ((val*(*)(val* self))(var4->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var4); /* native_to_s on <var4:NativeArray[String]>*/
 }
-var_res = var9;
-if (var_value){
-if (varonce10) {
-var11 = varonce10;
+varonce = var4;
+{
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var3, var14); /* name= on <var3:RuntimeVariable>*/
+}
+{
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var3, var_t); /* mtype= on <var3:RuntimeVariable>*/
+}
+{
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var3, var_t); /* mcasttype= on <var3:RuntimeVariable>*/
+}
+{
+((void(*)(val* self))(var3->class->vft[COLOR_standard__kernel__Object__init]))(var3); /* init on <var3:RuntimeVariable>*/
+}
+var_res = var3;
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method abstract_compiler#AbstractCompilerVisitor#char_instance for (self: AbstractCompilerVisitor, Char): RuntimeVariable */
+val* nit___nit__AbstractCompilerVisitor___char_instance(val* self, uint32_t p0) {
+val* var /* : RuntimeVariable */;
+uint32_t var_value /* var value: Char */;
+val* var1 /* : MModule */;
+val* var2 /* : MClassType */;
+val* var_t /* var t: MClassType */;
+val* var3 /* : RuntimeVariable */;
+val* var4 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce5;
+val* var6 /* : String */;
+char* var7 /* : NativeString */;
+val* var8 /* : FlatString */;
+static val* varonce9;
+val* var10 /* : String */;
+char* var11 /* : NativeString */;
+val* var12 /* : FlatString */;
+val* var13 /* : String */;
+val* var14 /* : String */;
+val* var15 /* : String */;
+val* var_res /* var res: RuntimeVariable */;
+var_value = p0;
+{
+var1 = nit___nit__AbstractCompilerVisitor___mmodule(self);
+}
+{
+var2 = nit__model___MModule___char_type(var1);
+}
+var_t = var2;
+var3 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
+if (unlikely(varonce==NULL)) {
+var4 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce5!=NULL)) {
+var6 = varonce5;
 } else {
-var12 = " = 1;";
-var13 = 5;
-var14 = standard___standard__NativeString___to_s_with_length(var12, var13);
-var11 = var14;
-varonce10 = var11;
+var7 = "\'";
+var8 = standard___standard__NativeString___to_s_with_length(var7, 1l);
+var6 = var8;
+varonce5 = var6;
+}
+((struct instance_standard__NativeArray*)var4)->values[0]=var6;
+if (likely(varonce9!=NULL)) {
+var10 = varonce9;
+} else {
+var11 = "\'";
+var12 = standard___standard__NativeString___to_s_with_length(var11, 1l);
+var10 = var12;
+varonce9 = var10;
+}
+((struct instance_standard__NativeArray*)var4)->values[2]=var10;
+} else {
+var4 = varonce;
+varonce = NULL;
+}
+{
+var13 = standard__string___Char___Object__to_s(var_value);
+}
+{
+var14 = standard___standard__Text___escape_to_c(var13);
+}
+((struct instance_standard__NativeArray*)var4)->values[1]=var14;
+{
+var15 = ((val*(*)(val* self))(var4->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var4); /* native_to_s on <var4:NativeArray[String]>*/
 }
-var15 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var15 = array_instance Array[Object] */
-var16 = 2;
-var17 = NEW_standard__NativeArray(var16, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var17)->values[0] = (val*) var_res;
-((struct instance_standard__NativeArray*)var17)->values[1] = (val*) var11;
+varonce = var4;
+{
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var3, var15); /* name= on <var3:RuntimeVariable>*/
+}
+{
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var3, var_t); /* mtype= on <var3:RuntimeVariable>*/
+}
+{
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var3, var_t); /* mcasttype= on <var3:RuntimeVariable>*/
+}
+{
+((void(*)(val* self))(var3->class->vft[COLOR_standard__kernel__Object__init]))(var3); /* init on <var3:RuntimeVariable>*/
+}
+var_res = var3;
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method abstract_compiler#AbstractCompilerVisitor#float_instance for (self: AbstractCompilerVisitor, String): RuntimeVariable */
+val* nit___nit__AbstractCompilerVisitor___float_instance(val* self, val* p0) {
+val* var /* : RuntimeVariable */;
+val* var_value /* var value: String */;
+val* var1 /* : MModule */;
+val* var2 /* : MClassType */;
+val* var_t /* var t: MClassType */;
+val* var3 /* : RuntimeVariable */;
+val* var4 /* : NativeArray[String] */;
+static val* varonce;
+val* var5 /* : String */;
+val* var_res /* var res: RuntimeVariable */;
+var_value = p0;
+{
+var1 = nit___nit__AbstractCompilerVisitor___mmodule(self);
+}
+{
+var2 = nit__model___MModule___float_type(var1);
+}
+var_t = var2;
+var3 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
+if (unlikely(varonce==NULL)) {
+var4 = NEW_standard__NativeArray(1l, &type_standard__NativeArray__standard__String);
+} else {
+var4 = varonce;
+varonce = NULL;
+}
+((struct instance_standard__NativeArray*)var4)->values[0]=var_value;
 {
-((void (*)(val* self, val* p0, long p1))(var15->class->vft[COLOR_standard__array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
+var5 = ((val*(*)(val* self))(var4->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var4); /* native_to_s on <var4:NativeArray[String]>*/
 }
+varonce = var4;
+{
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var3, var5); /* name= on <var3:RuntimeVariable>*/
+}
+{
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var3, var_t); /* mtype= on <var3:RuntimeVariable>*/
 }
 {
-var18 = ((val* (*)(val* self))(var15->class->vft[COLOR_standard__string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var3, var_t); /* mcasttype= on <var3:RuntimeVariable>*/
 }
 {
-nit___nit__AbstractCompilerVisitor___add(self, var18); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+((void(*)(val* self))(var3->class->vft[COLOR_standard__kernel__Object__init]))(var3); /* init on <var3:RuntimeVariable>*/
 }
+var_res = var3;
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method abstract_compiler#AbstractCompilerVisitor#bool_instance for (self: AbstractCompilerVisitor, Bool): RuntimeVariable */
+val* nit___nit__AbstractCompilerVisitor___bool_instance(val* self, short int p0) {
+val* var /* : RuntimeVariable */;
+short int var_value /* var value: Bool */;
+val* var1 /* : String */;
+static val* varonce;
+val* var2 /* : String */;
+char* var3 /* : NativeString */;
+val* var4 /* : FlatString */;
+static val* varonce5;
+val* var6 /* : String */;
+char* var7 /* : NativeString */;
+val* var8 /* : FlatString */;
+val* var_s /* var s: String */;
+val* var9 /* : RuntimeVariable */;
+val* var10 /* : MClassType */;
+val* var11 /* : MClassType */;
+val* var_res /* var res: RuntimeVariable */;
+var_value = p0;
+if (var_value){
+if (likely(varonce!=NULL)) {
+var2 = varonce;
+} else {
+var3 = "1";
+var4 = standard___standard__NativeString___to_s_with_length(var3, 1l);
+var2 = var4;
+varonce = var2;
+}
+var1 = var2;
 } else {
-if (varonce19) {
-var20 = varonce19;
+if (likely(varonce5!=NULL)) {
+var6 = varonce5;
 } else {
-var21 = " = 0;";
-var22 = 5;
-var23 = standard___standard__NativeString___to_s_with_length(var21, var22);
-var20 = var23;
-varonce19 = var20;
+var7 = "0";
+var8 = standard___standard__NativeString___to_s_with_length(var7, 1l);
+var6 = var8;
+varonce5 = var6;
+}
+var1 = var6;
+}
+var_s = var1;
+var9 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
+{
+var10 = nit___nit__AbstractCompilerVisitor___bool_type(self);
 }
-var24 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var24 = array_instance Array[Object] */
-var25 = 2;
-var26 = NEW_standard__NativeArray(var25, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var26)->values[0] = (val*) var_res;
-((struct instance_standard__NativeArray*)var26)->values[1] = (val*) var20;
 {
-((void (*)(val* self, val* p0, long p1))(var24->class->vft[COLOR_standard__array__Array__with_native]))(var24, var26, var25) /* with_native on <var24:Array[Object]>*/;
+var11 = nit___nit__AbstractCompilerVisitor___bool_type(self);
 }
+{
+((void(*)(val* self, val* p0))(var9->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var9, var_s); /* name= on <var9:RuntimeVariable>*/
+}
+{
+((void(*)(val* self, val* p0))(var9->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var9, var10); /* mtype= on <var9:RuntimeVariable>*/
+}
+{
+((void(*)(val* self, val* p0))(var9->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var9, var11); /* mcasttype= on <var9:RuntimeVariable>*/
+}
+{
+((void(*)(val* self))(var9->class->vft[COLOR_standard__kernel__Object__init]))(var9); /* init on <var9:RuntimeVariable>*/
+}
+var_res = var9;
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method abstract_compiler#AbstractCompilerVisitor#null_instance for (self: AbstractCompilerVisitor): RuntimeVariable */
+val* nit___nit__AbstractCompilerVisitor___null_instance(val* self) {
+val* var /* : RuntimeVariable */;
+val* var1 /* : AbstractCompiler */;
+val* var3 /* : AbstractCompiler */;
+val* var4 /* : MModule */;
+val* var6 /* : MModule */;
+val* var7 /* : Model */;
+val* var9 /* : Model */;
+val* var10 /* : MNullType */;
+val* var12 /* : MNullType */;
+val* var_t /* var t: MNullType */;
+val* var13 /* : RuntimeVariable */;
+static val* varonce;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
+val* var16 /* : FlatString */;
+val* var_res /* var res: RuntimeVariable */;
+{
+{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
+var3 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var1) on <var1:AbstractCompiler> */
+var6 = var1->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var1:AbstractCompiler> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline mmodule#MModule#model (var4) on <var4:MModule> */
+var9 = var4->attrs[COLOR_nit__mmodule__MModule___model].val; /* _model on <var4:MModule> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 73);
+fatal_exit(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+{ /* Inline model#Model#null_type (var7) on <var7:Model> */
+var12 = var7->attrs[COLOR_nit__model__Model___null_type].val; /* _null_type on <var7:Model> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _null_type");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 94);
+fatal_exit(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+var_t = var10;
+var13 = NEW_nit__RuntimeVariable(&type_nit__RuntimeVariable);
+if (likely(varonce!=NULL)) {
+var14 = varonce;
+} else {
+var15 = "((val*)NULL)";
+var16 = standard___standard__NativeString___to_s_with_length(var15, 12l);
+var14 = var16;
+varonce = var14;
 }
 {
-var27 = ((val* (*)(val* self))(var24->class->vft[COLOR_standard__string__Object__to_s]))(var24) /* to_s on <var24:Array[Object]>*/;
+((void(*)(val* self, val* p0))(var13->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__name_61d]))(var13, var14); /* name= on <var13:RuntimeVariable>*/
 }
 {
-nit___nit__AbstractCompilerVisitor___add(self, var27); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+((void(*)(val* self, val* p0))(var13->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mtype_61d]))(var13, var_t); /* mtype= on <var13:RuntimeVariable>*/
 }
+{
+((void(*)(val* self, val* p0))(var13->class->vft[COLOR_nit__abstract_compiler__RuntimeVariable__mcasttype_61d]))(var13, var_t); /* mcasttype= on <var13:RuntimeVariable>*/
+}
+{
+((void(*)(val* self))(var13->class->vft[COLOR_standard__kernel__Object__init]))(var13); /* init on <var13:RuntimeVariable>*/
 }
+var_res = var13;
 var = var_res;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
+/* method abstract_compiler#AbstractCompilerVisitor#string_instance for (self: AbstractCompilerVisitor, String): RuntimeVariable */
+val* nit___nit__AbstractCompilerVisitor___string_instance(val* self, val* p0) {
+val* var /* : RuntimeVariable */;
+val* var_string /* var string: String */;
+val* var1 /* : MModule */;
+val* var2 /* : MClassType */;
+val* var_mtype /* var mtype: MClassType */;
+static val* varonce;
+val* var3 /* : String */;
+char* var4 /* : NativeString */;
+val* var5 /* : FlatString */;
+val* var6 /* : String */;
+val* var_name /* var name: String */;
+val* var8 /* : NativeArray[String] */;
+static val* varonce7;
+static val* varonce9;
+val* var10 /* : String */;
+char* var11 /* : NativeString */;
+val* var12 /* : FlatString */;
+static val* varonce13;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
+val* var16 /* : FlatString */;
+static val* varonce17;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+val* var20 /* : FlatString */;
+val* var21 /* : String */;
+val* var22 /* : String */;
+val* var23 /* : RuntimeVariable */;
+val* var_res /* var res: RuntimeVariable */;
+val* var25 /* : NativeArray[String] */;
+static val* varonce24;
+static val* varonce26;
+val* var27 /* : String */;
+char* var28 /* : NativeString */;
+val* var29 /* : FlatString */;
+static val* varonce30;
+val* var31 /* : String */;
+char* var32 /* : NativeString */;
+val* var33 /* : FlatString */;
+val* var34 /* : String */;
+val* var36 /* : NativeArray[String] */;
+static val* varonce35;
+static val* varonce37;
+val* var38 /* : String */;
+char* var39 /* : NativeString */;
+val* var40 /* : FlatString */;
+static val* varonce41;
+val* var42 /* : String */;
+char* var43 /* : NativeString */;
+val* var44 /* : FlatString */;
+val* var45 /* : String */;
+val* var46 /* : String */;
+static val* varonce47;
+val* var48 /* : String */;
+char* var49 /* : NativeString */;
+val* var50 /* : FlatString */;
+val* var51 /* : MModule */;
+val* var52 /* : MClassType */;
+val* var_native_mtype /* var native_mtype: MClassType */;
+val* var53 /* : RuntimeVariable */;
+val* var_nat /* var nat: RuntimeVariable */;
+val* var55 /* : NativeArray[String] */;
+static val* varonce54;
+static val* varonce56;
+val* var57 /* : String */;
+char* var58 /* : NativeString */;
+val* var59 /* : FlatString */;
+static val* varonce60;
+val* var61 /* : String */;
+char* var62 /* : NativeString */;
+val* var63 /* : FlatString */;
+val* var64 /* : String */;
+val* var65 /* : String */;
+val* var66 /* : String */;
+long var67 /* : Int */;
+val* var68 /* : RuntimeVariable */;
+val* var_length /* var length: RuntimeVariable */;
+val* var70 /* : NativeArray[String] */;
+static val* varonce69;
+static val* varonce71;
+val* var72 /* : String */;
+char* var73 /* : NativeString */;
+val* var74 /* : FlatString */;
+static val* varonce75;
+val* var76 /* : String */;
+char* var77 /* : NativeString */;
+val* var78 /* : FlatString */;
+val* var79 /* : String */;
+static val* varonce80;
+val* var81 /* : String */;
+char* var82 /* : NativeString */;
+val* var83 /* : FlatString */;
+val* var84 /* : MMethod */;
+val* var85 /* : Array[RuntimeVariable] */;
+val* var_ /* var : Array[RuntimeVariable] */;
+val* var86 /* : nullable RuntimeVariable */;
+val* var87 /* : String */;
+val* var88 /* : String */;
+val* var90 /* : NativeArray[String] */;
+static val* varonce89;
+static val* varonce91;
+val* var92 /* : String */;
+char* var93 /* : NativeString */;
+val* var94 /* : FlatString */;
+static val* varonce95;
+val* var96 /* : String */;
+char* var97 /* : NativeString */;
+val* var98 /* : FlatString */;
+val* var99 /* : String */;
+val* var100 /* : String */;
+static val* varonce101;
+val* var102 /* : String */;
+char* var103 /* : NativeString */;
+val* var104 /* : FlatString */;
+var_string = p0;
+{
+var1 = nit___nit__AbstractCompilerVisitor___mmodule(self);
+}
+{
+var2 = nit__model___MModule___string_type(var1);
+}
+var_mtype = var2;
+if (likely(varonce!=NULL)) {
+var3 = varonce;
+} else {
+var4 = "varonce";
+var5 = standard___standard__NativeString___to_s_with_length(var4, 7l);
+var3 = var5;
+varonce = var3;
+}
+{
+var6 = nit___nit__AbstractCompilerVisitor___get_name(self, var3);
+}
+var_name = var6;
+if (unlikely(varonce7==NULL)) {
+var8 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce9!=NULL)) {
+var10 = varonce9;
+} else {
+var11 = "static ";
+var12 = standard___standard__NativeString___to_s_with_length(var11, 7l);
+var10 = var12;
+varonce9 = var10;
+}
+((struct instance_standard__NativeArray*)var8)->values[0]=var10;
+if (likely(varonce13!=NULL)) {
+var14 = varonce13;
+} else {
+var15 = " ";
+var16 = standard___standard__NativeString___to_s_with_length(var15, 1l);
+var14 = var16;
+varonce13 = var14;
+}
+((struct instance_standard__NativeArray*)var8)->values[2]=var14;
+if (likely(varonce17!=NULL)) {
+var18 = varonce17;
+} else {
+var19 = ";";
+var20 = standard___standard__NativeString___to_s_with_length(var19, 1l);
+var18 = var20;
+varonce17 = var18;
+}
+((struct instance_standard__NativeArray*)var8)->values[4]=var18;
+} else {
+var8 = varonce7;
+varonce7 = NULL;
+}
+{
+var21 = nit__abstract_compiler___MClassType___MType__ctype(var_mtype);
+}
+((struct instance_standard__NativeArray*)var8)->values[1]=var21;
+((struct instance_standard__NativeArray*)var8)->values[3]=var_name;
+{
+var22 = ((val*(*)(val* self))(var8->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var8); /* native_to_s on <var8:NativeArray[String]>*/
+}
+varonce7 = var8;
+{
+nit___nit__AbstractCompilerVisitor___add_decl(self, var22); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:AbstractCompilerVisitor>*/
+}
+{
+var23 = nit___nit__AbstractCompilerVisitor___new_var(self, var_mtype);
+}
+var_res = var23;
+if (unlikely(varonce24==NULL)) {
+var25 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce26!=NULL)) {
+var27 = varonce26;
+} else {
+var28 = "if (likely(";
+var29 = standard___standard__NativeString___to_s_with_length(var28, 11l);
+var27 = var29;
+varonce26 = var27;
+}
+((struct instance_standard__NativeArray*)var25)->values[0]=var27;
+if (likely(varonce30!=NULL)) {
+var31 = varonce30;
+} else {
+var32 = "!=NULL)) {";
+var33 = standard___standard__NativeString___to_s_with_length(var32, 10l);
+var31 = var33;
+varonce30 = var31;
+}
+((struct instance_standard__NativeArray*)var25)->values[2]=var31;
+} else {
+var25 = varonce24;
+varonce24 = NULL;
+}
+((struct instance_standard__NativeArray*)var25)->values[1]=var_name;
+{
+var34 = ((val*(*)(val* self))(var25->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var25); /* native_to_s on <var25:NativeArray[String]>*/
+}
+varonce24 = var25;
+{
+nit___nit__AbstractCompilerVisitor___add(self, var34); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+}
+if (unlikely(varonce35==NULL)) {
+var36 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
+if (likely(varonce37!=NULL)) {
+var38 = varonce37;
+} else {
+var39 = " = ";
+var40 = standard___standard__NativeString___to_s_with_length(var39, 3l);
+var38 = var40;
+varonce37 = var38;
+}
+((struct instance_standard__NativeArray*)var36)->values[1]=var38;
+if (likely(varonce41!=NULL)) {
+var42 = varonce41;
+} else {
+var43 = ";";
+var44 = standard___standard__NativeString___to_s_with_length(var43, 1l);
+var42 = var44;
+varonce41 = var42;
+}
+((struct instance_standard__NativeArray*)var36)->values[3]=var42;
+} else {
+var36 = varonce35;
+varonce35 = NULL;
+}
+{
+var45 = ((val*(*)(val* self))(var_res->class->vft[COLOR_standard__string__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
+}
+((struct instance_standard__NativeArray*)var36)->values[0]=var45;
+((struct instance_standard__NativeArray*)var36)->values[2]=var_name;
+{
+var46 = ((val*(*)(val* self))(var36->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var36); /* native_to_s on <var36:NativeArray[String]>*/
+}
+varonce35 = var36;
+{
+nit___nit__AbstractCompilerVisitor___add(self, var46); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+}
+if (likely(varonce47!=NULL)) {
+var48 = varonce47;
+} else {
+var49 = "} else {";
+var50 = standard___standard__NativeString___to_s_with_length(var49, 8l);
+var48 = var50;
+varonce47 = var48;
+}
+{
+nit___nit__AbstractCompilerVisitor___add(self, var48); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+}
+{
+var51 = nit___nit__AbstractCompilerVisitor___mmodule(self);
+}
+{
+var52 = nit__model___MModule___native_string_type(var51);
+}
+var_native_mtype = var52;
+{
+var53 = nit___nit__AbstractCompilerVisitor___new_var(self, var_native_mtype);
+}
+var_nat = var53;
+if (unlikely(varonce54==NULL)) {
+var55 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
+if (likely(varonce56!=NULL)) {
+var57 = varonce56;
+} else {
+var58 = " = \"";
+var59 = standard___standard__NativeString___to_s_with_length(var58, 4l);
+var57 = var59;
+varonce56 = var57;
+}
+((struct instance_standard__NativeArray*)var55)->values[1]=var57;
+if (likely(varonce60!=NULL)) {
+var61 = varonce60;
+} else {
+var62 = "\";";
+var63 = standard___standard__NativeString___to_s_with_length(var62, 2l);
+var61 = var63;
+varonce60 = var61;
+}
+((struct instance_standard__NativeArray*)var55)->values[3]=var61;
+} else {
+var55 = varonce54;
+varonce54 = NULL;
+}
+{
+var64 = ((val*(*)(val* self))(var_nat->class->vft[COLOR_standard__string__Object__to_s]))(var_nat); /* to_s on <var_nat:RuntimeVariable>*/
+}
+((struct instance_standard__NativeArray*)var55)->values[0]=var64;
+{
+var65 = standard___standard__Text___escape_to_c(var_string);
+}
+((struct instance_standard__NativeArray*)var55)->values[2]=var65;
+{
+var66 = ((val*(*)(val* self))(var55->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var55); /* native_to_s on <var55:NativeArray[String]>*/
+}
+varonce54 = var55;
+{
+nit___nit__AbstractCompilerVisitor___add(self, var66); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+}
+{
+var67 = ((long(*)(val* self))(var_string->class->vft[COLOR_standard__string__Text__length]))(var_string); /* length on <var_string:String>*/
+}
+{
+var68 = nit___nit__AbstractCompilerVisitor___int_instance(self, var67);
+}
+var_length = var68;
+if (unlikely(varonce69==NULL)) {
+var70 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
+if (likely(varonce71!=NULL)) {
+var72 = varonce71;
+} else {
+var73 = " = ";
+var74 = standard___standard__NativeString___to_s_with_length(var73, 3l);
+var72 = var74;
+varonce71 = var72;
+}
+((struct instance_standard__NativeArray*)var70)->values[1]=var72;
+if (likely(varonce75!=NULL)) {
+var76 = varonce75;
+} else {
+var77 = ";";
+var78 = standard___standard__NativeString___to_s_with_length(var77, 1l);
+var76 = var78;
+varonce75 = var76;
+}
+((struct instance_standard__NativeArray*)var70)->values[3]=var76;
+} else {
+var70 = varonce69;
+varonce69 = NULL;
+}
+{
+var79 = ((val*(*)(val* self))(var_res->class->vft[COLOR_standard__string__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
+}
+((struct instance_standard__NativeArray*)var70)->values[0]=var79;
+if (likely(varonce80!=NULL)) {
+var81 = varonce80;
+} else {
+var82 = "to_s_with_length";
+var83 = standard___standard__NativeString___to_s_with_length(var82, 16l);
+var81 = var83;
+varonce80 = var81;
+}
+{
+var84 = nit___nit__AbstractCompilerVisitor___get_property(self, var81, var_native_mtype);
+}
+var85 = NEW_standard__Array(&type_standard__Array__nit__RuntimeVariable);
+{
+standard___standard__Array___with_capacity(var85, 2l); /* Direct call array#Array#with_capacity on <var85:Array[RuntimeVariable]>*/
+}
+var_ = var85;
+{
+standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var_nat); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
+}
+{
+standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var_length); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
+}
+{
+var86 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__send(self, var84, var_);
+}
+if (unlikely(var86 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1541);
+fatal_exit(1);
+}
+{
+var87 = ((val*(*)(val* self))(var86->class->vft[COLOR_standard__string__Object__to_s]))(var86); /* to_s on <var86:nullable RuntimeVariable(RuntimeVariable)>*/
+}
+((struct instance_standard__NativeArray*)var70)->values[2]=var87;
+{
+var88 = ((val*(*)(val* self))(var70->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var70); /* native_to_s on <var70:NativeArray[String]>*/
+}
+varonce69 = var70;
+{
+nit___nit__AbstractCompilerVisitor___add(self, var88); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+}
+if (unlikely(varonce89==NULL)) {
+var90 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
+if (likely(varonce91!=NULL)) {
+var92 = varonce91;
+} else {
+var93 = " = ";
+var94 = standard___standard__NativeString___to_s_with_length(var93, 3l);
+var92 = var94;
+varonce91 = var92;
+}
+((struct instance_standard__NativeArray*)var90)->values[1]=var92;
+if (likely(varonce95!=NULL)) {
+var96 = varonce95;
+} else {
+var97 = ";";
+var98 = standard___standard__NativeString___to_s_with_length(var97, 1l);
+var96 = var98;
+varonce95 = var96;
+}
+((struct instance_standard__NativeArray*)var90)->values[3]=var96;
+} else {
+var90 = varonce89;
+varonce89 = NULL;
+}
+((struct instance_standard__NativeArray*)var90)->values[0]=var_name;
+{
+var99 = ((val*(*)(val* self))(var_res->class->vft[COLOR_standard__string__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
+}
+((struct instance_standard__NativeArray*)var90)->values[2]=var99;
+{
+var100 = ((val*(*)(val* self))(var90->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var90); /* native_to_s on <var90:NativeArray[String]>*/
+}
+varonce89 = var90;
+{
+nit___nit__AbstractCompilerVisitor___add(self, var100); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+}
+if (likely(varonce101!=NULL)) {
+var102 = varonce101;
+} else {
+var103 = "}";
+var104 = standard___standard__NativeString___to_s_with_length(var103, 1l);
+var102 = var104;
+varonce101 = var102;
+}
+{
+nit___nit__AbstractCompilerVisitor___add(self, var102); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
+}
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method abstract_compiler#AbstractCompilerVisitor#value_instance for (self: AbstractCompilerVisitor, Object): RuntimeVariable */
+val* nit___nit__AbstractCompilerVisitor___value_instance(val* self, val* p0) {
+val* var /* : RuntimeVariable */;
+val* var_object /* var object: Object */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+val* var2 /* : RuntimeVariable */;
+long var3 /* : Int */;
+short int var4 /* : Bool */;
+int cltype5;
+int idtype6;
+val* var7 /* : RuntimeVariable */;
+short int var8 /* : Bool */;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
+val* var12 /* : RuntimeVariable */;
+var_object = p0;
+/* <var_object:Object> isa Int */
+cltype = type_standard__Int.color;
+idtype = type_standard__Int.id;
+if(cltype >= (((long)var_object&3)?type_info[((long)var_object&3)]:var_object->type)->table_size) {
+var1 = 0;
+} else {
+var1 = (((long)var_object&3)?type_info[((long)var_object&3)]:var_object->type)->type_table[cltype] == idtype;
+}
+if (var1){
+{
+var3 = (long)(var_object)>>2;
+var2 = nit___nit__AbstractCompilerVisitor___int_instance(self, var3);
+}
+var = var2;
+goto RET_LABEL;
+} else {
+/* <var_object:Object> isa Bool */
+cltype5 = type_standard__Bool.color;
+idtype6 = type_standard__Bool.id;
+if(cltype5 >= (((long)var_object&3)?type_info[((long)var_object&3)]:var_object->type)->table_size) {
+var4 = 0;
+} else {
+var4 = (((long)var_object&3)?type_info[((long)var_object&3)]:var_object->type)->type_table[cltype5] == idtype6;
+}
+if (var4){
+{
+var8 = (short int)((long)(var_object)>>2);
+var7 = nit___nit__AbstractCompilerVisitor___bool_instance(self, var8);
+}
+var = var7;
+goto RET_LABEL;
+} else {
+/* <var_object:Object> isa String */
+cltype10 = type_standard__String.color;
+idtype11 = type_standard__String.id;
+if(cltype10 >= (((long)var_object&3)?type_info[((long)var_object&3)]:var_object->type)->table_size) {
+var9 = 0;
+} else {
+var9 = (((long)var_object&3)?type_info[((long)var_object&3)]:var_object->type)->type_table[cltype10] == idtype11;
+}
+if (var9){
+{
+var12 = nit___nit__AbstractCompilerVisitor___string_instance(self, var_object);
+}
+var = var12;
+goto RET_LABEL;
+} else {
+PRINT_ERROR("Runtime error: %s", "Aborted");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1556);
+fatal_exit(1);
+}
+}
+}
+RET_LABEL:;
+return var;
+}
+/* method abstract_compiler#AbstractCompilerVisitor#add for (self: AbstractCompilerVisitor, String) */
+void nit___nit__AbstractCompilerVisitor___add(val* self, val* p0) {
+val* var_s /* var s: String */;
+val* var /* : CodeWriter */;
+val* var2 /* : CodeWriter */;
+val* var3 /* : List[String] */;
+val* var5 /* : List[String] */;
+var_s = p0;
+{
+{ /* Inline abstract_compiler#AbstractCompilerVisitor#writer (self) on <self:AbstractCompilerVisitor> */
+var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___writer].val; /* _writer on <self:AbstractCompilerVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writer");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1117);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#CodeWriter#lines (var) on <var:CodeWriter> */
+var5 = var->attrs[COLOR_nit__abstract_compiler__CodeWriter___lines].val; /* _lines on <var:CodeWriter> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lines");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1081);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+standard___standard__Sequence___SimpleCollection__add(var3, var_s); /* Direct call abstract_collection#Sequence#add on <var3:List[String]>*/
+}
+RET_LABEL:;
+}
+/* method abstract_compiler#AbstractCompilerVisitor#add_decl for (self: AbstractCompilerVisitor, String) */
+void nit___nit__AbstractCompilerVisitor___add_decl(val* self, val* p0) {
+val* var_s /* var s: String */;
+val* var /* : CodeWriter */;
+val* var2 /* : CodeWriter */;
+val* var3 /* : List[String] */;
+val* var5 /* : List[String] */;
+var_s = p0;
+{
+{ /* Inline abstract_compiler#AbstractCompilerVisitor#writer (self) on <self:AbstractCompilerVisitor> */
+var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___writer].val; /* _writer on <self:AbstractCompilerVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writer");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1117);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#CodeWriter#decl_lines (var) on <var:CodeWriter> */
+var5 = var->attrs[COLOR_nit__abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <var:CodeWriter> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1082);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+standard___standard__Sequence___SimpleCollection__add(var3, var_s); /* Direct call abstract_collection#Sequence#add on <var3:List[String]>*/
+}
+RET_LABEL:;
+}
+/* method abstract_compiler#AbstractCompilerVisitor#require_declaration for (self: AbstractCompilerVisitor, String) */
+void nit___nit__AbstractCompilerVisitor___require_declaration(val* self, val* p0) {
+val* var_key /* var key: String */;
+val* var /* : CodeWriter */;
+val* var2 /* : CodeWriter */;
+val* var3 /* : CodeFile */;
+val* var5 /* : CodeFile */;
+val* var6 /* : HashSet[String] */;
+val* var8 /* : HashSet[String] */;
+val* var_reqs /* var reqs: HashSet[String] */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable ANode */;
+val* var12 /* : nullable ANode */;
+val* var_node /* var node: nullable ANode */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var16 /* : Bool */;
+short int var17 /* : Bool */;
+val* var18 /* : AbstractCompiler */;
+val* var20 /* : AbstractCompiler */;
+val* var21 /* : HashMap[String, ANode] */;
+val* var23 /* : HashMap[String, ANode] */;
+var_key = p0;
+{
+{ /* Inline abstract_compiler#AbstractCompilerVisitor#writer (self) on <self:AbstractCompilerVisitor> */
+var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___writer].val; /* _writer on <self:AbstractCompilerVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writer");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1117);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#CodeWriter#file (var) on <var:CodeWriter> */
+var5 = var->attrs[COLOR_nit__abstract_compiler__CodeWriter___file].val; /* _file on <var:CodeWriter> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _file");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1080);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#CodeFile#required_declarations (var3) on <var3:CodeFile> */
+var8 = var3->attrs[COLOR_nit__abstract_compiler__CodeFile___required_declarations].val; /* _required_declarations on <var3:CodeFile> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _required_declarations");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1075);
+fatal_exit(1);
+}
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+var_reqs = var6;
+{
+var9 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var_reqs, var_key);
+}
+if (var9){
+goto RET_LABEL;
+} else {
+}
+{
+standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var_reqs, var_key); /* Direct call hash_collection#HashSet#add on <var_reqs:HashSet[String]>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompilerVisitor#current_node (self) on <self:AbstractCompilerVisitor> */
+var12 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___current_node].val; /* _current_node on <self:AbstractCompilerVisitor> */
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+var_node = var10;
+if (var_node == NULL) {
+var13 = 0; /* is null */
+} else {
+var13 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_node,((val*)NULL)) on <var_node:nullable ANode> */
+var_other = ((val*)NULL);
+{
+var16 = ((short int(*)(val* self, val* p0))(var_node->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_node, var_other); /* == on <var_node:nullable ANode(ANode)>*/
+}
+var17 = !var16;
+var14 = var17;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
+}
+var13 = var14;
+}
+if (var13){
+{
+{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
+var20 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
+if (unlikely(var20 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
+}
+var18 = var20;
+RET_LABEL19:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#requirers_of_declarations (var18) on <var18:AbstractCompiler> */
+var23 = var18->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___requirers_of_declarations].val; /* _requirers_of_declarations on <var18:AbstractCompiler> */
+if (unlikely(var23 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _requirers_of_declarations");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 587);
+fatal_exit(1);
+}
+var21 = var23;
+RET_LABEL22:(void)0;
+}
+}
+{
+standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var21, var_key, var_node); /* Direct call hash_collection#HashMap#[]= on <var21:HashMap[String, ANode]>*/
+}
+} else {
+}
+RET_LABEL:;
+}
+/* method abstract_compiler#AbstractCompilerVisitor#declare_once for (self: AbstractCompilerVisitor, String) */
+void nit___nit__AbstractCompilerVisitor___declare_once(val* self, val* p0) {
+val* var_s /* var s: String */;
+val* var /* : AbstractCompiler */;
+val* var2 /* : AbstractCompiler */;
+var_s = p0;
+{
+{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
+var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+nit___nit__AbstractCompiler___provide_declaration(var, var_s, var_s); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <var:AbstractCompiler>*/
+}
+{
+nit___nit__AbstractCompilerVisitor___require_declaration(self, var_s); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:AbstractCompilerVisitor>*/
+}
+RET_LABEL:;
+}