c_src: regenerate
[nit.git] / c_src / core__list.sep.1.c
similarity index 54%
rename from c_src/standard__list.sep.1.c
rename to c_src/core__list.sep.1.c
index 899ae3e..4b90d71 100644 (file)
@@ -1,6 +1,6 @@
-#include "standard__list.sep.0.h"
+#include "core__list.sep.0.h"
 /* method list#List#[] for (self: List[nullable Object], Int): nullable Object */
-val* standard___standard__List___standard__abstract_collection__SequenceRead___91d_93d(val* self, long p0) {
+val* core___core__List___core__abstract_collection__SequenceRead___91d_93d(val* self, long p0) {
 val* var /* : nullable Object */;
 long var_index /* var index: Int */;
 val* var1 /* : nullable ListNode[nullable Object] */;
@@ -8,20 +8,20 @@ val* var2 /* : nullable Object */;
 val* var4 /* : nullable Object */;
 var_index = p0;
 {
-var1 = standard___standard__List___get_node(self, var_index);
+var1 = core___core__List___get_node(self, var_index);
 }
 if (var1 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 24);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 24);
 fatal_exit(1);
 } else {
-{ /* Inline abstract_collection#Container#item (var1) on <var1:nullable ListNode[nullable Object]> */
+{ /* Inline abstract_collection#Ref#item (var1) on <var1:nullable ListNode[nullable Object]> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__abstract_collection, 309);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
 fatal_exit(1);
 }
-var4 = var1->attrs[COLOR_standard__abstract_collection__Container___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
+var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
 var2 = var4;
 RET_LABEL3:(void)0;
 }
@@ -32,7 +32,7 @@ RET_LABEL:;
 return var;
 }
 /* method list#List#[]= for (self: List[nullable Object], Int, nullable Object) */
-void standard___standard__List___standard__abstract_collection__Sequence___91d_93d_61d(val* self, long p0, val* p1) {
+void core___core__List___core__abstract_collection__Sequence___91d_93d_61d(val* self, long p0, val* p1) {
 short int var /* : Bool */;
 int cltype;
 int idtype;
@@ -50,7 +50,7 @@ short int is_nullable7;
 const char* var_class_name8;
 /* Covariant cast for argument 1 (item) <p1:nullable Object> isa E */
 /* <p1:nullable Object> isa E */
-type_struct = self->type->resolution_table->types[COLOR_standard__List___35dE];
+type_struct = self->type->resolution_table->types[COLOR_core__List___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 is_nullable = type_struct->is_nullable;
@@ -66,23 +66,23 @@ var = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype] == idt
 if (unlikely(!var)) {
 var_class_name = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 26);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 26);
 fatal_exit(1);
 }
 var_index = p0;
 var_item = p1;
 {
-var1 = standard___standard__List___get_node(self, var_index);
+var1 = core___core__List___get_node(self, var_index);
 }
 if (var1 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 26);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 26);
 fatal_exit(1);
 } else {
-{ /* Inline abstract_collection#Container#item= (var1,var_item) on <var1:nullable ListNode[nullable Object]> */
+{ /* Inline abstract_collection#Ref#item= (var1,var_item) on <var1:nullable ListNode[nullable Object]> */
 /* Covariant cast for argument 0 (item) <var_item:nullable Object> isa E */
 /* <var_item:nullable Object> isa E */
-type_struct6 = var1->type->resolution_table->types[COLOR_standard__Container___35dE];
+type_struct6 = var1->type->resolution_table->types[COLOR_core__Ref___35dE];
 cltype4 = type_struct6->color;
 idtype5 = type_struct6->id;
 is_nullable7 = type_struct6->is_nullable;
@@ -98,39 +98,39 @@ var3 = (((long)var_item&3)?type_info[((long)var_item&3)]:var_item->type)->type_t
 if (unlikely(!var3)) {
 var_class_name8 = var_item == NULL ? "null" : (((long)var_item&3)?type_info[((long)var_item&3)]:var_item->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name8);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__abstract_collection, 309);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
 fatal_exit(1);
 }
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__abstract_collection, 309);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
 fatal_exit(1);
 }
-var1->attrs[COLOR_standard__abstract_collection__Container___item].val = var_item; /* _item on <var1:nullable ListNode[nullable Object]> */
+var1->attrs[COLOR_core__abstract_collection__Ref___item].val = var_item; /* _item on <var1:nullable ListNode[nullable Object]> */
 RET_LABEL2:(void)0;
 }
 }
 RET_LABEL:;
 }
 /* method list#List#first for (self: List[nullable Object]): nullable Object */
-val* standard___standard__List___standard__abstract_collection__Collection__first(val* self) {
+val* core___core__List___core__abstract_collection__Collection__first(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : nullable ListNode[nullable Object] */;
 val* var2 /* : nullable Object */;
 val* var4 /* : nullable Object */;
-var1 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var1 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 if (var1 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 29);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 29);
 fatal_exit(1);
 } else {
-{ /* Inline abstract_collection#Container#item (var1) on <var1:nullable ListNode[nullable Object]> */
+{ /* Inline abstract_collection#Ref#item (var1) on <var1:nullable ListNode[nullable Object]> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__abstract_collection, 309);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
 fatal_exit(1);
 }
-var4 = var1->attrs[COLOR_standard__abstract_collection__Container___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
+var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
 var2 = var4;
 RET_LABEL3:(void)0;
 }
@@ -141,7 +141,7 @@ RET_LABEL:;
 return var;
 }
 /* method list#List#first= for (self: List[nullable Object], nullable Object) */
-void standard___standard__List___standard__abstract_collection__Sequence__first_61d(val* self, val* p0) {
+void core___core__List___core__abstract_collection__Sequence__first_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
 int idtype;
@@ -158,7 +158,7 @@ short int is_nullable7;
 const char* var_class_name8;
 /* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
 /* <p0:nullable Object> isa E */
-type_struct = self->type->resolution_table->types[COLOR_standard__List___35dE];
+type_struct = self->type->resolution_table->types[COLOR_core__List___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 is_nullable = type_struct->is_nullable;
@@ -174,20 +174,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_standard__list, 31);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 31);
 fatal_exit(1);
 }
 var_e = p0;
-var1 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var1 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 if (var1 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 32);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 32);
 fatal_exit(1);
 } else {
-{ /* Inline abstract_collection#Container#item= (var1,var_e) on <var1:nullable ListNode[nullable Object]> */
+{ /* Inline abstract_collection#Ref#item= (var1,var_e) on <var1:nullable ListNode[nullable Object]> */
 /* Covariant cast for argument 0 (item) <var_e:nullable Object> isa E */
 /* <var_e:nullable Object> isa E */
-type_struct6 = var1->type->resolution_table->types[COLOR_standard__Container___35dE];
+type_struct6 = var1->type->resolution_table->types[COLOR_core__Ref___35dE];
 cltype4 = type_struct6->color;
 idtype5 = type_struct6->id;
 is_nullable7 = type_struct6->is_nullable;
@@ -203,39 +203,39 @@ var3 = (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->type_table[clty
 if (unlikely(!var3)) {
 var_class_name8 = var_e == NULL ? "null" : (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name8);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__abstract_collection, 309);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
 fatal_exit(1);
 }
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__abstract_collection, 309);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
 fatal_exit(1);
 }
-var1->attrs[COLOR_standard__abstract_collection__Container___item].val = var_e; /* _item on <var1:nullable ListNode[nullable Object]> */
+var1->attrs[COLOR_core__abstract_collection__Ref___item].val = var_e; /* _item on <var1:nullable ListNode[nullable Object]> */
 RET_LABEL2:(void)0;
 }
 }
 RET_LABEL:;
 }
 /* method list#List#last for (self: List[nullable Object]): nullable Object */
