regern c_src
[nit.git] / c_src / more_collections.sep.1.c
index d8dc958..c0cf46f 100644 (file)
@@ -17,14 +17,12 @@ val* var_k /* var k: nullable Object */;
 val* var_v /* var v: nullable Object */;
 val* var7 /* : nullable Object */;
 val* var_x /* var x: nullable Array[nullable Object] */;
-val* var8 /* : null */;
+short int var8 /* : Bool */;
 short int var9 /* : Bool */;
-short int var10 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var11 /* : Bool */;
 short int var12 /* : Bool */;
-short int var13 /* : Bool */;
-val* var14 /* : Array[nullable Object] */;
-long var15 /* : Int */;
+val* var13 /* : Array[nullable Object] */;
 val* var_ /* var : Array[nullable Object] */;
 /* Covariant cast for argument 0 (k) <p0:nullable Object> isa K */
 /* <p0:nullable Object> isa K */
@@ -35,17 +33,17 @@ is_nullable = type_struct->is_nullable;
 if(p0 == NULL) {
 var = is_nullable;
 } else {
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var = 0;
 } else {
-var = p0->type->type_table[cltype] == idtype;
+var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 }
 if (unlikely(!var)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 35);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 37);
+fatal_exit(1);
 }
 /* Covariant cast for argument 1 (v) <p1:nullable Object> isa V */
 /* <p1:nullable Object> isa V */
@@ -56,17 +54,17 @@ is_nullable5 = type_struct4->is_nullable;
 if(p1 == NULL) {
 var1 = is_nullable5;
 } else {
-if(cltype2 >= p1->type->table_size) {
+if(cltype2 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
 var1 = 0;
 } else {
-var1 = p1->type->type_table[cltype2] == idtype3;
+var1 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype2] == idtype3;
 }
 }
 if (unlikely(!var1)) {
-var_class_name6 = p1 == NULL ? "null" : p1->type->name;
+var_class_name6 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "V", var_class_name6);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 35);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 37);
+fatal_exit(1);
 }
 var_k = p0;
 var_v = p1;
@@ -74,36 +72,34 @@ var_v = p1;
 var7 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(self, var_k);
 }
 var_x = var7;
-var8 = NULL;
 if (var_x == NULL) {
-var9 = 0; /* is null */
+var8 = 0; /* is null */
 } else {
-var9 = 1; /* arg is null and recv is not */
+var8 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_x,var8) on <var_x:nullable Array[nullable Object]> */
-var_other = var8;
+{ /* Inline kernel#Object#!= (var_x,((val*)NULL)) on <var_x:nullable Array[nullable Object]> */
+var_other = ((val*)NULL);
 {
-var12 = ((short int (*)(val* self, val* p0))(var_x->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_x, var_other) /* == on <var_x:nullable Array[nullable Object](Array[nullable Object])>*/;
+var11 = ((short int(*)(val* self, val* p0))(var_x->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_x, var_other); /* == on <var_x:nullable Array[nullable Object](Array[nullable Object])>*/
 }
-var13 = !var12;
-var10 = var13;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
+var12 = !var11;
+var9 = var12;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
 }
-var9 = var10;
+var8 = var9;
 }
-if (var9){
+if (var8){
 {
 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_x, var_v); /* Direct call array#Array#add on <var_x:nullable Array[nullable Object](Array[nullable Object])>*/
 }
 } else {
-var14 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__more_collections__MultiHashMap___35dV]);
-var15 = 1;
+var13 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__more_collections__MultiHashMap___35dV]);
 {
-standard___standard__Array___with_capacity(var14, var15); /* Direct call array#Array#with_capacity on <var14:Array[nullable Object]>*/
+standard___standard__Array___with_capacity(var13, 1l); /* Direct call array#Array#with_capacity on <var13:Array[nullable Object]>*/
 }
-var_ = var14;
+var_ = var13;
 {
 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var_v); /* Direct call array#AbstractArray#push on <var_:Array[nullable Object]>*/
 }
