c_src: update for new ffi syntax
[nit.git] / c_src / abstract_collection.sep.1.c
index b4ddfd9..06b15ef 100644 (file)
@@ -6,7 +6,7 @@ const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "iterator", var_class_name);
 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 54);
-exit(1);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -130,7 +130,7 @@ if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 75);
-exit(1);
+show_backtrace(1);
 }
 var_item = p0;
 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:Collection[nullable Object]>*/;
@@ -205,7 +205,7 @@ if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 88);
-exit(1);
+show_backtrace(1);
 }
 var_item = p0;
 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:Collection[nullable Object]>*/;
@@ -283,7 +283,7 @@ if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 105);
-exit(1);
+show_backtrace(1);
 }
 var_item = p0;
 var2 = 0;
@@ -351,7 +351,7 @@ if (!var5) {
 var_class_name = type_kernel__Int.name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
-exit(1);
+show_backtrace(1);
 }
 var6 = var1 > var2;
 var3 = var6;
@@ -361,7 +361,7 @@ RET_LABEL4:(void)0;
 if (!var3) {
 fprintf(stderr, "Runtime error: %s", "Assert failed");
 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 121);
-exit(1);
+show_backtrace(1);
 }
 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:Collection[nullable Object]>*/;
 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
@@ -410,7 +410,7 @@ if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[Collection#0]", var_class_name);
 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 125);
-exit(1);
+show_backtrace(1);
 }
 var_other = p0;
 var2 = ((val* (*)(val*))(var_other->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_other) /* iterator on <var_other:Collection[nullable Object]>*/;
@@ -453,7 +453,7 @@ const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "item", var_class_name);
 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 141);
-exit(1);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -472,7 +472,7 @@ const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "next", var_class_name);
 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 145);
-exit(1);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method abstract_collection#Iterator#next for (self: Object) */
@@ -487,7 +487,7 @@ const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "is_ok", var_class_name);
 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 149);
-exit(1);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -587,8 +587,8 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 163);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 164);
+show_backtrace(1);
 }
 var_an_item = p0;
 var2 = self->attrs[COLOR_abstract_collection__Container___item].val; /* _item on <self:Container[nullable Object]> */
@@ -641,8 +641,8 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 165);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 166);
+show_backtrace(1);
 }
 var_an_item = p0;
 var2 = self->attrs[COLOR_abstract_collection__Container___item].val; /* _item on <self:Container[nullable Object]> */
@@ -697,8 +697,8 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 167);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 168);
+show_backtrace(1);
 }
 var_an_item = p0;
 var2 = self->attrs[COLOR_abstract_collection__Container___item].val; /* _item on <self:Container[nullable Object]> */
@@ -734,7 +734,6 @@ val* var /* : Iterator[nullable Object] */;
 val* var1 /* : ContainerIterator[nullable Object] */;
 var1 = NEW_abstract_collection__ContainerIterator(self->type->resolution_table->types[COLOR_abstract_collection__ContainerIteratorabstract_collection__Container_FT0]);
 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__ContainerIterator__init]))(var1, self) /* init on <var1:ContainerIterator[nullable Object]>*/;
-CHECK_NEW_abstract_collection__ContainerIterator(var1);
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
@@ -776,8 +775,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Container#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 178);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 179);
+show_backtrace(1);
 }
 var_e = p0;
 self->attrs[COLOR_abstract_collection__Container___item].val = var_e; /* _item on <self:Container[nullable Object]> */
@@ -832,8 +831,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Container#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 181);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 182);
+show_backtrace(1);
 }
 self->attrs[COLOR_abstract_collection__Container___item].val = p0; /* _item on <self:Container[nullable Object]> */
 RET_LABEL:;
@@ -851,8 +850,8 @@ val* var2 /* : nullable Object */;
 var1 = self->attrs[COLOR_abstract_collection__ContainerIterator___container].val; /* _container on <self:ContainerIterator[nullable Object]> */
 if (var1 == NULL) {
 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _container");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 188);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 189);
+show_backtrace(1);
 }
 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Container__item]))(var1) /* item on <var1:Container[nullable Object]>*/;
 var = var2;
