+val* var17 /* : FlatString */;
+val* var18 /* : MClass */;
+val* var20 /* : MClass */;
+val* var21 /* : nullable MMethod */;
+val* var_initprop /* var initprop: nullable MMethod */;
+val* var22 /* : null */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
+val* var_other26 /* var other: nullable Object */;
+short int var27 /* : Bool */;
+short int var28 /* : Bool */;
+short int var29 /* : Bool */;
+val* var30 /* : nullable MMethod */;
+val* var31 /* : MModule */;
+val* var33 /* : MModule */;
+static val* varonce34;
+val* var35 /* : String */;
+char* var36 /* : NativeString */;
+long var37 /* : Int */;
+val* var38 /* : FlatString */;
+val* var39 /* : MClass */;
+val* var41 /* : MClass */;
+val* var42 /* : nullable MMethod */;
+val* var43 /* : MModule */;
+val* var45 /* : MModule */;
+static val* varonce46;
+val* var47 /* : String */;
+char* var48 /* : NativeString */;
+long var49 /* : Int */;
+val* var50 /* : FlatString */;
+val* var51 /* : MClass */;
+val* var53 /* : MClass */;
+val* var54 /* : nullable MMethod */;
+val* var_mainprop /* var mainprop: nullable MMethod */;
+val* var55 /* : null */;
+short int var56 /* : Bool */;
+short int var57 /* : Bool */;
+short int var59 /* : Bool */;
+short int var60 /* : Bool */;
+short int var61 /* : Bool */;
+val* var62 /* : MModule */;
+val* var64 /* : MModule */;
+val* var65 /* : nullable MClassType */;
+val* var_finalizable_type /* var finalizable_type: nullable MClassType */;
+val* var66 /* : null */;
+short int var67 /* : Bool */;
+short int var68 /* : Bool */;
+short int var70 /* : Bool */;
+short int var71 /* : Bool */;
+short int var72 /* : Bool */;
+val* var73 /* : MModule */;
+val* var75 /* : MModule */;
+static val* varonce76;
+val* var77 /* : String */;
+char* var78 /* : NativeString */;
+long var79 /* : Int */;
+val* var80 /* : FlatString */;
+val* var81 /* : MClass */;
+val* var83 /* : MClass */;
+val* var84 /* : nullable MMethod */;
+val* var_finalize_meth /* var finalize_meth: nullable MMethod */;
+val* var85 /* : null */;
+short int var86 /* : Bool */;
+short int var87 /* : Bool */;
+short int var89 /* : Bool */;
+short int var90 /* : Bool */;
+short int var91 /* : Bool */;
+static val* varonce92;
+val* var93 /* : String */;
+char* var94 /* : NativeString */;
+long var95 /* : Int */;
+val* var96 /* : FlatString */;
+static val* varonce97;
+val* var98 /* : String */;
+char* var99 /* : NativeString */;
+long var100 /* : Int */;
+val* var101 /* : FlatString */;
+static val* varonce102;
+val* var103 /* : String */;
+char* var104 /* : NativeString */;
+long var105 /* : Int */;
+val* var106 /* : FlatString */;
+static val* varonce107;
+val* var108 /* : String */;
+char* var109 /* : NativeString */;
+long var110 /* : Int */;
+val* var111 /* : FlatString */;
+static val* varonce112;
+val* var113 /* : String */;
+char* var114 /* : NativeString */;
+long var115 /* : Int */;
+val* var116 /* : FlatString */;
+val* var117 /* : List[MMethodDef] */;
+val* var119 /* : List[MMethodDef] */;
+short int var120 /* : Bool */;
+short int var121 /* : Bool */;
+val* var122 /* : List[MMethodDef] */;
+val* var124 /* : List[MMethodDef] */;
+val* var125 /* : nullable Object */;
+val* var_mmethoddef /* var mmethoddef: MMethodDef */;
+val* var126 /* : MProperty */;
+val* var128 /* : MProperty */;
+val* var_mmeth /* var mmeth: MMethod */;
+val* var129 /* : RapidTypeVisitor */;
+val* var130 /* : MClassDef */;
+val* var132 /* : MClassDef */;
+val* var133 /* : MClassType */;
+val* var135 /* : MClassType */;
+val* var_v /* var v: RapidTypeVisitor */;
+val* var136 /* : nullable MSignature */;
+val* var138 /* : nullable MSignature */;
+long var139 /* : Int */;
+long var141 /* : Int */;
+long var_vararg_rank /* var vararg_rank: Int */;
+long var142 /* : Int */;
+long var143 /* : Int */;
+long var145 /* : Int */;
+short int var146 /* : Bool */;
+short int var148 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var149 /* : Bool */;
+val* var150 /* : ModelBuilder */;
+val* var152 /* : ModelBuilder */;
+val* var153 /* : HashMap[MPropDef, APropdef] */;
+val* var155 /* : HashMap[MPropDef, APropdef] */;
+val* var156 /* : nullable Object */;
+val* var_node /* var node: APropdef */;
+val* var157 /* : nullable MSignature */;
+val* var159 /* : nullable MSignature */;
+val* var160 /* : Array[MParameter] */;
+val* var162 /* : Array[MParameter] */;
+val* var163 /* : nullable Object */;
+val* var164 /* : MType */;
+val* var166 /* : MType */;
+val* var_elttype /* var elttype: MType */;
+val* var167 /* : MModule */;
+val* var169 /* : MModule */;
+static val* varonce170;
+val* var171 /* : String */;
+char* var172 /* : NativeString */;
+long var173 /* : Int */;
+val* var174 /* : FlatString */;
+val* var175 /* : MClass */;
+val* var176 /* : Array[MType] */;
+long var177 /* : Int */;
+val* var_ /* var : Array[MType] */;
+val* var178 /* : MClassType */;
+val* var_vararg /* var vararg: MClassType */;
+val* var179 /* : MModule */;
+val* var181 /* : MModule */;
+static val* varonce182;
+val* var183 /* : String */;
+char* var184 /* : NativeString */;
+long var185 /* : Int */;
+val* var186 /* : FlatString */;
+val* var187 /* : MClass */;
+val* var188 /* : Array[MType] */;
+long var189 /* : Int */;
+val* var_190 /* var : Array[MType] */;
+val* var191 /* : MClassType */;
+val* var_native /* var native: MClassType */;
+val* var192 /* : ModelBuilder */;
+val* var194 /* : ModelBuilder */;
+static val* varonce195;
+val* var196 /* : String */;
+char* var197 /* : NativeString */;
+long var198 /* : Int */;
+val* var199 /* : FlatString */;
+val* var200 /* : MClass */;
+val* var202 /* : MClass */;
+val* var203 /* : MModule */;
+val* var205 /* : MModule */;
+val* var206 /* : MMethod */;
+val* var207 /* : nullable MSignature */;
+val* var209 /* : nullable MSignature */;
+val* var_sig /* var sig: MSignature */;
+val* var210 /* : MPropDef */;
+val* var212 /* : MPropDef */;
+val* var213 /* : nullable MSignature */;
+val* var215 /* : nullable MSignature */;
+val* var_osig /* var osig: MSignature */;
+long var216 /* : Int */;
+long var_i /* var i: Int */;
+long var217 /* : Int */;
+long var_218 /* var : Int */;
+short int var219 /* : Bool */;
+short int var221 /* : Bool */;
+int cltype222;
+int idtype223;
+const char* var_class_name224;
+short int var225 /* : Bool */;
+val* var226 /* : Array[MParameter] */;
+val* var228 /* : Array[MParameter] */;
+val* var229 /* : nullable Object */;
+val* var230 /* : MType */;
+val* var232 /* : MType */;
+val* var_origtype /* var origtype: MType */;
+short int var233 /* : Bool */;
+short int var234 /* : Bool */;
+val* var235 /* : Array[MParameter] */;
+val* var237 /* : Array[MParameter] */;
+val* var238 /* : nullable Object */;
+val* var239 /* : MType */;
+val* var241 /* : MType */;
+val* var_paramtype /* var paramtype: MType */;
+long var242 /* : Int */;
+long var243 /* : Int */;
+val* var245 /* : ModelBuilder */;
+val* var247 /* : ModelBuilder */;
+val* var248 /* : HashMap[MPropDef, APropdef] */;
+val* var250 /* : HashMap[MPropDef, APropdef] */;
+short int var251 /* : Bool */;
+short int var252 /* : Bool */;
+short int var253 /* : Bool */;
+short int var255 /* : Bool */;
+val* var256 /* : ModelBuilder */;
+val* var258 /* : ModelBuilder */;
+val* var259 /* : HashMap[MClassDef, AClassdef] */;
+val* var261 /* : HashMap[MClassDef, AClassdef] */;
+val* var262 /* : MClassDef */;
+val* var264 /* : MClassDef */;
+val* var265 /* : nullable Object */;
+val* var_nclassdef /* var nclassdef: AClassdef */;
+val* var266 /* : nullable MMethodDef */;
+val* var268 /* : nullable MMethodDef */;
+short int var269 /* : Bool */;
+short int var270 /* : Bool */;
+short int var272 /* : Bool */;
+short int var274 /* : Bool */;
+short int var275 /* : Bool */;
+val* var276 /* : MProperty */;
+val* var278 /* : MProperty */;
+short int var279 /* : Bool */;
+short int var281 /* : Bool */;
+short int var_282 /* var : Bool */;
+short int var283 /* : Bool */;
+short int var284 /* : Bool */;
+val* var285 /* : MClassType */;
+val* var287 /* : MClassType */;
+val* var288 /* : nullable Object */;
+val* var290 /* : nullable Object */;
+val* var291 /* : null */;
+short int var292 /* : Bool */;
+short int var293 /* : Bool */;
+val* var294 /* : nullable MSignature */;
+val* var296 /* : nullable MSignature */;
+val* var297 /* : nullable MType */;
+val* var299 /* : nullable MType */;
+short int var300 /* : Bool */;
+int cltype301;
+int idtype302;
+const char* var_class_name303;
+val* var305 /* : ModelBuilder */;
+val* var307 /* : ModelBuilder */;
+val* var308 /* : HashMap[MPropDef, APropdef] */;
+val* var310 /* : HashMap[MPropDef, APropdef] */;
+val* var311 /* : nullable Object */;
+val* var_npropdef /* var npropdef: APropdef */;
+short int var312 /* : Bool */;
+int cltype313;
+int idtype314;
+val* var315 /* : nullable Array[CallSite] */;
+val* var317 /* : nullable Array[CallSite] */;
+val* var_auto_super_inits /* var auto_super_inits: nullable Array[CallSite] */;
+val* var318 /* : null */;
+short int var319 /* : Bool */;
+short int var320 /* : Bool */;
+short int var322 /* : Bool */;
+short int var323 /* : Bool */;
+short int var324 /* : Bool */;
+val* var_325 /* var : Array[CallSite] */;
+val* var326 /* : ArrayIterator[nullable Object] */;
+val* var_327 /* var : ArrayIterator[CallSite] */;
+short int var328 /* : Bool */;
+val* var329 /* : nullable Object */;
+val* var_auto_super_init /* var auto_super_init: CallSite */;
+short int var332 /* : Bool */;
+short int var334 /* : Bool */;
+val* var335 /* : MClassType */;
+val* var337 /* : MClassType */;
+short int var338 /* : Bool */;
+short int var339 /* : Bool */;
+short int var341 /* : Bool */;
+short int var_342 /* var : Bool */;
+short int var343 /* : Bool */;
+short int var345 /* : Bool */;
+val* var346 /* : nullable MSignature */;
+val* var348 /* : nullable MSignature */;
+val* var349 /* : nullable MType */;
+val* var351 /* : nullable MType */;
+val* var_ret /* var ret: nullable MType */;
+short int var352 /* : Bool */;
+short int var353 /* : Bool */;
+short int var354 /* : Bool */;
+val* var355 /* : null */;
+short int var356 /* : Bool */;
+short int var357 /* : Bool */;
+short int var359 /* : Bool */;
+short int var360 /* : Bool */;
+short int var361 /* : Bool */;
+short int var_362 /* var : Bool */;
+short int var363 /* : Bool */;
+int cltype364;
+int idtype365;
+short int var_366 /* var : Bool */;
+val* var367 /* : MClass */;
+val* var369 /* : MClass */;
+val* var370 /* : MClassKind */;
+val* var372 /* : MClassKind */;
+val* var373 /* : MClassKind */;
+short int var374 /* : Bool */;
+short int var375 /* : Bool */;
+short int var377 /* : Bool */;
+short int var378 /* : Bool */;
+short int var379 /* : Bool */;
+short int var_380 /* var : Bool */;
+val* var381 /* : MClass */;
+val* var383 /* : MClass */;
+val* var384 /* : MClassKind */;
+val* var386 /* : MClassKind */;
+val* var387 /* : MClassKind */;
+short int var388 /* : Bool */;
+short int var389 /* : Bool */;
+short int var391 /* : Bool */;
+short int var392 /* : Bool */;
+short int var393 /* : Bool */;
+val* var395 /* : List[MClassType] */;
+val* var_todo_types /* var todo_types: List[MClassType] */;
+val* var396 /* : HashSet[MClassType] */;
+val* var398 /* : HashSet[MClassType] */;
+short int var399 /* : Bool */;
+short int var400 /* : Bool */;
+val* var401 /* : nullable Object */;
+val* var_t /* var t: MClassType */;
+val* var402 /* : HashSet[MClassType] */;
+val* var404 /* : HashSet[MClassType] */;
+val* var_405 /* var : HashSet[MClassType] */;
+val* var406 /* : Iterator[Object] */;
+val* var_407 /* var : Iterator[MClassType] */;
+short int var408 /* : Bool */;
+val* var409 /* : nullable Object */;
+val* var_ot /* var ot: MClassType */;
+val* var410 /* : MModule */;
+val* var412 /* : MModule */;
+short int var413 /* : Bool */;
+short int var414 /* : Bool */;
+val* var416 /* : MModule */;
+val* var418 /* : MModule */;
+val* var419 /* : MClassType */;
+val* var_rt /* var rt: MClassType */;
+val* var420 /* : HashSet[MClassType] */;
+val* var422 /* : HashSet[MClassType] */;
+short int var423 /* : Bool */;
+val* var424 /* : HashSet[MClassType] */;
+val* var426 /* : HashSet[MClassType] */;
+val* var430 /* : HashSet[MType] */;
+val* var432 /* : HashSet[MType] */;
+val* var_433 /* var : HashSet[MType] */;
+val* var434 /* : Iterator[Object] */;
+val* var_435 /* var : Iterator[MType] */;
+short int var436 /* : Bool */;
+val* var437 /* : nullable Object */;
+val* var_ot438 /* var ot: MType */;
+val* var439 /* : HashSet[MClassType] */;
+val* var441 /* : HashSet[MClassType] */;
+val* var_442 /* var : HashSet[MClassType] */;
+val* var443 /* : Iterator[Object] */;
+val* var_444 /* var : Iterator[MClassType] */;
+short int var445 /* : Bool */;
+val* var446 /* : nullable Object */;
+val* var_t447 /* var t: MClassType */;
+val* var448 /* : MModule */;
+val* var450 /* : MModule */;
+short int var451 /* : Bool */;
+short int var452 /* : Bool */;
+val* var454 /* : MModule */;
+val* var456 /* : MModule */;
+val* var457 /* : MType */;
+val* var_rt458 /* var rt: MType */;
+val* var459 /* : HashSet[MType] */;
+val* var461 /* : HashSet[MType] */;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var2 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+var3 = model__MModule__sys_type(var);
+}
+var_maintype = var3;
+var4 = NULL;
+if (var_maintype == NULL) {
+var5 = 1; /* is null */
+} else {
+var5 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_maintype,var4) on <var_maintype:nullable MClassType> */
+var_other = var4;
+{
+{ /* Inline kernel#Object#is_same_instance (var_maintype,var_other) on <var_maintype:nullable MClassType(MClassType)> */
+var10 = var_maintype == var_other;
+var8 = var10;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
+}
+}
+var6 = var8;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
+}
+var5 = var6;
+}
+if (var5){
+goto RET_LABEL;
+} else {
+}
+{
+rapid_type_analysis__RapidTypeAnalysis__add_new(self, var_maintype, var_maintype); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_new on <self:RapidTypeAnalysis>*/
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var13 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+if (varonce) {
+var14 = varonce;
+} else {
+var15 = "init";
+var16 = 4;
+var17 = string__NativeString__to_s_with_length(var15, var16);
+var14 = var17;
+varonce = var14;
+}
+{
+{ /* Inline model#MClassType#mclass (var_maintype) on <var_maintype:nullable MClassType(MClassType)> */
+var20 = var_maintype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
+if (unlikely(var20 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var18 = var20;
+RET_LABEL19:(void)0;
+}
+}
+{
+var21 = model__MModule__try_get_primitive_method(var11, var14, var18);
+}
+var_initprop = var21;
+var22 = NULL;
+if (var_initprop == NULL) {
+var23 = 0; /* is null */
+} else {
+var23 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_initprop,var22) on <var_initprop:nullable MMethod> */
+var_other26 = var22;
+{
+var28 = ((short int (*)(val*, val*))(var_initprop->class->vft[COLOR_kernel__Object___61d_61d]))(var_initprop, var_other26) /* == on <var_initprop:nullable MMethod(MMethod)>*/;
+var27 = var28;
+}
+var29 = !var27;
+var24 = var29;
+goto RET_LABEL25;
+RET_LABEL25:(void)0;
+}
+var23 = var24;
+}
+if (var23){
+{
+rapid_type_analysis__RapidTypeAnalysis__add_send(self, var_maintype, var_initprop); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <self:RapidTypeAnalysis>*/
+}
+} else {
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var33 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var33 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var31 = var33;
+RET_LABEL32:(void)0;
+}
+}
+if (varonce34) {
+var35 = varonce34;
+} else {
+var36 = "run";
+var37 = 3;
+var38 = string__NativeString__to_s_with_length(var36, var37);
+var35 = var38;
+varonce34 = var35;
+}
+{
+{ /* Inline model#MClassType#mclass (var_maintype) on <var_maintype:nullable MClassType(MClassType)> */
+var41 = var_maintype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
+if (unlikely(var41 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var39 = var41;
+RET_LABEL40:(void)0;
+}
+}
+{
+var42 = model__MModule__try_get_primitive_method(var31, var35, var39);
+}
+if (var42!=NULL) {
+var30 = var42;
+} else {
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var45 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var45 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var43 = var45;
+RET_LABEL44:(void)0;
+}
+}
+if (varonce46) {
+var47 = varonce46;
+} else {
+var48 = "main";
+var49 = 4;
+var50 = string__NativeString__to_s_with_length(var48, var49);
+var47 = var50;
+varonce46 = var47;
+}
+{
+{ /* Inline model#MClassType#mclass (var_maintype) on <var_maintype:nullable MClassType(MClassType)> */
+var53 = var_maintype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_maintype:nullable MClassType(MClassType)> */
+if (unlikely(var53 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var51 = var53;
+RET_LABEL52:(void)0;
+}
+}
+{
+var54 = model__MModule__try_get_primitive_method(var43, var47, var51);
+}
+var30 = var54;
+}
+var_mainprop = var30;
+var55 = NULL;
+if (var_mainprop == NULL) {
+var56 = 0; /* is null */
+} else {
+var56 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_mainprop,var55) on <var_mainprop:nullable MMethod> */
+var_other26 = var55;
+{
+var60 = ((short int (*)(val*, val*))(var_mainprop->class->vft[COLOR_kernel__Object___61d_61d]))(var_mainprop, var_other26) /* == on <var_mainprop:nullable MMethod(MMethod)>*/;
+var59 = var60;
+}
+var61 = !var59;
+var57 = var61;
+goto RET_LABEL58;
+RET_LABEL58:(void)0;
+}
+var56 = var57;
+}
+if (var56){
+{
+rapid_type_analysis__RapidTypeAnalysis__add_send(self, var_maintype, var_mainprop); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <self:RapidTypeAnalysis>*/
+}
+} else {
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var64 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var64 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var62 = var64;
+RET_LABEL63:(void)0;
+}
+}
+{
+var65 = model__MModule__finalizable_type(var62);
+}
+var_finalizable_type = var65;
+var66 = NULL;
+if (var_finalizable_type == NULL) {
+var67 = 0; /* is null */
+} else {
+var67 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_finalizable_type,var66) on <var_finalizable_type:nullable MClassType> */
+var_other26 = var66;
+{
+var71 = ((short int (*)(val*, val*))(var_finalizable_type->class->vft[COLOR_kernel__Object___61d_61d]))(var_finalizable_type, var_other26) /* == on <var_finalizable_type:nullable MClassType(MClassType)>*/;
+var70 = var71;
+}
+var72 = !var70;
+var68 = var72;
+goto RET_LABEL69;
+RET_LABEL69:(void)0;
+}
+var67 = var68;
+}
+if (var67){
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var75 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var75 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var73 = var75;
+RET_LABEL74:(void)0;
+}
+}
+if (varonce76) {
+var77 = varonce76;
+} else {
+var78 = "finalize";
+var79 = 8;
+var80 = string__NativeString__to_s_with_length(var78, var79);
+var77 = var80;
+varonce76 = var77;
+}
+{
+{ /* Inline model#MClassType#mclass (var_finalizable_type) on <var_finalizable_type:nullable MClassType(MClassType)> */
+var83 = var_finalizable_type->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_finalizable_type:nullable MClassType(MClassType)> */
+if (unlikely(var83 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var81 = var83;
+RET_LABEL82:(void)0;
+}
+}
+{
+var84 = model__MModule__try_get_primitive_method(var73, var77, var81);
+}
+var_finalize_meth = var84;
+var85 = NULL;
+if (var_finalize_meth == NULL) {
+var86 = 0; /* is null */
+} else {
+var86 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_finalize_meth,var85) on <var_finalize_meth:nullable MMethod> */
+var_other26 = var85;
+{
+var90 = ((short int (*)(val*, val*))(var_finalize_meth->class->vft[COLOR_kernel__Object___61d_61d]))(var_finalize_meth, var_other26) /* == on <var_finalize_meth:nullable MMethod(MMethod)>*/;
+var89 = var90;
+}
+var91 = !var89;
+var87 = var91;
+goto RET_LABEL88;
+RET_LABEL88:(void)0;
+}
+var86 = var87;
+}
+if (var86){
+{
+rapid_type_analysis__RapidTypeAnalysis__add_send(self, var_finalizable_type, var_finalize_meth); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_send on <self:RapidTypeAnalysis>*/
+}
+} else {
+}
+} else {
+}
+if (varonce92) {
+var93 = varonce92;
+} else {
+var94 = "Bool";
+var95 = 4;
+var96 = string__NativeString__to_s_with_length(var94, var95);
+var93 = var96;
+varonce92 = var93;
+}
+{
+rapid_type_analysis__RapidTypeAnalysis__force_alive(self, var93); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
+}
+if (varonce97) {
+var98 = varonce97;
+} else {
+var99 = "Int";
+var100 = 3;
+var101 = string__NativeString__to_s_with_length(var99, var100);
+var98 = var101;
+varonce97 = var98;
+}
+{
+rapid_type_analysis__RapidTypeAnalysis__force_alive(self, var98); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
+}
+if (varonce102) {
+var103 = varonce102;
+} else {
+var104 = "Float";
+var105 = 5;
+var106 = string__NativeString__to_s_with_length(var104, var105);
+var103 = var106;
+varonce102 = var103;
+}
+{
+rapid_type_analysis__RapidTypeAnalysis__force_alive(self, var103); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
+}
+if (varonce107) {
+var108 = varonce107;
+} else {
+var109 = "Char";
+var110 = 4;
+var111 = string__NativeString__to_s_with_length(var109, var110);
+var108 = var111;
+varonce107 = var108;
+}
+{
+rapid_type_analysis__RapidTypeAnalysis__force_alive(self, var108); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
+}
+if (varonce112) {
+var113 = varonce112;
+} else {
+var114 = "Pointer";
+var115 = 7;
+var116 = string__NativeString__to_s_with_length(var114, var115);
+var113 = var116;
+varonce112 = var113;
+}
+{
+rapid_type_analysis__RapidTypeAnalysis__force_alive(self, var113); /* Direct call rapid_type_analysis#RapidTypeAnalysis#force_alive on <self:RapidTypeAnalysis>*/
+}
+for(;;) {
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#todo (self) on <self:RapidTypeAnalysis> */
+var119 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
+if (unlikely(var119 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 172);
+show_backtrace(1);
+}
+var117 = var119;
+RET_LABEL118:(void)0;
+}
+}
+{
+var120 = list__List__is_empty(var117);
+}
+var121 = !var120;
+if (var121){
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#todo (self) on <self:RapidTypeAnalysis> */
+var124 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___todo].val; /* _todo on <self:RapidTypeAnalysis> */
+if (unlikely(var124 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _todo");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 172);
+show_backtrace(1);
+}
+var122 = var124;
+RET_LABEL123:(void)0;
+}
+}
+{
+var125 = list__List__shift(var122);
+}
+var_mmethoddef = var125;
+{
+{ /* Inline model#MPropDef#mproperty (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var128 = var_mmethoddef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mmethoddef:MMethodDef> */
+if (unlikely(var128 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
+show_backtrace(1);
+}
+var126 = var128;
+RET_LABEL127:(void)0;
+}
+}
+var_mmeth = var126;
+var129 = NEW_rapid_type_analysis__RapidTypeVisitor(&type_rapid_type_analysis__RapidTypeVisitor);
+{
+{ /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var132 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
+if (unlikely(var132 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
+show_backtrace(1);
+}
+var130 = var132;
+RET_LABEL131:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#bound_mtype (var130) on <var130:MClassDef> */
+var135 = var130->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var130:MClassDef> */
+if (unlikely(var135 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
+show_backtrace(1);
+}
+var133 = var135;
+RET_LABEL134:(void)0;
+}
+}
+{
+rapid_type_analysis__RapidTypeVisitor__init(var129, self, var133, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeVisitor#init on <var129:RapidTypeVisitor>*/
+}
+var_v = var129;
+{
+{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var138 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
+var136 = var138;
+RET_LABEL137:(void)0;
+}
+}
+if (var136 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 216);
+show_backtrace(1);
+} else {
+{ /* Inline model#MSignature#vararg_rank (var136) on <var136:nullable MSignature> */
+if (unlikely(var136 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1510);
+show_backtrace(1);
+}
+var141 = var136->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <var136:nullable MSignature> */
+var139 = var141;
+RET_LABEL140:(void)0;
+}
+}
+var_vararg_rank = var139;
+var142 = 1;
+{
+{ /* Inline kernel#Int#unary - (var142) on <var142:Int> */
+var145 = -var142;
+var143 = var145;
+goto RET_LABEL144;
+RET_LABEL144:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#> (var_vararg_rank,var143) on <var_vararg_rank:Int> */
+/* Covariant cast for argument 0 (i) <var143:Int> isa OTHER */
+/* <var143:Int> isa OTHER */
+var148 = 1; /* easy <var143:Int> isa OTHER*/
+if (unlikely(!var148)) {
+var_class_name = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
+show_backtrace(1);
+}
+var149 = var_vararg_rank > var143;
+var146 = var149;
+goto RET_LABEL147;
+RET_LABEL147:(void)0;
+}
+}
+if (var146){
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
+var152 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
+if (unlikely(var152 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46);
+show_backtrace(1);
+}
+var150 = var152;
+RET_LABEL151:(void)0;
+}
+}
+{
+{ /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var150) on <var150:ModelBuilder> */
+var155 = var150->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <var150:ModelBuilder> */
+if (unlikely(var155 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
+PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39);
+show_backtrace(1);
+}
+var153 = var155;
+RET_LABEL154:(void)0;
+}
+}
+{
+var156 = hash_collection__HashMap___91d_93d(var153, var_mmethoddef);
+}
+var_node = var156;
+{
+{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var159 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
+var157 = var159;
+RET_LABEL158:(void)0;
+}
+}
+if (var157 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 219);
+show_backtrace(1);
+} else {
+{ /* Inline model#MSignature#mparameters (var157) on <var157:nullable MSignature> */
+if (unlikely(var157 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
+show_backtrace(1);
+}
+var162 = var157->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var157:nullable MSignature> */
+if (unlikely(var162 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
+show_backtrace(1);
+}
+var160 = var162;
+RET_LABEL161:(void)0;
+}
+}
+{
+var163 = array__Array___91d_93d(var160, var_vararg_rank);
+}
+{
+{ /* Inline model#MParameter#mtype (var163) on <var163:nullable Object(MParameter)> */
+var166 = var163->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var163:nullable Object(MParameter)> */
+if (unlikely(var166 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
+show_backtrace(1);
+}
+var164 = var166;
+RET_LABEL165:(void)0;
+}
+}
+var_elttype = var164;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var169 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var169 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var167 = var169;
+RET_LABEL168:(void)0;
+}
+}
+if (varonce170) {
+var171 = varonce170;
+} else {
+var172 = "Array";
+var173 = 5;
+var174 = string__NativeString__to_s_with_length(var172, var173);
+var171 = var174;
+varonce170 = var171;
+}
+{
+var175 = model__MModule__get_primitive_class(var167, var171);
+}
+var176 = NEW_array__Array(&type_array__Arraymodel__MType);
+var177 = 1;
+{
+array__Array__with_capacity(var176, var177); /* Direct call array#Array#with_capacity on <var176:Array[MType]>*/
+}
+var_ = var176;
+{
+array__AbstractArray__push(var_, var_elttype); /* Direct call array#AbstractArray#push on <var_:Array[MType]>*/
+}
+{
+var178 = model__MClass__get_mtype(var175, var_);
+}
+var_vararg = var178;
+{
+rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_vararg); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var181 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var181 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var179 = var181;
+RET_LABEL180:(void)0;
+}
+}
+if (varonce182) {
+var183 = varonce182;
+} else {
+var184 = "NativeArray";
+var185 = 11;
+var186 = string__NativeString__to_s_with_length(var184, var185);
+var183 = var186;
+varonce182 = var183;
+}
+{
+var187 = model__MModule__get_primitive_class(var179, var183);
+}
+var188 = NEW_array__Array(&type_array__Arraymodel__MType);
+var189 = 1;
+{
+array__Array__with_capacity(var188, var189); /* Direct call array#Array#with_capacity on <var188:Array[MType]>*/
+}
+var_190 = var188;
+{
+array__AbstractArray__push(var_190, var_elttype); /* Direct call array#AbstractArray#push on <var_190:Array[MType]>*/
+}
+{
+var191 = model__MClass__get_mtype(var187, var_190);
+}
+var_native = var191;
+{
+rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_native); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
+var194 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
+if (unlikely(var194 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46);
+show_backtrace(1);
+}
+var192 = var194;
+RET_LABEL193:(void)0;
+}
+}
+if (varonce195) {
+var196 = varonce195;
+} else {
+var197 = "with_native";
+var198 = 11;
+var199 = string__NativeString__to_s_with_length(var197, var198);
+var196 = var199;
+varonce195 = var196;
+}
+{
+{ /* Inline model#MClassType#mclass (var_vararg) on <var_vararg:MClassType> */
+var202 = var_vararg->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_vararg:MClassType> */
+if (unlikely(var202 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var200 = var202;
+RET_LABEL201:(void)0;
+}
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var205 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var205 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var203 = var205;
+RET_LABEL204:(void)0;
+}
+}
+{
+var206 = modelbuilder__ModelBuilder__force_get_primitive_method(var192, var_node, var196, var200, var203);
+}
+{
+rapid_type_analysis__RapidTypeVisitor__add_monomorphic_send(var_v, var_vararg, var206); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_monomorphic_send on <var_v:RapidTypeVisitor>*/
+}
+} else {
+}
+{
+{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var209 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
+var207 = var209;
+RET_LABEL208:(void)0;
+}
+}
+if (unlikely(var207 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 229);
+show_backtrace(1);
+}
+var_sig = var207;
+{
+{ /* Inline model#MProperty#intro (var_mmeth) on <var_mmeth:MMethod> */
+var212 = var_mmeth->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_mmeth:MMethod> */
+if (unlikely(var212 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
+show_backtrace(1);
+}
+var210 = var212;
+RET_LABEL211:(void)0;
+}
+}
+{
+{ /* Inline model#MMethodDef#msignature (var210) on <var210:MPropDef(MMethodDef)> */
+var215 = var210->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var210:MPropDef(MMethodDef)> */
+var213 = var215;
+RET_LABEL214:(void)0;
+}
+}
+if (unlikely(var213 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 230);
+show_backtrace(1);
+}
+var_osig = var213;
+var216 = 0;
+var_i = var216;
+{
+var217 = model__MSignature__arity(var_sig);
+}
+var_218 = var217;
+for(;;) {
+{
+{ /* Inline kernel#Int#< (var_i,var_218) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_218:Int> isa OTHER */
+/* <var_218:Int> isa OTHER */
+var221 = 1; /* easy <var_218:Int> isa OTHER*/
+if (unlikely(!var221)) {
+var_class_name224 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name224);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
+show_backtrace(1);
+}
+var225 = var_i < var_218;
+var219 = var225;
+goto RET_LABEL220;
+RET_LABEL220:(void)0;
+}
+}
+if (var219){
+{
+{ /* Inline model#MSignature#mparameters (var_osig) on <var_osig:MSignature> */
+var228 = var_osig->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_osig:MSignature> */
+if (unlikely(var228 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
+show_backtrace(1);
+}
+var226 = var228;
+RET_LABEL227:(void)0;
+}
+}
+{
+var229 = array__Array___91d_93d(var226, var_i);
+}
+{
+{ /* Inline model#MParameter#mtype (var229) on <var229:nullable Object(MParameter)> */
+var232 = var229->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var229:nullable Object(MParameter)> */
+if (unlikely(var232 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
+show_backtrace(1);
+}
+var230 = var232;
+RET_LABEL231:(void)0;
+}
+}
+var_origtype = var230;
+{
+var233 = ((short int (*)(val*))(var_origtype->class->vft[COLOR_model__MType__need_anchor]))(var_origtype) /* need_anchor on <var_origtype:MType>*/;
+}
+var234 = !var233;
+if (var234){
+goto BREAK_label;
+} else {
+}
+{
+{ /* Inline model#MSignature#mparameters (var_sig) on <var_sig:MSignature> */
+var237 = var_sig->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_sig:MSignature> */
+if (unlikely(var237 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
+show_backtrace(1);
+}
+var235 = var237;
+RET_LABEL236:(void)0;
+}
+}
+{
+var238 = array__Array___91d_93d(var235, var_i);
+}
+{
+{ /* Inline model#MParameter#mtype (var238) on <var238:nullable Object(MParameter)> */
+var241 = var238->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var238:nullable Object(MParameter)> */
+if (unlikely(var241 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
+show_backtrace(1);
+}
+var239 = var241;
+RET_LABEL240:(void)0;
+}
+}
+var_paramtype = var239;
+{
+rapid_type_analysis__RapidTypeAnalysis__add_cast(self, var_paramtype); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_cast on <self:RapidTypeAnalysis>*/
+}
+BREAK_label: (void)0;
+var242 = 1;
+{
+var243 = kernel__Int__successor(var_i, var242);
+}
+var_i = var243;
+} else {
+goto BREAK_label244;
+}
+}
+BREAK_label244: (void)0;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
+var247 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
+if (unlikely(var247 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46);
+show_backtrace(1);
+}
+var245 = var247;
+RET_LABEL246:(void)0;
+}
+}
+{
+{ /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var245) on <var245:ModelBuilder> */
+var250 = var245->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <var245:ModelBuilder> */
+if (unlikely(var250 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
+PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39);
+show_backtrace(1);
+}
+var248 = var250;
+RET_LABEL249:(void)0;
+}
+}
+{
+var251 = abstract_collection__MapRead__has_key(var248, var_mmethoddef);
+}
+var252 = !var251;
+if (var252){
+{
+{ /* Inline model#MMethod#is_root_init (var_mmeth) on <var_mmeth:MMethod> */
+var255 = var_mmeth->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on <var_mmeth:MMethod> */
+var253 = var255;
+RET_LABEL254:(void)0;
+}
+}
+if (var253){
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
+var258 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
+if (unlikely(var258 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46);
+show_backtrace(1);
+}
+var256 = var258;
+RET_LABEL257:(void)0;
+}
+}
+{
+{ /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (var256) on <var256:ModelBuilder> */
+var261 = var256->attrs[COLOR_modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <var256:ModelBuilder> */
+if (unlikely(var261 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef");
+PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_class.nit", 410);
+show_backtrace(1);
+}
+var259 = var261;
+RET_LABEL260:(void)0;
+}
+}
+{
+{ /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var264 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
+if (unlikely(var264 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
+show_backtrace(1);
+}
+var262 = var264;
+RET_LABEL263:(void)0;
+}
+}
+{
+var265 = hash_collection__HashMap___91d_93d(var259, var262);
+}
+var_nclassdef = var265;
+{
+{ /* Inline modelize_property#AClassdef#mfree_init (var_nclassdef) on <var_nclassdef:AClassdef> */
+var268 = var_nclassdef->attrs[COLOR_modelize_property__AClassdef___mfree_init].val; /* _mfree_init on <var_nclassdef:AClassdef> */
+var266 = var268;
+RET_LABEL267:(void)0;
+}
+}
+{
+{ /* Inline kernel#Object#== (var_mmethoddef,var266) on <var_mmethoddef:MMethodDef> */
+var_other = var266;
+{
+{ /* Inline kernel#Object#is_same_instance (var_mmethoddef,var_other) on <var_mmethoddef:MMethodDef> */
+var274 = var_mmethoddef == var_other;
+var272 = var274;
+goto RET_LABEL273;
+RET_LABEL273:(void)0;
+}
+}
+var270 = var272;
+goto RET_LABEL271;
+RET_LABEL271:(void)0;
+}
+var269 = var270;
+}
+if (unlikely(!var269)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 242);
+show_backtrace(1);
+}
+{
+{ /* Inline model#MPropDef#mproperty (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var278 = var_mmethoddef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mmethoddef:MMethodDef> */
+if (unlikely(var278 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
+show_backtrace(1);
+}
+var276 = var278;
+RET_LABEL277:(void)0;
+}
+}
+{
+{ /* Inline model#MMethod#is_root_init (var276) on <var276:MProperty(MMethod)> */
+var281 = var276->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on <var276:MProperty(MMethod)> */
+var279 = var281;
+RET_LABEL280:(void)0;
+}
+}
+var_282 = var279;
+if (var279){
+{
+var283 = model__MPropDef__is_intro(var_mmethoddef);
+}
+var284 = !var283;
+var275 = var284;
+} else {
+var275 = var_282;
+}
+if (var275){
+{
+{ /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (var_v) on <var_v:RapidTypeVisitor> */
+var287 = var_v->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <var_v:RapidTypeVisitor> */
+if (unlikely(var287 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 441);
+show_backtrace(1);
+}
+var285 = var287;
+RET_LABEL286:(void)0;
+}
+}
+{
+rapid_type_analysis__RapidTypeAnalysis__add_super_send(self, var285, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on <self:RapidTypeAnalysis>*/
+}
+} else {
+}
+} else {
+{
+{ /* Inline model#MMethodDef#constant_value (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var290 = var_mmethoddef->attrs[COLOR_model__MMethodDef___constant_value].val; /* _constant_value on <var_mmethoddef:MMethodDef> */
+var288 = var290;
+RET_LABEL289:(void)0;
+}
+}
+var291 = NULL;
+if (var288 == NULL) {
+var292 = 0; /* is null */
+} else {
+var292 = 1; /* arg is null and recv is not */
+}
+if (0) {
+var293 = ((short int (*)(val*, val*))(var288->class->vft[COLOR_kernel__Object___33d_61d]))(var288, var291) /* != on <var288:nullable Object>*/;
+var292 = var293;
+}
+if (var292){
+{
+{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var296 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
+var294 = var296;
+RET_LABEL295:(void)0;
+}
+}
+if (var294 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 249);
+show_backtrace(1);
+} else {
+{ /* Inline model#MSignature#return_mtype (var294) on <var294:nullable MSignature> */
+if (unlikely(var294 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1468);
+show_backtrace(1);
+}
+var299 = var294->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var294:nullable MSignature> */
+var297 = var299;
+RET_LABEL298:(void)0;
+}
+}
+/* <var297:nullable MType> isa MClassType */
+cltype301 = type_model__MClassType.color;
+idtype302 = type_model__MClassType.id;
+if(var297 == NULL) {
+var300 = 0;
+} else {
+if(cltype301 >= var297->type->table_size) {
+var300 = 0;
+} else {
+var300 = var297->type->type_table[cltype301] == idtype302;
+}
+}
+if (unlikely(!var300)) {
+var_class_name303 = var297 == NULL ? "null" : var297->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name303);
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 249);
+show_backtrace(1);
+}
+{
+rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var297); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
+}
+} else {
+PRINT_ERROR("Runtime error: %s", "Aborted");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 251);
+show_backtrace(1);
+}
+}
+goto BREAK_label304;
+} else {
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#modelbuilder (self) on <self:RapidTypeAnalysis> */
+var307 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___modelbuilder].val; /* _modelbuilder on <self:RapidTypeAnalysis> */
+if (unlikely(var307 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 46);
+show_backtrace(1);
+}
+var305 = var307;
+RET_LABEL306:(void)0;
+}
+}
+{
+{ /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var305) on <var305:ModelBuilder> */
+var310 = var305->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <var305:ModelBuilder> */
+if (unlikely(var310 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
+PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39);
+show_backtrace(1);
+}
+var308 = var310;
+RET_LABEL309:(void)0;
+}
+}
+{
+var311 = hash_collection__HashMap___91d_93d(var308, var_mmethoddef);
+}
+var_npropdef = var311;
+/* <var_npropdef:APropdef> isa AMethPropdef */
+cltype313 = type_parser_nodes__AMethPropdef.color;
+idtype314 = type_parser_nodes__AMethPropdef.id;
+if(cltype313 >= var_npropdef->type->table_size) {
+var312 = 0;
+} else {
+var312 = var_npropdef->type->type_table[cltype313] == idtype314;
+}
+if (var312){
+{
+{ /* Inline auto_super_init#AMethPropdef#auto_super_inits (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
+var317 = var_npropdef->attrs[COLOR_auto_super_init__AMethPropdef___auto_super_inits].val; /* _auto_super_inits on <var_npropdef:APropdef(AMethPropdef)> */
+var315 = var317;
+RET_LABEL316:(void)0;
+}
+}
+var_auto_super_inits = var315;
+var318 = NULL;
+if (var_auto_super_inits == NULL) {
+var319 = 0; /* is null */
+} else {
+var319 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_auto_super_inits,var318) on <var_auto_super_inits:nullable Array[CallSite]> */
+var_other26 = var318;
+{
+var323 = ((short int (*)(val*, val*))(var_auto_super_inits->class->vft[COLOR_kernel__Object___61d_61d]))(var_auto_super_inits, var_other26) /* == on <var_auto_super_inits:nullable Array[CallSite](Array[CallSite])>*/;
+var322 = var323;
+}
+var324 = !var322;
+var320 = var324;
+goto RET_LABEL321;
+RET_LABEL321:(void)0;
+}
+var319 = var320;
+}
+if (var319){
+var_325 = var_auto_super_inits;
+{
+var326 = array__AbstractArrayRead__iterator(var_325);
+}
+var_327 = var326;
+for(;;) {
+{
+var328 = array__ArrayIterator__is_ok(var_327);
+}
+if (var328){
+{
+var329 = array__ArrayIterator__item(var_327);
+}
+var_auto_super_init = var329;
+{
+rapid_type_analysis__RapidTypeVisitor__add_callsite(var_v, var_auto_super_init); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_callsite on <var_v:RapidTypeVisitor>*/
+}
+{
+array__ArrayIterator__next(var_327); /* Direct call array#ArrayIterator#next on <var_327:ArrayIterator[CallSite]>*/
+}
+} else {
+goto BREAK_label330;
+}
+}
+BREAK_label330: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_327) on <var_327:ArrayIterator[CallSite]> */
+RET_LABEL331:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline auto_super_init#AMethPropdef#auto_super_call (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
+var334 = var_npropdef->attrs[COLOR_auto_super_init__AMethPropdef___auto_super_call].s; /* _auto_super_call on <var_npropdef:APropdef(AMethPropdef)> */
+var332 = var334;
+RET_LABEL333:(void)0;
+}
+}
+if (var332){
+{
+{ /* Inline rapid_type_analysis#RapidTypeVisitor#receiver (var_v) on <var_v:RapidTypeVisitor> */
+var337 = var_v->attrs[COLOR_rapid_type_analysis__RapidTypeVisitor___receiver].val; /* _receiver on <var_v:RapidTypeVisitor> */
+if (unlikely(var337 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 441);
+show_backtrace(1);
+}
+var335 = var337;
+RET_LABEL336:(void)0;
+}
+}
+{
+rapid_type_analysis__RapidTypeAnalysis__add_super_send(self, var335, var_mmethoddef); /* Direct call rapid_type_analysis#RapidTypeAnalysis#add_super_send on <self:RapidTypeAnalysis>*/
+}
+} else {
+}
+} else {
+}
+{
+{ /* Inline model#MMethodDef#is_intern (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var341 = var_mmethoddef->attrs[COLOR_model__MMethodDef___is_intern].s; /* _is_intern on <var_mmethoddef:MMethodDef> */
+var339 = var341;
+RET_LABEL340:(void)0;
+}
+}
+var_342 = var339;
+if (var339){
+var338 = var_342;
+} else {
+{
+{ /* Inline model#MMethodDef#is_extern (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var345 = var_mmethoddef->attrs[COLOR_model__MMethodDef___is_extern].s; /* _is_extern on <var_mmethoddef:MMethodDef> */
+var343 = var345;
+RET_LABEL344:(void)0;
+}
+}
+var338 = var343;
+}
+if (var338){
+{
+{ /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
+var348 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
+var346 = var348;
+RET_LABEL347:(void)0;
+}
+}
+if (var346 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 272);
+show_backtrace(1);
+} else {
+{ /* Inline model#MSignature#return_mtype (var346) on <var346:nullable MSignature> */
+if (unlikely(var346 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1468);
+show_backtrace(1);
+}
+var351 = var346->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var346:nullable MSignature> */
+var349 = var351;
+RET_LABEL350:(void)0;
+}
+}
+var_ret = var349;
+var355 = NULL;
+if (var_ret == NULL) {
+var356 = 0; /* is null */
+} else {
+var356 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_ret,var355) on <var_ret:nullable MType> */
+var_other26 = var355;
+{
+var360 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other26) /* == on <var_ret:nullable MType(MType)>*/;
+var359 = var360;
+}
+var361 = !var359;
+var357 = var361;
+goto RET_LABEL358;
+RET_LABEL358:(void)0;
+}
+var356 = var357;
+}
+var_362 = var356;
+if (var356){
+/* <var_ret:nullable MType(MType)> isa MClassType */
+cltype364 = type_model__MClassType.color;
+idtype365 = type_model__MClassType.id;
+if(cltype364 >= var_ret->type->table_size) {
+var363 = 0;
+} else {
+var363 = var_ret->type->type_table[cltype364] == idtype365;
+}
+var354 = var363;
+} else {
+var354 = var_362;
+}
+var_366 = var354;
+if (var354){
+{
+{ /* Inline model#MClassType#mclass (var_ret) on <var_ret:nullable MType(MClassType)> */
+var369 = var_ret->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_ret:nullable MType(MClassType)> */
+if (unlikely(var369 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var367 = var369;
+RET_LABEL368:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#kind (var367) on <var367:MClass> */
+var372 = var367->attrs[COLOR_model__MClass___kind].val; /* _kind on <var367:MClass> */
+if (unlikely(var372 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371);
+show_backtrace(1);
+}
+var370 = var372;
+RET_LABEL371:(void)0;
+}
+}
+{
+var373 = model__Object__abstract_kind(self);
+}
+{
+{ /* Inline kernel#Object#!= (var370,var373) on <var370:MClassKind> */
+var_other26 = var373;
+{
+var378 = ((short int (*)(val*, val*))(var370->class->vft[COLOR_kernel__Object___61d_61d]))(var370, var_other26) /* == on <var370:MClassKind>*/;
+var377 = var378;
+}
+var379 = !var377;
+var375 = var379;
+goto RET_LABEL376;
+RET_LABEL376:(void)0;
+}
+var374 = var375;
+}
+var353 = var374;
+} else {
+var353 = var_366;
+}
+var_380 = var353;
+if (var353){
+{
+{ /* Inline model#MClassType#mclass (var_ret) on <var_ret:nullable MType(MClassType)> */
+var383 = var_ret->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_ret:nullable MType(MClassType)> */
+if (unlikely(var383 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var381 = var383;
+RET_LABEL382:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#kind (var381) on <var381:MClass> */
+var386 = var381->attrs[COLOR_model__MClass___kind].val; /* _kind on <var381:MClass> */
+if (unlikely(var386 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371);
+show_backtrace(1);
+}
+var384 = var386;
+RET_LABEL385:(void)0;
+}
+}
+{
+var387 = model__Object__interface_kind(self);
+}
+{
+{ /* Inline kernel#Object#!= (var384,var387) on <var384:MClassKind> */
+var_other26 = var387;
+{
+var392 = ((short int (*)(val*, val*))(var384->class->vft[COLOR_kernel__Object___61d_61d]))(var384, var_other26) /* == on <var384:MClassKind>*/;
+var391 = var392;
+}
+var393 = !var391;
+var389 = var393;
+goto RET_LABEL390;
+RET_LABEL390:(void)0;
+}
+var388 = var389;
+}
+var352 = var388;
+} else {
+var352 = var_380;
+}
+if (var352){
+{
+rapid_type_analysis__RapidTypeVisitor__add_type(var_v, var_ret); /* Direct call rapid_type_analysis#RapidTypeVisitor#add_type on <var_v:RapidTypeVisitor>*/
+}
+} else {
+}
+} else {
+}
+{
+parser_nodes__Visitor__enter_visit(var_v, var_npropdef); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:RapidTypeVisitor>*/
+}
+} else {
+goto BREAK_label394;
+}
+BREAK_label304: (void)0;
+}
+BREAK_label394: (void)0;
+var395 = NEW_list__List(&type_list__Listmodel__MClassType);
+{
+((void (*)(val*))(var395->class->vft[COLOR_kernel__Object__init]))(var395) /* init on <var395:List[MClassType]>*/;
+}
+var_todo_types = var395;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
+var398 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
+if (unlikely(var398 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53);
+show_backtrace(1);
+}
+var396 = var398;
+RET_LABEL397:(void)0;
+}
+}
+{
+abstract_collection__SimpleCollection__add_all(var_todo_types, var396); /* Direct call abstract_collection#SimpleCollection#add_all on <var_todo_types:List[MClassType]>*/
+}
+for(;;) {
+{
+var399 = list__List__is_empty(var_todo_types);
+}
+var400 = !var399;
+if (var400){
+{
+var401 = list__List__shift(var_todo_types);
+}
+var_t = var401;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_types (self) on <self:RapidTypeAnalysis> */
+var404 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_open_types].val; /* _live_open_types on <self:RapidTypeAnalysis> */
+if (unlikely(var404 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_types");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 58);
+show_backtrace(1);
+}
+var402 = var404;
+RET_LABEL403:(void)0;
+}
+}
+var_405 = var402;
+{
+var406 = hash_collection__HashSet__iterator(var_405);
+}
+var_407 = var406;
+for(;;) {
+{
+var408 = ((short int (*)(val*))(var_407->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_407) /* is_ok on <var_407:Iterator[MClassType]>*/;
+}
+if (var408){
+{
+var409 = ((val* (*)(val*))(var_407->class->vft[COLOR_abstract_collection__Iterator__item]))(var_407) /* item on <var_407:Iterator[MClassType]>*/;
+}
+var_ot = var409;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var412 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var412 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var410 = var412;
+RET_LABEL411:(void)0;
+}
+}
+{
+var413 = ((short int (*)(val*, val*, val*, val*))(var_ot->class->vft[COLOR_model__MType__can_resolve_for]))(var_ot, var_t, var_t, var410) /* can_resolve_for on <var_ot:MClassType>*/;
+}
+var414 = !var413;
+if (var414){
+goto BREAK_label415;
+} else {
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var418 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var418 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var416 = var418;
+RET_LABEL417:(void)0;
+}
+}
+{
+var419 = model__MClassType__anchor_to(var_ot, var416, var_t);
+}
+var_rt = var419;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
+var422 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
+if (unlikely(var422 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53);
+show_backtrace(1);
+}
+var420 = var422;
+RET_LABEL421:(void)0;
+}
+}
+{
+var423 = hash_collection__HashSet__has(var420, var_rt);
+}
+if (var423){
+goto BREAK_label415;
+} else {
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
+var426 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
+if (unlikely(var426 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53);
+show_backtrace(1);
+}
+var424 = var426;
+RET_LABEL425:(void)0;
+}
+}
+{
+hash_collection__HashSet__add(var424, var_rt); /* Direct call hash_collection#HashSet#add on <var424:HashSet[MClassType]>*/
+}
+{
+abstract_collection__Sequence__add(var_todo_types, var_rt); /* Direct call abstract_collection#Sequence#add on <var_todo_types:List[MClassType]>*/
+}
+{
+rapid_type_analysis__RapidTypeAnalysis__check_depth(self, var_rt); /* Direct call rapid_type_analysis#RapidTypeAnalysis#check_depth on <self:RapidTypeAnalysis>*/
+}
+BREAK_label415: (void)0;
+{
+((void (*)(val*))(var_407->class->vft[COLOR_abstract_collection__Iterator__next]))(var_407) /* next on <var_407:Iterator[MClassType]>*/;
+}
+} else {
+goto BREAK_label427;
+}
+}
+BREAK_label427: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_407) on <var_407:Iterator[MClassType]> */
+RET_LABEL428:(void)0;
+}
+}
+} else {
+goto BREAK_label429;
+}
+}
+BREAK_label429: (void)0;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_open_cast_types (self) on <self:RapidTypeAnalysis> */
+var432 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_open_cast_types].val; /* _live_open_cast_types on <self:RapidTypeAnalysis> */
+if (unlikely(var432 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_open_cast_types");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 68);
+show_backtrace(1);
+}
+var430 = var432;
+RET_LABEL431:(void)0;
+}
+}
+var_433 = var430;
+{
+var434 = hash_collection__HashSet__iterator(var_433);
+}
+var_435 = var434;
+for(;;) {
+{
+var436 = ((short int (*)(val*))(var_435->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_435) /* is_ok on <var_435:Iterator[MType]>*/;
+}
+if (var436){
+{
+var437 = ((val* (*)(val*))(var_435->class->vft[COLOR_abstract_collection__Iterator__item]))(var_435) /* item on <var_435:Iterator[MType]>*/;
+}
+var_ot438 = var437;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (self) on <self:RapidTypeAnalysis> */
+var441 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <self:RapidTypeAnalysis> */
+if (unlikely(var441 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53);
+show_backtrace(1);
+}
+var439 = var441;
+RET_LABEL440:(void)0;
+}
+}
+var_442 = var439;
+{
+var443 = hash_collection__HashSet__iterator(var_442);
+}
+var_444 = var443;
+for(;;) {
+{
+var445 = ((short int (*)(val*))(var_444->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_444) /* is_ok on <var_444:Iterator[MClassType]>*/;
+}
+if (var445){
+{
+var446 = ((val* (*)(val*))(var_444->class->vft[COLOR_abstract_collection__Iterator__item]))(var_444) /* item on <var_444:Iterator[MClassType]>*/;
+}
+var_t447 = var446;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var450 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var450 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var448 = var450;
+RET_LABEL449:(void)0;
+}
+}
+{
+var451 = ((short int (*)(val*, val*, val*, val*))(var_ot438->class->vft[COLOR_model__MType__can_resolve_for]))(var_ot438, var_t447, var_t447, var448) /* can_resolve_for on <var_ot438:MType>*/;
+}
+var452 = !var451;
+if (var452){
+goto BREAK_label453;
+} else {
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#mainmodule (self) on <self:RapidTypeAnalysis> */
+var456 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___mainmodule].val; /* _mainmodule on <self:RapidTypeAnalysis> */
+if (unlikely(var456 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 49);
+show_backtrace(1);
+}
+var454 = var456;
+RET_LABEL455:(void)0;
+}
+}
+{
+var457 = ((val* (*)(val*, val*, val*))(var_ot438->class->vft[COLOR_model__MType__anchor_to]))(var_ot438, var454, var_t447) /* anchor_to on <var_ot438:MType>*/;
+}
+var_rt458 = var457;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (self) on <self:RapidTypeAnalysis> */
+var461 = self->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <self:RapidTypeAnalysis> */
+if (unlikely(var461 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 65);
+show_backtrace(1);
+}
+var459 = var461;
+RET_LABEL460:(void)0;
+}
+}
+{
+hash_collection__HashSet__add(var459, var_rt458); /* Direct call hash_collection#HashSet#add on <var459:HashSet[MType]>*/
+}
+BREAK_label453: (void)0;
+{
+((void (*)(val*))(var_444->class->vft[COLOR_abstract_collection__Iterator__next]))(var_444) /* next on <var_444:Iterator[MClassType]>*/;
+}
+} else {
+goto BREAK_label462;
+}
+}
+BREAK_label462: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_444) on <var_444:Iterator[MClassType]> */
+RET_LABEL463:(void)0;
+}
+}
+{
+((void (*)(val*))(var_435->class->vft[COLOR_abstract_collection__Iterator__next]))(var_435) /* next on <var_435:Iterator[MType]>*/;
+}
+} else {
+goto BREAK_label464;
+}
+}
+BREAK_label464: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_435) on <var_435:Iterator[MType]> */
+RET_LABEL465:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method rapid_type_analysis#RapidTypeAnalysis#run_analysis for (self: Object) */
+void VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__run_analysis(val* self) {
+rapid_type_analysis__RapidTypeAnalysis__run_analysis(self); /* Direct call rapid_type_analysis#RapidTypeAnalysis#run_analysis on <self:Object(RapidTypeAnalysis)>*/
+RET_LABEL:;
+}
+/* method rapid_type_analysis#RapidTypeAnalysis#check_depth for (self: RapidTypeAnalysis, MClassType) */
+void rapid_type_analysis__RapidTypeAnalysis__check_depth(val* self, val* p0) {
+val* var_mtype /* var mtype: MClassType */;
+long var /* : Int */;
+long var_d /* var d: Int */;
+long var1 /* : Int */;
+short int var2 /* : Bool */;
+short int var4 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var5 /* : Bool */;
+val* var6 /* : ModelBuilder */;
+val* var8 /* : ModelBuilder */;
+val* var9 /* : ToolContext */;
+val* var11 /* : ToolContext */;
+val* var12 /* : null */;
+static val* varonce;
+val* var13 /* : String */;
+char* var14 /* : NativeString */;
+long var15 /* : Int */;
+val* var16 /* : FlatString */;
+static val* varonce17;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+long var20 /* : Int */;
+val* var21 /* : FlatString */;
+static val* varonce22;
+val* var23 /* : String */;
+char* var24 /* : NativeString */;
+long var25 /* : Int */;
+val* var26 /* : FlatString */;
+val* var27 /* : Array[Object] */;
+long var28 /* : Int */;
+val* var29 /* : NativeArray[Object] */;
+val* var30 /* : Object */;
+val* var31 /* : String */;