@@ -116,42 +112,41 @@ RET_LABEL:;
 /* method more_collections#MultiHashMap#provide_default_value for (self: MultiHashMap[nullable Object, nullable Object], nullable Object): Array[nullable Object] */
 val* more_collections___more_collections__MultiHashMap___standard__abstract_collection__MapRead__provide_default_value(val* self, val* p0) {
 val* var /* : Array[nullable Object] */;
-short int var1 /* : Bool */;
+val* var_key /* var key: nullable Object */;
+val* var1 /* : Array[nullable Object] */;
+val* var_res /* var res: Array[nullable Object] */;
+short int var2 /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
 short int is_nullable;
 const char* var_class_name;
-val* var_key /* var key: nullable Object */;
-val* var2 /* : Array[nullable Object] */;
-val* var_res /* var res: Array[nullable Object] */;
-/* Covariant cast for argument 0 (key) <p0:nullable Object> isa K */
-/* <p0:nullable Object> isa K */
+var_key = p0;
+var1 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__more_collections__MultiHashMap___35dV]);
+{
+standard___standard__Array___standard__kernel__Object__init(var1); /* Direct call array#Array#init on <var1:Array[nullable Object]>*/
+}
+var_res = var1;
+/* <var_key:nullable Object> isa K */
 type_struct = self->type->resolution_table->types[COLOR_more_collections__MultiHashMap___35dK];
 cltype = type_struct->color;
 idtype = type_struct->id;
 is_nullable = type_struct->is_nullable;
-if(p0 == NULL) {
-var1 = is_nullable;
+if(var_key == NULL) {
+var2 = is_nullable;
 } else {
-if(cltype >= p0->type->table_size) {
-var1 = 0;
+if(cltype >= (((long)var_key&3)?type_info[((long)var_key&3)]:var_key->type)->table_size) {
+var2 = 0;
 } else {
-var1 = p0->type->type_table[cltype] == idtype;
+var2 = (((long)var_key&3)?type_info[((long)var_key&3)]:var_key->type)->type_table[cltype] == idtype;
 }
 }
-if (unlikely(!var1)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+if (unlikely(!var2)) {
+var_class_name = var_key == NULL ? "null" : (((long)var_key&3)?type_info[((long)var_key&3)]:var_key->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 47);
-show_backtrace(1);
-}
-var_key = p0;
-var2 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__more_collections__MultiHashMap___35dV]);
-{
-standard___standard__Array___standard__kernel__Object__init(var2); /* Direct call array#Array#init on <var2:Array[nullable Object]>*/
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 51);
+fatal_exit(1);
 }
-var_res = var2;
 {
 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(self, var_key, var_res); /* Direct call hash_collection#HashMap#[]= on <self:MultiHashMap[nullable Object, nullable Object]>*/
 }
@@ -167,8 +162,8 @@ val* var1 /* : HashMap[nullable Object, HashMap[nullable Object, nullable Object
 var1 = self->attrs[COLOR_more_collections__HashMap2___level1].val; /* _level1 on <self:HashMap2[nullable Object, nullable Object, nullable Object]> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1");
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 64);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 67);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -196,14 +191,9 @@ val* var10 /* : HashMap[nullable Object, HashMap[nullable Object, nullable Objec
 val* var_level1 /* var level1: HashMap[nullable Object, HashMap[nullable Object, nullable Object]] */;
 val* var11 /* : nullable Object */;
 val* var_level2 /* var level2: nullable HashMap[nullable Object, nullable Object] */;
-val* var12 /* : null */;
+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 */;
-val* var19 /* : null */;
-val* var20 /* : nullable Object */;
+val* var14 /* : nullable Object */;
 /* Covariant cast for argument 0 (k1) <p0:nullable Object> isa K1 */
 /* <p0:nullable Object> isa K1 */
 type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2___35dK1];
@@ -213,17 +203,17 @@ is_nullable = type_struct->is_nullable;
 if(p0 == NULL) {
 var1 = is_nullable;
 } else {
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var1 = 0;
 } else {
-var1 = p0->type->type_table[cltype] == idtype;
+var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 }
 if (unlikely(!var1)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K1", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 66);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 69);
+fatal_exit(1);
 }
 /* Covariant cast for argument 1 (k2) <p1:nullable Object> isa K2 */
 /* <p1:nullable Object> isa K2 */