@@ -902,8 +901,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Container[ContainerIterator#0]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 192);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 193);
+show_backtrace(1);
 }
 var_c = p0;
 self->attrs[COLOR_abstract_collection__ContainerIterator___container].val = var_c; /* _container on <self:ContainerIterator[nullable Object]> */
@@ -937,8 +936,8 @@ void abstract_collection__RemovableCollection__clear(val* self) {
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "clear", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 202);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 203);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method abstract_collection#RemovableCollection#clear for (self: Object) */
@@ -973,13 +972,13 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 205);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 206);
+show_backtrace(1);
 }
 var_class_name1 = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "remove", var_class_name1);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 205);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 206);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method abstract_collection#RemovableCollection#remove for (self: Object, nullable Object) */
@@ -1015,8 +1014,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 208);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 209);
+show_backtrace(1);
 }
 var_item = p0;
 for(;;) {
@@ -1060,13 +1059,13 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SimpleCollection#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 215);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 216);
+show_backtrace(1);
 }
 var_class_name1 = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "add", var_class_name1);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 215);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 216);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method abstract_collection#SimpleCollection#add for (self: Object, nullable Object) */
@@ -1099,8 +1098,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[SimpleCollection#0]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 219);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 220);
+show_backtrace(1);
 }
 var_coll = p0;
 var1 = ((val* (*)(val*))(var_coll->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_coll) /* iterator on <var_coll:Collection[nullable Object]>*/;
@@ -1154,8 +1153,8 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 235);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 236);
+show_backtrace(1);
 }
 var_item = p0;
 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Set[Object]>*/;
@@ -1226,8 +1225,8 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 247);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 248);
+show_backtrace(1);
 }
 var_item = p0;
 var2 = ((short int (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__Collection__has]))(self, var_item) /* has on <self:Set[Object]>*/;
@@ -1273,8 +1272,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 257);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 258);
+show_backtrace(1);
 }
 var_item = p0;
 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(self, var_item) /* remove on <self:Set[Object]>*/;
@@ -1353,8 +1352,8 @@ var11 = var_other->type->type_table[cltype12] == idtype13;
 if (!var11) {
 var_class_name = var_other == NULL ? "null" : var_other->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[Set#0]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 265);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 266);
+show_backtrace(1);
 }
 var14 = ((short int (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__Collection__has_all]))(self, var_other) /* has_all on <self:Set[Object]>*/;
 var = var14;
@@ -1439,13 +1438,13 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MapRead#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 279);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 280);
+show_backtrace(1);
 }
 var_class_name2 = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "[]", var_class_name2);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 279);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 280);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1489,8 +1488,8 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MapRead#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 282);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 283);
+show_backtrace(1);
 }
 /* Covariant cast for argument 1 (default) <p1:nullable Object> isa MapRead#1 */
 /* <p1:nullable Object> isa MapRead#1 */
@@ -1510,8 +1509,8 @@ var2 = p1->type->type_table[cltype3] == idtype4;
 if (!var2) {
 var_class_name6 = p1 == NULL ? "null" : p1->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MapRead#1", var_class_name6);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 282);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 283);
+show_backtrace(1);
 }
 var_key = p0;
 var_default = p1;
@@ -1560,8 +1559,8 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MapRead#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 289);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 290);
+show_backtrace(1);
 }
 var_key = p0;
 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__MapRead__keys]))(self) /* keys on <self:MapRead[Object, nullable Object]>*/;
@@ -1586,8 +1585,8 @@ val* var /* : MapIterator[Object, nullable Object] */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "iterator", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 292);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 293);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1606,8 +1605,8 @@ val* var /* : Collection[nullable Object] */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "values", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 295);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 296);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1626,8 +1625,8 @@ val* var /* : Collection[Object] */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "keys", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 300);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 301);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1646,8 +1645,8 @@ short int var /* : Bool */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "is_empty", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 305);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 306);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1666,8 +1665,8 @@ long var /* : Int */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "length", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 308);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 309);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1707,8 +1706,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 338);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 339);
+show_backtrace(1);
 }
 /* Covariant cast for argument 1 (item) <p1:nullable Object> isa Map#1 */
 /* <p1:nullable Object> isa Map#1 */
