+if (unlikely(!var)) {
+var_class_name = p2 == NULL ? "null" : p2->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractArray[E]", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 106);
+fatal_exit(1);
+}
+var_start = p0;
+var_len = p1;
+var_dest = p2;
+var_new_start = p3;
+var_i = var_len;
+for(;;) {
+{
+{ /* Inline kernel#Int#> (var_i,0l) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var3 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var3)) {
+var_class_name6 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
+}
+var7 = var_i > 0l;
+var1 = var7;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+}
+if (var1){
+{
+{ /* Inline kernel#Int#- (var_i,1l) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var10 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var10)) {
+var_class_name13 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+fatal_exit(1);
+}
+var14 = var_i - 1l;
+var8 = var14;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
+}
+}
+var_i = var8;
+{
+{ /* Inline kernel#Int#+ (var_new_start,var_i) on <var_new_start:Int> */
+/* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
+/* <var_i:Int> isa OTHER */
+var17 = 1; /* easy <var_i:Int> isa OTHER*/
+if (unlikely(!var17)) {
+var_class_name20 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
+}
+var21 = var_new_start + var_i;
+var15 = var21;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#+ (var_start,var_i) on <var_start:Int> */
+/* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
+/* <var_i:Int> isa OTHER */
+var24 = 1; /* easy <var_i:Int> isa OTHER*/
+if (unlikely(!var24)) {
+var_class_name27 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
+}
+var28 = var_start + var_i;
+var22 = var28;
+goto RET_LABEL23;
+RET_LABEL23:(void)0;
+}
+}
+{
+var29 = ((val*(*)(val* self, long p0))(self->class->vft[COLOR_standard__abstract_collection__SequenceRead___91d_93d]))(self, var22); /* [] on <self:AbstractArrayRead[nullable Object]>*/
+}
+{
+((void(*)(val* self, long p0, val* p1))(var_dest->class->vft[COLOR_standard__abstract_collection__Sequence___91d_93d_61d]))(var_dest, var15, var29); /* []= on <var_dest:AbstractArray[nullable Object]>*/
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+RET_LABEL:;
+}
+/* method array#AbstractArrayRead#iterator for (self: AbstractArrayRead[nullable Object]): ArrayIterator[nullable Object] */
+val* standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(val* self) {
+val* var /* : ArrayIterator[nullable Object] */;
+val* var1 /* : nullable ArrayIterator[nullable Object] */;
+val* var_res /* var res: nullable ArrayIterator[nullable Object] */;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var5 /* : Bool */;
+short int var7 /* : Bool */;
+val* var8 /* : ArrayIterator[nullable Object] */;
+var1 = self->attrs[COLOR_standard__array__AbstractArrayRead___free_iterator].val; /* _free_iterator on <self:AbstractArrayRead[nullable Object]> */
+var_res = var1;
+if (var_res == NULL) {
+var2 = 1; /* is null */
+} else {
+var2 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_res,((val*)NULL)) on <var_res:nullable ArrayIterator[nullable Object]> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable ArrayIterator[nullable Object](ArrayIterator[nullable Object])> */
+var7 = var_res == var_other;
+var5 = var7;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+}
+var3 = var5;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
+}
+var2 = var3;
+}
+if (var2){
+var8 = NEW_standard__array__ArrayIterator(self->type->resolution_table->types[COLOR_standard__array__ArrayIterator__standard__AbstractArrayRead___35dE]);
+{
+((void(*)(val* self, val* p0))(var8->class->vft[COLOR_standard__array__ArrayIterator__array_61d]))(var8, self); /* array= on <var8:ArrayIterator[nullable Object]>*/
+}
+{
+((void(*)(val* self))(var8->class->vft[COLOR_standard__kernel__Object__init]))(var8); /* init on <var8:ArrayIterator[nullable Object]>*/
+}
+var = var8;
+goto RET_LABEL;
+} else {
+}
+var_res->attrs[COLOR_standard__array__ArrayIterator___index].l = 0l; /* _index on <var_res:nullable ArrayIterator[nullable Object](ArrayIterator[nullable Object])> */
+self->attrs[COLOR_standard__array__AbstractArrayRead___free_iterator].val = ((val*)NULL); /* _free_iterator on <self:AbstractArrayRead[nullable Object]> */
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method array#AbstractArrayRead#sub for (self: AbstractArrayRead[nullable Object], Int, Int): Array[nullable Object] */
+val* standard___standard__AbstractArrayRead___sub(val* self, long p0, long p1) {
+val* var /* : Array[nullable Object] */;
+long var_from /* var from: Int */;
+long var_count /* var count: Int */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var4 /* : Bool */;
+long var5 /* : Int */;
+short int var7 /* : Bool */;
+int cltype8;
+int idtype9;
+const char* var_class_name10;
+long var11 /* : Int */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
+const char* var_class_name17;
+short int var18 /* : Bool */;
+long var19 /* : Int */;
+short int var21 /* : Bool */;
+int cltype22;
+int idtype23;
+const char* var_class_name24;
+long var25 /* : Int */;
+long var_to /* var to: Int */;
+long var26 /* : Int */;
+short int var27 /* : Bool */;
+short int var29 /* : Bool */;
+int cltype30;
+int idtype31;
+const char* var_class_name32;
+short int var33 /* : Bool */;
+long var34 /* : Int */;
+val* var35 /* : Array[nullable Object] */;
+long var36 /* : Int */;
+short int var38 /* : Bool */;
+int cltype39;
+int idtype40;
+const char* var_class_name41;
+long var42 /* : Int */;
+val* var_res /* var res: Array[nullable Object] */;
+short int var43 /* : Bool */;
+short int var45 /* : Bool */;
+int cltype46;
+int idtype47;
+const char* var_class_name48;
+short int var49 /* : Bool */;
+val* var50 /* : nullable Object */;
+long var51 /* : Int */;
+short int var53 /* : Bool */;
+int cltype54;
+int idtype55;
+const char* var_class_name56;
+long var57 /* : Int */;
+var_from = p0;
+var_count = p1;
+{
+{ /* Inline kernel#Int#< (var_from,0l) on <var_from:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var3 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var3)) {
+var_class_name = type_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, 534);
+fatal_exit(1);
+}
+var4 = var_from < 0l;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}