@@ -234,17 +224,17 @@ is_nullable6 = type_struct5->is_nullable;
 if(p1 == NULL) {
 var2 = is_nullable6;
 } else {
-if(cltype3 >= p1->type->table_size) {
+if(cltype3 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
 var2 = 0;
 } else {
-var2 = p1->type->type_table[cltype3] == idtype4;
+var2 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype3] == idtype4;
 }
 }
 if (unlikely(!var2)) {
-var_class_name7 = p1 == NULL ? "null" : p1->type->name;
+var_class_name7 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K2", var_class_name7);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 66);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 69);
+fatal_exit(1);
 }
 var_k1 = p0;
 var_k2 = p1;
@@ -253,8 +243,8 @@ var_k2 = p1;
 var10 = self->attrs[COLOR_more_collections__HashMap2___level1].val; /* _level1 on <self:HashMap2[nullable Object, nullable Object, nullable Object]> */
 if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1");
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 64);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 67);
+fatal_exit(1);
 }
 var8 = var10;
 RET_LABEL9:(void)0;
@@ -265,39 +255,24 @@ var_level1 = var8;
 var11 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(var_level1, var_k1);
 }
 var_level2 = var11;
-var12 = NULL;
 if (var_level2 == NULL) {
-var13 = 1; /* is null */
+var12 = 1; /* is null */
 } else {
-var13 = 0; /* arg is null but recv is not */
+var12 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_level2,var12) on <var_level2:nullable HashMap[nullable Object, nullable Object]> */
-var_other = var12;
-{
-{ /* Inline kernel#Object#is_same_instance (var_level2,var_other) on <var_level2:nullable HashMap[nullable Object, nullable Object](HashMap[nullable Object, nullable Object])> */
-var18 = var_level2 == var_other;
-var16 = var18;
-goto RET_LABEL17;
-RET_LABEL17:(void)0;
+var13 = standard___standard__MapRead___standard__kernel__Object___61d_61d(var_level2, ((val*)NULL));
+var12 = var13;
 }
-}
-var14 = var16;
-goto RET_LABEL15;
-RET_LABEL15:(void)0;
-}
-var13 = var14;
-}
-if (var13){
-var19 = NULL;
-var = var19;
+if (var12){
+var = ((val*)NULL);
 goto RET_LABEL;
 } else {
 }
 {
-var20 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(var_level2, var_k2);
+var14 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(var_level2, var_k2);
 }
-var = var20;
+var = var14;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -330,13 +305,9 @@ val* var15 /* : HashMap[nullable Object, HashMap[nullable Object, nullable Objec
 val* var_level1 /* var level1: HashMap[nullable Object, HashMap[nullable Object, nullable Object]] */;
 val* var16 /* : nullable Object */;
 val* var_level2 /* var level2: nullable HashMap[nullable Object, nullable Object] */;
-val* var17 /* : null */;
+short int var17 /* : Bool */;
 short int var18 /* : Bool */;
-short int var19 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var21 /* : Bool */;
-short int var23 /* : Bool */;
-val* var24 /* : HashMap[nullable Object, nullable Object] */;
+val* var19 /* : HashMap[nullable Object, nullable Object] */;
 /* Covariant cast for argument 0 (k1) <p0:nullable Object> isa K1 */
 /* <p0:nullable Object> isa K1 */
 type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2___35dK1];
@@ -346,17 +317,17 @@ is_nullable = type_struct->is_nullable;
 if(p0 == NULL) {
 var = is_nullable;
 } else {
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var = 0;
 } else {
-var = p0->type->type_table[cltype] == idtype;
+var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 }
 if (unlikely(!var)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K1", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 76);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 79);
+fatal_exit(1);
 }
 /* Covariant cast for argument 1 (k2) <p1:nullable Object> isa K2 */
 /* <p1:nullable Object> isa K2 */