@@ -1728,13 +1727,13 @@ var1 = p1->type->type_table[cltype2] == idtype3;
 if (!var1) {
 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map#1", var_class_name5);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 338);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 339);
+show_backtrace(1);
 }
 var_class_name6 = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "[]=", var_class_name6);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 338);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 339);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method abstract_collection#Map#[]= for (self: Object, Object, nullable Object) */
@@ -1768,8 +1767,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[Map#0, Map#1]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 341);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 342);
+show_backtrace(1);
 }
 var_map = p0;
 var1 = ((val* (*)(val*))(var_map->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_map) /* iterator on <var_map:Map[Object, nullable Object]>*/;
@@ -1796,8 +1795,8 @@ void abstract_collection__Map__clear(val* self) {
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "clear", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 352);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 353);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method abstract_collection#Map#clear for (self: Object) */
@@ -1811,8 +1810,8 @@ val* var /* : RemovableCollection[nullable Object] */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "values", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 355);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 356);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1831,8 +1830,8 @@ val* var /* : RemovableCollection[Object] */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "keys", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 357);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 358);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1851,8 +1850,8 @@ val* var /* : nullable Object */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "item", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 362);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 363);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1871,8 +1870,8 @@ val* var /* : Object */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "key", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 366);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 367);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1890,8 +1889,8 @@ void abstract_collection__MapIterator__next(val* self) {
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "next", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 370);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 371);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method abstract_collection#MapIterator#next for (self: Object) */
@@ -1905,8 +1904,8 @@ short int var /* : Bool */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "is_ok", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 374);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 375);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -1926,8 +1925,8 @@ val* var1 /* : MapIterator[Object, nullable Object] */;
 var1 = self->attrs[COLOR_abstract_collection__MapKeysIterator___64diterator].val; /* @iterator on <self:MapKeysIterator[Object, nullable Object]> */
 if (var1 == NULL) {
 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @iterator");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 384);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 385);
+show_backtrace(1);
 }
 var = var1;
 RET_LABEL:;
@@ -1962,8 +1961,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MapIterator[MapKeysIterator#0, MapKeysIterator#1]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 384);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 385);
+show_backtrace(1);
 }
 self->attrs[COLOR_abstract_collection__MapKeysIterator___64diterator].val = p0; /* @iterator on <self:MapKeysIterator[Object, nullable Object]> */
 RET_LABEL:;
@@ -2047,8 +2046,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MapIterator[MapKeysIterator#0, MapKeysIterator#1]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 381);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 382);
+show_backtrace(1);
 }
 self->attrs[COLOR_abstract_collection__MapKeysIterator___64diterator].val = p0; /* @iterator on <self:MapKeysIterator[Object, nullable Object]> */
 RET_LABEL:;
@@ -2065,8 +2064,8 @@ val* var1 /* : MapIterator[Object, nullable Object] */;
 var1 = self->attrs[COLOR_abstract_collection__MapValuesIterator___64diterator].val; /* @iterator on <self:MapValuesIterator[Object, nullable Object]> */
 if (var1 == NULL) {
 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @iterator");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 395);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 396);
+show_backtrace(1);
 }
 var = var1;
 RET_LABEL:;
@@ -2101,8 +2100,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MapIterator[MapValuesIterator#0, MapValuesIterator#1]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 395);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 396);
+show_backtrace(1);
 }
 self->attrs[COLOR_abstract_collection__MapValuesIterator___64diterator].val = p0; /* @iterator on <self:MapValuesIterator[Object, nullable Object]> */
 RET_LABEL:;
@@ -2186,8 +2185,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MapIterator[MapValuesIterator#0, MapValuesIterator#1]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 392);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 393);
+show_backtrace(1);
 }
 self->attrs[COLOR_abstract_collection__MapValuesIterator___64diterator].val = p0; /* @iterator on <self:MapValuesIterator[Object, nullable Object]> */
 RET_LABEL:;