-val* standard___standard__List___standard__abstract_collection__SequenceRead__last(val* self) {
+val* core___core__List___core__abstract_collection__SequenceRead__last(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : nullable ListNode[nullable Object] */;
 val* var2 /* : nullable Object */;
 val* var4 /* : nullable Object */;
-var1 = self->attrs[COLOR_standard__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
+var1 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
 if (var1 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 35);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 35);
 fatal_exit(1);
 } else {
-{ /* Inline abstract_collection#Container#item (var1) on <var1:nullable ListNode[nullable Object]> */
+{ /* Inline abstract_collection#Ref#item (var1) on <var1:nullable ListNode[nullable Object]> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__abstract_collection, 309);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
 fatal_exit(1);
 }
-var4 = var1->attrs[COLOR_standard__abstract_collection__Container___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
+var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
 var2 = var4;
 RET_LABEL3:(void)0;
 }
@@ -246,7 +246,7 @@ RET_LABEL:;
 return var;
 }
 /* method list#List#is_empty for (self: List[nullable Object]): Bool */
-short int standard___standard__List___standard__abstract_collection__Collection__is_empty(val* self) {
+short int core___core__List___core__abstract_collection__Collection__is_empty(val* self) {
 short int var /* : Bool */;
 val* var1 /* : nullable ListNode[nullable Object] */;
 short int var2 /* : Bool */;
@@ -254,7 +254,7 @@ short int var3 /* : Bool */;
 val* var_other /* var other: nullable Object */;
 short int var5 /* : Bool */;
 short int var7 /* : Bool */;
-var1 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var1 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 if (var1 == NULL) {
 var2 = 1; /* is null */
 } else {
@@ -283,85 +283,21 @@ RET_LABEL:;
 return var;
 }
 /* method list#List#length for (self: List[nullable Object]): Int */
-long standard___standard__List___standard__abstract_collection__Collection__length(val* self) {
+long core___core__List___core__abstract_collection__Collection__length(val* self) {
 long var /* : Int */;
-long var_l /* var l: Int */;
-val* var1 /* : nullable ListNode[nullable Object] */;
-val* var_t /* var t: nullable ListNode[nullable Object] */;
-short int var2 /* : Bool */;
-short int var3 /* : Bool */;
-val* var_other /* var other: 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 */;
-val* var11 /* : nullable ListNode[nullable Object] */;
-val* var13 /* : nullable ListNode[nullable Object] */;
-var_l = 0l;
-var1 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
-var_t = var1;
-for(;;) {
-if (var_t == NULL) {
-var2 = 0; /* is null */
-} else {
-var2 = 1; /* arg is null and recv is not */
-}
-if (0) {
-{ /* Inline kernel#Object#!= (var_t,((val*)NULL)) on <var_t:nullable ListNode[nullable Object]> */
-var_other = ((val*)NULL);
-{
-var5 = ((short int(*)(val* self, val* p0))(var_t->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_t, var_other); /* == on <var_t:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
-}
-var6 = !var5;
-var3 = var6;
-goto RET_LABEL4;
-RET_LABEL4:(void)0;
-}
-var2 = var3;
-}
-if (var2){
-{
-{ /* Inline kernel#Int#+ (var_l,1l) on <var_l: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_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
-fatal_exit(1);
-}
-var10 = var_l + 1l;
-var7 = var10;
-goto RET_LABEL8;
-RET_LABEL8:(void)0;
-}
-}
-var_l = var7;
-{
-{ /* Inline list#ListNode#next (var_t) on <var_t:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-var13 = var_t->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <var_t:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-var11 = var13;
-RET_LABEL12:(void)0;
-}
-}
-var_t = var11;
-} else {
-goto BREAK_label;
-}
-}
-BREAK_label: (void)0;
-var = var_l;
-goto RET_LABEL;
+long var1 /* : Int */;
+var1 = self->attrs[COLOR_core__list__List___length].l; /* _length on <self:List[nullable Object]> */
+var = var1;
 RET_LABEL:;
 return var;
 }
+/* method list#List#length= for (self: List[nullable Object], Int) */
+void core___core__List___length_61d(val* self, long p0) {
+self->attrs[COLOR_core__list__List___length].l = p0; /* _length on <self:List[nullable Object]> */
+RET_LABEL:;
+}
 /* method list#List#has for (self: List[nullable Object], nullable Object): Bool */
-short int standard___standard__List___standard__abstract_collection__Collection__has(val* self, val* p0) {
+short int core___core__List___core__abstract_collection__Collection__has(val* self, val* p0) {
 short int var /* : Bool */;
 val* var_e /* var e: nullable Object */;
 short int var1 /* : Bool */;
@@ -379,7 +315,7 @@ short int var7 /* : Bool */;
 short int var8 /* : Bool */;
 var_e = p0;
 /* <var_e:nullable Object> isa E */
-type_struct = self->type->resolution_table->types[COLOR_standard__List___35dE];
+type_struct = self->type->resolution_table->types[COLOR_core__List___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 is_nullable = type_struct->is_nullable;
@@ -395,12 +331,12 @@ var1 = (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->type_table[clty
 if (unlikely(!var1)) {
 var_class_name = var_e == NULL ? "null" : (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 58);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 49);
 fatal_exit(1);
 }
-var2 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var2 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 {
-var3 = standard___standard__List___search_node_after(self, var_e, var2);
+var3 = core___core__List___search_node_after(self, var_e, var2);
 }
 if (var3 == NULL) {
 var4 = 0; /* is null */
@@ -411,7 +347,7 @@ if (0) {
 { /* Inline kernel#Object#!= (var3,((val*)NULL)) on <var3:nullable ListNode[nullable Object]> */
 var_other = ((val*)NULL);
 {
-var7 = ((short int(*)(val* self, val* p0))(var3->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var3, var_other); /* == on <var3:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
+var7 = ((short int(*)(val* self, val* p0))(var3->class->vft[COLOR_core__kernel__Object___61d_61d]))(var3, var_other); /* == on <var3:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
 }
 var8 = !var7;
 var5 = var8;
@@ -426,7 +362,7 @@ RET_LABEL:;
 return var;
 }
 /* method list#List#push for (self: List[nullable Object], nullable Object) */
-void standard___standard__List___standard__abstract_collection__Sequence__push(val* self, val* p0) {
+void core___core__List___core__abstract_collection__Sequence__push(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
 int idtype;
@@ -454,9 +390,18 @@ int cltype19;
 int idtype20;
 const struct type* type_struct21;
 const char* var_class_name22;
+val* var_ /* var : List[nullable Object] */;
+long var23 /* : Int */;
+long var25 /* : Int */;
+long var26 /* : Int */;
+short int var28 /* : Bool */;
+int cltype29;
+int idtype30;
+const char* var_class_name31;
+long var32 /* : Int */;
 /* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
 /* <p0:nullable Object> isa E */
-type_struct = self->type->resolution_table->types[COLOR_standard__List___35dE];
+type_struct = self->type->resolution_table->types[COLOR_core__List___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 is_nullable = type_struct->is_nullable;
@@ -472,19 +417,19 @@ 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_standard__list, 95);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 86);
 fatal_exit(1);
 }
 var_e = p0;
-var1 = NEW_standard__list__ListNode(self->type->resolution_table->types[COLOR_standard__list__ListNode__standard__List___35dE]);
+var1 = NEW_core__list__ListNode(self->type->resolution_table->types[COLOR_core__list__ListNode__core__List___35dE]);
 {
-((void(*)(val* self, val* p0))(var1->class->vft[COLOR_standard__abstract_collection__Container__item_61d]))(var1, var_e); /* item= on <var1:ListNode[nullable Object]>*/
+((void(*)(val* self, val* p0))(var1->class->vft[COLOR_core__abstract_collection__Ref__item_61d]))(var1, var_e); /* item= on <var1:ListNode[nullable Object]>*/
 }
 {
-((void(*)(val* self))(var1->class->vft[COLOR_standard__kernel__Object__init]))(var1); /* init on <var1:ListNode[nullable Object]>*/
+((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:ListNode[nullable Object]>*/
 }
 var_node = var1;
-var2 = self->attrs[COLOR_standard__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
+var2 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
 if (var2 == NULL) {
 var3 = 1; /* is null */
 } else {
@@ -508,18 +453,18 @@ RET_LABEL5:(void)0;
 var3 = var4;
 }
 if (var3){
-self->attrs[COLOR_standard__list__List___head].val = var_node; /* _head on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___head].val = var_node; /* _head on <self:List[nullable Object]> */
 } else {
-var9 = self->attrs[COLOR_standard__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
+var9 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
 if (var9 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 102);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 93);
 fatal_exit(1);
 } else {
 { /* Inline list#ListNode#next= (var9,var_node) on <var9:nullable ListNode[nullable Object]> */
 /* Covariant cast for argument 0 (next) <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
 /* <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct14 = var9->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
+type_struct14 = var9->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
 cltype12 = type_struct14->color;
 idtype13 = type_struct14->id;
 if(cltype12 >= var_node->type->table_size) {
@@ -530,24 +475,24 @@ var11 = var_node->type->type_table[cltype12] == idtype13;
 if (unlikely(!var11)) {
 var_class_name15 = var_node == NULL ? "null" : var_node->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name15);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
 if (unlikely(var9 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-var9->attrs[COLOR_standard__list__ListNode___next].val = var_node; /* _next on <var9:nullable ListNode[nullable Object]> */
+var9->attrs[COLOR_core__list__ListNode___next].val = var_node; /* _next on <var9:nullable ListNode[nullable Object]> */
 RET_LABEL10:(void)0;
 }
 }
-var16 = self->attrs[COLOR_standard__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
+var16 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
 {
 { /* Inline list#ListNode#prev= (var_node,var16) on <var_node:ListNode[nullable Object]> */
 /* Covariant cast for argument 0 (prev) <var16:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
 /* <var16:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct21 = var_node->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
+type_struct21 = var_node->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
 cltype19 = type_struct21->color;
 idtype20 = type_struct21->id;
 if(var16 == NULL) {
@@ -562,19 +507,50 @@ var18 = var16->type->type_table[cltype19] == idtype20;
 if (unlikely(!var18)) {
 var_class_name22 = var16 == NULL ? "null" : var16->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name22);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-var_node->attrs[COLOR_standard__list__ListNode___prev].val = var16; /* _prev on <var_node:ListNode[nullable Object]> */
+var_node->attrs[COLOR_core__list__ListNode___prev].val = var16; /* _prev on <var_node:ListNode[nullable Object]> */
 RET_LABEL17:(void)0;
 }
 }
 }
-self->attrs[COLOR_standard__list__List___tail].val = var_node; /* _tail on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___tail].val = var_node; /* _tail on <self:List[nullable Object]> */
+var_ = self;
+{
+{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
+var25 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#+ (var23,1l) on <var23: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);
+fatal_exit(1);
+}
+var32 = var23 + 1l;
+var26 = var32;
+goto RET_LABEL27;
+RET_LABEL27:(void)0;
+}
+}
+{
+{ /* Inline list#List#length= (var_,var26) on <var_:List[nullable Object]> */
+var_->attrs[COLOR_core__list__List___length].l = var26; /* _length on <var_:List[nullable Object]> */
+RET_LABEL33:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method list#List#unshift for (self: List[nullable Object], nullable Object) */
-void standard___standard__List___standard__abstract_collection__Sequence__unshift(val* self, val* p0) {
+void core___core__List___core__abstract_collection__Sequence__unshift(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
 int idtype;
@@ -602,9 +578,18 @@ int cltype19;
 int idtype20;
 const struct type* type_struct21;
 const char* var_class_name22;
+val* var_ /* var : List[nullable Object] */;
+long var23 /* : Int */;
+long var25 /* : Int */;
+long var26 /* : Int */;
+short int var28 /* : Bool */;
+int cltype29;
+int idtype30;
+const char* var_class_name31;
+long var32 /* : Int */;
 /* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
 /* <p0:nullable Object> isa E */
-type_struct = self->type->resolution_table->types[COLOR_standard__List___35dE];
+type_struct = self->type->resolution_table->types[COLOR_core__List___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 is_nullable = type_struct->is_nullable;
@@ -620,19 +605,19 @@ 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_standard__list, 108);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 100);
 fatal_exit(1);
 }
 var_e = p0;
-var1 = NEW_standard__list__ListNode(self->type->resolution_table->types[COLOR_standard__list__ListNode__standard__List___35dE]);
+var1 = NEW_core__list__ListNode(self->type->resolution_table->types[COLOR_core__list__ListNode__core__List___35dE]);
 {
-((void(*)(val* self, val* p0))(var1->class->vft[COLOR_standard__abstract_collection__Container__item_61d]))(var1, var_e); /* item= on <var1:ListNode[nullable Object]>*/
+((void(*)(val* self, val* p0))(var1->class->vft[COLOR_core__abstract_collection__Ref__item_61d]))(var1, var_e); /* item= on <var1:ListNode[nullable Object]>*/
 }
 {
-((void(*)(val* self))(var1->class->vft[COLOR_standard__kernel__Object__init]))(var1); /* init on <var1:ListNode[nullable Object]>*/
+((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:ListNode[nullable Object]>*/
 }
 var_node = var1;
-var2 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var2 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 if (var2 == NULL) {
 var3 = 1; /* is null */
 } else {
@@ -656,14 +641,14 @@ RET_LABEL5:(void)0;
 var3 = var4;
 }
 if (var3){
-self->attrs[COLOR_standard__list__List___tail].val = var_node; /* _tail on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___tail].val = var_node; /* _tail on <self:List[nullable Object]> */
 } else {
-var9 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var9 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 {
 { /* Inline list#ListNode#next= (var_node,var9) on <var_node:ListNode[nullable Object]> */
 /* Covariant cast for argument 0 (next) <var9:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
 /* <var9:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct14 = var_node->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
+type_struct14 = var_node->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
 cltype12 = type_struct14->color;
 idtype13 = type_struct14->id;
 if(var9 == NULL) {
@@ -678,23 +663,23 @@ var11 = var9->type->type_table[cltype12] == idtype13;
 if (unlikely(!var11)) {
 var_class_name15 = var9 == NULL ? "null" : var9->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name15);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-var_node->attrs[COLOR_standard__list__ListNode___next].val = var9; /* _next on <var_node:ListNode[nullable Object]> */
+var_node->attrs[COLOR_core__list__ListNode___next].val = var9; /* _next on <var_node:ListNode[nullable Object]> */
 RET_LABEL10:(void)0;
 }
 }
-var16 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var16 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 if (var16 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 116);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 108);
 fatal_exit(1);
 } else {
 { /* Inline list#ListNode#prev= (var16,var_node) on <var16:nullable ListNode[nullable Object]> */
 /* Covariant cast for argument 0 (prev) <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
 /* <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct21 = var16->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
+type_struct21 = var16->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
 cltype19 = type_struct21->color;
 idtype20 = type_struct21->id;
 if(cltype19 >= var_node->type->table_size) {
@@ -705,24 +690,55 @@ var18 = var_node->type->type_table[cltype19] == idtype20;
 if (unlikely(!var18)) {
 var_class_name22 = var_node == NULL ? "null" : var_node->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name22);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
 if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-var16->attrs[COLOR_standard__list__ListNode___prev].val = var_node; /* _prev on <var16:nullable ListNode[nullable Object]> */
+var16->attrs[COLOR_core__list__ListNode___prev].val = var_node; /* _prev on <var16:nullable ListNode[nullable Object]> */
 RET_LABEL17:(void)0;
 }
 }
 }
-self->attrs[COLOR_standard__list__List___head].val = var_node; /* _head on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___head].val = var_node; /* _head on <self:List[nullable Object]> */
+var_ = self;
+{
+{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
+var25 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#+ (var23,1l) on <var23: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);
+fatal_exit(1);
+}
+var32 = var23 + 1l;
+var26 = var32;
+goto RET_LABEL27;
+RET_LABEL27:(void)0;
+}
+}
+{
+{ /* Inline list#List#length= (var_,var26) on <var_:List[nullable Object]> */
+var_->attrs[COLOR_core__list__List___length].l = var26; /* _length on <var_:List[nullable Object]> */
+RET_LABEL33:(void)0;
+}
+}
 RET_LABEL:;
 }
 /* method list#List#insert for (self: List[nullable Object], nullable Object, Int) */
-void standard___standard__List___standard__abstract_collection__Sequence__insert(val* self, val* p0, long p1) {
+void core___core__List___core__abstract_collection__Sequence__insert(val* self, val* p0, long p1) {
 short int var /* : Bool */;
 int cltype;
 int idtype;
@@ -740,7 +756,7 @@ short int var5 /* : Bool */;
 short int var7 /* : Bool */;
 /* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
 /* <p0:nullable Object> isa E */
-type_struct = self->type->resolution_table->types[COLOR_standard__List___35dE];
+type_struct = self->type->resolution_table->types[COLOR_core__List___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 is_nullable = type_struct->is_nullable;
@@ -756,13 +772,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`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 121);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 114);
 fatal_exit(1);
 }
 var_e = p0;
 var_i = p1;
 {
-var1 = standard___standard__List___get_node(self, var_i);
+var1 = core___core__List___get_node(self, var_i);
 }
 var_node = var1;
 if (var_node == NULL) {
@@ -789,18 +805,18 @@ var2 = var3;
 }
 if (var2){
 {
-standard___standard__List___standard__abstract_collection__Sequence__push(self, var_e); /* Direct call list#List#push on <self:List[nullable Object]>*/
+core___core__List___core__abstract_collection__Sequence__push(self, var_e); /* Direct call list#List#push on <self:List[nullable Object]>*/
 }
 goto RET_LABEL;
 } else {
 }
 {
-standard___standard__List___insert_before(self, var_e, var_node); /* Direct call list#List#insert_before on <self:List[nullable Object]>*/
+core___core__List___insert_before(self, var_e, var_node); /* Direct call list#List#insert_before on <self:List[nullable Object]>*/
 }
 RET_LABEL:;
 }
 /* method list#List#pop for (self: List[nullable Object]): nullable Object */
-val* standard___standard__List___standard__abstract_collection__Sequence__pop(val* self) {
+val* core___core__List___core__abstract_collection__Sequence__pop(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : nullable ListNode[nullable Object] */;
 val* var_node /* var node: nullable ListNode[nullable Object] */;
@@ -821,30 +837,39 @@ short int var16 /* : Bool */;
 int cltype17;
 int idtype18;
 const char* var_class_name19;
-val* var20 /* : nullable Object */;
-val* var22 /* : nullable Object */;
-var1 = self->attrs[COLOR_standard__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
+val* var_ /* var : List[nullable Object] */;
+long var20 /* : Int */;
+long var22 /* : Int */;
+long var23 /* : Int */;
+short int var25 /* : Bool */;
+int cltype26;
+int idtype27;
+const char* var_class_name28;
+long var29 /* : Int */;
+val* var31 /* : nullable Object */;
+val* var33 /* : nullable Object */;
+var1 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
 var_node = var1;
 if (var_node == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 153);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 147);
 fatal_exit(1);
 } else {
 { /* Inline list#ListNode#prev (var_node) on <var_node:nullable ListNode[nullable Object]> */
 if (unlikely(var_node == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-var4 = var_node->attrs[COLOR_standard__list__ListNode___prev].val; /* _prev on <var_node:nullable ListNode[nullable Object]> */
+var4 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:nullable ListNode[nullable Object]> */
 var2 = var4;
 RET_LABEL3:(void)0;
 }
 }
-self->attrs[COLOR_standard__list__List___tail].val = var2; /* _tail on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___tail].val = var2; /* _tail on <self:List[nullable Object]> */
 if (var_node == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 154);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 148);
 fatal_exit(1);
 } else {
 { /* Inline list#ListNode#prev= (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
@@ -854,19 +879,19 @@ var6 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
 if (unlikely(!var6)) {
 var_class_name = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
 if (unlikely(var_node == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-var_node->attrs[COLOR_standard__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var_node:nullable ListNode[nullable Object]> */
+var_node->attrs[COLOR_core__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var_node:nullable ListNode[nullable Object]> */
 RET_LABEL5:(void)0;
 }
 }
-var7 = self->attrs[COLOR_standard__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
+var7 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
 if (var7 == NULL) {
 var8 = 1; /* is null */
 } else {
@@ -890,12 +915,12 @@ RET_LABEL10:(void)0;
 var8 = var9;
 }
 if (var8){
-self->attrs[COLOR_standard__list__List___head].val = ((val*)NULL); /* _head on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___head].val = ((val*)NULL); /* _head on <self:List[nullable Object]> */
 } else {
-var14 = self->attrs[COLOR_standard__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
+var14 = self->attrs[COLOR_core__list__List___tail].val; /* _tail on <self:List[nullable Object]> */
 if (var14 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 158);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 152);
 fatal_exit(1);
 } else {
 { /* Inline list#ListNode#next= (var14,((val*)NULL)) on <var14:nullable ListNode[nullable Object]> */
@@ -905,42 +930,73 @@ var16 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
 if (unlikely(!var16)) {
 var_class_name19 = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name19);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
 if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-var14->attrs[COLOR_standard__list__ListNode___next].val = ((val*)NULL); /* _next on <var14:nullable ListNode[nullable Object]> */
+var14->attrs[COLOR_core__list__ListNode___next].val = ((val*)NULL); /* _next on <var14:nullable ListNode[nullable Object]> */
 RET_LABEL15:(void)0;
 }
 }
 }
+var_ = self;
+{
+{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
+var22 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#- (var20,1l) on <var20:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var25 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var25)) {
+var_class_name28 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+fatal_exit(1);
+}
+var29 = var20 - 1l;
+var23 = var29;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
+}
+}
+{
+{ /* Inline list#List#length= (var_,var23) on <var_:List[nullable Object]> */
+var_->attrs[COLOR_core__list__List___length].l = var23; /* _length on <var_:List[nullable Object]> */
+RET_LABEL30:(void)0;
+}
+}
 if (var_node == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 160);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 155);
 fatal_exit(1);
 } else {
-{ /* Inline abstract_collection#Container#item (var_node) on <var_node:nullable ListNode[nullable Object]> */
+{ /* Inline abstract_collection#Ref#item (var_node) on <var_node:nullable ListNode[nullable Object]> */
 if (unlikely(var_node == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__abstract_collection, 309);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
 fatal_exit(1);
 }
-var22 = var_node->attrs[COLOR_standard__abstract_collection__Container___item].val; /* _item on <var_node:nullable ListNode[nullable Object]> */
-var20 = var22;
-RET_LABEL21:(void)0;
+var33 = var_node->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var_node:nullable ListNode[nullable Object]> */
+var31 = var33;
+RET_LABEL32:(void)0;
 }
 }
-var = var20;
+var = var31;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
 /* method list#List#shift for (self: List[nullable Object]): nullable Object */
-val* standard___standard__List___standard__abstract_collection__Sequence__shift(val* self) {
+val* core___core__List___core__abstract_collection__Sequence__shift(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : nullable ListNode[nullable Object] */;
 val* var_node /* var node: nullable ListNode[nullable Object] */;
@@ -961,30 +1017,39 @@ short int var16 /* : Bool */;
 int cltype17;
 int idtype18;
 const char* var_class_name19;
-val* var20 /* : nullable Object */;
-val* var22 /* : nullable Object */;
-var1 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+val* var_ /* var : List[nullable Object] */;
+long var20 /* : Int */;
+long var22 /* : Int */;
+long var23 /* : Int */;
+short int var25 /* : Bool */;
+int cltype26;
+int idtype27;
+const char* var_class_name28;
+long var29 /* : Int */;
+val* var31 /* : nullable Object */;
+val* var33 /* : nullable Object */;
+var1 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 var_node = var1;
 if (var_node == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 167);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 162);
 fatal_exit(1);
 } else {
 { /* Inline list#ListNode#next (var_node) on <var_node:nullable ListNode[nullable Object]> */
 if (unlikely(var_node == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-var4 = var_node->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <var_node:nullable ListNode[nullable Object]> */
+var4 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:nullable ListNode[nullable Object]> */
 var2 = var4;
 RET_LABEL3:(void)0;
 }
 }
-self->attrs[COLOR_standard__list__List___head].val = var2; /* _head on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___head].val = var2; /* _head on <self:List[nullable Object]> */
 if (var_node == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 168);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 163);
 fatal_exit(1);
 } else {
 { /* Inline list#ListNode#next= (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
@@ -994,19 +1059,19 @@ var6 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
 if (unlikely(!var6)) {
 var_class_name = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
 if (unlikely(var_node == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-var_node->attrs[COLOR_standard__list__ListNode___next].val = ((val*)NULL); /* _next on <var_node:nullable ListNode[nullable Object]> */
+var_node->attrs[COLOR_core__list__ListNode___next].val = ((val*)NULL); /* _next on <var_node:nullable ListNode[nullable Object]> */
 RET_LABEL5:(void)0;
 }
 }
-var7 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var7 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 if (var7 == NULL) {
 var8 = 1; /* is null */
 } else {
@@ -1030,12 +1095,12 @@ RET_LABEL10:(void)0;
 var8 = var9;
 }
 if (var8){
-self->attrs[COLOR_standard__list__List___tail].val = ((val*)NULL); /* _tail on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___tail].val = ((val*)NULL); /* _tail on <self:List[nullable Object]> */
 } else {
-var14 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var14 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 if (var14 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 172);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 167);
 fatal_exit(1);
 } else {
 { /* Inline list#ListNode#prev= (var14,((val*)NULL)) on <var14:nullable ListNode[nullable Object]> */
@@ -1045,42 +1110,73 @@ var16 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
 if (unlikely(!var16)) {
 var_class_name19 = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name19);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
 if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-var14->attrs[COLOR_standard__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var14:nullable ListNode[nullable Object]> */
+var14->attrs[COLOR_core__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var14:nullable ListNode[nullable Object]> */
 RET_LABEL15:(void)0;
 }
 }
 }
+var_ = self;
+{
+{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
+var22 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#- (var20,1l) on <var20:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var25 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var25)) {
+var_class_name28 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+fatal_exit(1);
+}
+var29 = var20 - 1l;
+var23 = var29;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
+}
+}
+{
+{ /* Inline list#List#length= (var_,var23) on <var_:List[nullable Object]> */
+var_->attrs[COLOR_core__list__List___length].l = var23; /* _length on <var_:List[nullable Object]> */
+RET_LABEL30:(void)0;
+}
+}
 if (var_node == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 174);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 170);
 fatal_exit(1);
 } else {
-{ /* Inline abstract_collection#Container#item (var_node) on <var_node:nullable ListNode[nullable Object]> */
+{ /* Inline abstract_collection#Ref#item (var_node) on <var_node:nullable ListNode[nullable Object]> */
 if (unlikely(var_node == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__abstract_collection, 309);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
 fatal_exit(1);
 }
-var22 = var_node->attrs[COLOR_standard__abstract_collection__Container___item].val; /* _item on <var_node:nullable ListNode[nullable Object]> */
-var20 = var22;
-RET_LABEL21:(void)0;
+var33 = var_node->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var_node:nullable ListNode[nullable Object]> */
+var31 = var33;
+RET_LABEL32:(void)0;
 }
 }
-var = var20;
+var = var31;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
 /* method list#List#remove for (self: List[nullable Object], nullable Object) */
-void standard___standard__List___standard__abstract_collection__RemovableCollection__remove(val* self, val* p0) {
+void core___core__List___core__abstract_collection__RemovableCollection__remove(val* self, val* p0) {
 val* var_e /* var e: nullable Object */;
 short int var /* : Bool */;
 int cltype;
@@ -1098,7 +1194,7 @@ short int var6 /* : Bool */;
 short int var7 /* : Bool */;
 var_e = p0;
 /* <var_e:nullable Object> isa E */
-type_struct = self->type->resolution_table->types[COLOR_standard__List___35dE];
+type_struct = self->type->resolution_table->types[COLOR_core__List___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 is_nullable = type_struct->is_nullable;
@@ -1114,12 +1210,12 @@ var = (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->type_table[cltyp
 if (unlikely(!var)) {
 var_class_name = var_e == NULL ? "null" : (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 179);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 175);
 fatal_exit(1);
 }
-var1 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var1 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 {
-var2 = standard___standard__List___search_node_after(self, var_e, var1);
+var2 = core___core__List___search_node_after(self, var_e, var1);
 }
 var_node = var2;
 if (var_node == NULL) {
@@ -1131,7 +1227,7 @@ if (0) {
 { /* Inline kernel#Object#!= (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
 var_other = ((val*)NULL);
 {
-var6 = ((short int(*)(val* self, val* p0))(var_node->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_node, var_other); /* == on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
+var6 = ((short int(*)(val* self, val* p0))(var_node->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_node, var_other); /* == on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
 }
 var7 = !var6;
 var4 = var7;
@@ -1142,14 +1238,14 @@ var3 = var4;
 }
 if (var3){
 {
-standard___standard__List___remove_node(self, var_node); /* Direct call list#List#remove_node on <self:List[nullable Object]>*/
+core___core__List___remove_node(self, var_node); /* Direct call list#List#remove_node on <self:List[nullable Object]>*/
 }
 } else {
 }
 RET_LABEL:;
 }
 /* method list#List#remove_at for (self: List[nullable Object], Int) */
-void standard___standard__List___standard__abstract_collection__Sequence__remove_at(val* self, long p0) {
+void core___core__List___core__abstract_collection__Sequence__remove_at(val* self, long p0) {
 long var_i /* var i: Int */;
 val* var /* : nullable ListNode[nullable Object] */;
 val* var_node /* var node: nullable ListNode[nullable Object] */;
@@ -1160,7 +1256,7 @@ short int var4 /* : Bool */;
 short int var5 /* : Bool */;
 var_i = p0;
 {
-var = standard___standard__List___get_node(self, var_i);
+var = core___core__List___get_node(self, var_i);
 }
 var_node = var;
 if (var_node == NULL) {
@@ -1172,7 +1268,7 @@ if (0) {
 { /* Inline kernel#Object#!= (var_node,((val*)NULL)) on <var_node:nullable ListNode[nullable Object]> */
 var_other = ((val*)NULL);
 {
-var4 = ((short int(*)(val* self, val* p0))(var_node->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_node, var_other); /* == on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
+var4 = ((short int(*)(val* self, val* p0))(var_node->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_node, var_other); /* == on <var_node:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
 }
 var5 = !var4;
 var2 = var5;
@@ -1183,28 +1279,44 @@ var1 = var2;
 }
 if (var1){
 {
-standard___standard__List___remove_node(self, var_node); /* Direct call list#List#remove_node on <self:List[nullable Object]>*/
+core___core__List___remove_node(self, var_node); /* Direct call list#List#remove_node on <self:List[nullable Object]>*/
 }
 } else {
 }
 RET_LABEL:;
 }
 /* method list#List#clear for (self: List[nullable Object]) */
-void standard___standard__List___standard__abstract_collection__RemovableCollection__clear(val* self) {
-self->attrs[COLOR_standard__list__List___head].val = ((val*)NULL); /* _head on <self:List[nullable Object]> */
-self->attrs[COLOR_standard__list__List___tail].val = ((val*)NULL); /* _tail on <self:List[nullable Object]> */
+void core___core__List___core__abstract_collection__RemovableCollection__clear(val* self) {
+self->attrs[COLOR_core__list__List___head].val = ((val*)NULL); /* _head on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___tail].val = ((val*)NULL); /* _tail on <self:List[nullable Object]> */
 RET_LABEL:;
 }
 /* method list#List#iterator for (self: List[nullable Object]): ListIterator[nullable Object] */
-val* standard___standard__List___standard__abstract_collection__Collection__iterator(val* self) {
+val* core___core__List___core__abstract_collection__Collection__iterator(val* self) {
 val* var /* : ListIterator[nullable Object] */;
 val* var1 /* : ListIterator[nullable Object] */;
-var1 = NEW_standard__ListIterator(self->type->resolution_table->types[COLOR_standard__ListIterator__standard__List___35dE]);
+var1 = NEW_core__ListIterator(self->type->resolution_table->types[COLOR_core__ListIterator__core__List___35dE]);
 {
-((void(*)(val* self, val* p0))(var1->class->vft[COLOR_standard__list__ListIterator__list_61d]))(var1, self); /* list= on <var1:ListIterator[nullable Object]>*/
+((void(*)(val* self, val* p0))(var1->class->vft[COLOR_core__list__ListIterator__list_61d]))(var1, self); /* list= on <var1:ListIterator[nullable Object]>*/
 }
 {
-((void(*)(val* self))(var1->class->vft[COLOR_standard__kernel__Object__init]))(var1); /* init on <var1:ListIterator[nullable Object]>*/
+((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:ListIterator[nullable Object]>*/
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method list#List#reverse_iterator for (self: List[nullable Object]): ListIterator[nullable Object] */
+val* core___core__List___core__abstract_collection__SequenceRead__reverse_iterator(val* self) {
+val* var /* : ListIterator[nullable Object] */;
+val* var1 /* : ListReverseIterator[nullable Object] */;
+var1 = NEW_core__list__ListReverseIterator(self->type->resolution_table->types[COLOR_core__list__ListReverseIterator__core__List___35dE]);
+{
+((void(*)(val* self, val* p0))(var1->class->vft[COLOR_core__list__ListIterator__list_61d]))(var1, self); /* list= on <var1:ListReverseIterator[nullable Object]>*/
+}
+{
+((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:ListReverseIterator[nullable Object]>*/
 }
 var = var1;
 goto RET_LABEL;
@@ -1212,11 +1324,14 @@ RET_LABEL:;
 return var;
 }
 /* method list#List#init for (self: List[nullable Object]) */
-void standard___standard__List___standard__kernel__Object__init(val* self) {
+void core___core__List___core__kernel__Object__init(val* self) {
+{
+((void(*)(val* self))(self->class->vft[COLOR_core___core__List___core__kernel__Object__init]))(self); /* init on <self:List[nullable Object]>*/
+}
 RET_LABEL:;
 }
 /* method list#List#get_node for (self: List[nullable Object], Int): nullable ListNode[nullable Object] */
-val* standard___standard__List___get_node(val* self, long p0) {
+val* core___core__List___get_node(val* self, long p0) {
 val* var /* : nullable ListNode[nullable Object] */;
 long var_i /* var i: Int */;
 val* var1 /* : nullable ListNode[nullable Object] */;
@@ -1249,7 +1364,7 @@ int idtype26;
 const char* var_class_name27;
 long var28 /* : Int */;
 var_i = p0;
-var1 = self->attrs[COLOR_standard__list__List___head].val; /* _head on <self:List[nullable Object]> */
+var1 = self->attrs[COLOR_core__list__List___head].val; /* _head on <self:List[nullable Object]> */
 var_n = var1;
 {
 { /* Inline kernel#Int#< (var_i,0l) on <var_i:Int> */
@@ -1257,9 +1372,9 @@ var_n = var1;
 /* <0l:Int> isa OTHER */
 var4 = 1; /* easy <0l:Int> isa OTHER*/
 if (unlikely(!var4)) {
-var_class_name = type_standard__Int.name;
+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_standard__kernel, 534);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var5 = var_i < 0l;
@@ -1283,7 +1398,7 @@ if (0) {
 { /* Inline kernel#Object#!= (var_n,((val*)NULL)) on <var_n:nullable ListNode[nullable Object]> */
 var_other = ((val*)NULL);
 {
-var10 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n, var_other); /* == on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
+var10 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_n, var_other); /* == on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
 }
 var11 = !var10;
 var8 = var11;
@@ -1300,9 +1415,9 @@ if (var7){
 /* <0l:Int> isa OTHER */
 var14 = 1; /* easy <0l:Int> isa OTHER*/
 if (unlikely(!var14)) {
-var_class_name17 = type_standard__Int.name;
+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_standard__kernel, 536);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
 fatal_exit(1);
 }
 var18 = var_i > 0l;
@@ -1318,7 +1433,7 @@ var6 = var_;
 if (var6){
 {
 { /* Inline list#ListNode#next (var_n) on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-var21 = var_n->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var21 = var_n->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
 var19 = var21;
 RET_LABEL20:(void)0;
 }
@@ -1330,9 +1445,9 @@ var_n = var19;
 /* <1l:Int> isa OTHER */
 var24 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var24)) {
-var_class_name27 = type_standard__Int.name;
+var_class_name27 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
 fatal_exit(1);
 }
 var28 = var_i - 1l;
@@ -1353,7 +1468,7 @@ RET_LABEL:;
 return var;
 }
 /* method list#List#search_node_after for (self: List[nullable Object], nullable Object, nullable ListNode[nullable Object]): nullable ListNode[nullable Object] */
-val* standard___standard__List___search_node_after(val* self, val* p0, val* p1) {
+val* core___core__List___search_node_after(val* self, val* p0, val* p1) {
 val* var /* : nullable ListNode[nullable Object] */;
 short int var1 /* : Bool */;
 int cltype;
@@ -1384,7 +1499,7 @@ val* var18 /* : nullable ListNode[nullable Object] */;
 val* var20 /* : nullable ListNode[nullable Object] */;
 /* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
 /* <p0:nullable Object> isa E */
-type_struct = self->type->resolution_table->types[COLOR_standard__List___35dE];
+type_struct = self->type->resolution_table->types[COLOR_core__List___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 is_nullable = type_struct->is_nullable;
@@ -1400,12 +1515,12 @@ var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == id
 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`", "E", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 225);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 221);
 fatal_exit(1);
 }
 /* Covariant cast for argument 1 (after) <p1:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
 /* <p1:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct5 = self->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__List___35dE];
+type_struct5 = self->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__List___35dE];
 cltype3 = type_struct5->color;
 idtype4 = type_struct5->id;
 if(p1 == NULL) {
@@ -1420,7 +1535,7 @@ var2 = p1->type->type_table[cltype3] == idtype4;
 if (unlikely(!var2)) {
 var_class_name6 = p1 == NULL ? "null" : p1->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name6);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 225);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 221);
 fatal_exit(1);
 }
 var_e = p0;
@@ -1436,7 +1551,7 @@ if (0) {
 { /* Inline kernel#Object#!= (var_n,((val*)NULL)) on <var_n:nullable ListNode[nullable Object]> */
 var_other = ((val*)NULL);
 {
-var11 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n, var_other); /* == on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
+var11 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_n, var_other); /* == on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])>*/
 }
 var12 = !var11;
 var9 = var12;
@@ -1448,8 +1563,8 @@ var8 = var9;
 var_ = var8;
 if (var8){
 {
-{ /* Inline abstract_collection#Container#item (var_n) on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-var15 = var_n->attrs[COLOR_standard__abstract_collection__Container___item].val; /* _item on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+{ /* Inline abstract_collection#Ref#item (var_n) on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var15 = var_n->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
 var13 = var15;
 RET_LABEL14:(void)0;
 }
@@ -1457,7 +1572,7 @@ RET_LABEL14:(void)0;
 if (var13 == NULL) {
 var16 = (var_e != NULL);
 } else {
-var17 = ((short int(*)(val* self, val* p0))((((long)var13&3)?class_info[((long)var13&3)]:var13->class)->vft[COLOR_standard__kernel__Object___33d_61d]))(var13, var_e); /* != on <var13:nullable Object>*/
+var17 = ((short int(*)(val* self, val* p0))((((long)var13&3)?class_info[((long)var13&3)]:var13->class)->vft[COLOR_core__kernel__Object___33d_61d]))(var13, var_e); /* != on <var13:nullable Object>*/
 var16 = var17;
 }
 var7 = var16;
@@ -1467,7 +1582,7 @@ var7 = var_;
 if (var7){
 {
 { /* Inline list#ListNode#next (var_n) on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-var20 = var_n->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var20 = var_n->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_n:nullable ListNode[nullable Object](ListNode[nullable Object])> */
 var18 = var20;
 RET_LABEL19:(void)0;
 }
@@ -1484,48 +1599,49 @@ RET_LABEL:;
 return var;
 }
 /* method list#List#remove_node for (self: List[nullable Object], ListNode[nullable Object]) */
-void standard___standard__List___remove_node(val* self, val* p0) {
+void core___core__List___remove_node(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
 val* var_node /* var node: ListNode[nullable Object] */;
-val* var1 /* : nullable ListNode[nullable Object] */;
-val* var3 /* : nullable ListNode[nullable Object] */;
-short int var4 /* : Bool */;
-short int var5 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var7 /* : Bool */;
-short int var9 /* : Bool */;
-val* var10 /* : nullable ListNode[nullable Object] */;
+val* var_ /* var : List[nullable Object] */;
+long var1 /* : Int */;
+long var3 /* : Int */;
+long var4 /* : Int */;
+short int var6 /* : Bool */;
+int cltype7;
+int idtype8;
+const char* var_class_name9;
+long var10 /* : Int */;
 val* var12 /* : nullable ListNode[nullable Object] */;
-val* var13 /* : nullable ListNode[nullable Object] */;
-val* var15 /* : nullable ListNode[nullable Object] */;
+val* var14 /* : nullable ListNode[nullable Object] */;
+short int var15 /* : Bool */;
 short int var16 /* : Bool */;
-short int var17 /* : Bool */;
-short int var19 /* : Bool */;
-short int var21 /* : Bool */;
-val* var22 /* : nullable ListNode[nullable Object] */;
+val* var_other /* var other: nullable Object */;
+short int var18 /* : Bool */;
+short int var20 /* : Bool */;
+val* var21 /* : nullable ListNode[nullable Object] */;
+val* var23 /* : nullable ListNode[nullable Object] */;
 val* var24 /* : nullable ListNode[nullable Object] */;
-short int var26 /* : Bool */;
-int cltype27;
-int idtype28;
-const char* var_class_name29;
-val* var30 /* : nullable ListNode[nullable Object] */;
-val* var32 /* : nullable ListNode[nullable Object] */;
-short int var33 /* : Bool */;
-short int var34 /* : Bool */;
-short int var36 /* : Bool */;
-short int var38 /* : Bool */;
-val* var39 /* : nullable ListNode[nullable Object] */;
+val* var26 /* : nullable ListNode[nullable Object] */;
+short int var27 /* : Bool */;
+short int var28 /* : Bool */;
+short int var30 /* : Bool */;
+short int var32 /* : Bool */;
+val* var33 /* : nullable ListNode[nullable Object] */;
+val* var35 /* : nullable ListNode[nullable Object] */;
+short int var37 /* : Bool */;
+int cltype38;
+int idtype39;
+const char* var_class_name40;
 val* var41 /* : nullable ListNode[nullable Object] */;
-val* var42 /* : nullable ListNode[nullable Object] */;
-val* var44 /* : nullable ListNode[nullable Object] */;
-short int var46 /* : Bool */;
-int cltype47;
-int idtype48;
-const char* var_class_name49;
+val* var43 /* : nullable ListNode[nullable Object] */;
+short int var44 /* : Bool */;
+short int var45 /* : Bool */;
+short int var47 /* : Bool */;
+short int var49 /* : Bool */;
 val* var50 /* : nullable ListNode[nullable Object] */;
 val* var52 /* : nullable ListNode[nullable Object] */;
 val* var53 /* : nullable ListNode[nullable Object] */;
@@ -1533,20 +1649,28 @@ val* var55 /* : nullable ListNode[nullable Object] */;
 short int var57 /* : Bool */;
 int cltype58;
 int idtype59;
-const struct type* type_struct60;
-const char* var_class_name61;
-val* var62 /* : nullable ListNode[nullable Object] */;
+const char* var_class_name60;
+val* var61 /* : nullable ListNode[nullable Object] */;
+val* var63 /* : nullable ListNode[nullable Object] */;
 val* var64 /* : nullable ListNode[nullable Object] */;
-val* var65 /* : nullable ListNode[nullable Object] */;
-val* var67 /* : nullable ListNode[nullable Object] */;
-short int var69 /* : Bool */;
-int cltype70;
-int idtype71;
-const struct type* type_struct72;
-const char* var_class_name73;
+val* var66 /* : nullable ListNode[nullable Object] */;
+short int var68 /* : Bool */;
+int cltype69;
+int idtype70;
+const struct type* type_struct71;
+const char* var_class_name72;
+val* var73 /* : nullable ListNode[nullable Object] */;
+val* var75 /* : nullable ListNode[nullable Object] */;
+val* var76 /* : nullable ListNode[nullable Object] */;
+val* var78 /* : nullable ListNode[nullable Object] */;
+short int var80 /* : Bool */;
+int cltype81;
+int idtype82;
+const struct type* type_struct83;
+const char* var_class_name84;
 /* Covariant cast for argument 0 (node) <p0:ListNode[nullable Object]> isa ListNode[E] */
 /* <p0:ListNode[nullable Object]> isa ListNode[E] */
-type_struct = self->type->resolution_table->types[COLOR_standard__list__ListNode__standard__List___35dE];
+type_struct = self->type->resolution_table->types[COLOR_core__list__ListNode__core__List___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 if(cltype >= p0->type->table_size) {
@@ -1557,279 +1681,310 @@ 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`", "ListNode[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 233);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 229);
 fatal_exit(1);
 }
 var_node = p0;
+var_ = self;
 {
-{ /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
-var3 = var_node->attrs[COLOR_standard__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
+{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
+var3 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
 var1 = var3;
 RET_LABEL2:(void)0;
 }
 }
-if (var1 == NULL) {
-var4 = 1; /* is null */
+{
+{ /* Inline kernel#Int#- (var1,1l) on <var1: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_name9 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+fatal_exit(1);
+}
+var10 = var1 - 1l;
+var4 = var10;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline list#List#length= (var_,var4) on <var_:List[nullable Object]> */
+var_->attrs[COLOR_core__list__List___length].l = var4; /* _length on <var_:List[nullable Object]> */
+RET_LABEL11:(void)0;
+}
+}
+{
+{ /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
+var14 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
+var12 = var14;
+RET_LABEL13:(void)0;
+}
+}
+if (var12 == NULL) {
+var15 = 1; /* is null */
 } else {
-var4 = 0; /* arg is null but recv is not */
+var15 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable ListNode[nullable Object]> */
+{ /* Inline kernel#Object#== (var12,((val*)NULL)) on <var12:nullable ListNode[nullable Object]> */
 var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-var9 = var1 == var_other;
-var7 = var9;
-goto RET_LABEL8;
-RET_LABEL8:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var12,var_other) on <var12:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var20 = var12 == var_other;
+var18 = var20;
+goto RET_LABEL19;
+RET_LABEL19:(void)0;
 }
 }
-var5 = var7;
-goto RET_LABEL6;
-RET_LABEL6:(void)0;
+var16 = var18;
+goto RET_LABEL17;
+RET_LABEL17:(void)0;
 }
-var4 = var5;
+var15 = var16;
 }
-if (var4){
+if (var15){
 {
 { /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
-var12 = var_node->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
-var10 = var12;
-RET_LABEL11:(void)0;
+var23 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
+var21 = var23;
+RET_LABEL22:(void)0;
 }
 }
-self->attrs[COLOR_standard__list__List___head].val = var10; /* _head on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___head].val = var21; /* _head on <self:List[nullable Object]> */
 {
 { /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
-var15 = var_node->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
-var13 = var15;
-RET_LABEL14:(void)0;
+var26 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
+var24 = var26;
+RET_LABEL25:(void)0;
 }
 }
-if (var13 == NULL) {
-var16 = 1; /* is null */
+if (var24 == NULL) {
+var27 = 1; /* is null */
 } else {
-var16 = 0; /* arg is null but recv is not */
+var27 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var13,((val*)NULL)) on <var13:nullable ListNode[nullable Object]> */
+{ /* Inline kernel#Object#== (var24,((val*)NULL)) on <var24:nullable ListNode[nullable Object]> */
 var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var13,var_other) on <var13:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-var21 = var13 == var_other;
-var19 = var21;
-goto RET_LABEL20;
-RET_LABEL20:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var24,var_other) on <var24:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var32 = var24 == var_other;
+var30 = var32;
+goto RET_LABEL31;
+RET_LABEL31:(void)0;
 }
 }
-var17 = var19;
-goto RET_LABEL18;
-RET_LABEL18:(void)0;
+var28 = var30;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
 }
-var16 = var17;
+var27 = var28;
 }
-if (var16){
-self->attrs[COLOR_standard__list__List___tail].val = ((val*)NULL); /* _tail on <self:List[nullable Object]> */
+if (var27){
+self->attrs[COLOR_core__list__List___tail].val = ((val*)NULL); /* _tail on <self:List[nullable Object]> */
 } else {
 {
 { /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
-var24 = var_node->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
-var22 = var24;
-RET_LABEL23:(void)0;
+var35 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
+var33 = var35;
+RET_LABEL34:(void)0;
 }
 }
-if (var22 == NULL) {
+if (var33 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 241);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 238);
 fatal_exit(1);
 } else {
-{ /* Inline list#ListNode#prev= (var22,((val*)NULL)) on <var22:nullable ListNode[nullable Object]> */
+{ /* Inline list#ListNode#prev= (var33,((val*)NULL)) on <var33:nullable ListNode[nullable Object]> */
 /* Covariant cast for argument 0 (prev) <((val*)NULL):null> isa nullable ListNode[E] */
 /* <((val*)NULL):null> isa nullable ListNode[E] */
-var26 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
-if (unlikely(!var26)) {
-var_class_name29 = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name29);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+var37 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
+if (unlikely(!var37)) {
+var_class_name40 = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name40);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-if (unlikely(var22 == NULL)) {
+if (unlikely(var33 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-var22->attrs[COLOR_standard__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var22:nullable ListNode[nullable Object]> */
-RET_LABEL25:(void)0;
+var33->attrs[COLOR_core__list__ListNode___prev].val = ((val*)NULL); /* _prev on <var33:nullable ListNode[nullable Object]> */
+RET_LABEL36:(void)0;
 }
 }
 }
 } else {
 {
 { /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
-var32 = var_node->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
-var30 = var32;
-RET_LABEL31:(void)0;
+var43 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
+var41 = var43;
+RET_LABEL42:(void)0;
 }
 }
-if (var30 == NULL) {
-var33 = 1; /* is null */
+if (var41 == NULL) {
+var44 = 1; /* is null */
 } else {
-var33 = 0; /* arg is null but recv is not */
+var44 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var30,((val*)NULL)) on <var30:nullable ListNode[nullable Object]> */
+{ /* Inline kernel#Object#== (var41,((val*)NULL)) on <var41:nullable ListNode[nullable Object]> */
 var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var30,var_other) on <var30:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-var38 = var30 == var_other;
-var36 = var38;
-goto RET_LABEL37;
-RET_LABEL37:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var41,var_other) on <var41:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+var49 = var41 == var_other;
+var47 = var49;
+goto RET_LABEL48;
+RET_LABEL48:(void)0;
 }
 }
-var34 = var36;
-goto RET_LABEL35;
-RET_LABEL35:(void)0;
+var45 = var47;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
 }
-var33 = var34;
+var44 = var45;
 }
-if (var33){
+if (var44){
 {
 { /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
-var41 = var_node->attrs[COLOR_standard__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
-var39 = var41;
-RET_LABEL40:(void)0;
+var52 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
+var50 = var52;
+RET_LABEL51:(void)0;
 }
 }
-self->attrs[COLOR_standard__list__List___tail].val = var39; /* _tail on <self:List[nullable Object]> */
+self->attrs[COLOR_core__list__List___tail].val = var50; /* _tail on <self:List[nullable Object]> */
 {
 { /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
-var44 = var_node->attrs[COLOR_standard__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
-var42 = var44;
-RET_LABEL43:(void)0;
+var55 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
+var53 = var55;
+RET_LABEL54:(void)0;
 }
 }
-if (var42 == NULL) {
+if (var53 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 245);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 242);
 fatal_exit(1);
 } else {
-{ /* Inline list#ListNode#next= (var42,((val*)NULL)) on <var42:nullable ListNode[nullable Object]> */
+{ /* Inline list#ListNode#next= (var53,((val*)NULL)) on <var53:nullable ListNode[nullable Object]> */
 /* Covariant cast for argument 0 (next) <((val*)NULL):null> isa nullable ListNode[E] */
 /* <((val*)NULL):null> isa nullable ListNode[E] */
-var46 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
-if (unlikely(!var46)) {
-var_class_name49 = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name49);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+var57 = 1; /* easy <((val*)NULL):null> isa nullable ListNode[E]*/
+if (unlikely(!var57)) {
+var_class_name60 = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name60);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-if (unlikely(var42 == NULL)) {
+if (unlikely(var53 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-var42->attrs[COLOR_standard__list__ListNode___next].val = ((val*)NULL); /* _next on <var42:nullable ListNode[nullable Object]> */
-RET_LABEL45:(void)0;
+var53->attrs[COLOR_core__list__ListNode___next].val = ((val*)NULL); /* _next on <var53:nullable ListNode[nullable Object]> */
+RET_LABEL56:(void)0;
 }
 }
 } else {
 {
 { /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
-var52 = var_node->attrs[COLOR_standard__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
-var50 = var52;
-RET_LABEL51:(void)0;
+var63 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
+var61 = var63;
+RET_LABEL62:(void)0;
 }
 }
 {
 { /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
-var55 = var_node->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
-var53 = var55;
-RET_LABEL54:(void)0;
+var66 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
+var64 = var66;
+RET_LABEL65:(void)0;
 }
 }
-if (var50 == NULL) {
+if (var61 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 247);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 244);
 fatal_exit(1);
 } else {
-{ /* Inline list#ListNode#next= (var50,var53) on <var50:nullable ListNode[nullable Object]> */
-/* Covariant cast for argument 0 (next) <var53:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-/* <var53:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct60 = var50->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
-cltype58 = type_struct60->color;
-idtype59 = type_struct60->id;
-if(var53 == NULL) {
-var57 = 1;
+{ /* Inline list#ListNode#next= (var61,var64) on <var61:nullable ListNode[nullable Object]> */
+/* Covariant cast for argument 0 (next) <var64:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
+/* <var64:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
+type_struct71 = var61->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
+cltype69 = type_struct71->color;
+idtype70 = type_struct71->id;
+if(var64 == NULL) {
+var68 = 1;
 } else {
-if(cltype58 >= var53->type->table_size) {
-var57 = 0;
+if(cltype69 >= var64->type->table_size) {
+var68 = 0;
 } else {
-var57 = var53->type->type_table[cltype58] == idtype59;
+var68 = var64->type->type_table[cltype69] == idtype70;
 }
 }
-if (unlikely(!var57)) {
-var_class_name61 = var53 == NULL ? "null" : var53->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name61);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+if (unlikely(!var68)) {
+var_class_name72 = var64 == NULL ? "null" : var64->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name72);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-if (unlikely(var50 == NULL)) {
+if (unlikely(var61 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-var50->attrs[COLOR_standard__list__ListNode___next].val = var53; /* _next on <var50:nullable ListNode[nullable Object]> */
-RET_LABEL56:(void)0;
+var61->attrs[COLOR_core__list__ListNode___next].val = var64; /* _next on <var61:nullable ListNode[nullable Object]> */
+RET_LABEL67:(void)0;
 }
 }
 {
 { /* Inline list#ListNode#next (var_node) on <var_node:ListNode[nullable Object]> */
-var64 = var_node->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
-var62 = var64;
-RET_LABEL63:(void)0;
+var75 = var_node->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var_node:ListNode[nullable Object]> */
+var73 = var75;
+RET_LABEL74:(void)0;
 }
 }
 {
 { /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
-var67 = var_node->attrs[COLOR_standard__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
-var65 = var67;
-RET_LABEL66:(void)0;
+var78 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
+var76 = var78;
+RET_LABEL77:(void)0;
 }
 }
-if (var62 == NULL) {
+if (var73 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 248);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 245);
 fatal_exit(1);
 } else {
-{ /* Inline list#ListNode#prev= (var62,var65) on <var62:nullable ListNode[nullable Object]> */
-/* Covariant cast for argument 0 (prev) <var65:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-/* <var65:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct72 = var62->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
-cltype70 = type_struct72->color;
-idtype71 = type_struct72->id;
-if(var65 == NULL) {
-var69 = 1;
+{ /* Inline list#ListNode#prev= (var73,var76) on <var73:nullable ListNode[nullable Object]> */
+/* Covariant cast for argument 0 (prev) <var76:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
+/* <var76:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
+type_struct83 = var73->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
+cltype81 = type_struct83->color;
+idtype82 = type_struct83->id;
+if(var76 == NULL) {
+var80 = 1;
 } else {
-if(cltype70 >= var65->type->table_size) {
-var69 = 0;
+if(cltype81 >= var76->type->table_size) {
+var80 = 0;
 } else {
-var69 = var65->type->type_table[cltype70] == idtype71;
+var80 = var76->type->type_table[cltype81] == idtype82;
 }
 }
-if (unlikely(!var69)) {
-var_class_name73 = var65 == NULL ? "null" : var65->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name73);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+if (unlikely(!var80)) {
+var_class_name84 = var76 == NULL ? "null" : var76->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name84);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-if (unlikely(var62 == NULL)) {
+if (unlikely(var73 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-var62->attrs[COLOR_standard__list__ListNode___prev].val = var65; /* _prev on <var62:nullable ListNode[nullable Object]> */
-RET_LABEL68:(void)0;
+var73->attrs[COLOR_core__list__ListNode___prev].val = var76; /* _prev on <var73:nullable ListNode[nullable Object]> */
+RET_LABEL79:(void)0;
 }
 }
 }
@@ -1837,7 +1992,7 @@ RET_LABEL68:(void)0;
 RET_LABEL:;
 }
 /* method list#List#insert_before for (self: List[nullable Object], nullable Object, ListNode[nullable Object]) */
-void standard___standard__List___insert_before(val* self, val* p0, val* p1) {
+void core___core__List___insert_before(val* self, val* p0, val* p1) {
 short int var /* : Bool */;
 int cltype;
 int idtype;
@@ -1851,39 +2006,48 @@ const struct type* type_struct4;
 const char* var_class_name5;
 val* var_element /* var element: nullable Object */;
 val* var_node /* var node: ListNode[nullable Object] */;
-val* var6 /* : ListNode[nullable Object] */;
+val* var_ /* var : List[nullable Object] */;
+long var6 /* : Int */;
+long var8 /* : Int */;
+long var9 /* : Int */;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
+const char* var_class_name14;
+long var15 /* : Int */;
+val* var17 /* : ListNode[nullable Object] */;
 val* var_nnode /* var nnode: ListNode[nullable Object] */;
-val* var7 /* : nullable ListNode[nullable Object] */;
-val* var9 /* : nullable ListNode[nullable Object] */;
+val* var18 /* : nullable ListNode[nullable Object] */;
+val* var20 /* : nullable ListNode[nullable Object] */;
 val* var_prev /* var prev: nullable ListNode[nullable Object] */;
-short int var10 /* : Bool */;
-short int var11 /* : Bool */;
+short int var21 /* : Bool */;
+short int var22 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var13 /* : Bool */;
-short int var15 /* : Bool */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
-const struct type* type_struct20;
-const char* var_class_name21;
-short int var23 /* : Bool */;
-int cltype24;
-int idtype25;
-const struct type* type_struct26;
-const char* var_class_name27;
-short int var29 /* : Bool */;
-int cltype30;
-int idtype31;
-const struct type* type_struct32;
-const char* var_class_name33;
-short int var35 /* : Bool */;
-int cltype36;
-int idtype37;
-const struct type* type_struct38;
-const char* var_class_name39;
+short int var24 /* : Bool */;
+short int var26 /* : Bool */;
+short int var28 /* : Bool */;
+int cltype29;
+int idtype30;
+const struct type* type_struct31;
+const char* var_class_name32;
+short int var34 /* : Bool */;
+int cltype35;
+int idtype36;
+const struct type* type_struct37;
+const char* var_class_name38;
+short int var40 /* : Bool */;
+int cltype41;
+int idtype42;
+const struct type* type_struct43;
+const char* var_class_name44;
+short int var46 /* : Bool */;
+int cltype47;
+int idtype48;
+const struct type* type_struct49;
+const char* var_class_name50;
 /* Covariant cast for argument 0 (element) <p0:nullable Object> isa E */
 /* <p0:nullable Object> isa E */
-type_struct = self->type->resolution_table->types[COLOR_standard__List___35dE];
+type_struct = self->type->resolution_table->types[COLOR_core__List___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 is_nullable = type_struct->is_nullable;
@@ -1899,12 +2063,12 @@ 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_standard__list, 252);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 249);
 fatal_exit(1);
 }
 /* Covariant cast for argument 1 (node) <p1:ListNode[nullable Object]> isa ListNode[E] */
 /* <p1:ListNode[nullable Object]> isa ListNode[E] */
-type_struct4 = self->type->resolution_table->types[COLOR_standard__list__ListNode__standard__List___35dE];
+type_struct4 = self->type->resolution_table->types[COLOR_core__list__ListNode__core__List___35dE];
 cltype2 = type_struct4->color;
 idtype3 = type_struct4->id;
 if(cltype2 >= p1->type->table_size) {
@@ -1915,72 +2079,103 @@ var1 = p1->type->type_table[cltype2] == idtype3;
 if (unlikely(!var1)) {
 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "ListNode[E]", var_class_name5);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 252);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 249);
 fatal_exit(1);
 }
 var_element = p0;
 var_node = p1;
-var6 = NEW_standard__list__ListNode(self->type->resolution_table->types[COLOR_standard__list__ListNode__standard__List___35dE]);
+var_ = self;
 {
-((void(*)(val* self, val* p0))(var6->class->vft[COLOR_standard__abstract_collection__Container__item_61d]))(var6, var_element); /* item= on <var6:ListNode[nullable Object]>*/
+{ /* Inline list#List#length (var_) on <var_:List[nullable Object]> */
+var8 = var_->attrs[COLOR_core__list__List___length].l; /* _length on <var_:List[nullable Object]> */
+var6 = var8;
+RET_LABEL7:(void)0;
+}
 }
 {
-((void(*)(val* self))(var6->class->vft[COLOR_standard__kernel__Object__init]))(var6); /* init on <var6:ListNode[nullable Object]>*/
+{ /* Inline kernel#Int#+ (var6,1l) on <var6:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var11 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var11)) {
+var_class_name14 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+fatal_exit(1);
+}
+var15 = var6 + 1l;
+var9 = var15;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
 }
-var_nnode = var6;
+{
+{ /* Inline list#List#length= (var_,var9) on <var_:List[nullable Object]> */
+var_->attrs[COLOR_core__list__List___length].l = var9; /* _length on <var_:List[nullable Object]> */
+RET_LABEL16:(void)0;
+}
+}
+var17 = NEW_core__list__ListNode(self->type->resolution_table->types[COLOR_core__list__ListNode__core__List___35dE]);
+{
+((void(*)(val* self, val* p0))(var17->class->vft[COLOR_core__abstract_collection__Ref__item_61d]))(var17, var_element); /* item= on <var17:ListNode[nullable Object]>*/
+}
+{
+((void(*)(val* self))(var17->class->vft[COLOR_core__kernel__Object__init]))(var17); /* init on <var17:ListNode[nullable Object]>*/
+}
+var_nnode = var17;
 {
 { /* Inline list#ListNode#prev (var_node) on <var_node:ListNode[nullable Object]> */
-var9 = var_node->attrs[COLOR_standard__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
-var7 = var9;
-RET_LABEL8:(void)0;
+var20 = var_node->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var_node:ListNode[nullable Object]> */
+var18 = var20;
+RET_LABEL19:(void)0;
 }
 }
-var_prev = var7;
+var_prev = var18;
 if (var_prev == NULL) {
-var10 = 1; /* is null */
+var21 = 1; /* is null */
 } else {
-var10 = 0; /* arg is null but recv is not */
+var21 = 0; /* arg is null but recv is not */
 }
 if (0) {
 { /* Inline kernel#Object#== (var_prev,((val*)NULL)) on <var_prev:nullable ListNode[nullable Object]> */
 var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_prev,var_other) on <var_prev:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-var15 = var_prev == var_other;
-var13 = var15;
-goto RET_LABEL14;
-RET_LABEL14:(void)0;
+var26 = var_prev == var_other;
+var24 = var26;
+goto RET_LABEL25;
+RET_LABEL25:(void)0;
 }
 }
-var11 = var13;
-goto RET_LABEL12;
-RET_LABEL12:(void)0;
+var22 = var24;
+goto RET_LABEL23;
+RET_LABEL23:(void)0;
 }
-var10 = var11;
+var21 = var22;
 }
-if (var10){
-self->attrs[COLOR_standard__list__List___head].val = var_nnode; /* _head on <self:List[nullable Object]> */
+if (var21){
+self->attrs[COLOR_core__list__List___head].val = var_nnode; /* _head on <self:List[nullable Object]> */
 } else {
 {
 { /* Inline list#ListNode#next= (var_prev,var_nnode) on <var_prev:nullable ListNode[nullable Object](ListNode[nullable Object])> */
 /* Covariant cast for argument 0 (next) <var_nnode:ListNode[nullable Object]> isa nullable ListNode[E] */
 /* <var_nnode:ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct20 = var_prev->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
-cltype18 = type_struct20->color;
-idtype19 = type_struct20->id;
-if(cltype18 >= var_nnode->type->table_size) {
-var17 = 0;
+type_struct31 = var_prev->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
+cltype29 = type_struct31->color;
+idtype30 = type_struct31->id;
+if(cltype29 >= var_nnode->type->table_size) {
+var28 = 0;
 } else {
-var17 = var_nnode->type->type_table[cltype18] == idtype19;
+var28 = var_nnode->type->type_table[cltype29] == idtype30;
 }
-if (unlikely(!var17)) {
-var_class_name21 = var_nnode == NULL ? "null" : var_nnode->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name21);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+if (unlikely(!var28)) {
+var_class_name32 = var_nnode == NULL ? "null" : var_nnode->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name32);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-var_prev->attrs[COLOR_standard__list__ListNode___next].val = var_nnode; /* _next on <var_prev:nullable ListNode[nullable Object](ListNode[nullable Object])> */
-RET_LABEL16:(void)0;
+var_prev->attrs[COLOR_core__list__ListNode___next].val = var_nnode; /* _next on <var_prev:nullable ListNode[nullable Object](ListNode[nullable Object])> */
+RET_LABEL27:(void)0;
 }
 }
 }
@@ -1988,93 +2183,93 @@ RET_LABEL16:(void)0;
 { /* Inline list#ListNode#prev= (var_nnode,var_prev) on <var_nnode:ListNode[nullable Object]> */
 /* Covariant cast for argument 0 (prev) <var_prev:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
 /* <var_prev:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct26 = var_nnode->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
-cltype24 = type_struct26->color;
-idtype25 = type_struct26->id;
+type_struct37 = var_nnode->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
+cltype35 = type_struct37->color;
+idtype36 = type_struct37->id;
 if(var_prev == NULL) {
-var23 = 1;
+var34 = 1;
 } else {
-if(cltype24 >= var_prev->type->table_size) {
-var23 = 0;
+if(cltype35 >= var_prev->type->table_size) {
+var34 = 0;
 } else {
-var23 = var_prev->type->type_table[cltype24] == idtype25;
+var34 = var_prev->type->type_table[cltype35] == idtype36;
 }
 }
-if (unlikely(!var23)) {
-var_class_name27 = var_prev == NULL ? "null" : var_prev->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name27);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+if (unlikely(!var34)) {
+var_class_name38 = var_prev == NULL ? "null" : var_prev->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name38);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-var_nnode->attrs[COLOR_standard__list__ListNode___prev].val = var_prev; /* _prev on <var_nnode:ListNode[nullable Object]> */
-RET_LABEL22:(void)0;
+var_nnode->attrs[COLOR_core__list__ListNode___prev].val = var_prev; /* _prev on <var_nnode:ListNode[nullable Object]> */
+RET_LABEL33:(void)0;
 }
 }
 {
 { /* Inline list#ListNode#next= (var_nnode,var_node) on <var_nnode:ListNode[nullable Object]> */
 /* Covariant cast for argument 0 (next) <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
 /* <var_node:ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct32 = var_nnode->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
-cltype30 = type_struct32->color;
-idtype31 = type_struct32->id;
-if(cltype30 >= var_node->type->table_size) {
-var29 = 0;
+type_struct43 = var_nnode->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
+cltype41 = type_struct43->color;
+idtype42 = type_struct43->id;
+if(cltype41 >= var_node->type->table_size) {
+var40 = 0;
 } else {
-var29 = var_node->type->type_table[cltype30] == idtype31;
+var40 = var_node->type->type_table[cltype41] == idtype42;
 }
-if (unlikely(!var29)) {
-var_class_name33 = var_node == NULL ? "null" : var_node->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name33);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+if (unlikely(!var40)) {
+var_class_name44 = var_node == NULL ? "null" : var_node->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name44);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-var_nnode->attrs[COLOR_standard__list__ListNode___next].val = var_node; /* _next on <var_nnode:ListNode[nullable Object]> */
-RET_LABEL28:(void)0;
+var_nnode->attrs[COLOR_core__list__ListNode___next].val = var_node; /* _next on <var_nnode:ListNode[nullable Object]> */
+RET_LABEL39:(void)0;
 }
 }
 {
 { /* Inline list#ListNode#prev= (var_node,var_nnode) on <var_node:ListNode[nullable Object]> */
 /* Covariant cast for argument 0 (prev) <var_nnode:ListNode[nullable Object]> isa nullable ListNode[E] */
 /* <var_nnode:ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct38 = var_node->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
-cltype36 = type_struct38->color;
-idtype37 = type_struct38->id;
-if(cltype36 >= var_nnode->type->table_size) {
-var35 = 0;
+type_struct49 = var_node->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
+cltype47 = type_struct49->color;
+idtype48 = type_struct49->id;
+if(cltype47 >= var_nnode->type->table_size) {
+var46 = 0;
 } else {
-var35 = var_nnode->type->type_table[cltype36] == idtype37;
+var46 = var_nnode->type->type_table[cltype47] == idtype48;
 }
-if (unlikely(!var35)) {
-var_class_name39 = var_nnode == NULL ? "null" : var_nnode->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name39);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+if (unlikely(!var46)) {
+var_class_name50 = var_nnode == NULL ? "null" : var_nnode->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable ListNode[E]", var_class_name50);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-var_node->attrs[COLOR_standard__list__ListNode___prev].val = var_nnode; /* _prev on <var_node:ListNode[nullable Object]> */
-RET_LABEL34:(void)0;
+var_node->attrs[COLOR_core__list__ListNode___prev].val = var_nnode; /* _prev on <var_node:ListNode[nullable Object]> */
+RET_LABEL45:(void)0;
 }
 }
 RET_LABEL:;
 }
 /* method list#ListIterator#item for (self: ListIterator[nullable Object]): nullable Object */
-val* standard___standard__ListIterator___standard__abstract_collection__Iterator__item(val* self) {
+val* core___core__ListIterator___core__abstract_collection__Iterator__item(val* self) {
 val* var /* : nullable Object */;
 val* var1 /* : nullable ListNode[nullable Object] */;
 val* var2 /* : nullable Object */;
 val* var4 /* : nullable Object */;
-var1 = self->attrs[COLOR_standard__list__ListIterator___node].val; /* _node on <self:ListIterator[nullable Object]> */
+var1 = self->attrs[COLOR_core__list__ListIterator___node].val; /* _node on <self:ListIterator[nullable Object]> */
 if (var1 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 270);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 268);
 fatal_exit(1);
 } else {
-{ /* Inline abstract_collection#Container#item (var1) on <var1:nullable ListNode[nullable Object]> */
+{ /* Inline abstract_collection#Ref#item (var1) on <var1:nullable ListNode[nullable Object]> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__abstract_collection, 309);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
 fatal_exit(1);
 }
-var4 = var1->attrs[COLOR_standard__abstract_collection__Container___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
+var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:nullable ListNode[nullable Object]> */
 var2 = var4;
 RET_LABEL3:(void)0;
 }
@@ -2085,7 +2280,7 @@ RET_LABEL:;
 return var;
 }
 /* method list#ListIterator#is_ok for (self: ListIterator[nullable Object]): Bool */
-short int standard___standard__ListIterator___standard__abstract_collection__Iterator__is_ok(val* self) {
+short int core___core__ListIterator___core__abstract_collection__Iterator__is_ok(val* self) {
 short int var /* : Bool */;
 val* var1 /* : nullable ListNode[nullable Object] */;
 short int var2 /* : Bool */;
@@ -2094,7 +2289,7 @@ val* var_other /* var other: nullable Object */;
 short int var5 /* : Bool */;
 short int var7 /* : Bool */;
 short int var8 /* : Bool */;
-var1 = self->attrs[COLOR_standard__list__ListIterator___node].val; /* _node on <self:ListIterator[nullable Object]> */
+var1 = self->attrs[COLOR_core__list__ListIterator___node].val; /* _node on <self:ListIterator[nullable Object]> */
 if (var1 == NULL) {
 var2 = 1; /* is null */
 } else {
@@ -2124,7 +2319,7 @@ RET_LABEL:;
 return var;
 }
 /* method list#ListIterator#next for (self: ListIterator[nullable Object]) */
-void standard___standard__ListIterator___standard__abstract_collection__Iterator__next(val* self) {
+void core___core__ListIterator___core__abstract_collection__Iterator__next(val* self) {
 val* var /* : nullable ListNode[nullable Object] */;
 val* var1 /* : nullable ListNode[nullable Object] */;
 val* var3 /* : nullable ListNode[nullable Object] */;
@@ -2136,35 +2331,35 @@ int cltype;
 int idtype;
 const char* var_class_name;
 long var8 /* : Int */;
-var = self->attrs[COLOR_standard__list__ListIterator___node].val; /* _node on <self:ListIterator[nullable Object]> */
+var = self->attrs[COLOR_core__list__ListIterator___node].val; /* _node on <self:ListIterator[nullable Object]> */
 if (var == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 279);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 277);
 fatal_exit(1);
 } else {
 { /* Inline list#ListNode#next (var) on <var:nullable ListNode[nullable Object]> */
 if (unlikely(var == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-var3 = var->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <var:nullable ListNode[nullable Object]> */
+var3 = var->attrs[COLOR_core__list__ListNode___next].val; /* _next on <var:nullable ListNode[nullable Object]> */
 var1 = var3;
 RET_LABEL2:(void)0;
 }
 }
-self->attrs[COLOR_standard__list__ListIterator___node].val = var1; /* _node on <self:ListIterator[nullable Object]> */
+self->attrs[COLOR_core__list__ListIterator___node].val = var1; /* _node on <self:ListIterator[nullable Object]> */
 var_ = self;
-var4 = var_->attrs[COLOR_standard__list__ListIterator___index].l; /* _index on <var_:ListIterator[nullable Object]> */
+var4 = var_->attrs[COLOR_core__list__ListIterator___index].l; /* _index on <var_:ListIterator[nullable Object]> */
 {
 { /* Inline kernel#Int#+ (var4,1l) on <var4: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_standard__Int.name;
+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_standard__kernel, 537);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
 var8 = var4 + 1l;
@@ -2173,25 +2368,28 @@ goto RET_LABEL6;
 RET_LABEL6:(void)0;
 }
 }
-var_->attrs[COLOR_standard__list__ListIterator___index].l = var5; /* _index on <var_:ListIterator[nullable Object]> */
+var_->attrs[COLOR_core__list__ListIterator___index].l = var5; /* _index on <var_:ListIterator[nullable Object]> */
 RET_LABEL:;
 }
 /* method list#ListIterator#init for (self: ListIterator[nullable Object]) */
-void standard___standard__ListIterator___standard__kernel__Object__init(val* self) {
+void core___core__ListIterator___core__kernel__Object__init(val* self) {
 val* var /* : List[nullable Object] */;
 val* var1 /* : nullable ListNode[nullable Object] */;
-var = self->attrs[COLOR_standard__list__ListIterator___list].val; /* _list on <self:ListIterator[nullable Object]> */
+{
+((void(*)(val* self))(self->class->vft[COLOR_core___core__ListIterator___core__kernel__Object__init]))(self); /* init on <self:ListIterator[nullable Object]>*/
+}
+var = self->attrs[COLOR_core__list__ListIterator___list].val; /* _list on <self:ListIterator[nullable Object]> */
 if (unlikely(var == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _list");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 286);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 284);
 fatal_exit(1);
 }
-var1 = var->attrs[COLOR_standard__list__List___head].val; /* _head on <var:List[nullable Object]> */
-self->attrs[COLOR_standard__list__ListIterator___node].val = var1; /* _node on <self:ListIterator[nullable Object]> */
+var1 = var->attrs[COLOR_core__list__List___head].val; /* _head on <var:List[nullable Object]> */
+self->attrs[COLOR_core__list__ListIterator___node].val = var1; /* _node on <self:ListIterator[nullable Object]> */
 RET_LABEL:;
 }
 /* method list#ListIterator#list= for (self: ListIterator[nullable Object], List[nullable Object]) */
-void standard___standard__ListIterator___list_61d(val* self, val* p0) {
+void core___core__ListIterator___list_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
 int idtype;
@@ -2199,7 +2397,7 @@ const struct type* type_struct;
 const char* var_class_name;
 /* Covariant cast for argument 0 (list) <p0:List[nullable Object]> isa List[E] */
 /* <p0:List[nullable Object]> isa List[E] */
-type_struct = self->type->resolution_table->types[COLOR_standard__List__standard__ListIterator___35dE];
+type_struct = self->type->resolution_table->types[COLOR_core__List__core__ListIterator___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 if(cltype >= p0->type->table_size) {
@@ -2210,32 +2408,114 @@ 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`", "List[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 289);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 287);
 fatal_exit(1);
 }
-self->attrs[COLOR_standard__list__ListIterator___list].val = p0; /* _list on <self:ListIterator[nullable Object]> */
+self->attrs[COLOR_core__list__ListIterator___list].val = p0; /* _list on <self:ListIterator[nullable Object]> */
 RET_LABEL:;
 }
 /* method list#ListIterator#index for (self: ListIterator[nullable Object]): Int */
-long standard___standard__ListIterator___standard__abstract_collection__IndexedIterator__index(val* self) {
+long core___core__ListIterator___core__abstract_collection__IndexedIterator__index(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
-var1 = self->attrs[COLOR_standard__list__ListIterator___index].l; /* _index on <self:ListIterator[nullable Object]> */
+var1 = self->attrs[COLOR_core__list__ListIterator___index].l; /* _index on <self:ListIterator[nullable Object]> */
 var = var1;
 RET_LABEL:;
 return var;
 }
+/* method list#ListReverseIterator#next for (self: ListReverseIterator[nullable Object]) */
+void core__list___core__list__ListReverseIterator___core__abstract_collection__Iterator__next(val* self) {
+val* var /* : nullable ListNode[nullable Object] */;
+val* var1 /* : nullable ListNode[nullable Object] */;
+val* var3 /* : nullable ListNode[nullable Object] */;
+val* var_ /* var : ListReverseIterator[nullable Object] */;
+long var4 /* : Int */;
+long var5 /* : Int */;
+short int var7 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var8 /* : Int */;
+var = self->attrs[COLOR_core__list__ListIterator___node].val; /* _node on <self:ListReverseIterator[nullable Object]> */
+if (var == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 314);
+fatal_exit(1);
+} else {
+{ /* Inline list#ListNode#prev (var) on <var:nullable ListNode[nullable Object]> */
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
+fatal_exit(1);
+}
+var3 = var->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <var:nullable ListNode[nullable Object]> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+self->attrs[COLOR_core__list__ListIterator___node].val = var1; /* _node on <self:ListReverseIterator[nullable Object]> */
+var_ = self;
+var4 = var_->attrs[COLOR_core__list__ListIterator___index].l; /* _index on <var_:ListReverseIterator[nullable Object]> */
+{
+{ /* Inline kernel#Int#- (var4,1l) on <var4: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, 734);
+fatal_exit(1);
+}
+var8 = var4 - 1l;
+var5 = var8;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+}
+var_->attrs[COLOR_core__list__ListIterator___index].l = var5; /* _index on <var_:ListReverseIterator[nullable Object]> */
+RET_LABEL:;
+}
+/* method list#ListReverseIterator#init for (self: ListReverseIterator[nullable Object]) */
+void core__list___core__list__ListReverseIterator___core__kernel__Object__init(val* self) {
+val* var /* : List[nullable Object] */;
+val* var_list /* var list: List[nullable Object] */;
+val* var1 /* : nullable ListNode[nullable Object] */;
+long var2 /* : Int */;
+long var4 /* : Int */;
+{
+((void(*)(val* self))(self->class->vft[COLOR_core__list___core__list__ListReverseIterator___core__kernel__Object__init]))(self); /* init on <self:ListReverseIterator[nullable Object]>*/
+}
+var = self->attrs[COLOR_core__list__ListIterator___list].val; /* _list on <self:ListReverseIterator[nullable Object]> */
+if (unlikely(var == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _list");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 320);
+fatal_exit(1);
+}
+var_list = var;
+var1 = var_list->attrs[COLOR_core__list__List___tail].val; /* _tail on <var_list:List[nullable Object]> */
+self->attrs[COLOR_core__list__ListIterator___node].val = var1; /* _node on <self:ListReverseIterator[nullable Object]> */
+{
+{ /* Inline list#List#length (var_list) on <var_list:List[nullable Object]> */
+var4 = var_list->attrs[COLOR_core__list__List___length].l; /* _length on <var_list:List[nullable Object]> */
+var2 = var4;
+RET_LABEL3:(void)0;
+}
+}
+self->attrs[COLOR_core__list__ListIterator___index].l = var2; /* _index on <self:ListReverseIterator[nullable Object]> */
+RET_LABEL:;
+}
 /* method list#ListNode#next for (self: ListNode[nullable Object]): nullable ListNode[nullable Object] */
-val* standard__list___standard__list__ListNode___next(val* self) {
+val* core__list___core__list__ListNode___next(val* self) {
 val* var /* : nullable ListNode[nullable Object] */;
 val* var1 /* : nullable ListNode[nullable Object] */;
-var1 = self->attrs[COLOR_standard__list__ListNode___next].val; /* _next on <self:ListNode[nullable Object]> */
+var1 = self->attrs[COLOR_core__list__ListNode___next].val; /* _next on <self:ListNode[nullable Object]> */
 var = var1;
 RET_LABEL:;
 return var;
 }
 /* method list#ListNode#next= for (self: ListNode[nullable Object], nullable ListNode[nullable Object]) */
-void standard__list___standard__list__ListNode___next_61d(val* self, val* p0) {
+void core__list___core__list__ListNode___next_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
 int idtype;
@@ -2243,7 +2523,7 @@ const struct type* type_struct;
 const char* var_class_name;
 /* Covariant cast for argument 0 (next) <p0:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
 /* <p0:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct = self->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
+type_struct = self->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 if(p0 == NULL) {
@@ -2258,23 +2538,23 @@ 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`", "nullable ListNode[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 330);
 fatal_exit(1);
 }
-self->attrs[COLOR_standard__list__ListNode___next].val = p0; /* _next on <self:ListNode[nullable Object]> */
+self->attrs[COLOR_core__list__ListNode___next].val = p0; /* _next on <self:ListNode[nullable Object]> */
 RET_LABEL:;
 }
 /* method list#ListNode#prev for (self: ListNode[nullable Object]): nullable ListNode[nullable Object] */
-val* standard__list___standard__list__ListNode___prev(val* self) {
+val* core__list___core__list__ListNode___prev(val* self) {
 val* var /* : nullable ListNode[nullable Object] */;
 val* var1 /* : nullable ListNode[nullable Object] */;
-var1 = self->attrs[COLOR_standard__list__ListNode___prev].val; /* _prev on <self:ListNode[nullable Object]> */
+var1 = self->attrs[COLOR_core__list__ListNode___prev].val; /* _prev on <self:ListNode[nullable Object]> */
 var = var1;
 RET_LABEL:;
 return var;
 }
 /* method list#ListNode#prev= for (self: ListNode[nullable Object], nullable ListNode[nullable Object]) */
-void standard__list___standard__list__ListNode___prev_61d(val* self, val* p0) {
+void core__list___core__list__ListNode___prev_61d(val* self, val* p0) {
 short int var /* : Bool */;
 int cltype;
 int idtype;
@@ -2282,7 +2562,7 @@ const struct type* type_struct;
 const char* var_class_name;
 /* Covariant cast for argument 0 (prev) <p0:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
 /* <p0:nullable ListNode[nullable Object]> isa nullable ListNode[E] */
-type_struct = self->type->resolution_table->types[COLOR_nullable__standard__list__ListNode__standard__list__ListNode___35dE];
+type_struct = self->type->resolution_table->types[COLOR_nullable__core__list__ListNode__core__list__ListNode___35dE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 if(p0 == NULL) {
@@ -2297,9 +2577,9 @@ 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`", "nullable ListNode[E]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__list, 335);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__list, 333);
 fatal_exit(1);
 }
-self->attrs[COLOR_standard__list__ListNode___prev].val = p0; /* _prev on <self:ListNode[nullable Object]> */
+self->attrs[COLOR_core__list__ListNode___prev].val = p0; /* _prev on <self:ListNode[nullable Object]> */
 RET_LABEL:;
 }