@@ -367,17 +338,17 @@ is_nullable5 = type_struct4->is_nullable;
 if(p1 == NULL) {
 var1 = is_nullable5;
 } else {
-if(cltype2 >= p1->type->table_size) {
+if(cltype2 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
 var1 = 0;
 } else {
-var1 = p1->type->type_table[cltype2] == idtype3;
+var1 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype2] == idtype3;
 }
 }
 if (unlikely(!var1)) {
-var_class_name6 = p1 == NULL ? "null" : p1->type->name;
+var_class_name6 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K2", var_class_name6);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 76);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 79);
+fatal_exit(1);
 }
 /* Covariant cast for argument 2 (v) <p2:nullable Object> isa V */
 /* <p2:nullable Object> isa V */
@@ -388,17 +359,17 @@ is_nullable11 = type_struct10->is_nullable;
 if(p2 == NULL) {
 var7 = is_nullable11;
 } else {
-if(cltype8 >= p2->type->table_size) {
+if(cltype8 >= (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->table_size) {
 var7 = 0;
 } else {
-var7 = p2->type->type_table[cltype8] == idtype9;
+var7 = (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->type_table[cltype8] == idtype9;
 }
 }
 if (unlikely(!var7)) {
-var_class_name12 = p2 == NULL ? "null" : p2->type->name;
+var_class_name12 = p2 == NULL ? "null" : (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "V", var_class_name12);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 76);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 79);
+fatal_exit(1);
 }
 var_k1 = p0;
 var_k2 = p1;
@@ -408,8 +379,8 @@ var_v = p2;
 var15 = self->attrs[COLOR_more_collections__HashMap2___level1].val; /* _level1 on <self:HashMap2[nullable Object, nullable Object, nullable Object]> */
 if (unlikely(var15 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1");
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 64);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 67);
+fatal_exit(1);
 }
 var13 = var15;
 RET_LABEL14:(void)0;
@@ -420,35 +391,21 @@ var_level1 = var13;
 var16 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(var_level1, var_k1);
 }
 var_level2 = var16;
-var17 = NULL;
 if (var_level2 == NULL) {
-var18 = 1; /* is null */
+var17 = 1; /* is null */
 } else {
-var18 = 0; /* arg is null but recv is not */
+var17 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_level2,var17) on <var_level2:nullable HashMap[nullable Object, nullable Object]> */
-var_other = var17;
-{
-{ /* Inline kernel#Object#is_same_instance (var_level2,var_other) on <var_level2:nullable HashMap[nullable Object, nullable Object](HashMap[nullable Object, nullable Object])> */
-var23 = var_level2 == var_other;
-var21 = var23;
-goto RET_LABEL22;
-RET_LABEL22:(void)0;
+var18 = standard___standard__MapRead___standard__kernel__Object___61d_61d(var_level2, ((val*)NULL));
+var17 = var18;
 }
-}
-var19 = var21;
-goto RET_LABEL20;
-RET_LABEL20:(void)0;
-}
-var18 = var19;
-}
-if (var18){
-var24 = NEW_standard__HashMap(self->type->resolution_table->types[COLOR_standard__HashMap__more_collections__HashMap2___35dK2__more_collections__HashMap2___35dV]);
+if (var17){
+var19 = NEW_standard__HashMap(self->type->resolution_table->types[COLOR_standard__HashMap__more_collections__HashMap2___35dK2__more_collections__HashMap2___35dV]);
 {
-standard___standard__HashMap___standard__kernel__Object__init(var24); /* Direct call hash_collection#HashMap#init on <var24:HashMap[nullable Object, nullable Object]>*/
+standard___standard__HashMap___standard__kernel__Object__init(var19); /* Direct call hash_collection#HashMap#init on <var19:HashMap[nullable Object, nullable Object]>*/
 }
-var_level2 = var24;
+var_level2 = var19;
 {
 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_level1, var_k1, var_level2); /* Direct call hash_collection#HashMap#[]= on <var_level1:HashMap[nullable Object, HashMap[nullable Object, nullable Object]]>*/
 }
@@ -466,8 +423,8 @@ val* var1 /* : HashMap[nullable Object, HashMap2[nullable Object, nullable Objec
 var1 = self->attrs[COLOR_more_collections__HashMap3___level1].val; /* _level1 on <self:HashMap3[nullable Object, nullable Object, nullable Object, nullable Object]> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1");
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 108);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 115);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -502,14 +459,12 @@ val* var16 /* : HashMap[nullable Object, HashMap2[nullable Object, nullable Obje
 val* var_level1 /* var level1: HashMap[nullable Object, HashMap2[nullable Object, nullable Object, nullable Object]] */;
 val* var17 /* : nullable Object */;
 val* var_level2 /* var level2: nullable HashMap2[nullable Object, nullable Object, nullable Object] */;
-val* var18 /* : null */;
+short int var18 /* : Bool */;
 short int var19 /* : Bool */;
-short int var20 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var22 /* : Bool */;
-short int var24 /* : Bool */;
-val* var25 /* : null */;
-val* var26 /* : nullable Object */;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
+val* var24 /* : nullable Object */;
 /* Covariant cast for argument 0 (k1) <p0:nullable Object> isa K1 */
 /* <p0:nullable Object> isa K1 */
 type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap3___35dK1];