@@ -2208,8 +2207,8 @@ var1 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collec
 var2 = !var1;
 if (!var2) {
 fprintf(stderr, "Runtime error: %s", "Assert \'not_empty\' failed");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 411);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 412);
+show_backtrace(1);
 }
 var3 = 0;
 var4 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var3) /* [] on <self:SequenceRead[nullable Object]>*/;
@@ -2233,8 +2232,8 @@ val* var /* : nullable Object */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "[]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 415);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 416);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -2261,8 +2260,8 @@ var1 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collec
 var2 = !var1;
 if (!var2) {
 fprintf(stderr, "Runtime error: %s", "Assert \'not_empty\' failed");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 424);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 425);
+show_backtrace(1);
 }
 var3 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:SequenceRead[nullable Object]>*/;
 var4 = 1;
@@ -2324,8 +2323,8 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SequenceRead#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 428);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 429);
+show_backtrace(1);
 }
 var_item = p0;
 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:SequenceRead[nullable Object]>*/;
@@ -2376,8 +2375,8 @@ val* var /* : IndexedIterator[nullable Object] */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "iterator", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 441);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 442);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -2469,7 +2468,7 @@ if (!var14) {
 var_class_name = type_kernel__Int.name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
-exit(1);
+show_backtrace(1);
 }
 var17 = var_i < var_l;
 var12 = var17;
@@ -2590,8 +2589,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 472);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 473);
+show_backtrace(1);
 }
 var_item = p0;
 var1 = 0;
@@ -2643,8 +2642,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 477);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 478);
+show_backtrace(1);
 }
 var_item = p0;
 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Sequence[nullable Object]>*/;
@@ -2658,7 +2657,7 @@ if (!var5) {
 var_class_name8 = type_kernel__Int.name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
-exit(1);
+show_backtrace(1);
 }
 var9 = var_l > var2;
 var3 = var9;
@@ -2712,8 +2711,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SimpleCollection#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 489);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 490);
+show_backtrace(1);
 }
 var_e = p0;
 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__Sequence__push]))(self, var_e) /* push on <self:Sequence[nullable Object]>*/;
@@ -2751,13 +2750,13 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 492);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 493);
+show_backtrace(1);
 }
 var_class_name1 = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "push", var_class_name1);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 492);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 493);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method abstract_collection#Sequence#push for (self: Object, nullable Object) */
@@ -2790,8 +2789,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[Sequence#0]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 495);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 496);
+show_backtrace(1);
 }
 var_coll = p0;
 var1 = ((val* (*)(val*))(var_coll->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_coll) /* iterator on <var_coll:Collection[nullable Object]>*/;
@@ -2818,8 +2817,8 @@ val* var /* : nullable Object */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "pop", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 498);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 499);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -2859,13 +2858,13 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 501);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 502);
+show_backtrace(1);
 }
 var_class_name1 = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "unshift", var_class_name1);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 501);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 502);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method abstract_collection#Sequence#unshift for (self: Object, nullable Object) */
@@ -2879,8 +2878,8 @@ val* var /* : nullable Object */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "shift", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 504);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 505);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -2920,13 +2919,13 @@ var = p1->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p1 == NULL ? "null" : p1->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 508);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 509);
+show_backtrace(1);
 }
 var_class_name1 = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "[]=", var_class_name1);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 508);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 509);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method abstract_collection#Sequence#[]= for (self: Object, Int, nullable Object) */
@@ -2939,8 +2938,8 @@ void abstract_collection__Sequence__remove_at(val* self, long p0) {
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "remove_at", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 511);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 512);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method abstract_collection#Sequence#remove_at for (self: Object, Int) */
@@ -2954,8 +2953,8 @@ long var /* : Int */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "index", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 518);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 519);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -2990,13 +2989,13 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "CoupleMap#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 525);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 526);
+show_backtrace(1);
 }
 var_class_name2 = self == NULL ? "null" : self->type->name;
 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "couple_at", var_class_name2);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 525);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 526);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -3036,8 +3035,8 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MapRead#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 529);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 530);
