csrc: regen for 32 bits platforms and Windows
[nit.git] / c_src / core__abstract_collection.sep.1.c
index a0a4e8b..a805691 100644 (file)
@@ -1,5 +1,16 @@
 #include "core__abstract_collection.sep.0.h"
-/* method abstract_collection#Collection#is_empty for (self: Collection[nullable Object]): Bool */
+/* method abstract_collection$Collection$iterator for (self: Collection[nullable Object]): Iterator[nullable Object] */
+val* core___core__Collection___iterator(val* self) {
+val* var /* : Iterator[nullable Object] */;
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
+PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "iterator", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 60);
+fatal_exit(1);
+RET_LABEL:;
+return var;
+}
+/* method abstract_collection$Collection$is_empty for (self: Collection[nullable Object]): Bool */
 short int core___core__Collection___is_empty(val* self) {
 short int var /* : Bool */;
 long var1 /* : Int */;
@@ -9,7 +20,7 @@ short int var4 /* : Bool */;
 var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Collection[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#== (var1,0l) on <var1:Int> */
+{ /* Inline kernel$Int$== (var1,0l) on <var1:Int> */
 var4 = var1 == 0l;
 var2 = var4;
 goto RET_LABEL3;
@@ -21,7 +32,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Collection#not_empty for (self: Collection[nullable Object]): Bool */
+/* method abstract_collection$Collection$not_empty for (self: Collection[nullable Object]): Bool */
 short int core___core__Collection___not_empty(val* self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
@@ -35,7 +46,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Collection#length for (self: Collection[nullable Object]): Int */
+/* method abstract_collection$Collection$length for (self: Collection[nullable Object]): Int */
 long core___core__Collection___length(val* self) {
 long var /* : Int */;
 long var_nb /* var nb: Int */;
@@ -70,14 +81,14 @@ var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2-
 }
 var_i = var4;
 {
-{ /* Inline kernel#Int#+ (var_nb,1l) on <var_nb:Int> */
+{ /* Inline kernel$Int$+ (var_nb,1l) on <var_nb:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var7 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var7)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var8 = var_nb + 1l;
@@ -100,7 +111,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Collection#has for (self: Collection[nullable Object], nullable Object): Bool */
+/* method abstract_collection$Collection$has for (self: Collection[nullable Object], nullable Object): Bool */
 short int core___core__Collection___has(val* self, val* p0) {
 short int var /* : Bool */;
 val* var_item /* var item: nullable Object */;
@@ -154,7 +165,85 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Collection#first for (self: Collection[nullable Object]): nullable Object */
+/* method abstract_collection$Collection$count for (self: Collection[nullable Object], nullable Object): Int */
+long core___core__Collection___count(val* self, val* p0) {
+long var /* : Int */;
+val* var_item /* var item: nullable Object */;
+long var_nb /* var nb: Int */;
+val* var_ /* var : Collection[nullable Object] */;
+val* var1 /* : Iterator[nullable Object] */;
+val* var_2 /* var : Iterator[nullable Object] */;
+short int var3 /* : Bool */;
+val* var4 /* : nullable Object */;
+val* var_i /* var i: nullable Object */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+long var7 /* : Int */;
+short int var9 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var10 /* : Int */;
+var_item = p0;
+var_nb = 0l;
+var_ = self;
+{
+var1 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[nullable Object]>*/
+}
+var_2 = var1;
+for(;;) {
+{
+var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_2); /* is_ok on <var_2:Iterator[nullable Object]>*/
+}
+if (var3){
+} else {
+goto BREAK_label;
+}
+{
+var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_2); /* item on <var_2:Iterator[nullable Object]>*/
+}
+var_i = var4;
+if (var_i == NULL) {
+var5 = (var_item == NULL);
+} else {
+var6 = ((short int(*)(val* self, val* p0))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_i, var_item); /* == on <var_i:nullable Object>*/
+var5 = var6;
+}
+if (var5){
+{
+{ /* Inline kernel$Int$+ (var_nb,1l) on <var_nb:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var9 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var9)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var10 = var_nb + 1l;
+var7 = var10;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
+}
+}
+var_nb = var7;
+} else {
+}
+{
+((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_2); /* next on <var_2:Iterator[nullable Object]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_2); /* finish on <var_2:Iterator[nullable Object]>*/
+}
+var = var_nb;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method abstract_collection$Collection$first for (self: Collection[nullable Object]): nullable Object */
 val* core___core__Collection___first(val* self) {
 val* var /* : nullable Object */;
 long var1 /* : Int */;
@@ -170,14 +259,14 @@ val* var7 /* : nullable Object */;
 var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Collection[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#> (var1,0l) on <var1:Int> */
+{ /* Inline kernel$Int$> (var1,0l) on <var1:Int> */
 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
 /* <0l:Int> isa OTHER */
 var4 = 1; /* easy <0l:Int> isa OTHER*/
 if (unlikely(!var4)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
 fatal_exit(1);
 }
 var5 = var1 > 0l;
@@ -187,6 +276,9 @@ RET_LABEL3:(void)0;
 }
 }
 if (unlikely(!var2)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Assert failed");
 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 134);
 fatal_exit(1);
@@ -202,59 +294,230 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Collection#has_all for (self: Collection[nullable Object], Collection[nullable Object]): Bool */
+/* method abstract_collection$Collection$has_all for (self: Collection[nullable Object], Collection[nullable Object]): Bool */
 short int core___core__Collection___has_all(val* self, val* p0) {
 short int var /* : Bool */;
 val* var_other /* var other: Collection[nullable Object] */;
-val* var_ /* var : Collection[nullable Object] */;
-val* var1 /* : Iterator[nullable Object] */;
-val* var_2 /* var : Iterator[nullable Object] */;
+short int var1 /* : Bool */;
 short int var3 /* : Bool */;
-val* var4 /* : nullable Object */;
-val* var_x /* var x: nullable Object */;
-short int var5 /* : Bool */;
+long var4 /* : Int */;
+long var_ol /* var ol: Int */;
+long var5 /* : Int */;
+long var_l /* var l: Int */;
 short int var6 /* : Bool */;
+short int var8 /* : Bool */;
+short int var9 /* : Bool */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+val* var15 /* : nullable Object */;
+short int var16 /* : Bool */;
+val* var_ /* var : Collection[nullable Object] */;
+val* var17 /* : Iterator[nullable Object] */;
+val* var_18 /* var : Iterator[nullable Object] */;
+short int var19 /* : Bool */;
+val* var20 /* : nullable Object */;
+val* var_x /* var x: nullable Object */;
+short int var21 /* : Bool */;
+short int var22 /* : Bool */;
 var_other = p0;
+{
+{ /* Inline kernel$Object$is_same_instance (self,var_other) on <self:Collection[nullable Object]> */
+var3 = self == var_other || ((!((long)self&3)) && (!((long)var_other&3)) && self->class == var_other->class && ((self->class->box_kind == 3 && ((struct instance_core__Byte*)self)->value == ((struct instance_core__Byte*)var_other)->value) || (self->class->box_kind == 5 && ((struct instance_core__Float*)self)->value == ((struct instance_core__Float*)var_other)->value) || (self->class->box_kind == 6 && ((struct instance_core__CString*)self)->value == ((struct instance_core__CString*)var_other)->value) || (self->class->box_kind == 7 && ((struct instance_core__Pointer*)self)->value == ((struct instance_core__Pointer*)var_other)->value) || (self->class->box_kind == 8 && ((struct instance_core__Int8*)self)->value == ((struct instance_core__Int8*)var_other)->value) || (self->class->box_kind == 9 && ((struct instance_core__Int16*)self)->value == ((struct instance_core__Int16*)var_other)->value) || (self->class->box_kind == 10 && ((struct instance_core__UInt16*)self)->value == ((struct instance_core__UInt16*)var_other)->value) || (self->class->box_kind == 11 && ((struct instance_core__Int32*)self)->value == ((struct instance_core__Int32*)var_other)->value) || (self->class->box_kind == 12 && ((struct instance_core__UInt32*)self)->value == ((struct instance_core__UInt32*)var_other)->value)));
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+}
+if (var1){
+var = 1;
+goto RET_LABEL;
+} else {
+}
+{
+var4 = ((long(*)(val* self))((((long)var_other&3)?class_info[((long)var_other&3)]:var_other->class)->vft[COLOR_core__abstract_collection__Collection__length]))(var_other); /* length on <var_other:Collection[nullable Object]>*/
+}
+var_ol = var4;
+{
+var5 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Collection[nullable Object]>*/
+}
+var_l = var5;
+{
+{ /* Inline kernel$Int$== (var_ol,0l) on <var_ol:Int> */
+var8 = var_ol == 0l;
+var6 = var8;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
+}
+}
+if (var6){
+var = 1;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline kernel$Int$== (var_l,0l) on <var_l:Int> */
+var11 = var_l == 0l;
+var9 = var11;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+}
+if (var9){
+var = 0;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline kernel$Int$== (var_ol,1l) on <var_ol:Int> */
+var14 = var_ol == 1l;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+}
+if (var12){
+{
+var15 = ((val*(*)(val* self))((((long)var_other&3)?class_info[((long)var_other&3)]:var_other->class)->vft[COLOR_core__abstract_collection__Collection__first]))(var_other); /* first on <var_other:Collection[nullable Object]>*/
+}
+{
+var16 = ((short int(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__has]))(self, var15); /* has on <self:Collection[nullable Object]>*/
+}
+var = var16;
+goto RET_LABEL;
+} else {
+}
 var_ = var_other;
 {
-var1 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[nullable Object]>*/
+var17 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[nullable Object]>*/
 }
-var_2 = var1;
+var_18 = var17;
 for(;;) {
 {
-var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_2); /* is_ok on <var_2:Iterator[nullable Object]>*/
+var19 = ((short int(*)(val* self))((((long)var_18&3)?class_info[((long)var_18&3)]:var_18->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_18); /* is_ok on <var_18:Iterator[nullable Object]>*/
 }
-if (var3){
+if (var19){
 } else {
 goto BREAK_label;
 }
 {
-var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_2); /* item on <var_2:Iterator[nullable Object]>*/
+var20 = ((val*(*)(val* self))((((long)var_18&3)?class_info[((long)var_18&3)]:var_18->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_18); /* item on <var_18:Iterator[nullable Object]>*/
 }
-var_x = var4;
+var_x = var20;
 {
-var5 = ((short int(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__has]))(self, var_x); /* has on <self:Collection[nullable Object]>*/
+var21 = ((short int(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__has]))(self, var_x); /* has on <self:Collection[nullable Object]>*/
 }
+var22 = !var21;
+if (var22){
+var = 0;
+goto RET_LABEL;
+} else {
+}
+{
+((void(*)(val* self))((((long)var_18&3)?class_info[((long)var_18&3)]:var_18->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_18); /* next on <var_18:Iterator[nullable Object]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_18&3)?class_info[((long)var_18&3)]:var_18->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_18); /* finish on <var_18:Iterator[nullable Object]>*/
+}
+var = 1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method abstract_collection$Collection$has_exactly for (self: Collection[nullable Object], Collection[nullable Object]): Bool */
+short int core___core__Collection___has_exactly(val* self, val* p0) {
+short int var /* : Bool */;
+val* var_other /* var other: Collection[nullable Object] */;
+long var1 /* : Int */;
+long var2 /* : Int */;
+short int var3 /* : Bool */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+val* var_ /* var : Collection[nullable Object] */;
+val* var7 /* : Iterator[nullable Object] */;
+val* var_8 /* var : Iterator[nullable Object] */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable Object */;
+val* var_e /* var e: nullable Object */;
+long var11 /* : Int */;
+long var12 /* : Int */;
+short int var13 /* : Bool */;
+short int var15 /* : Bool */;
+short int var16 /* : Bool */;
+var_other = p0;
+{
+var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Collection[nullable Object]>*/
+}
+{
+var2 = ((long(*)(val* self))((((long)var_other&3)?class_info[((long)var_other&3)]:var_other->class)->vft[COLOR_core__abstract_collection__Collection__length]))(var_other); /* length on <var_other:Collection[nullable Object]>*/
+}
+{
+{ /* Inline kernel$Int$!= (var1,var2) on <var1:Int> */
+var5 = var1 == var2;
 var6 = !var5;
-if (var6){
+var3 = var6;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
+}
+}
+if (var3){
 var = 0;
 goto RET_LABEL;
 } else {
 }
+var_ = self;
 {
-((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_2); /* next on <var_2:Iterator[nullable Object]>*/
+var7 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[nullable Object]>*/
+}
+var_8 = var7;
+for(;;) {
+{
+var9 = ((short int(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_8); /* is_ok on <var_8:Iterator[nullable Object]>*/
+}
+if (var9){
+} else {
+goto BREAK_label;
+}
+{
+var10 = ((val*(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_8); /* item on <var_8:Iterator[nullable Object]>*/
+}
+var_e = var10;
+{
+var11 = ((long(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__count]))(self, var_e); /* count on <self:Collection[nullable Object]>*/
+}
+{
+var12 = ((long(*)(val* self, val* p0))((((long)var_other&3)?class_info[((long)var_other&3)]:var_other->class)->vft[COLOR_core__abstract_collection__Collection__count]))(var_other, var_e); /* count on <var_other:Collection[nullable Object]>*/
+}
+{
+{ /* Inline kernel$Int$!= (var11,var12) on <var11:Int> */
+var15 = var11 == var12;
+var16 = !var15;
+var13 = var16;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
+}
+}
+if (var13){
+var = 0;
+goto RET_LABEL;
+} else {
+}
+{
+((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_8); /* next on <var_8:Iterator[nullable Object]>*/
 }
 }
 BREAK_label: (void)0;
 {
-((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_2); /* finish on <var_2:Iterator[nullable Object]>*/
+((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_8); /* finish on <var_8:Iterator[nullable Object]>*/
 }
 var = 1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Iterator#iterator for (self: Iterator[nullable Object]): Iterator[nullable Object] */
+/* method abstract_collection$Iterator$iterator for (self: Iterator[nullable Object]): Iterator[nullable Object] */
 val* core___core__Iterator___iterator(val* self) {
 val* var /* : Iterator[nullable Object] */;
 var = self;
@@ -262,17 +525,17 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Iterator#finish for (self: Iterator[nullable Object]) */
+/* method abstract_collection$Iterator$finish for (self: Iterator[nullable Object]) */
 void core___core__Iterator___finish(val* self) {
 RET_LABEL:;
 }
-/* method abstract_collection#Ref#first for (self: Ref[nullable Object]): nullable Object */
+/* method abstract_collection$Ref$first for (self: Ref[nullable Object]): nullable Object */
 val* core___core__Ref___Collection__first(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : nullable Object */;
 val* var3 /* : nullable Object */;
 {
-{ /* Inline abstract_collection#Ref#item (self) on <self:Ref[nullable Object]> */
+{ /* Inline abstract_collection$Ref$item (self) on <self:Ref[nullable Object]> */
 var3 = self->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <self:Ref[nullable Object]> */
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -283,7 +546,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Ref#is_empty for (self: Ref[nullable Object]): Bool */
+/* method abstract_collection$Ref$is_empty for (self: Ref[nullable Object]): Bool */
 short int core___core__Ref___Collection__is_empty(val* self) {
 short int var /* : Bool */;
 var = 0;
@@ -291,7 +554,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Ref#length for (self: Ref[nullable Object]): Int */
+/* method abstract_collection$Ref$length for (self: Ref[nullable Object]): Int */
 long core___core__Ref___Collection__length(val* self) {
 long var /* : Int */;
 var = 1l;
@@ -299,7 +562,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Ref#has for (self: Ref[nullable Object], nullable Object): Bool */
+/* method abstract_collection$Ref$has for (self: Ref[nullable Object], nullable Object): Bool */
 short int core___core__Ref___Collection__has(val* self, val* p0) {
 short int var /* : Bool */;
 val* var_an_item /* var an_item: nullable Object */;
@@ -309,7 +572,7 @@ short int var4 /* : Bool */;
 short int var5 /* : Bool */;
 var_an_item = p0;
 {
-{ /* Inline abstract_collection#Ref#item (self) on <self:Ref[nullable Object]> */
+{ /* Inline abstract_collection$Ref$item (self) on <self:Ref[nullable Object]> */
 var3 = self->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <self:Ref[nullable Object]> */
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -326,7 +589,39 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Ref#iterator for (self: Ref[nullable Object]): Iterator[nullable Object] */
+/* method abstract_collection$Ref$count for (self: Ref[nullable Object], nullable Object): Int */
+long core___core__Ref___Collection__count(val* self, val* p0) {
+long var /* : Int */;
+val* var_an_item /* var an_item: nullable Object */;
+val* var1 /* : nullable Object */;
+val* var3 /* : nullable Object */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+var_an_item = p0;
+{
+{ /* Inline abstract_collection$Ref$item (self) on <self:Ref[nullable Object]> */
+var3 = self->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <self:Ref[nullable Object]> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+if (var1 == NULL) {
+var4 = (var_an_item == NULL);
+} else {
+var5 = ((short int(*)(val* self, val* p0))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var1, var_an_item); /* == on <var1:nullable Object>*/
+var4 = var5;
+}
+if (var4){
+var = 1l;
+goto RET_LABEL;
+} else {
+var = 0l;
+goto RET_LABEL;
+}
+RET_LABEL:;
+return var;
+}
+/* method abstract_collection$Ref$iterator for (self: Ref[nullable Object]): Iterator[nullable Object] */
 val* core___core__Ref___Collection__iterator(val* self) {
 val* var /* : Iterator[nullable Object] */;
 val* var1 /* : RefIterator[nullable Object] */;
@@ -342,7 +637,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Ref#item for (self: Ref[nullable Object]): nullable Object */
+/* method abstract_collection$Ref$item for (self: Ref[nullable Object]): nullable Object */
 val* core___core__Ref___item(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : nullable Object */;
@@ -351,7 +646,7 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Ref#item= for (self: Ref[nullable Object], nullable Object) */
+/* method abstract_collection$Ref$item= for (self: Ref[nullable Object], nullable Object) */
 void core___core__Ref___item_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -377,20 +672,20 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 340);
 fatal_exit(1);
 }
 self->attrs[COLOR_core__abstract_collection__Ref___item].val = p0; /* _item on <self:Ref[nullable Object]> */
 RET_LABEL:;
 }
-/* method abstract_collection#Ref#init for (self: Ref[nullable Object]) */
+/* method abstract_collection$Ref$init for (self: Ref[nullable Object]) */
 void core___core__Ref___core__kernel__Object__init(val* self) {
 {
 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Ref___core__kernel__Object__init]))(self); /* init on <self:Ref[nullable Object]>*/
 }
 RET_LABEL:;
 }
-/* method abstract_collection#RefIterator#item for (self: RefIterator[nullable Object]): nullable Object */
+/* method abstract_collection$RefIterator$item for (self: RefIterator[nullable Object]): nullable Object */
 val* core__abstract_collection___core__abstract_collection__RefIterator___Iterator__item(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : Ref[nullable Object] */;
@@ -398,12 +693,15 @@ val* var2 /* : nullable Object */;
 val* var4 /* : nullable Object */;
 var1 = self->attrs[COLOR_core__abstract_collection__RefIterator___container].val; /* _container on <self:RefIterator[nullable Object]> */
 if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _container");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 341);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 347);
 fatal_exit(1);
 }
 {
-{ /* Inline abstract_collection#Ref#item (var1) on <var1:Ref[nullable Object]> */
+{ /* Inline abstract_collection$Ref$item (var1) on <var1:Ref[nullable Object]> */
 var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:Ref[nullable Object]> */
 var2 = var4;
 RET_LABEL3:(void)0;
@@ -414,17 +712,17 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#RefIterator#next for (self: RefIterator[nullable Object]) */
+/* method abstract_collection$RefIterator$next for (self: RefIterator[nullable Object]) */
 void core__abstract_collection___core__abstract_collection__RefIterator___Iterator__next(val* self) {
 {
-{ /* Inline abstract_collection#RefIterator#is_ok= (self,0) on <self:RefIterator[nullable Object]> */
+{ /* Inline abstract_collection$RefIterator$is_ok= (self,0) on <self:RefIterator[nullable Object]> */
 self->attrs[COLOR_core__abstract_collection__RefIterator___is_ok].s = 0; /* _is_ok on <self:RefIterator[nullable Object]> */
 RET_LABEL1:(void)0;
 }
 }
 RET_LABEL:;
 }
-/* method abstract_collection#RefIterator#is_ok for (self: RefIterator[nullable Object]): Bool */
+/* method abstract_collection$RefIterator$is_ok for (self: RefIterator[nullable Object]): Bool */
 short int core__abstract_collection___core__abstract_collection__RefIterator___Iterator__is_ok(val* self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
@@ -433,12 +731,12 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#RefIterator#is_ok= for (self: RefIterator[nullable Object], Bool) */
+/* method abstract_collection$RefIterator$is_ok= for (self: RefIterator[nullable Object], Bool) */
 void core__abstract_collection___core__abstract_collection__RefIterator___is_ok_61d(val* self, short int p0) {
 self->attrs[COLOR_core__abstract_collection__RefIterator___is_ok].s = p0; /* _is_ok on <self:RefIterator[nullable Object]> */
 RET_LABEL:;
 }
-/* method abstract_collection#RefIterator#container= for (self: RefIterator[nullable Object], Ref[nullable Object]) */
+/* method abstract_collection$RefIterator$container= for (self: RefIterator[nullable Object], Ref[nullable Object]) */
 void core__abstract_collection___core__abstract_collection__RefIterator___container_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -458,38 +756,47 @@ var = p0->type->type_table[cltype] == idtype;
 if (unlikely(!var)) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Ref[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 347);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 353);
 fatal_exit(1);
 }
 self->attrs[COLOR_core__abstract_collection__RefIterator___container].val = p0; /* _container on <self:RefIterator[nullable Object]> */
 RET_LABEL:;
 }
-/* method abstract_collection#RefIterator#init for (self: RefIterator[nullable Object]) */
+/* method abstract_collection$RefIterator$init for (self: RefIterator[nullable Object]) */
 void core__abstract_collection___core__abstract_collection__RefIterator___core__kernel__Object__init(val* self) {
 {
 ((void(*)(val* self))(self->class->vft[COLOR_core__abstract_collection___core__abstract_collection__RefIterator___core__kernel__Object__init]))(self); /* init on <self:RefIterator[nullable Object]>*/
 }
 RET_LABEL:;
 }
-/* method abstract_collection#RemovableCollection#clear for (self: RemovableCollection[nullable Object]) */
+/* method abstract_collection$RemovableCollection$clear for (self: RemovableCollection[nullable Object]) */
 void core___core__RemovableCollection___clear(val* self) {
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "clear", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 354);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 360);
 fatal_exit(1);
 RET_LABEL:;
 }
-/* method abstract_collection#RemovableCollection#remove for (self: RemovableCollection[nullable Object], nullable Object) */
+/* method abstract_collection$RemovableCollection$remove for (self: RemovableCollection[nullable Object], nullable Object) */
 void core___core__RemovableCollection___remove(val* self, val* p0) {
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "remove", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 363);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 369);
+fatal_exit(1);
+RET_LABEL:;
+}
+/* method abstract_collection$SimpleCollection$add for (self: SimpleCollection[nullable Object], nullable Object) */
+void core___core__SimpleCollection___add(val* self, val* p0) {
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
+PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "add", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 388);
 fatal_exit(1);
 RET_LABEL:;
 }
-/* method abstract_collection#SimpleCollection#add_all for (self: SimpleCollection[nullable Object], Collection[nullable Object]) */
+/* method abstract_collection$SimpleCollection$add_all for (self: SimpleCollection[nullable Object], Collection[nullable Object]) */
 void core___core__SimpleCollection___add_all(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -516,7 +823,7 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "Collection[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 392);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 398);
 fatal_exit(1);
 }
 var_coll = p0;
@@ -550,7 +857,26 @@ BREAK_label: (void)0;
 }
 RET_LABEL:;
 }
-/* method abstract_collection#Set#== for (self: Set[nullable Object], nullable Object): Bool */
+/* method abstract_collection$Set$count for (self: Set[nullable Object], nullable Object): Int */
+long core___core__Set___Collection__count(val* self, val* p0) {
+long var /* : Int */;
+val* var_item /* var item: nullable Object */;
+short int var1 /* : Bool */;
+var_item = p0;
+{
+var1 = ((short int(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__has]))(self, var_item); /* has on <self:Set[nullable Object]>*/
+}
+if (var1){
+var = 1l;
+goto RET_LABEL;
+} else {
+var = 0l;
+goto RET_LABEL;
+}
+RET_LABEL:;
+return var;
+}
+/* method abstract_collection$Set$== for (self: Set[nullable Object], nullable Object): Bool */
 short int core___core__Set___core__kernel__Object___61d_61d(val* self, val* p0) {
 short int var /* : Bool */;
 val* var_other /* var other: nullable Object */;
@@ -590,7 +916,7 @@ var3 = ((long(*)(val* self))((((long)var_other&3)?class_info[((long)var_other&3)
 var4 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Set[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#!= (var3,var4) on <var3:Int> */
+{ /* Inline kernel$Int$!= (var3,var4) on <var3:Int> */
 var7 = var3 == var4;
 var8 = !var7;
 var5 = var8;
@@ -611,7 +937,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Set#hash for (self: Set[nullable Object]): Int */
+/* method abstract_collection$Set$hash for (self: Set[nullable Object]): Int */
 long core___core__Set___core__kernel__Object__hash(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
@@ -628,25 +954,27 @@ val* var_7 /* var : Iterator[nullable Object] */;
 short int var8 /* : Bool */;
 val* var9 /* : nullable Object */;
 val* var_e /* var e: nullable Object */;
-long var10 /* : Int */;
-long var11 /* : Int */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
-const char* var_class_name16;
-long var17 /* : Int */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+long var12 /* : Int */;
+long var13 /* : Int */;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
+long var19 /* : Int */;
 {
 var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Set[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#+ (23l,var1) on <23l:Int> */
+{ /* Inline kernel$Int$+ (23l,var1) on <23l:Int> */
 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
 /* <var1:Int> isa OTHER */
 var4 = 1; /* easy <var1:Int> isa OTHER*/
 if (unlikely(!var4)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var5 = 23l + var1;
@@ -674,30 +1002,38 @@ var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7-
 }
 var_e = var9;
 if (var_e == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 454);
-fatal_exit(1);
+var10 = 0; /* is null */
 } else {
-var10 = ((long(*)(val* self))((((long)var_e&3)?class_info[((long)var_e&3)]:var_e->class)->vft[COLOR_core__kernel__Object__hash]))(var_e); /* hash on <var_e:nullable Object>*/
+var10 = 1; /* arg is null and recv is not */
+}
+if (0) {
+var11 = ((short int(*)(val* self, val* p0))((((long)var_e&3)?class_info[((long)var_e&3)]:var_e->class)->vft[COLOR_core__kernel__Object___33d_61d]))(var_e, ((val*)NULL)); /* != on <var_e:nullable Object>*/
+var10 = var11;
 }
+if (var10){
 {
-{ /* Inline kernel#Int#+ (var_res,var10) on <var_res:Int> */
-/* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
-/* <var10:Int> isa OTHER */
-var13 = 1; /* easy <var10:Int> isa OTHER*/
-if (unlikely(!var13)) {
-var_class_name16 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var12 = ((long(*)(val* self))((((long)var_e&3)?class_info[((long)var_e&3)]:var_e->class)->vft[COLOR_core__kernel__Object__hash]))(var_e); /* hash on <var_e:nullable Object(Object)>*/
+}
+{
+{ /* Inline kernel$Int$+ (var_res,var12) on <var_res:Int> */
+/* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
+/* <var12:Int> isa OTHER */
+var15 = 1; /* easy <var12:Int> isa OTHER*/
+if (unlikely(!var15)) {
+var_class_name18 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var17 = var_res + var10;
-var11 = var17;
-goto RET_LABEL12;
-RET_LABEL12:(void)0;
+var19 = var_res + var12;
+var13 = var19;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
+}
 }
+var_res = var13;
+} else {
 }
-var_res = var11;
 {
 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:Iterator[nullable Object]>*/
 }
@@ -711,7 +1047,93 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#MapRead#get_or_null for (self: MapRead[nullable Object, nullable Object], nullable Object): nullable Object */
+/* method abstract_collection$Set$union for (self: Set[nullable Object], Set[nullable Object]): Set[nullable Object] */
+val* core___core__Set___union(val* self, val* p0) {
+val* var /* : Set[nullable Object] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+val* var_other /* var other: Set[nullable Object] */;
+val* var2 /* : Set[nullable Object] */;
+val* var_nhs /* var nhs: Set[nullable Object] */;
+/* Covariant cast for argument 0 (other) <p0:Set[nullable Object]> isa Set[E] */
+/* <p0:Set[nullable Object]> isa Set[E] */
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__Set__core__Set___35dE];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var1 = 0;
+} else {
+var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var1)) {
+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`", "Set[E]", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 466);
+fatal_exit(1);
+}
+var_other = p0;
+{
+var2 = ((val*(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Set__new_set]))(self); /* new_set on <self:Set[nullable Object]>*/
+}
+var_nhs = var2;
+{
+core___core__SimpleCollection___add_all(var_nhs, self); /* Direct call abstract_collection$SimpleCollection$add_all on <var_nhs:Set[nullable Object]>*/
+}
+{
+core___core__SimpleCollection___add_all(var_nhs, var_other); /* Direct call abstract_collection$SimpleCollection$add_all on <var_nhs:Set[nullable Object]>*/
+}
+var = var_nhs;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method abstract_collection$Set$clone for (self: Set[nullable Object]): Set[nullable Object] */
+val* core___core__Set___core__kernel__Cloneable__clone(val* self) {
+val* var /* : Set[nullable Object] */;
+val* var1 /* : Set[nullable Object] */;
+short int var2 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+{
+var1 = core___core__Set___union(self, self);
+}
+/* <var1:Set[nullable Object]> isa SELF */
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__kernel__Object__SELF];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)var1&3)?type_info[((long)var1&3)]:var1->type)->table_size) {
+var2 = 0;
+} else {
+var2 = (((long)var1&3)?type_info[((long)var1&3)]:var1->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var2)) {
+var_class_name = var1 == NULL ? "null" : (((long)var1&3)?type_info[((long)var1&3)]:var1->type)->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SELF", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 483);
+fatal_exit(1);
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method abstract_collection$Set$new_set for (self: Set[nullable Object]): Set[nullable Object] */
+val* core___core__Set___new_set(val* self) {
+val* var /* : Set[nullable Object] */;
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
+PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "new_set", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 485);
+fatal_exit(1);
+RET_LABEL:;
+return var;
+}
+/* method abstract_collection$MapRead$get_or_null for (self: MapRead[nullable Object, nullable Object], nullable Object): nullable Object */
 val* core___core__MapRead___get_or_null(val* self, val* p0) {
 val* var /* : nullable Object */;
 val* var_key /* var key: nullable Object */;
@@ -734,18 +1156,21 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#MapRead#provide_default_value for (self: MapRead[nullable Object, nullable Object], nullable Object): nullable Object */
+/* method abstract_collection$MapRead$provide_default_value for (self: MapRead[nullable Object, nullable Object], nullable Object): nullable Object */
 val* core___core__MapRead___provide_default_value(val* self, val* p0) {
 val* var /* : nullable Object */;
 val* var_key /* var key: nullable Object */;
 var_key = p0;
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Aborted");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 590);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 598);
 fatal_exit(1);
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#MapRead#== for (self: MapRead[nullable Object, nullable Object], nullable Object): Bool */
+/* method abstract_collection$MapRead$== for (self: MapRead[nullable Object, nullable Object], nullable Object): Bool */
 short int core___core__MapRead___core__kernel__Object___61d_61d(val* self, val* p0) {
 short int var /* : Bool */;
 val* var_other /* var other: nullable Object */;
@@ -797,7 +1222,7 @@ var3 = ((long(*)(val* self))((((long)var_other&3)?class_info[((long)var_other&3)
 var4 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__MapRead__length]))(self); /* length on <self:MapRead[nullable Object, nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#!= (var3,var4) on <var3:Int> */
+{ /* Inline kernel$Int$!= (var3,var4) on <var3:Int> */
 var7 = var3 == var4;
 var8 = !var7;
 var5 = var8;
@@ -860,7 +1285,7 @@ goto RET_LABEL;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#MapIterator#finish (var_10) on <var_10:MapIterator[nullable Object, nullable Object]> */
+{ /* Inline abstract_collection$MapIterator$finish (var_10) on <var_10:MapIterator[nullable Object, nullable Object]> */
 RET_LABEL19:(void)0;
 }
 }
@@ -869,7 +1294,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#MapRead#hash for (self: MapRead[nullable Object, nullable Object]): Int */
+/* method abstract_collection$MapRead$hash for (self: MapRead[nullable Object, nullable Object]): Int */
 long core___core__MapRead___core__kernel__Object__hash(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
@@ -951,14 +1376,14 @@ if (var7){
 var9 = ((long(*)(val* self))((((long)var_k&3)?class_info[((long)var_k&3)]:var_k->class)->vft[COLOR_core__kernel__Object__hash]))(var_k); /* hash on <var_k:nullable Object(Object)>*/
 }
 {
-{ /* Inline kernel#Int#* (var9,7l) on <var9:Int> */
+{ /* Inline kernel$Int$* (var9,7l) on <var9:Int> */
 /* Covariant cast for argument 0 (i) <7l:Int> isa OTHER */
 /* <7l:Int> isa OTHER */
 var12 = 1; /* easy <7l:Int> isa OTHER*/
 if (unlikely(!var12)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 735);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 732);
 fatal_exit(1);
 }
 var13 = var9 * 7l;
@@ -968,14 +1393,14 @@ RET_LABEL11:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_res,var10) on <var_res:Int> */
+{ /* Inline kernel$Int$+ (var_res,var10) on <var_res:Int> */
 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
 /* <var10:Int> isa OTHER */
 var16 = 1; /* easy <var10:Int> isa OTHER*/
 if (unlikely(!var16)) {
 var_class_name19 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name19);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var20 = var_res + var10;
@@ -1001,14 +1426,14 @@ if (var21){
 var23 = ((long(*)(val* self))((((long)var_v&3)?class_info[((long)var_v&3)]:var_v->class)->vft[COLOR_core__kernel__Object__hash]))(var_v); /* hash on <var_v:nullable Object(Object)>*/
 }
 {
-{ /* Inline kernel#Int#* (var23,11l) on <var23:Int> */
+{ /* Inline kernel$Int$* (var23,11l) on <var23:Int> */
 /* Covariant cast for argument 0 (i) <11l:Int> isa OTHER */
 /* <11l:Int> isa OTHER */
 var26 = 1; /* easy <11l:Int> isa OTHER*/
 if (unlikely(!var26)) {
 var_class_name29 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name29);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 735);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 732);
 fatal_exit(1);
 }
 var30 = var23 * 11l;
@@ -1018,14 +1443,14 @@ RET_LABEL25:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_res,var24) on <var_res:Int> */
+{ /* Inline kernel$Int$+ (var_res,var24) on <var_res:Int> */
 /* Covariant cast for argument 0 (i) <var24:Int> isa OTHER */
 /* <var24:Int> isa OTHER */
 var33 = 1; /* easy <var24:Int> isa OTHER*/
 if (unlikely(!var33)) {
 var_class_name36 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name36);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var37 = var_res + var24;
@@ -1043,7 +1468,7 @@ var_res = var31;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#MapIterator#finish (var_3) on <var_3:MapIterator[nullable Object, nullable Object]> */
+{ /* Inline abstract_collection$MapIterator$finish (var_3) on <var_3:MapIterator[nullable Object, nullable Object]> */
 RET_LABEL38:(void)0;
 }
 }
@@ -1052,25 +1477,86 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#MapIterator#finish for (self: MapIterator[nullable Object, nullable Object]) */
+/* method abstract_collection$Map$add_all for (self: Map[nullable Object, nullable Object], MapRead[nullable Object, nullable Object]) */
+void core___core__Map___add_all(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+val* var_map /* var map: MapRead[nullable Object, nullable Object] */;
+val* var1 /* : MapIterator[nullable Object, nullable Object] */;
+val* var_i /* var i: MapIterator[nullable Object, nullable Object] */;
+short int var2 /* : Bool */;
+val* var3 /* : nullable Object */;
+val* var4 /* : nullable Object */;
+/* Covariant cast for argument 0 (map) <p0:MapRead[nullable Object, nullable Object]> isa MapRead[K, V] */
+/* <p0:MapRead[nullable Object, nullable Object]> isa MapRead[K, V] */
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__MapRead__core__Map___35dK__core__Map___35dV];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var = 0;
+} else {
+var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var)) {
+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`", "MapRead[K, V]", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 688);
+fatal_exit(1);
+}
+var_map = p0;
+{
+var1 = ((val*(*)(val* self))((((long)var_map&3)?class_info[((long)var_map&3)]:var_map->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(var_map); /* iterator on <var_map:MapRead[nullable Object, nullable Object]>*/
+}
+var_i = var1;
+for(;;) {
+{
+var2 = ((short int(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_i); /* is_ok on <var_i:MapIterator[nullable Object, nullable Object]>*/
+}
+if (var2){
+{
+var3 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_i); /* key on <var_i:MapIterator[nullable Object, nullable Object]>*/
+}
+{
+var4 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_i); /* item on <var_i:MapIterator[nullable Object, nullable Object]>*/
+}
+{
+((void(*)(val* self, val* p0, val* p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Map___91d_93d_61d]))(self, var3, var4); /* []= on <self:Map[nullable Object, nullable Object]>*/
+}
+{
+((void(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_i); /* next on <var_i:MapIterator[nullable Object, nullable Object]>*/
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+RET_LABEL:;
+}
+/* method abstract_collection$MapIterator$finish for (self: MapIterator[nullable Object, nullable Object]) */
 void core___core__MapIterator___finish(val* self) {
 RET_LABEL:;
 }
-/* method abstract_collection#MapKeysIterator#original_iterator for (self: MapKeysIterator[nullable Object, nullable Object]): MapIterator[nullable Object, nullable Object] */
+/* method abstract_collection$MapKeysIterator$original_iterator for (self: MapKeysIterator[nullable Object, nullable Object]): MapIterator[nullable Object, nullable Object] */
 val* core___core__MapKeysIterator___original_iterator(val* self) {
 val* var /* : MapIterator[nullable Object, nullable Object] */;
 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
 var1 = self->attrs[COLOR_core__abstract_collection__MapKeysIterator___original_iterator].val; /* _original_iterator on <self:MapKeysIterator[nullable Object, nullable Object]> */
 if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 763);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 772);
 fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#MapKeysIterator#original_iterator= for (self: MapKeysIterator[nullable Object, nullable Object], MapIterator[nullable Object, nullable Object]) */
+/* method abstract_collection$MapKeysIterator$original_iterator= for (self: MapKeysIterator[nullable Object, nullable Object], MapIterator[nullable Object, nullable Object]) */
 void core___core__MapKeysIterator___original_iterator_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -1090,24 +1576,27 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "MapIterator[K, V]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 763);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 772);
 fatal_exit(1);
 }
 self->attrs[COLOR_core__abstract_collection__MapKeysIterator___original_iterator].val = p0; /* _original_iterator on <self:MapKeysIterator[nullable Object, nullable Object]> */
 RET_LABEL:;
 }
-/* method abstract_collection#MapKeysIterator#is_ok for (self: MapKeysIterator[nullable Object, nullable Object]): Bool */
+/* method abstract_collection$MapKeysIterator$is_ok for (self: MapKeysIterator[nullable Object, nullable Object]): Bool */
 short int core___core__MapKeysIterator___Iterator__is_ok(val* self) {
 short int var /* : Bool */;
 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
 val* var3 /* : MapIterator[nullable Object, nullable Object] */;
 short int var4 /* : Bool */;
 {
-{ /* Inline abstract_collection#MapKeysIterator#original_iterator (self) on <self:MapKeysIterator[nullable Object, nullable Object]> */
+{ /* Inline abstract_collection$MapKeysIterator$original_iterator (self) on <self:MapKeysIterator[nullable Object, nullable Object]> */
 var3 = self->attrs[COLOR_core__abstract_collection__MapKeysIterator___original_iterator].val; /* _original_iterator on <self:MapKeysIterator[nullable Object, nullable Object]> */
 if (unlikely(var3 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 763);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 772);
 fatal_exit(1);
 }
 var1 = var3;
@@ -1122,16 +1611,19 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#MapKeysIterator#next for (self: MapKeysIterator[nullable Object, nullable Object]) */
+/* method abstract_collection$MapKeysIterator$next for (self: MapKeysIterator[nullable Object, nullable Object]) */
 void core___core__MapKeysIterator___Iterator__next(val* self) {
 val* var /* : MapIterator[nullable Object, nullable Object] */;
 val* var2 /* : MapIterator[nullable Object, nullable Object] */;
 {
-{ /* Inline abstract_collection#MapKeysIterator#original_iterator (self) on <self:MapKeysIterator[nullable Object, nullable Object]> */
+{ /* Inline abstract_collection$MapKeysIterator$original_iterator (self) on <self:MapKeysIterator[nullable Object, nullable Object]> */
 var2 = self->attrs[COLOR_core__abstract_collection__MapKeysIterator___original_iterator].val; /* _original_iterator on <self:MapKeysIterator[nullable Object, nullable Object]> */
 if (unlikely(var2 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 763);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 772);
 fatal_exit(1);
 }
 var = var2;
@@ -1143,18 +1635,21 @@ RET_LABEL1:(void)0;
 }
 RET_LABEL:;
 }
-/* method abstract_collection#MapKeysIterator#item for (self: MapKeysIterator[nullable Object, nullable Object]): nullable Object */
+/* method abstract_collection$MapKeysIterator$item for (self: MapKeysIterator[nullable Object, nullable Object]): nullable Object */
 val* core___core__MapKeysIterator___Iterator__item(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
 val* var3 /* : MapIterator[nullable Object, nullable Object] */;
 val* var4 /* : nullable Object */;
 {
-{ /* Inline abstract_collection#MapKeysIterator#original_iterator (self) on <self:MapKeysIterator[nullable Object, nullable Object]> */
+{ /* Inline abstract_collection$MapKeysIterator$original_iterator (self) on <self:MapKeysIterator[nullable Object, nullable Object]> */
 var3 = self->attrs[COLOR_core__abstract_collection__MapKeysIterator___original_iterator].val; /* _original_iterator on <self:MapKeysIterator[nullable Object, nullable Object]> */
 if (unlikely(var3 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 763);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 772);
 fatal_exit(1);
 }
 var1 = var3;
@@ -1169,28 +1664,31 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#MapKeysIterator#init for (self: MapKeysIterator[nullable Object, nullable Object]) */
+/* method abstract_collection$MapKeysIterator$init for (self: MapKeysIterator[nullable Object, nullable Object]) */
 void core___core__MapKeysIterator___core__kernel__Object__init(val* self) {
 {
 ((void(*)(val* self))(self->class->vft[COLOR_core___core__MapKeysIterator___core__kernel__Object__init]))(self); /* init on <self:MapKeysIterator[nullable Object, nullable Object]>*/
 }
 RET_LABEL:;
 }
-/* method abstract_collection#MapValuesIterator#original_iterator for (self: MapValuesIterator[nullable Object, nullable Object]): MapIterator[nullable Object, nullable Object] */
+/* method abstract_collection$MapValuesIterator$original_iterator for (self: MapValuesIterator[nullable Object, nullable Object]): MapIterator[nullable Object, nullable Object] */
 val* core___core__MapValuesIterator___original_iterator(val* self) {
 val* var /* : MapIterator[nullable Object, nullable Object] */;
 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
 var1 = self->attrs[COLOR_core__abstract_collection__MapValuesIterator___original_iterator].val; /* _original_iterator on <self:MapValuesIterator[nullable Object, nullable Object]> */
 if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 774);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 783);
 fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#MapValuesIterator#original_iterator= for (self: MapValuesIterator[nullable Object, nullable Object], MapIterator[nullable Object, nullable Object]) */
+/* method abstract_collection$MapValuesIterator$original_iterator= for (self: MapValuesIterator[nullable Object, nullable Object], MapIterator[nullable Object, nullable Object]) */
 void core___core__MapValuesIterator___original_iterator_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -1210,24 +1708,27 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "MapIterator[K, V]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 774);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 783);
 fatal_exit(1);
 }
 self->attrs[COLOR_core__abstract_collection__MapValuesIterator___original_iterator].val = p0; /* _original_iterator on <self:MapValuesIterator[nullable Object, nullable Object]> */
 RET_LABEL:;
 }
-/* method abstract_collection#MapValuesIterator#is_ok for (self: MapValuesIterator[nullable Object, nullable Object]): Bool */
+/* method abstract_collection$MapValuesIterator$is_ok for (self: MapValuesIterator[nullable Object, nullable Object]): Bool */
 short int core___core__MapValuesIterator___Iterator__is_ok(val* self) {
 short int var /* : Bool */;
 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
 val* var3 /* : MapIterator[nullable Object, nullable Object] */;
 short int var4 /* : Bool */;
 {
-{ /* Inline abstract_collection#MapValuesIterator#original_iterator (self) on <self:MapValuesIterator[nullable Object, nullable Object]> */
+{ /* Inline abstract_collection$MapValuesIterator$original_iterator (self) on <self:MapValuesIterator[nullable Object, nullable Object]> */
 var3 = self->attrs[COLOR_core__abstract_collection__MapValuesIterator___original_iterator].val; /* _original_iterator on <self:MapValuesIterator[nullable Object, nullable Object]> */
 if (unlikely(var3 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 774);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 783);
 fatal_exit(1);
 }
 var1 = var3;
@@ -1242,16 +1743,19 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#MapValuesIterator#next for (self: MapValuesIterator[nullable Object, nullable Object]) */
+/* method abstract_collection$MapValuesIterator$next for (self: MapValuesIterator[nullable Object, nullable Object]) */
 void core___core__MapValuesIterator___Iterator__next(val* self) {
 val* var /* : MapIterator[nullable Object, nullable Object] */;
 val* var2 /* : MapIterator[nullable Object, nullable Object] */;
 {
-{ /* Inline abstract_collection#MapValuesIterator#original_iterator (self) on <self:MapValuesIterator[nullable Object, nullable Object]> */
+{ /* Inline abstract_collection$MapValuesIterator$original_iterator (self) on <self:MapValuesIterator[nullable Object, nullable Object]> */
 var2 = self->attrs[COLOR_core__abstract_collection__MapValuesIterator___original_iterator].val; /* _original_iterator on <self:MapValuesIterator[nullable Object, nullable Object]> */
 if (unlikely(var2 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 774);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 783);
 fatal_exit(1);
 }
 var = var2;
@@ -1263,18 +1767,21 @@ RET_LABEL1:(void)0;
 }
 RET_LABEL:;
 }
-/* method abstract_collection#MapValuesIterator#item for (self: MapValuesIterator[nullable Object, nullable Object]): nullable Object */
+/* method abstract_collection$MapValuesIterator$item for (self: MapValuesIterator[nullable Object, nullable Object]): nullable Object */
 val* core___core__MapValuesIterator___Iterator__item(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
 val* var3 /* : MapIterator[nullable Object, nullable Object] */;
 val* var4 /* : nullable Object */;
 {
-{ /* Inline abstract_collection#MapValuesIterator#original_iterator (self) on <self:MapValuesIterator[nullable Object, nullable Object]> */
+{ /* Inline abstract_collection$MapValuesIterator$original_iterator (self) on <self:MapValuesIterator[nullable Object, nullable Object]> */
 var3 = self->attrs[COLOR_core__abstract_collection__MapValuesIterator___original_iterator].val; /* _original_iterator on <self:MapValuesIterator[nullable Object, nullable Object]> */
 if (unlikely(var3 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 774);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 783);
 fatal_exit(1);
 }
 var1 = var3;
@@ -1289,14 +1796,14 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#MapValuesIterator#init for (self: MapValuesIterator[nullable Object, nullable Object]) */
+/* method abstract_collection$MapValuesIterator$init for (self: MapValuesIterator[nullable Object, nullable Object]) */
 void core___core__MapValuesIterator___core__kernel__Object__init(val* self) {
 {
 ((void(*)(val* self))(self->class->vft[COLOR_core___core__MapValuesIterator___core__kernel__Object__init]))(self); /* init on <self:MapValuesIterator[nullable Object, nullable Object]>*/
 }
 RET_LABEL:;
 }
-/* method abstract_collection#SequenceRead#first for (self: SequenceRead[nullable Object]): nullable Object */
+/* method abstract_collection$SequenceRead$first for (self: SequenceRead[nullable Object]): nullable Object */
 val* core___core__SequenceRead___Collection__first(val* self) {
 val* var /* : nullable Object */;
 short int var1 /* : Bool */;
@@ -1307,8 +1814,11 @@ var1 = ((short int(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:sel
 }
 var2 = !var1;
 if (unlikely(!var2)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Assert \'not_empty\' failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 799);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 808);
 fatal_exit(1);
 }
 {
@@ -1319,7 +1829,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#SequenceRead#last for (self: SequenceRead[nullable Object]): nullable Object */
+/* method abstract_collection$SequenceRead$last for (self: SequenceRead[nullable Object]): nullable Object */
 val* core___core__SequenceRead___last(val* self) {
 val* var /* : nullable Object */;
 short int var1 /* : Bool */;
@@ -1337,22 +1847,25 @@ var1 = ((short int(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:sel
 }
 var2 = !var1;
 if (unlikely(!var2)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Assert \'not_empty\' failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 862);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 871);
 fatal_exit(1);
 }
 {
 var3 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:SequenceRead[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#- (var3,1l) on <var3:Int> */
+{ /* Inline kernel$Int$- (var3,1l) on <var3:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var6 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var6)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
 var7 = var3 - 1l;
@@ -1369,7 +1882,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#SequenceRead#index_of for (self: SequenceRead[nullable Object], nullable Object): Int */
+/* method abstract_collection$SequenceRead$index_of for (self: SequenceRead[nullable Object], nullable Object): Int */
 long core___core__SequenceRead___index_of(val* self, val* p0) {
 long var /* : Int */;
 val* var_item /* var item: nullable Object */;
@@ -1383,7 +1896,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#SequenceRead#last_index_of for (self: SequenceRead[nullable Object], nullable Object): Int */
+/* method abstract_collection$SequenceRead$last_index_of for (self: SequenceRead[nullable Object], nullable Object): Int */
 long core___core__SequenceRead___last_index_of(val* self, val* p0) {
 long var /* : Int */;
 val* var_item /* var item: nullable Object */;
@@ -1400,14 +1913,14 @@ var_item = p0;
 var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:SequenceRead[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#- (var1,1l) on <var1:Int> */
+{ /* Inline kernel$Int$- (var1,1l) on <var1:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var4 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var4)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
 var5 = var1 - 1l;
@@ -1424,7 +1937,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#SequenceRead#index_of_from for (self: SequenceRead[nullable Object], nullable Object, Int): Int */
+/* method abstract_collection$SequenceRead$index_of_from for (self: SequenceRead[nullable Object], nullable Object, Int): Int */
 long core___core__SequenceRead___index_of_from(val* self, val* p0, long p1) {
 long var /* : Int */;
 val* var_item /* var item: nullable Object */;
@@ -1466,14 +1979,14 @@ var2 = ((short int(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:v
 }
 if (var2){
 {
-{ /* Inline kernel#Int#>= (var_p,var_pos) on <var_p:Int> */
+{ /* Inline kernel$Int$>= (var_p,var_pos) on <var_p:Int> */
 /* Covariant cast for argument 0 (i) <var_pos:Int> isa OTHER */
 /* <var_pos:Int> isa OTHER */
 var6 = 1; /* easy <var_pos:Int> isa OTHER*/
 if (unlikely(!var6)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
 fatal_exit(1);
 }
 var7 = var_p >= var_pos;
@@ -1509,14 +2022,14 @@ goto RET_LABEL;
 ((void(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_i); /* next on <var_i:IndexedIterator[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#+ (var_p,1l) on <var_p:Int> */
+{ /* Inline kernel$Int$+ (var_p,1l) on <var_p:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var14 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var14)) {
 var_class_name17 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var18 = var_p + 1l;
@@ -1532,7 +2045,7 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+{ /* Inline kernel$Int$unary - (1l) on <1l:Int> */
 var21 = -1l;
 var19 = var21;
 goto RET_LABEL20;
@@ -1544,7 +2057,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#SequenceRead#last_index_of_from for (self: SequenceRead[nullable Object], nullable Object, Int): Int */
+/* method abstract_collection$SequenceRead$last_index_of_from for (self: SequenceRead[nullable Object], nullable Object, Int): Int */
 long core___core__SequenceRead___last_index_of_from(val* self, val* p0, long p1) {
 long var /* : Int */;
 val* var_item /* var item: nullable Object */;
@@ -1572,14 +2085,14 @@ var_pos = p1;
 var_i = var_pos;
 for(;;) {
 {
-{ /* Inline kernel#Int#>= (var_i,0l) on <var_i:Int> */
+{ /* Inline kernel$Int$>= (var_i,0l) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
 /* <0l:Int> isa OTHER */
 var3 = 1; /* easy <0l:Int> isa OTHER*/
 if (unlikely(!var3)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
 fatal_exit(1);
 }
 var4 = var_i >= 0l;
@@ -1604,14 +2117,14 @@ goto RET_LABEL;
 } else {
 }
 {
-{ /* Inline kernel#Int#- (var_i,1l) on <var_i:Int> */
+{ /* Inline kernel$Int$- (var_i,1l) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var10 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var10)) {
 var_class_name13 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
 var14 = var_i - 1l;
@@ -1627,7 +2140,7 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+{ /* Inline kernel$Int$unary - (1l) on <1l:Int> */
 var17 = -1l;
 var15 = var17;
 goto RET_LABEL16;
@@ -1639,7 +2152,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#SequenceRead#== for (self: SequenceRead[nullable Object], nullable Object): Bool */
+/* method abstract_collection$SequenceRead$== for (self: SequenceRead[nullable Object], nullable Object): Bool */
 short int core___core__SequenceRead___core__kernel__Object___61d_61d(val* self, val* p0) {
 short int var /* : Bool */;
 val* var_o /* var o: nullable Object */;
@@ -1697,7 +2210,7 @@ var_l = var3;
 var4 = ((long(*)(val* self))((((long)var_o&3)?class_info[((long)var_o&3)]:var_o->class)->vft[COLOR_core__abstract_collection__Collection__length]))(var_o); /* length on <var_o:nullable Object(SequenceRead[nullable Object])>*/
 }
 {
-{ /* Inline kernel#Int#!= (var4,var_l) on <var4:Int> */
+{ /* Inline kernel$Int$!= (var4,var_l) on <var4:Int> */
 var7 = var4 == var_l;
 var8 = !var7;
 var5 = var8;
@@ -1713,14 +2226,14 @@ goto RET_LABEL;
 var_i = 0l;
 for(;;) {
 {
-{ /* Inline kernel#Int#< (var_i,var_l) on <var_i:Int> */
+{ /* Inline kernel$Int$< (var_i,var_l) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
 /* <var_l:Int> isa OTHER */
 var11 = 1; /* easy <var_l:Int> isa OTHER*/
 if (unlikely(!var11)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
 fatal_exit(1);
 }
 var14 = var_i < var_l;
@@ -1748,14 +2261,14 @@ goto RET_LABEL;
 } else {
 }
 {
-{ /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
+{ /* Inline kernel$Int$+ (var_i,1l) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var21 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var21)) {
 var_class_name24 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var25 = var_i + 1l;
@@ -1775,7 +2288,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#SequenceRead#hash for (self: SequenceRead[nullable Object]): Int */
+/* method abstract_collection$SequenceRead$hash for (self: SequenceRead[nullable Object]): Int */
 long core___core__SequenceRead___core__kernel__Object__hash(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
@@ -1817,14 +2330,14 @@ long var33 /* : Int */;
 var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:SequenceRead[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#+ (17l,var1) on <17l:Int> */
+{ /* Inline kernel$Int$+ (17l,var1) on <17l:Int> */
 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
 /* <var1:Int> isa OTHER */
 var4 = 1; /* easy <var1:Int> isa OTHER*/
 if (unlikely(!var4)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var5 = 17l + var1;
@@ -1852,14 +2365,14 @@ var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7-
 }
 var_e = var9;
 {
-{ /* Inline kernel#Int#* (var_res,3l) on <var_res:Int> */
+{ /* Inline kernel$Int$* (var_res,3l) on <var_res:Int> */
 /* Covariant cast for argument 0 (i) <3l:Int> isa OTHER */
 /* <3l:Int> isa OTHER */
 var12 = 1; /* easy <3l:Int> isa OTHER*/
 if (unlikely(!var12)) {
 var_class_name15 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 735);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 732);
 fatal_exit(1);
 }
 var16 = var_res * 3l;
@@ -1869,14 +2382,14 @@ RET_LABEL11:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#/ (var10,2l) on <var10:Int> */
+{ /* Inline kernel$Int$/ (var10,2l) on <var10:Int> */
 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
 /* <2l:Int> isa OTHER */
 var19 = 1; /* easy <2l:Int> isa OTHER*/
 if (unlikely(!var19)) {
 var_class_name22 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 736);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 733);
 fatal_exit(1);
 }
 var23 = var10 / 2l;
@@ -1900,14 +2413,14 @@ if (var24){
 var26 = ((long(*)(val* self))((((long)var_e&3)?class_info[((long)var_e&3)]:var_e->class)->vft[COLOR_core__kernel__Object__hash]))(var_e); /* hash on <var_e:nullable Object(Object)>*/
 }
 {
-{ /* Inline kernel#Int#+ (var_res,var26) on <var_res:Int> */
+{ /* Inline kernel$Int$+ (var_res,var26) on <var_res:Int> */
 /* Covariant cast for argument 0 (i) <var26:Int> isa OTHER */
 /* <var26:Int> isa OTHER */
 var29 = 1; /* easy <var26:Int> isa OTHER*/
 if (unlikely(!var29)) {
 var_class_name32 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var33 = var_res + var26;
@@ -1932,7 +2445,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#SequenceRead#iterator_from for (self: SequenceRead[nullable Object], Int): IndexedIterator[nullable Object] */
+/* method abstract_collection$SequenceRead$iterator_from for (self: SequenceRead[nullable Object], Int): IndexedIterator[nullable Object] */
 val* core___core__SequenceRead___iterator_from(val* self, long p0) {
 val* var /* : IndexedIterator[nullable Object] */;
 long var_pos /* var pos: Int */;
@@ -1960,14 +2473,14 @@ var1 = ((val*(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->cl
 var_res = var1;
 for(;;) {
 {
-{ /* Inline kernel#Int#> (var_pos,0l) on <var_pos:Int> */
+{ /* Inline kernel$Int$> (var_pos,0l) on <var_pos:Int> */
 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
 /* <0l:Int> isa OTHER */
 var5 = 1; /* easy <0l:Int> isa OTHER*/
 if (unlikely(!var5)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
 fatal_exit(1);
 }
 var6 = var_pos > 0l;
@@ -1990,14 +2503,14 @@ if (var2){
 ((void(*)(val* self))((((long)var_res&3)?class_info[((long)var_res&3)]:var_res->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_res); /* next on <var_res:IndexedIterator[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#- (var_pos,1l) on <var_pos:Int> */
+{ /* Inline kernel$Int$- (var_pos,1l) on <var_pos:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var10 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var10)) {
 var_class_name13 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
 var14 = var_pos - 1l;
@@ -2017,18 +2530,18 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#SequenceRead#reverse_iterator for (self: SequenceRead[nullable Object]): IndexedIterator[nullable Object] */
+/* method abstract_collection$SequenceRead$reverse_iterator for (self: SequenceRead[nullable Object]): IndexedIterator[nullable Object] */
 val* core___core__SequenceRead___reverse_iterator(val* self) {
 val* var /* : IndexedIterator[nullable Object] */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "reverse_iterator", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 972);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 981);
 fatal_exit(1);
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#SequenceRead#reverse_iterator_from for (self: SequenceRead[nullable Object], Int): IndexedIterator[nullable Object] */
+/* method abstract_collection$SequenceRead$reverse_iterator_from for (self: SequenceRead[nullable Object], Int): IndexedIterator[nullable Object] */
 val* core___core__SequenceRead___reverse_iterator_from(val* self, long p0) {
 val* var /* : IndexedIterator[nullable Object] */;
 long var_pos /* var pos: Int */;
@@ -2056,14 +2569,14 @@ var1 = ((val*(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->cl
 var_res = var1;
 for(;;) {
 {
-{ /* Inline kernel#Int#> (var_pos,0l) on <var_pos:Int> */
+{ /* Inline kernel$Int$> (var_pos,0l) on <var_pos:Int> */
 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
 /* <0l:Int> isa OTHER */
 var5 = 1; /* easy <0l:Int> isa OTHER*/
 if (unlikely(!var5)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
 fatal_exit(1);
 }
 var6 = var_pos > 0l;
@@ -2086,14 +2599,14 @@ if (var2){
 ((void(*)(val* self))((((long)var_res&3)?class_info[((long)var_res&3)]:var_res->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_res); /* next on <var_res:IndexedIterator[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#- (var_pos,1l) on <var_pos:Int> */
+{ /* Inline kernel$Int$- (var_pos,1l) on <var_pos:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var10 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var10)) {
 var_class_name13 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
 var14 = var_pos - 1l;
@@ -2113,7 +2626,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Sequence#first= for (self: Sequence[nullable Object], nullable Object) */
+/* method abstract_collection$Sequence$first= for (self: Sequence[nullable Object], nullable Object) */
 void core___core__Sequence___first_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -2140,7 +2653,7 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 999);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1008);
 fatal_exit(1);
 }
 var_item = p0;
@@ -2149,7 +2662,7 @@ var_item = p0;
 }
 RET_LABEL:;
 }
-/* method abstract_collection#Sequence#add for (self: Sequence[nullable Object], nullable Object) */
+/* method abstract_collection$Sequence$add for (self: Sequence[nullable Object], nullable Object) */
 void core___core__Sequence___SimpleCollection__add(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -2176,7 +2689,7 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1030);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1039);
 fatal_exit(1);
 }
 var_e = p0;
@@ -2185,7 +2698,7 @@ var_e = p0;
 }
 RET_LABEL:;
 }
-/* method abstract_collection#Sequence#append for (self: Sequence[nullable Object], Collection[nullable Object]) */
+/* method abstract_collection$Sequence$append for (self: Sequence[nullable Object], Collection[nullable Object]) */
 void core___core__Sequence___append(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -2206,7 +2719,7 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "Collection[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1041);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1050);
 fatal_exit(1);
 }
 var_coll = p0;
@@ -2215,27 +2728,27 @@ var_coll = p0;
 }
 RET_LABEL:;
 }
-/* method abstract_collection#Sequence#pop for (self: Sequence[nullable Object]): nullable Object */
+/* method abstract_collection$Sequence$pop for (self: Sequence[nullable Object]): nullable Object */
 val* core___core__Sequence___pop(val* self) {
 val* var /* : nullable Object */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "pop", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1050);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1059);
 fatal_exit(1);
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Sequence#unshift for (self: Sequence[nullable Object], nullable Object) */
+/* method abstract_collection$Sequence$unshift for (self: Sequence[nullable Object], nullable Object) */
 void core___core__Sequence___unshift(val* self, val* p0) {
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "unshift", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1060);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1069);
 fatal_exit(1);
 RET_LABEL:;
 }
-/* method abstract_collection#Sequence#prepend for (self: Sequence[nullable Object], Collection[nullable Object]) */
+/* method abstract_collection$Sequence$prepend for (self: Sequence[nullable Object], Collection[nullable Object]) */
 void core___core__Sequence___prepend(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -2256,7 +2769,7 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "Collection[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1068);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1077);
 fatal_exit(1);
 }
 var_coll = p0;
@@ -2265,27 +2778,27 @@ var_coll = p0;
 }
 RET_LABEL:;
 }
-/* method abstract_collection#Sequence#shift for (self: Sequence[nullable Object]): nullable Object */
+/* method abstract_collection$Sequence$shift for (self: Sequence[nullable Object]): nullable Object */
 val* core___core__Sequence___shift(val* self) {
 val* var /* : nullable Object */;
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "shift", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1077);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1086);
 fatal_exit(1);
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Sequence#insert for (self: Sequence[nullable Object], nullable Object, Int) */
+/* method abstract_collection$Sequence$insert for (self: Sequence[nullable Object], nullable Object, Int) */
 void core___core__Sequence___insert(val* self, val* p0, long p1) {
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "insert", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1121);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1130);
 fatal_exit(1);
 RET_LABEL:;
 }
-/* method abstract_collection#Sequence#insert_all for (self: Sequence[nullable Object], Collection[nullable Object], Int) */
+/* method abstract_collection$Sequence$insert_all for (self: Sequence[nullable Object], Collection[nullable Object], Int) */
 void core___core__Sequence___insert_all(val* self, val* p0, long p1) {
 short int var /* : Bool */;
 int cltype;
@@ -2337,20 +2850,20 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "Collection[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1131);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1140);
 fatal_exit(1);
 }
 var_coll = p0;
 var_index = p1;
 {
-{ /* Inline kernel#Int#>= (var_index,0l) on <var_index:Int> */
+{ /* Inline kernel$Int$>= (var_index,0l) on <var_index:Int> */
 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
 /* <0l:Int> isa OTHER */
 var4 = 1; /* easy <0l:Int> isa OTHER*/
 if (unlikely(!var4)) {
 var_class_name7 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
 fatal_exit(1);
 }
 var8 = var_index >= 0l;
@@ -2365,14 +2878,14 @@ if (var2){
 var9 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Sequence[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#< (var_index,var9) on <var_index:Int> */
+{ /* Inline kernel$Int$< (var_index,var9) on <var_index:Int> */
 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
 /* <var9:Int> isa OTHER */
 var12 = 1; /* easy <var9:Int> isa OTHER*/
 if (unlikely(!var12)) {
 var_class_name15 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
 fatal_exit(1);
 }
 var16 = var_index < var9;
@@ -2386,15 +2899,18 @@ var1 = var10;
 var1 = var_;
 }
 if (unlikely(!var1)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1141);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1150);
 fatal_exit(1);
 }
 {
 var17 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Sequence[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#== (var_index,var17) on <var_index:Int> */
+{ /* Inline kernel$Int$== (var_index,var17) on <var_index:Int> */
 var20 = var_index == var17;
 var18 = var20;
 goto RET_LABEL19;
@@ -2428,14 +2944,14 @@ var_c = var25;
 ((void(*)(val* self, val* p0, long p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Sequence__insert]))(self, var_c, var_index); /* insert on <self:Sequence[nullable Object]>*/
 }
 {
-{ /* Inline kernel#Int#+ (var_index,1l) on <var_index:Int> */
+{ /* Inline kernel$Int$+ (var_index,1l) on <var_index:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var28 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var28)) {
 var_class_name31 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var32 = var_index + 1l;
@@ -2455,16 +2971,16 @@ BREAK_label: (void)0;
 }
 RET_LABEL:;
 }
-/* method abstract_collection#Sequence#remove_at for (self: Sequence[nullable Object], Int) */
+/* method abstract_collection$Sequence$remove_at for (self: Sequence[nullable Object], Int) */
 void core___core__Sequence___remove_at(val* self, long p0) {
 const char* var_class_name;
 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "remove_at", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1151);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1160);
 fatal_exit(1);
 RET_LABEL:;
 }
-/* method abstract_collection#CoupleMap#iterator for (self: CoupleMap[nullable Object, nullable Object]): MapIterator[nullable Object, nullable Object] */
+/* method abstract_collection$CoupleMap$iterator for (self: CoupleMap[nullable Object, nullable Object]): MapIterator[nullable Object, nullable Object] */
 val* core___core__CoupleMap___MapRead__iterator(val* self) {
 val* var /* : MapIterator[nullable Object, nullable Object] */;
 val* var1 /* : CoupleMapIterator[nullable Object, nullable Object] */;
@@ -2484,7 +3000,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#CoupleMap#has_key for (self: CoupleMap[nullable Object, nullable Object], nullable Object): Bool */
+/* method abstract_collection$CoupleMap$has_key for (self: CoupleMap[nullable Object, nullable Object], nullable Object): Bool */
 short int core___core__CoupleMap___MapRead__has_key(val* self, val* p0) {
 short int var /* : Bool */;
 val* var_key /* var key: nullable Object */;
@@ -2504,7 +3020,7 @@ var2 = 0; /* is null */
 var2 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var1,((val*)NULL)) on <var1:nullable Couple[nullable Object, nullable Object]> */
+{ /* Inline kernel$Object$!= (var1,((val*)NULL)) on <var1:nullable Couple[nullable Object, nullable Object]> */
 var_other = ((val*)NULL);
 {
 var5 = ((short int(*)(val* self, val* p0))(var1->class->vft[COLOR_core__kernel__Object___61d_61d]))(var1, var_other); /* == on <var1:nullable Couple[nullable Object, nullable Object](Couple[nullable Object, nullable Object])>*/
@@ -2521,7 +3037,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#CoupleMapIterator#item for (self: CoupleMapIterator[nullable Object, nullable Object]): nullable Object */
+/* method abstract_collection$CoupleMapIterator$item for (self: CoupleMapIterator[nullable Object, nullable Object]): nullable Object */
 val* core__abstract_collection___core__abstract_collection__CoupleMapIterator___MapIterator__item(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : Iterator[Couple[nullable Object, nullable Object]] */;
@@ -2530,15 +3046,18 @@ val* var3 /* : nullable Object */;
 val* var5 /* : nullable Object */;
 var1 = self->attrs[COLOR_core__abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[nullable Object, nullable Object]> */
 if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iter");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1201);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1234);
 fatal_exit(1);
 }
 {
 var2 = ((val*(*)(val* self))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var1); /* item on <var1:Iterator[Couple[nullable Object, nullable Object]]>*/
 }
 {
-{ /* Inline abstract_collection#Couple#second (var2) on <var2:nullable Object(Couple[nullable Object, nullable Object])> */
+{ /* Inline abstract_collection$Couple$second (var2) on <var2:nullable Object(Couple[nullable Object, nullable Object])> */
 var5 = var2->attrs[COLOR_core__abstract_collection__Couple___second].val; /* _second on <var2:nullable Object(Couple[nullable Object, nullable Object])> */
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -2549,7 +3068,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#CoupleMapIterator#key for (self: CoupleMapIterator[nullable Object, nullable Object]): nullable Object */
+/* method abstract_collection$CoupleMapIterator$key for (self: CoupleMapIterator[nullable Object, nullable Object]): nullable Object */
 val* core__abstract_collection___core__abstract_collection__CoupleMapIterator___MapIterator__key(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : Iterator[Couple[nullable Object, nullable Object]] */;
@@ -2558,15 +3077,18 @@ val* var3 /* : nullable Object */;
 val* var5 /* : nullable Object */;
 var1 = self->attrs[COLOR_core__abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[nullable Object, nullable Object]> */
 if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iter");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1205);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1238);
 fatal_exit(1);
 }
 {
 var2 = ((val*(*)(val* self))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var1); /* item on <var1:Iterator[Couple[nullable Object, nullable Object]]>*/
 }
 {
-{ /* Inline abstract_collection#Couple#first (var2) on <var2:nullable Object(Couple[nullable Object, nullable Object])> */
+{ /* Inline abstract_collection$Couple$first (var2) on <var2:nullable Object(Couple[nullable Object, nullable Object])> */
 var5 = var2->attrs[COLOR_core__abstract_collection__Couple___first].val; /* _first on <var2:nullable Object(Couple[nullable Object, nullable Object])> */
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -2577,15 +3099,18 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#CoupleMapIterator#is_ok for (self: CoupleMapIterator[nullable Object, nullable Object]): Bool */
+/* method abstract_collection$CoupleMapIterator$is_ok for (self: CoupleMapIterator[nullable Object, nullable Object]): Bool */
 short int core__abstract_collection___core__abstract_collection__CoupleMapIterator___MapIterator__is_ok(val* self) {
 short int var /* : Bool */;
 val* var1 /* : Iterator[Couple[nullable Object, nullable Object]] */;
 short int var2 /* : Bool */;
 var1 = self->attrs[COLOR_core__abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[nullable Object, nullable Object]> */
 if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iter");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1207);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1240);
 fatal_exit(1);
 }
 {
@@ -2596,13 +3121,16 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#CoupleMapIterator#next for (self: CoupleMapIterator[nullable Object, nullable Object]) */
+/* method abstract_collection$CoupleMapIterator$next for (self: CoupleMapIterator[nullable Object, nullable Object]) */
 void core__abstract_collection___core__abstract_collection__CoupleMapIterator___MapIterator__next(val* self) {
 val* var /* : Iterator[Couple[nullable Object, nullable Object]] */;
 var = self->attrs[COLOR_core__abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[nullable Object, nullable Object]> */
 if (unlikely(var == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iter");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1211);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1244);
 fatal_exit(1);
 }
 {
@@ -2610,7 +3138,7 @@ fatal_exit(1);
 }
 RET_LABEL:;
 }
-/* method abstract_collection#CoupleMapIterator#iter= for (self: CoupleMapIterator[nullable Object, nullable Object], Iterator[Couple[nullable Object, nullable Object]]) */
+/* method abstract_collection$CoupleMapIterator$iter= for (self: CoupleMapIterator[nullable Object, nullable Object], Iterator[Couple[nullable Object, nullable Object]]) */
 void core__abstract_collection___core__abstract_collection__CoupleMapIterator___iter_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -2630,20 +3158,20 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "Iterator[Couple[K, V]]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1214);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1247);
 fatal_exit(1);
 }
 self->attrs[COLOR_core__abstract_collection__CoupleMapIterator___iter].val = p0; /* _iter on <self:CoupleMapIterator[nullable Object, nullable Object]> */
 RET_LABEL:;
 }
-/* method abstract_collection#CoupleMapIterator#init for (self: CoupleMapIterator[nullable Object, nullable Object]) */
+/* method abstract_collection$CoupleMapIterator$init for (self: CoupleMapIterator[nullable Object, nullable Object]) */
 void core__abstract_collection___core__abstract_collection__CoupleMapIterator___core__kernel__Object__init(val* self) {
 {
 ((void(*)(val* self))(self->class->vft[COLOR_core__abstract_collection___core__abstract_collection__CoupleMapIterator___core__kernel__Object__init]))(self); /* init on <self:CoupleMapIterator[nullable Object, nullable Object]>*/
 }
 RET_LABEL:;
 }
-/* method abstract_collection#Couple#first for (self: Couple[nullable Object, nullable Object]): nullable Object */
+/* method abstract_collection$Couple$first for (self: Couple[nullable Object, nullable Object]): nullable Object */
 val* core___core__Couple___first(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : nullable Object */;
@@ -2652,7 +3180,7 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Couple#first= for (self: Couple[nullable Object, nullable Object], nullable Object) */
+/* method abstract_collection$Couple$first= for (self: Couple[nullable Object, nullable Object], nullable Object) */
 void core___core__Couple___first_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -2678,13 +3206,13 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "F", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1222);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1255);
 fatal_exit(1);
 }
 self->attrs[COLOR_core__abstract_collection__Couple___first].val = p0; /* _first on <self:Couple[nullable Object, nullable Object]> */
 RET_LABEL:;
 }
-/* method abstract_collection#Couple#second for (self: Couple[nullable Object, nullable Object]): nullable Object */
+/* method abstract_collection$Couple$second for (self: Couple[nullable Object, nullable Object]): nullable Object */
 val* core___core__Couple___second(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : nullable Object */;
@@ -2693,7 +3221,7 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method abstract_collection#Couple#second= for (self: Couple[nullable Object, nullable Object], nullable Object) */
+/* method abstract_collection$Couple$second= for (self: Couple[nullable Object, nullable Object], nullable Object) */
 void core___core__Couple___second_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
@@ -2719,13 +3247,13 @@ var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 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`", "S", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1225);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1258);
 fatal_exit(1);
 }
 self->attrs[COLOR_core__abstract_collection__Couple___second].val = p0; /* _second on <self:Couple[nullable Object, nullable Object]> */
 RET_LABEL:;
 }
-/* method abstract_collection#Couple#init for (self: Couple[nullable Object, nullable Object]) */
+/* method abstract_collection$Couple$init for (self: Couple[nullable Object, nullable Object]) */
 void core___core__Couple___core__kernel__Object__init(val* self) {
 {
 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Couple___core__kernel__Object__init]))(self); /* init on <self:Couple[nullable Object, nullable Object]>*/