@@ -519,17 +474,17 @@ is_nullable = type_struct->is_nullable;
 if(p0 == NULL) {
 var1 = is_nullable;
 } else {
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var1 = 0;
 } else {
-var1 = p0->type->type_table[cltype] == idtype;
+var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 }
 if (unlikely(!var1)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K1", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 110);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 117);
+fatal_exit(1);
 }
 /* Covariant cast for argument 1 (k2) <p1:nullable Object> isa K2 */
 /* <p1:nullable Object> isa K2 */
@@ -540,17 +495,17 @@ is_nullable6 = type_struct5->is_nullable;
 if(p1 == NULL) {
 var2 = is_nullable6;
 } else {
-if(cltype3 >= p1->type->table_size) {
+if(cltype3 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
 var2 = 0;
 } else {
-var2 = p1->type->type_table[cltype3] == idtype4;
+var2 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype3] == idtype4;
 }
 }
 if (unlikely(!var2)) {
-var_class_name7 = p1 == NULL ? "null" : p1->type->name;
+var_class_name7 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K2", var_class_name7);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 110);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 117);
+fatal_exit(1);
 }
 /* Covariant cast for argument 2 (k3) <p2:nullable Object> isa K3 */
 /* <p2:nullable Object> isa K3 */
@@ -561,17 +516,17 @@ is_nullable12 = type_struct11->is_nullable;
 if(p2 == NULL) {
 var8 = is_nullable12;
 } else {
-if(cltype9 >= p2->type->table_size) {
+if(cltype9 >= (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->table_size) {
 var8 = 0;
 } else {
-var8 = p2->type->type_table[cltype9] == idtype10;
+var8 = (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->type_table[cltype9] == idtype10;
 }
 }
 if (unlikely(!var8)) {
-var_class_name13 = p2 == NULL ? "null" : p2->type->name;
+var_class_name13 = p2 == NULL ? "null" : (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K3", var_class_name13);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 110);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 117);
+fatal_exit(1);
 }
 var_k1 = p0;
 var_k2 = p1;
@@ -581,8 +536,8 @@ var_k3 = p2;
 var16 = self->attrs[COLOR_more_collections__HashMap3___level1].val; /* _level1 on <self:HashMap3[nullable Object, nullable Object, nullable Object, nullable Object]> */
 if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1");
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 108);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 115);
+fatal_exit(1);
 }
 var14 = var16;
 RET_LABEL15:(void)0;
@@ -593,39 +548,37 @@ var_level1 = var14;
 var17 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(var_level1, var_k1);
 }
 var_level2 = var17;