+show_backtrace(1);
 }
 var_key = p0;
 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__CoupleMap__couple_at]))(self, var_key) /* couple_at on <self:CoupleMap[Object, nullable Object]>*/;
@@ -3050,8 +3049,8 @@ var4 = 0; /* arg is null but recv is not */
 }
 if (var4){
 fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 533);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 534);
+show_backtrace(1);
 } else {
 var5 = ((val* (*)(val*))(var_c->class->vft[COLOR_abstract_collection__Couple__second]))(var_c) /* second on <var_c:nullable Couple[Object, nullable Object](Couple[Object, nullable Object])>*/;
 var = var5;
@@ -3078,8 +3077,8 @@ val* var3 /* : nullable Object */;
 var1 = self->attrs[COLOR_abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[Object, nullable Object]> */
 if (var1 == NULL) {
 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _iter");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 545);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 546);
+show_backtrace(1);
 }
 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[Couple[Object, nullable Object]]>*/;
 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Couple__second]))(var2) /* second on <var2:nullable Object(Couple[Object, nullable Object])>*/;
@@ -3106,8 +3105,8 @@ val* var3 /* : nullable Object */;
 var1 = self->attrs[COLOR_abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[Object, nullable Object]> */
 if (var1 == NULL) {
 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _iter");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 549);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 550);
+show_backtrace(1);
 }
 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[Couple[Object, nullable Object]]>*/;
 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Couple__first]))(var2) /* first on <var2:nullable Object(Couple[Object, nullable Object])>*/;
@@ -3133,8 +3132,8 @@ short int var2 /* : Bool */;
 var1 = self->attrs[COLOR_abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[Object, nullable Object]> */
 if (var1 == NULL) {
 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _iter");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 551);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 552);
+show_backtrace(1);
 }
 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[Couple[Object, nullable Object]]>*/;
 var = var2;
@@ -3157,8 +3156,8 @@ val* var /* : Iterator[Couple[Object, nullable Object]] */;
 var = self->attrs[COLOR_abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[Object, nullable Object]> */
 if (var == NULL) {
 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _iter");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 555);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 556);
+show_backtrace(1);
 }
 ((void (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__next]))(var) /* next on <var:Iterator[Couple[Object, nullable Object]]>*/;
 RET_LABEL:;
@@ -3189,8 +3188,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Iterator[Couple[CoupleMapIterator#0, CoupleMapIterator#1]]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 560);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 561);
+show_backtrace(1);
 }
 var_i = p0;
 self->attrs[COLOR_abstract_collection__CoupleMapIterator___iter].val = var_i; /* _iter on <self:CoupleMapIterator[Object, nullable Object]> */
@@ -3245,8 +3244,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Couple#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 568);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 569);
+show_backtrace(1);
 }
 self->attrs[COLOR_abstract_collection__Couple___first].val = p0; /* _first on <self:Couple[nullable Object, nullable Object]> */
 RET_LABEL:;
@@ -3300,8 +3299,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Couple#1", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 571);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 572);
+show_backtrace(1);
 }
 self->attrs[COLOR_abstract_collection__Couple___second].val = p0; /* _second on <self:Couple[nullable Object, nullable Object]> */
 RET_LABEL:;
@@ -3345,8 +3344,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Couple#0", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 574);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 575);
+show_backtrace(1);
 }
 /* Covariant cast for argument 1 (s) <p1:nullable Object> isa Couple#1 */
 /* <p1:nullable Object> isa Couple#1 */
@@ -3366,8 +3365,8 @@ var1 = p1->type->type_table[cltype2] == idtype3;
 if (!var1) {
 var_class_name6 = p1 == NULL ? "null" : p1->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Couple#1", var_class_name6);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 574);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/abstract_collection.nit", 575);
+show_backtrace(1);
 }
 var_f = p0;
 var_s = p1;