-var18 = NULL;
 if (var_level2 == NULL) {
-var19 = 1; /* is null */
+var18 = 1; /* is null */
 } else {
-var19 = 0; /* arg is null but recv is not */
+var18 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_level2,var18) on <var_level2:nullable HashMap2[nullable Object, nullable Object, nullable Object]> */
-var_other = var18;
+{ /* Inline kernel#Object#== (var_level2,((val*)NULL)) on <var_level2:nullable HashMap2[nullable Object, nullable Object, nullable Object]> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_level2,var_other) on <var_level2:nullable HashMap2[nullable Object, nullable Object, nullable Object](HashMap2[nullable Object, nullable Object, nullable Object])> */
-var24 = var_level2 == var_other;
-var22 = var24;
-goto RET_LABEL23;
-RET_LABEL23:(void)0;
+var23 = var_level2 == var_other;
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
 }
 }
-var20 = var22;
-goto RET_LABEL21;
-RET_LABEL21:(void)0;
+var19 = var21;
+goto RET_LABEL20;
+RET_LABEL20:(void)0;
 }
-var19 = var20;
+var18 = var19;
 }
-if (var19){
-var25 = NULL;
-var = var25;
+if (var18){
+var = ((val*)NULL);
 goto RET_LABEL;
 } else {
 }
 {
-var26 = more_collections___more_collections__HashMap2____91d_93d(var_level2, var_k2, var_k3);
+var24 = more_collections___more_collections__HashMap2____91d_93d(var_level2, var_k2, var_k3);
 }
-var = var26;
+var = var24;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -665,13 +618,12 @@ val* var21 /* : HashMap[nullable Object, HashMap2[nullable Object, nullable Obje
 val* var_level1 /* var level1: HashMap[nullable Object, HashMap2[nullable Object, nullable Object, nullable Object]] */;
 val* var22 /* : nullable Object */;
 val* var_level2 /* var level2: nullable HashMap2[nullable Object, nullable Object, nullable Object] */;
-val* var23 /* : null */;
+short int var23 /* : Bool */;
 short int var24 /* : Bool */;
-short int var25 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var27 /* : Bool */;
-short int var29 /* : Bool */;
-val* var30 /* : HashMap2[nullable Object, nullable Object, nullable Object] */;
+short int var26 /* : Bool */;
+short int var28 /* : Bool */;
+val* var29 /* : HashMap2[nullable Object, nullable Object, nullable Object] */;
 /* Covariant cast for argument 0 (k1) <p0:nullable Object> isa K1 */
 /* <p0:nullable Object> isa K1 */
 type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap3___35dK1];
@@ -681,17 +633,17 @@ is_nullable = type_struct->is_nullable;
 if(p0 == NULL) {
 var = is_nullable;
 } else {
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var = 0;
 } else {
-var = p0->type->type_table[cltype] == idtype;
+var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 }
 if (unlikely(!var)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K1", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 120);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 127);
+fatal_exit(1);
 }
 /* Covariant cast for argument 1 (k2) <p1:nullable Object> isa K2 */
 /* <p1:nullable Object> isa K2 */
@@ -702,17 +654,17 @@ is_nullable5 = type_struct4->is_nullable;
 if(p1 == NULL) {
 var1 = is_nullable5;
 } else {
-if(cltype2 >= p1->type->table_size) {
+if(cltype2 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
 var1 = 0;
 } else {
-var1 = p1->type->type_table[cltype2] == idtype3;
+var1 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype2] == idtype3;
 }
 }
 if (unlikely(!var1)) {
-var_class_name6 = p1 == NULL ? "null" : p1->type->name;
+var_class_name6 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K2", var_class_name6);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 120);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 127);
+fatal_exit(1);
 }
 /* Covariant cast for argument 2 (k3) <p2:nullable Object> isa K3 */
 /* <p2:nullable Object> isa K3 */
@@ -723,17 +675,17 @@ is_nullable11 = type_struct10->is_nullable;
 if(p2 == NULL) {
 var7 = is_nullable11;
 } else {
-if(cltype8 >= p2->type->table_size) {
+if(cltype8 >= (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->table_size) {
 var7 = 0;
 } else {
-var7 = p2->type->type_table[cltype8] == idtype9;
+var7 = (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->type_table[cltype8] == idtype9;
 }
 }
 if (unlikely(!var7)) {
-var_class_name12 = p2 == NULL ? "null" : p2->type->name;
+var_class_name12 = p2 == NULL ? "null" : (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K3", var_class_name12);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 120);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 127);
+fatal_exit(1);
 }
 /* Covariant cast for argument 3 (v) <p3:nullable Object> isa V */
 /* <p3:nullable Object> isa V */
@@ -744,17 +696,17 @@ is_nullable17 = type_struct16->is_nullable;
 if(p3 == NULL) {
 var13 = is_nullable17;
 } else {
-if(cltype14 >= p3->type->table_size) {
+if(cltype14 >= (((long)p3&3)?type_info[((long)p3&3)]:p3->type)->table_size) {
 var13 = 0;
 } else {
-var13 = p3->type->type_table[cltype14] == idtype15;
+var13 = (((long)p3&3)?type_info[((long)p3&3)]:p3->type)->type_table[cltype14] == idtype15;
 }
 }
 if (unlikely(!var13)) {
-var_class_name18 = p3 == NULL ? "null" : p3->type->name;
+var_class_name18 = p3 == NULL ? "null" : (((long)p3&3)?type_info[((long)p3&3)]:p3->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "V", var_class_name18);
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 120);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 127);
+fatal_exit(1);
 }
 var_k1 = p0;
 var_k2 = p1;
@@ -765,8 +717,8 @@ var_v = p3;
 var21 = self->attrs[COLOR_more_collections__HashMap3___level1].val; /* _level1 on <self:HashMap3[nullable Object, nullable Object, nullable Object, nullable Object]> */
 if (unlikely(var21 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1");
-PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 108);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 115);
+fatal_exit(1);
 }
 var19 = var21;
 RET_LABEL20:(void)0;
@@ -777,37 +729,36 @@ var_level1 = var19;
 var22 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(var_level1, var_k1);
 }
 var_level2 = var22;
-var23 = NULL;
 if (var_level2 == NULL) {
-var24 = 1; /* is null */
+var23 = 1; /* is null */
 } else {
-var24 = 0; /* arg is null but recv is not */
+var23 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_level2,var23) on <var_level2:nullable HashMap2[nullable Object, nullable Object, nullable Object]> */
-var_other = var23;
+{ /* Inline kernel#Object#== (var_level2,((val*)NULL)) on <var_level2:nullable HashMap2[nullable Object, nullable Object, nullable Object]> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_level2,var_other) on <var_level2:nullable HashMap2[nullable Object, nullable Object, nullable Object](HashMap2[nullable Object, nullable Object, nullable Object])> */
-var29 = var_level2 == var_other;
-var27 = var29;
-goto RET_LABEL28;
-RET_LABEL28:(void)0;
+var28 = var_level2 == var_other;
+var26 = var28;
+goto RET_LABEL27;
+RET_LABEL27:(void)0;
 }
 }
-var25 = var27;
-goto RET_LABEL26;
-RET_LABEL26:(void)0;
+var24 = var26;
+goto RET_LABEL25;
+RET_LABEL25:(void)0;
 }
-var24 = var25;
+var23 = var24;
 }
-if (var24){
-var30 = NEW_more_collections__HashMap2(self->type->resolution_table->types[COLOR_more_collections__HashMap2__more_collections__HashMap3___35dK2__more_collections__HashMap3___35dK3__more_collections__HashMap3___35dV]);
+if (var23){
+var29 = NEW_more_collections__HashMap2(self->type->resolution_table->types[COLOR_more_collections__HashMap2__more_collections__HashMap3___35dK2__more_collections__HashMap3___35dK3__more_collections__HashMap3___35dV]);
 {
-{ /* Inline kernel#Object#init (var30) on <var30:HashMap2[nullable Object, nullable Object, nullable Object]> */
-RET_LABEL31:(void)0;
+{ /* Inline kernel#Object#init (var29) on <var29:HashMap2[nullable Object, nullable Object, nullable Object]> */
+RET_LABEL30:(void)0;
 }
 }
-var_level2 = var30;
+var_level2 = var29;
 {
 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_level1, var_k1, var_level2); /* Direct call hash_collection#HashMap#[]= on <var_level1:HashMap[nullable Object, HashMap2[nullable Object, nullable Object, nullable Object]]>*/
 }