Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / core__flat.sep.2.c
index 9778e04..5d2fe31 100644 (file)
@@ -1,6 +1,835 @@
 #include "core__flat.sep.0.h"
-/* method flat#NativeString#clean_utf8 for (self: NativeString, Int): FlatString */
-val* core__flat___NativeString___clean_utf8(char* self, long p0) {
+/* method flat$FlatBufferCharIterator$target for (self: FlatBufferCharIterator): FlatBuffer */
+val* core__flat___core__flat__FlatBufferCharIterator___target(val* self) {
+val* var /* : FlatBuffer */;
+val* var1 /* : FlatBuffer */;
+var1 = self->attrs[COLOR_core__flat__FlatBufferCharIterator___target].val; /* _target on <self:FlatBufferCharIterator> */
+if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _target");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1292);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method flat$FlatBufferCharIterator$target= for (self: FlatBufferCharIterator, FlatBuffer) */
+void core__flat___core__flat__FlatBufferCharIterator___target_61d(val* self, val* p0) {
+self->attrs[COLOR_core__flat__FlatBufferCharIterator___target].val = p0; /* _target on <self:FlatBufferCharIterator> */
+RET_LABEL:;
+}
+/* method flat$FlatBufferCharIterator$max for (self: FlatBufferCharIterator): Int */
+long core__flat___core__flat__FlatBufferCharIterator___max(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = self->attrs[COLOR_core__flat__FlatBufferCharIterator___max].l; /* _max on <self:FlatBufferCharIterator> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method flat$FlatBufferCharIterator$max= for (self: FlatBufferCharIterator, Int) */
+void core__flat___core__flat__FlatBufferCharIterator___max_61d(val* self, long p0) {
+self->attrs[COLOR_core__flat__FlatBufferCharIterator___max].l = p0; /* _max on <self:FlatBufferCharIterator> */
+RET_LABEL:;
+}
+/* method flat$FlatBufferCharIterator$curr_pos for (self: FlatBufferCharIterator): Int */
+long core__flat___core__flat__FlatBufferCharIterator___curr_pos(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = self->attrs[COLOR_core__flat__FlatBufferCharIterator___curr_pos].l; /* _curr_pos on <self:FlatBufferCharIterator> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method flat$FlatBufferCharIterator$curr_pos= for (self: FlatBufferCharIterator, Int) */
+void core__flat___core__flat__FlatBufferCharIterator___curr_pos_61d(val* self, long p0) {
+self->attrs[COLOR_core__flat__FlatBufferCharIterator___curr_pos].l = p0; /* _curr_pos on <self:FlatBufferCharIterator> */
+RET_LABEL:;
+}
+/* method flat$FlatBufferCharIterator$init for (self: FlatBufferCharIterator) */
+void core__flat___core__flat__FlatBufferCharIterator___core__kernel__Object__init(val* self) {
+val* var /* : FlatBuffer */;
+val* var2 /* : FlatBuffer */;
+long var3 /* : Int */;
+long var4 /* : Int */;
+short int var6 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var7 /* : Int */;
+{
+((void(*)(val* self))(self->class->vft[COLOR_core__flat___core__flat__FlatBufferCharIterator___core__kernel__Object__init]))(self); /* init on <self:FlatBufferCharIterator>*/
+}
+{
+{ /* Inline flat$FlatBufferCharIterator$target (self) on <self:FlatBufferCharIterator> */
+var2 = self->attrs[COLOR_core__flat__FlatBufferCharIterator___target].val; /* _target on <self:FlatBufferCharIterator> */
+if (unlikely(var2 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _target");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1292);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+var3 = var->attrs[COLOR_core__abstract_text__FlatText___length].l; /* _length on <var:FlatBuffer> */
+{
+{ /* Inline kernel$Int$- (var3,1l) on <var3:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var6 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var6)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+fatal_exit(1);
+}
+var7 = var3 - 1l;
+var4 = var7;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline flat$FlatBufferCharIterator$max= (self,var4) on <self:FlatBufferCharIterator> */
+self->attrs[COLOR_core__flat__FlatBufferCharIterator___max].l = var4; /* _max on <self:FlatBufferCharIterator> */
+RET_LABEL8:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method flat$FlatBufferCharIterator$index for (self: FlatBufferCharIterator): Int */
+long core__flat___core__flat__FlatBufferCharIterator___core__abstract_collection__IndexedIterator__index(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+long var3 /* : Int */;
+{
+{ /* Inline flat$FlatBufferCharIterator$curr_pos (self) on <self:FlatBufferCharIterator> */
+var3 = self->attrs[COLOR_core__flat__FlatBufferCharIterator___curr_pos].l; /* _curr_pos on <self:FlatBufferCharIterator> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method flat$FlatBufferCharIterator$is_ok for (self: FlatBufferCharIterator): Bool */
+short int core__flat___core__flat__FlatBufferCharIterator___core__abstract_collection__Iterator__is_ok(val* self) {
+short int var /* : Bool */;
+long var1 /* : Int */;
+long var3 /* : Int */;
+long var4 /* : Int */;
+long var6 /* : Int */;
+short int var7 /* : Bool */;
+short int var9 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var10 /* : Bool */;
+{
+{ /* Inline flat$FlatBufferCharIterator$curr_pos (self) on <self:FlatBufferCharIterator> */
+var3 = self->attrs[COLOR_core__flat__FlatBufferCharIterator___curr_pos].l; /* _curr_pos on <self:FlatBufferCharIterator> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline flat$FlatBufferCharIterator$max (self) on <self:FlatBufferCharIterator> */
+var6 = self->attrs[COLOR_core__flat__FlatBufferCharIterator___max].l; /* _max on <self:FlatBufferCharIterator> */
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline kernel$Int$<= (var1,var4) on <var1:Int> */
+/* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
+/* <var4:Int> isa OTHER */
+var9 = 1; /* easy <var4:Int> isa OTHER*/
+if (unlikely(!var9)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
+fatal_exit(1);
+}
+var10 = var1 <= var4;
+var7 = var10;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
+}
+}
+var = var7;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method flat$FlatBufferCharIterator$item for (self: FlatBufferCharIterator): Char */
+uint32_t core__flat___core__flat__FlatBufferCharIterator___core__abstract_collection__Iterator__item(val* self) {
+uint32_t var /* : Char */;
+val* var1 /* : FlatBuffer */;
+val* var3 /* : FlatBuffer */;
+long var4 /* : Int */;
+long var6 /* : Int */;
+uint32_t var7 /* : Char */;
+{
+{ /* Inline flat$FlatBufferCharIterator$target (self) on <self:FlatBufferCharIterator> */
+var3 = self->attrs[COLOR_core__flat__FlatBufferCharIterator___target].val; /* _target on <self:FlatBufferCharIterator> */
+if (unlikely(var3 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _target");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1292);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline flat$FlatBufferCharIterator$curr_pos (self) on <self:FlatBufferCharIterator> */
+var6 = self->attrs[COLOR_core__flat__FlatBufferCharIterator___curr_pos].l; /* _curr_pos on <self:FlatBufferCharIterator> */
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+var7 = core__flat___FlatText___core__abstract_text__Text___91d_93d(var1, var4);
+}
+var = var7;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method flat$FlatBufferCharIterator$item for (self: Iterator[nullable Object]): nullable Object */
+val* VIRTUAL_core__flat___core__flat__FlatBufferCharIterator___core__abstract_collection__Iterator__item(val* self) {
+val* var /* : nullable Object */;
+uint32_t var1 /* : Char */;
+val* var2 /* : nullable Object */;
+var1 = core__flat___core__flat__FlatBufferCharIterator___core__abstract_collection__Iterator__item(self);
+var2 = (val*)((long)(var1)<<2|2);
+var = var2;
+RET_LABEL:;
+return var;
+}
+/* method flat$FlatBufferCharIterator$next for (self: FlatBufferCharIterator) */
+void core__flat___core__flat__FlatBufferCharIterator___core__abstract_collection__Iterator__next(val* self) {
+val* var_ /* var : FlatBufferCharIterator */;
+long var /* : Int */;
+long var2 /* : Int */;
+long var3 /* : Int */;
+short int var5 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var6 /* : Int */;
+var_ = self;
+{
+{ /* Inline flat$FlatBufferCharIterator$curr_pos (var_) on <var_:FlatBufferCharIterator> */
+var2 = var_->attrs[COLOR_core__flat__FlatBufferCharIterator___curr_pos].l; /* _curr_pos on <var_:FlatBufferCharIterator> */
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline kernel$Int$+ (var,1l) on <var:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var5 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var5)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var6 = var + 1l;
+var3 = var6;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
+}
+}
+{
+{ /* Inline flat$FlatBufferCharIterator$curr_pos= (var_,var3) on <var_:FlatBufferCharIterator> */
+var_->attrs[COLOR_core__flat__FlatBufferCharIterator___curr_pos].l = var3; /* _curr_pos on <var_:FlatBufferCharIterator> */
+RET_LABEL7:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method flat$CString$to_s for (self: CString): String */
+val* core__flat___CString___core__abstract_text__Object__to_s(char* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+{
+var1 = core__flat___CString___to_s_unsafe(self, ((val*)NULL), ((val*)NULL), ((val*)NULL), ((val*)NULL));
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method flat$CString$to_s for (self: Object): String */
+val* VIRTUAL_core__flat___CString___core__abstract_text__Object__to_s(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+char* var2 /* : CString */;
+var2 = ((struct instance_core__CString*)self)->value; /* autounbox from Object to CString */;
+var1 = core__flat___CString___core__abstract_text__Object__to_s(var2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method flat$CString$to_s_unsafe for (self: CString, nullable Int, nullable Int, nullable Bool, nullable Bool): String */
+val* core__flat___CString___to_s_unsafe(char* self, val* p0, val* p1, val* p2, val* p3) {
+val* var /* : String */;
+val* var_byte_length /* var byte_length: nullable Int */;
+val* var_char_length /* var char_length: nullable Int */;
+val* var_copy /* var copy: nullable Bool */;
+val* var_clean /* var clean: nullable Bool */;
+long var1 /* : Int */;
+long var2 /* : Int */;
+long var3 /* : Int */;
+val* var4 /* : nullable Int */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Bool */;
+short int var8 /* : Bool */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable Bool */;
+val* var_str /* var str: nullable Object */;
+short int var11 /* : Bool */;
+val* var12 /* : FlatString */;
+long var13 /* : Int */;
+long var14 /* : Int */;
+long var16 /* : Int */;
+val* var17 /* : nullable Int */;
+long var18 /* : Int */;
+long var19 /* : Int */;
+long var20 /* : Int */;
+long var22 /* : Int */;
+long var_from /* var from: Int */;
+long var_byte_length23 /* var byte_length: Int */;
+long var_st /* var st: Int */;
+long var_ln /* var ln: Int */;
+short int var24 /* : Bool */;
+short int var26 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var27 /* : Bool */;
+short int var28 /* : Bool */;
+short int var30 /* : Bool */;
+int cltype31;
+int idtype32;
+const char* var_class_name33;
+short int var34 /* : Bool */;
+uint32_t var35 /* : UInt32 */;
+uint32_t var37 /* : UInt32 */;
+uint32_t var_i /* var i: UInt32 */;
+uint32_t var38 /* : UInt32 */;
+uint32_t var40 /* : UInt32 */;
+short int var41 /* : Bool */;
+short int var43 /* : Bool */;
+short int var44 /* : Bool */;
+long var45 /* : Int */;
+short int var47 /* : Bool */;
+int cltype48;
+int idtype49;
+const char* var_class_name50;
+long var51 /* : Int */;
+long var52 /* : Int */;
+short int var54 /* : Bool */;
+int cltype55;
+int idtype56;
+const char* var_class_name57;
+long var58 /* : Int */;
+long var59 /* : Int */;
+short int var61 /* : Bool */;
+int cltype62;
+int idtype63;
+const char* var_class_name64;
+long var65 /* : Int */;
+short int var66 /* : Bool */;
+short int var68 /* : Bool */;
+long var70 /* : Int */;
+long var_cln /* var cln: Int */;
+long var71 /* : Int */;
+short int var73 /* : Bool */;
+int cltype74;
+int idtype75;
+const char* var_class_name76;
+long var77 /* : Int */;
+long var78 /* : Int */;
+short int var80 /* : Bool */;
+int cltype81;
+int idtype82;
+const char* var_class_name83;
+long var84 /* : Int */;
+long var85 /* : Int */;
+short int var87 /* : Bool */;
+int cltype88;
+int idtype89;
+const char* var_class_name90;
+long var91 /* : Int */;
+val* var92 /* : nullable Int */;
+short int var93 /* : Bool */;
+short int var94 /* : Bool */;
+short int var_ /* var : Bool */;
+short int var95 /* : Bool */;
+short int var96 /* : Bool */;
+short int var97 /* : Bool */;
+short int var_98 /* var : Bool */;
+char* var99 /* : CString */;
+char* var101 /* : CString */;
+short int var102 /* : Bool */;
+short int var104 /* : Bool */;
+static char* varoncenew;
+static int varoncenew_guard;
+char* var105 /* : CString */;
+char* var106 /* : CString */;
+long var107 /* : Int */;
+short int var109 /* : Bool */;
+int cltype110;
+int idtype111;
+const char* var_class_name112;
+long var113 /* : Int */;
+long var114 /* : Int */;
+char* var115 /* : CString */;
+char* var117 /* : CString */;
+char* var_new_cstr /* var new_cstr: CString */;
+long var119 /* : Int */;
+long var121 /* : Int */;
+static val* varoncenew122;
+static int varoncenew122_guard;
+val* var123 /* : FlatString */;
+val* var124 /* : FlatString */;
+val* var125 /* : FlatString */;
+long var126 /* : Int */;
+long var127 /* : Int */;
+short int var128 /* : Bool */;
+short int var129 /* : Bool */;
+static val* varoncenew130;
+static int varoncenew130_guard;
+val* var131 /* : FlatString */;
+val* var132 /* : FlatString */;
+val* var133 /* : FlatString */;
+long var134 /* : Int */;
+long var135 /* : Int */;
+var_byte_length = p0;
+var_char_length = p1;
+var_copy = p2;
+var_clean = p3;
+if (var_byte_length!=NULL) {
+var2 = (long)(var_byte_length)>>2;
+var1 = var2;
+} else {
+{
+var3 = core___core__CString___cstring_length(self);
+}
+var1 = var3;
+}
+var4 = (val*)(var1<<2|1);
+var_byte_length = var4;
+if (var_clean!=NULL) {
+var6 = (short int)((long)(var_clean)>>2);
+var5 = var6;
+} else {
+var5 = 1;
+}
+var7 = (val*)((long)(var5)<<2|3);
+var_clean = var7;
+if (var_copy!=NULL) {
+var9 = (short int)((long)(var_copy)>>2);
+var8 = var9;
+} else {
+var8 = 1;
+}
+var10 = (val*)((long)(var8)<<2|3);
+var_copy = var10;
+var_str = ((val*)NULL);
+var11 = (short int)((long)(var_clean)>>2);
+if (var11){
+{
+var13 = (long)(var_byte_length)>>2;
+var12 = core__flat___CString___clean_utf8(self, var13);
+}
+var_str = var12;
+{
+{ /* Inline abstract_text$FlatText$length (var_str) on <var_str:nullable Object(FlatString)> */
+var16 = var_str->attrs[COLOR_core__abstract_text__FlatText___length].l; /* _length on <var_str:nullable Object(FlatString)> */
+var14 = var16;
+RET_LABEL15:(void)0;
+}
+}
+var17 = (val*)(var14<<2|1);
+var_char_length = var17;
+} else {
+if (var_char_length!=NULL) {
+var19 = (long)(var_char_length)>>2;
+var18 = var19;
+} else {
+{
+{ /* Inline native$CString$utf8_length (self,0l,var_byte_length) on <self:CString> */
+var22 = (long)(var_byte_length)>>2;
+var_from = 0l;
+var_byte_length23 = var22;
+var_st = var_from;
+var_ln = 0l;
+for(;;) {
+{
+{ /* Inline kernel$Int$> (var_byte_length23,0l) on <var_byte_length23:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var26 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var26)) {
+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, 727);
+fatal_exit(1);
+}
+var27 = var_byte_length23 > 0l;
+var24 = var27;
+goto RET_LABEL25;
+RET_LABEL25:(void)0;
+}
+}
+if (var24){
+for(;;) {
+{
+{ /* Inline kernel$Int$>= (var_byte_length23,4l) on <var_byte_length23:Int> */
+/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
+/* <4l:Int> isa OTHER */
+var30 = 1; /* easy <4l:Int> isa OTHER*/
+if (unlikely(!var30)) {
+var_class_name33 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
+fatal_exit(1);
+}
+var34 = var_byte_length23 >= 4l;
+var28 = var34;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
+}
+}
+if (var28){
+{
+{ /* Inline native$CString$fetch_4_chars (self,var_st) on <self:CString> */
+var37 = *((uint32_t*)(self + var_st));
+var35 = var37;
+goto RET_LABEL36;
+RET_LABEL36:(void)0;
+}
+}
+var_i = var35;
+{
+{ /* Inline fixed_ints$UInt32$& (var_i,UINT32_C(2155905152)) on <var_i:UInt32> */
+var40 = var_i & UINT32_C(2155905152);
+var38 = var40;
+goto RET_LABEL39;
+RET_LABEL39:(void)0;
+}
+}
+{
+{ /* Inline fixed_ints$UInt32$!= (var38,UINT32_C(0)) on <var38:UInt32> */
+var43 = var38 == UINT32_C(0);
+var44 = !var43;
+var41 = var44;
+goto RET_LABEL42;
+RET_LABEL42:(void)0;
+}
+}
+if (var41){
+goto BREAK_label;
+} else {
+}
+{
+{ /* Inline kernel$Int$- (var_byte_length23,4l) on <var_byte_length23:Int> */
+/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
+/* <4l:Int> isa OTHER */
+var47 = 1; /* easy <4l:Int> isa OTHER*/
+if (unlikely(!var47)) {
+var_class_name50 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name50);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+fatal_exit(1);
+}
+var51 = var_byte_length23 - 4l;
+var45 = var51;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
+}
+}
+var_byte_length23 = var45;
+{
+{ /* Inline kernel$Int$+ (var_st,4l) on <var_st:Int> */
+/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
+/* <4l:Int> isa OTHER */
+var54 = 1; /* easy <4l:Int> isa OTHER*/
+if (unlikely(!var54)) {
+var_class_name57 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name57);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var58 = var_st + 4l;
+var52 = var58;
+goto RET_LABEL53;
+RET_LABEL53:(void)0;
+}
+}
+var_st = var52;
+{
+{ /* Inline kernel$Int$+ (var_ln,4l) on <var_ln:Int> */
+/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
+/* <4l:Int> isa OTHER */
+var61 = 1; /* easy <4l:Int> isa OTHER*/
+if (unlikely(!var61)) {
+var_class_name64 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name64);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var65 = var_ln + 4l;
+var59 = var65;
+goto RET_LABEL60;
+RET_LABEL60:(void)0;
+}
+}
+var_ln = var59;
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline kernel$Int$== (var_byte_length23,0l) on <var_byte_length23:Int> */
+var68 = var_byte_length23 == 0l;
+var66 = var68;
+goto RET_LABEL67;
+RET_LABEL67:(void)0;
+}
+}
+if (var66){
+goto BREAK_label69;
+} else {
+}
+{
+var70 = core___core__CString___length_of_char_at(self, var_st);
+}
+var_cln = var70;
+{
+{ /* Inline kernel$Int$+ (var_st,var_cln) on <var_st:Int> */
+/* Covariant cast for argument 0 (i) <var_cln:Int> isa OTHER */
+/* <var_cln:Int> isa OTHER */
+var73 = 1; /* easy <var_cln:Int> isa OTHER*/
+if (unlikely(!var73)) {
+var_class_name76 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name76);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var77 = var_st + var_cln;
+var71 = var77;
+goto RET_LABEL72;
+RET_LABEL72:(void)0;
+}
+}
+var_st = var71;
+{
+{ /* Inline kernel$Int$+ (var_ln,1l) on <var_ln:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var80 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var80)) {
+var_class_name83 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name83);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var84 = var_ln + 1l;
+var78 = var84;
+goto RET_LABEL79;
+RET_LABEL79:(void)0;
+}
+}
+var_ln = var78;
+{
+{ /* Inline kernel$Int$- (var_byte_length23,var_cln) on <var_byte_length23:Int> */
+/* Covariant cast for argument 0 (i) <var_cln:Int> isa OTHER */
+/* <var_cln:Int> isa OTHER */
+var87 = 1; /* easy <var_cln:Int> isa OTHER*/
+if (unlikely(!var87)) {
+var_class_name90 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name90);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+fatal_exit(1);
+}
+var91 = var_byte_length23 - var_cln;
+var85 = var91;
+goto RET_LABEL86;
+RET_LABEL86:(void)0;
+}
+}
+var_byte_length23 = var85;
+} else {
+goto BREAK_label69;
+}
+}
+BREAK_label69: (void)0;
+var20 = var_ln;
+goto RET_LABEL21;
+RET_LABEL21:(void)0;
+}
+}
+var18 = var20;
+}
+var92 = (val*)(var18<<2|1);
+var_char_length = var92;
+}
+var94 = (short int)((long)(var_copy)>>2);
+var_ = var94;
+if (var94){
+if (var_str == NULL) {
+var96 = 1; /* is null */
+} else {
+var96 = 0; /* arg is null but recv is not */
+}
+if (0) {
+var97 = core___core__FlatString___core__kernel__Object___61d_61d(var_str, ((val*)NULL));
+var96 = var97;
+}
+var_98 = var96;
+if (var96){
+var95 = var_98;
+} else {
+{
+{ /* Inline abstract_text$FlatText$items (var_str) on <var_str:nullable Object(FlatString)> */
+var101 = var_str->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <var_str:nullable Object(FlatString)> */
+var99 = var101;
+RET_LABEL100:(void)0;
+}
+}
+{
+{ /* Inline native$CString$== (var99,self) on <var99:CString> */
+var104 = var99 == self;
+var102 = var104;
+goto RET_LABEL103;
+RET_LABEL103:(void)0;
+}
+}
+var95 = var102;
+}
+var93 = var95;
+} else {
+var93 = var_;
+}
+if (var93){
+if (likely(varoncenew_guard)) {
+var105 = varoncenew;
+} else {
+var106 = NULL/*special!*/;
+var105 = var106;
+varoncenew = var105;
+varoncenew_guard = 1;
+}
+{
+{ /* Inline kernel$Int$+ (var_byte_length,1l) on <var_byte_length:nullable Int(Int)> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var109 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var109)) {
+var_class_name112 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name112);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var113 = (long)(var_byte_length)>>2;
+var114 = var113 + 1l;
+var107 = var114;
+goto RET_LABEL108;
+RET_LABEL108:(void)0;
+}
+}
+{
+{ /* Inline native$CString$new (var105,var107) on <var105:CString> */
+var117 = (char*)nit_alloc(var107);
+var115 = var117;
+goto RET_LABEL116;
+RET_LABEL116:(void)0;
+}
+}
+var_new_cstr = var115;
+{
+{ /* Inline native$CString$copy_to (self,var_new_cstr,var_byte_length,0l,0l) on <self:CString> */
+var119 = (long)(var_byte_length)>>2;
+memmove(var_new_cstr+0l,self+0l,var119);
+RET_LABEL118:(void)0;
+}
+}
+{
+{ /* Inline native$CString$[]= (var_new_cstr,var_byte_length,((unsigned char)0x00)) on <var_new_cstr:CString> */
+var121 = (long)(var_byte_length)>>2;
+var_new_cstr[var121]=(unsigned char)((unsigned char)0x00);
+RET_LABEL120:(void)0;
+}
+}
+if (likely(varoncenew122_guard)) {
+var123 = varoncenew122;
+} else {
+var124 = NEW_core__FlatString(&type_core__FlatString);
+var123 = var124;
+varoncenew122 = var123;
+varoncenew122_guard = 1;
+}
+{
+var126 = (long)(var_byte_length)>>2;
+var127 = (long)(var_char_length)>>2;
+var125 = core___core__FlatString___full(var123, var_new_cstr, var126, 0l, var127);
+}
+var_str = var125;
+} else {
+}
+if (var_str == NULL) {
+var128 = 1; /* is null */
+} else {
+var128 = 0; /* arg is null but recv is not */
+}
+if (0) {
+var129 = core___core__FlatString___core__kernel__Object___61d_61d(var_str, ((val*)NULL));
+var128 = var129;
+}
+if (var128){
+if (likely(varoncenew130_guard)) {
+var131 = varoncenew130;
+} else {
+var132 = NEW_core__FlatString(&type_core__FlatString);
+var131 = var132;
+varoncenew130 = var131;
+varoncenew130_guard = 1;
+}
+{
+var134 = (long)(var_byte_length)>>2;
+var135 = (long)(var_char_length)>>2;
+var133 = core___core__FlatString___full(var131, self, var134, 0l, var135);
+}
+var_str = var133;
+} else {
+}
+var = var_str;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method flat$CString$clean_utf8 for (self: CString, Int): FlatString */
+val* core__flat___CString___clean_utf8(char* self, long p0) {
 val* var /* : FlatString */;
 long var_len /* var len: Int */;
 val* var_replacements /* var replacements: nullable Array[Int] */;
@@ -20,11 +849,11 @@ int cltype8;
 int idtype9;
 const char* var_class_name10;
 short int var11 /* : Bool */;
-long var12 /* : Int */;
-long var14 /* : Int */;
-long var_i /* var i: Int */;
-long var15 /* : Int */;
-long var17 /* : Int */;
+uint32_t var12 /* : UInt32 */;
+uint32_t var14 /* : UInt32 */;
+uint32_t var_i /* var i: UInt32 */;
+uint32_t var15 /* : UInt32 */;
+uint32_t var17 /* : UInt32 */;
 short int var18 /* : Bool */;
 short int var20 /* : Bool */;
 short int var21 /* : Bool */;
@@ -271,79 +1100,86 @@ int cltype303;
 int idtype304;
 const char* var_class_name305;
 long var306 /* : Int */;
-char* var_ret /* var ret: NativeString */;
+char* var_ret /* var ret: CString */;
 short int var307 /* : Bool */;
 short int var309 /* : Bool */;
 short int var310 /* : Bool */;
-char* var311 /* : NativeString */;
-char* var312 /* : NativeString */;
-char* var314 /* : NativeString */;
+static char* varoncenew;
+static int varoncenew_guard;
+char* var311 /* : CString */;
+char* var312 /* : CString */;
+char* var313 /* : CString */;
+char* var315 /* : CString */;
 long var_old_repl /* var old_repl: Int */;
 long var_off /* var off: Int */;
 val* var_repls /* var repls: Array[Int] */;
-val* var315 /* : nullable NativeArray[nullable Object] */;
-val* var317 /* : nullable NativeArray[nullable Object] */;
+val* var316 /* : nullable NativeArray[nullable Object] */;
+val* var318 /* : nullable NativeArray[nullable Object] */;
 val* var_r /* var r: NativeArray[Int] */;
-long var318 /* : Int */;
-long var320 /* : Int */;
+long var319 /* : Int */;
+long var321 /* : Int */;
 long var_imax /* var imax: Int */;
-long var_i321 /* var i: Int */;
-long var_322 /* var : Int */;
-short int var323 /* : Bool */;
-short int var325 /* : Bool */;
-int cltype326;
-int idtype327;
-const char* var_class_name328;
-short int var329 /* : Bool */;
-val* var331 /* : nullable Object */;
-val* var333 /* : Object */;
-long var334 /* : Int */;
-long var_repl_pos /* var repl_pos: Int */;
+long var_i322 /* var i: Int */;
+long var_323 /* var : Int */;
+short int var324 /* : Bool */;
+short int var326 /* : Bool */;
+int cltype327;
+int idtype328;
+const char* var_class_name329;
+short int var330 /* : Bool */;
+val* var332 /* : nullable Object */;
+val* var334 /* : Object */;
 long var335 /* : Int */;
-short int var337 /* : Bool */;
-int cltype338;
-int idtype339;
-const char* var_class_name340;
-long var341 /* : Int */;
+long var_repl_pos /* var repl_pos: Int */;
+long var336 /* : Int */;
+short int var338 /* : Bool */;
+int cltype339;
+int idtype340;
+const char* var_class_name341;
+long var342 /* : Int */;
 long var_chkln /* var chkln: Int */;
-long var343 /* : Int */;
-short int var345 /* : Bool */;
-int cltype346;
-int idtype347;
-const char* var_class_name348;
-long var349 /* : Int */;
-long var351 /* : Int */;
-short int var353 /* : Bool */;
-int cltype354;
-int idtype355;
-const char* var_class_name356;
-long var357 /* : Int */;
-long var359 /* : Int */;
-short int var361 /* : Bool */;
-int cltype362;
-int idtype363;
-const char* var_class_name364;
-long var365 /* : Int */;
-long var367 /* : Int */;
-short int var369 /* : Bool */;
-int cltype370;
-int idtype371;
-const char* var_class_name372;
-long var373 /* : Int */;
+long var344 /* : Int */;
+short int var346 /* : Bool */;
+int cltype347;
+int idtype348;
+const char* var_class_name349;
+long var350 /* : Int */;
+long var352 /* : Int */;
+short int var354 /* : Bool */;
+int cltype355;
+int idtype356;
+const char* var_class_name357;
+long var358 /* : Int */;
+long var360 /* : Int */;
+short int var362 /* : Bool */;
+int cltype363;
+int idtype364;
+const char* var_class_name365;
+long var366 /* : Int */;
+long var368 /* : Int */;
+short int var370 /* : Bool */;
+int cltype371;
+int idtype372;
+const char* var_class_name373;
 long var374 /* : Int */;
-short int var376 /* : Bool */;
-int cltype377;
-int idtype378;
-const char* var_class_name379;
-long var380 /* : Int */;
+long var375 /* : Int */;
+short int var377 /* : Bool */;
+int cltype378;
+int idtype379;
+const char* var_class_name380;
 long var381 /* : Int */;
 long var382 /* : Int */;
-short int var384 /* : Bool */;
-int cltype385;
-int idtype386;
-const char* var_class_name387;
-long var388 /* : Int */;
-val* var390 /* : FlatString */;
+long var383 /* : Int */;
+short int var385 /* : Bool */;
+int cltype386;
+int idtype387;
+const char* var_class_name388;
+long var389 /* : Int */;
+static val* varoncenew391;
+static int varoncenew391_guard;
+val* var392 /* : FlatString */;
+val* var393 /* : FlatString */;
+val* var394 /* : FlatString */;
 var_len = p0;
 var_replacements = ((val*)NULL);
 var_end_length = var_len;
@@ -352,1243 +1188,1835 @@ var_chr_ln = 0l;
 var_rem = var_len;
 for(;;) {
 {
-{ /* Inline kernel#Int#> (var_rem,0l) on <var_rem:Int> */
-/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
-/* <0l:Int> isa OTHER */
-var3 = 1; /* easy <0l:Int> isa OTHER*/
-if (unlikely(!var3)) {
-var_class_name = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
+{ /* Inline kernel$Int$> (var_rem,0l) on <var_rem:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var3 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var3)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
+fatal_exit(1);
+}
+var4 = var_rem > 0l;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+}
+if (var1){
+for(;;) {
+{
+{ /* Inline kernel$Int$>= (var_rem,4l) on <var_rem:Int> */
+/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
+/* <4l:Int> isa OTHER */
+var7 = 1; /* easy <4l:Int> isa OTHER*/
+if (unlikely(!var7)) {
+var_class_name10 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name10);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
+fatal_exit(1);
+}
+var11 = var_rem >= 4l;
+var5 = var11;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+}
+if (var5){
+{
+{ /* Inline native$CString$fetch_4_chars (self,var_pos) on <self:CString> */
+var14 = *((uint32_t*)(self + var_pos));
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+}
+var_i = var12;
+{
+{ /* Inline fixed_ints$UInt32$& (var_i,UINT32_C(2155905152)) on <var_i:UInt32> */
+var17 = var_i & UINT32_C(2155905152);
+var15 = var17;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+}
+{
+{ /* Inline fixed_ints$UInt32$!= (var15,UINT32_C(0)) on <var15:UInt32> */
+var20 = var15 == UINT32_C(0);
+var21 = !var20;
+var18 = var21;
+goto RET_LABEL19;
+RET_LABEL19:(void)0;
+}
+}
+if (var18){
+goto BREAK_label;
+} else {
+}
+{
+{ /* Inline kernel$Int$+ (var_pos,4l) on <var_pos:Int> */
+/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
+/* <4l:Int> isa OTHER */
+var24 = 1; /* easy <4l:Int> isa OTHER*/
+if (unlikely(!var24)) {
+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_core__kernel, 728);
+fatal_exit(1);
+}
+var28 = var_pos + 4l;
+var22 = var28;
+goto RET_LABEL23;
+RET_LABEL23:(void)0;
+}
+}
+var_pos = var22;
+{
+{ /* Inline kernel$Int$+ (var_chr_ln,4l) on <var_chr_ln:Int> */
+/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
+/* <4l:Int> isa OTHER */
+var31 = 1; /* easy <4l:Int> isa OTHER*/
+if (unlikely(!var31)) {
+var_class_name34 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var35 = var_chr_ln + 4l;
+var29 = var35;
+goto RET_LABEL30;
+RET_LABEL30:(void)0;
+}
+}
+var_chr_ln = var29;
+{
+{ /* Inline kernel$Int$- (var_rem,4l) on <var_rem:Int> */
+/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
+/* <4l:Int> isa OTHER */
+var38 = 1; /* easy <4l:Int> isa OTHER*/
+if (unlikely(!var38)) {
+var_class_name41 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name41);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+fatal_exit(1);
+}
+var42 = var_rem - 4l;
+var36 = var42;
+goto RET_LABEL37;
+RET_LABEL37:(void)0;
+}
+}
+var_rem = var36;
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline kernel$Int$== (var_rem,0l) on <var_rem:Int> */
+var45 = var_rem == 0l;
+var43 = var45;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
+}
+}
+if (var43){
+goto BREAK_label46;
+} else {
+}
+{
+{ /* Inline native$CString$[] (self,var_pos) on <self:CString> */
+var49 = (unsigned char)((int)self[var_pos]);
+var47 = var49;
+goto RET_LABEL48;
+RET_LABEL48:(void)0;
+}
+}
+var_b = var47;
+{
+{ /* Inline math$Byte$& (var_b,((unsigned char)0x80)) on <var_b:Byte> */
+var52 = var_b & ((unsigned char)0x80);
+var50 = var52;
+goto RET_LABEL51;
+RET_LABEL51:(void)0;
+}
+}
+{
+{ /* Inline kernel$Byte$== (var50,((unsigned char)0x00)) on <var50:Byte> */
+var55 = var50 == ((unsigned char)0x00);
+var53 = var55;
+goto RET_LABEL54;
+RET_LABEL54:(void)0;
+}
+}
+if (var53){
+{
+{ /* Inline kernel$Int$+ (var_pos,1l) on <var_pos:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var58 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var58)) {
+var_class_name61 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name61);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var62 = var_pos + 1l;
+var56 = var62;
+goto RET_LABEL57;
+RET_LABEL57:(void)0;
+}
+}
+var_pos = var56;
+{
+{ /* Inline kernel$Int$+ (var_chr_ln,1l) on <var_chr_ln:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var65 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var65)) {
+var_class_name68 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name68);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var4 = var_rem > 0l;
-var1 = var4;
-goto RET_LABEL2;
-RET_LABEL2:(void)0;
+var69 = var_chr_ln + 1l;
+var63 = var69;
+goto RET_LABEL64;
+RET_LABEL64:(void)0;
 }
 }
-if (var1){
-for(;;) {
+var_chr_ln = var63;
 {
-{ /* Inline kernel#Int#>= (var_rem,4l) on <var_rem:Int> */
-/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
-/* <4l:Int> isa OTHER */
-var7 = 1; /* easy <4l:Int> isa OTHER*/
-if (unlikely(!var7)) {
-var_class_name10 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name10);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
+{ /* Inline kernel$Int$- (var_rem,1l) on <var_rem:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var72 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var72)) {
+var_class_name75 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name75);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
-var11 = var_rem >= 4l;
-var5 = var11;
-goto RET_LABEL6;
-RET_LABEL6:(void)0;
+var76 = var_rem - 1l;
+var70 = var76;
+goto RET_LABEL71;
+RET_LABEL71:(void)0;
 }
 }
-if (var5){
+var_rem = var70;
+goto BREAK_label77;
+} else {
+}
 {
-{ /* Inline native#NativeString#fetch_4_chars (self,var_pos) on <self:NativeString> */
-var14 = (long)*((uint32_t*)(self + var_pos));
-var12 = var14;
-goto RET_LABEL13;
-RET_LABEL13:(void)0;
+var78 = core___core__CString___length_of_char_at(self, var_pos);
+}
+var_nxst = var78;
+{
+{ /* Inline kernel$Int$== (var_nxst,1l) on <var_nxst:Int> */
+var81 = var_nxst == 1l;
+var79 = var81;
+goto RET_LABEL80;
+RET_LABEL80:(void)0;
 }
 }
-var_i = var12;
+if (var79){
 {
-{ /* Inline math#Int#& (var_i,2155905152l) on <var_i:Int> */
-var17 = var_i & 2155905152l;
-var15 = var17;
-goto RET_LABEL16;
-RET_LABEL16:(void)0;
+{ /* Inline math$Byte$& (var_b,((unsigned char)0x80)) on <var_b:Byte> */
+var84 = var_b & ((unsigned char)0x80);
+var82 = var84;
+goto RET_LABEL83;
+RET_LABEL83:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#!= (var15,0l) on <var15:Int> */
-var20 = var15 == 0l;
-var21 = !var20;
-var18 = var21;
-goto RET_LABEL19;
-RET_LABEL19:(void)0;
+{ /* Inline kernel$Byte$== (var82,((unsigned char)0x00)) on <var82:Byte> */
+var87 = var82 == ((unsigned char)0x00);
+var85 = var87;
+goto RET_LABEL86;
+RET_LABEL86:(void)0;
 }
 }
-if (var18){
-goto BREAK_label;
+var_ok_st = var85;
 } else {
+{
+{ /* Inline kernel$Int$== (var_nxst,2l) on <var_nxst:Int> */
+var90 = var_nxst == 2l;
+var88 = var90;
+goto RET_LABEL89;
+RET_LABEL89:(void)0;
 }
+}
+if (var88){
 {
-{ /* Inline kernel#Int#+ (var_pos,4l) on <var_pos:Int> */
-/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
-/* <4l:Int> isa OTHER */
-var24 = 1; /* easy <4l:Int> isa OTHER*/
-if (unlikely(!var24)) {
-var_class_name27 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
+{ /* Inline math$Byte$& (var_b,((unsigned char)0xe0)) on <var_b:Byte> */
+var93 = var_b & ((unsigned char)0xe0);
+var91 = var93;
+goto RET_LABEL92;
+RET_LABEL92:(void)0;
+}
+}
+{
+{ /* Inline kernel$Byte$== (var91,((unsigned char)0xc0)) on <var91:Byte> */
+var96 = var91 == ((unsigned char)0xc0);
+var94 = var96;
+goto RET_LABEL95;
+RET_LABEL95:(void)0;
+}
+}
+var_ok_st = var94;
+} else {
+{
+{ /* Inline kernel$Int$== (var_nxst,3l) on <var_nxst:Int> */
+var99 = var_nxst == 3l;
+var97 = var99;
+goto RET_LABEL98;
+RET_LABEL98:(void)0;
+}
+}
+if (var97){
+{
+{ /* Inline math$Byte$& (var_b,((unsigned char)0xf0)) on <var_b:Byte> */
+var102 = var_b & ((unsigned char)0xf0);
+var100 = var102;
+goto RET_LABEL101;
+RET_LABEL101:(void)0;
+}
+}
+{
+{ /* Inline kernel$Byte$== (var100,((unsigned char)0xe0)) on <var100:Byte> */
+var105 = var100 == ((unsigned char)0xe0);
+var103 = var105;
+goto RET_LABEL104;
+RET_LABEL104:(void)0;
+}
+}
+var_ok_st = var103;
+} else {
+{
+{ /* Inline math$Byte$& (var_b,((unsigned char)0xf8)) on <var_b:Byte> */
+var108 = var_b & ((unsigned char)0xf8);
+var106 = var108;
+goto RET_LABEL107;
+RET_LABEL107:(void)0;
+}
+}
+{
+{ /* Inline kernel$Byte$== (var106,((unsigned char)0xf0)) on <var106:Byte> */
+var111 = var106 == ((unsigned char)0xf0);
+var109 = var111;
+goto RET_LABEL110;
+RET_LABEL110:(void)0;
+}
+}
+var_ok_st = var109;
+}
+}
+}
+var112 = !var_ok_st;
+if (var112){
+if (var_replacements == NULL) {
+var113 = 1; /* is null */
+} else {
+var113 = 0; /* arg is null but recv is not */
+}
+if (0) {
+var114 = core___core__Array___core__kernel__Object___61d_61d(var_replacements, ((val*)NULL));
+var113 = var114;
+}
+if (var113){
+var115 = NEW_core__Array(&type_core__Array__core__Int);
+{
+core___core__Array___core__kernel__Object__init(var115); /* Direct call array$Array$init on <var115:Array[Int]>*/
+}
+var_replacements = var115;
+} else {
+}
+{
+var116 = (val*)(var_pos<<2|1);
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_replacements, var116); /* Direct call array$Array$add on <var_replacements:nullable Array[Int](Array[Int])>*/
+}
+{
+{ /* Inline kernel$Int$+ (var_end_length,2l) on <var_end_length:Int> */
+/* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
+/* <2l:Int> isa OTHER */
+var119 = 1; /* easy <2l:Int> isa OTHER*/
+if (unlikely(!var119)) {
+var_class_name122 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name122);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var123 = var_end_length + 2l;
+var117 = var123;
+goto RET_LABEL118;
+RET_LABEL118:(void)0;
+}
+}
+var_end_length = var117;
+{
+{ /* Inline kernel$Int$+ (var_pos,1l) on <var_pos:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var126 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var126)) {
+var_class_name129 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name129);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var130 = var_pos + 1l;
+var124 = var130;
+goto RET_LABEL125;
+RET_LABEL125:(void)0;
+}
+}
+var_pos = var124;
+{
+{ /* Inline kernel$Int$- (var_rem,1l) on <var_rem:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var133 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var133)) {
+var_class_name136 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name136);
 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
-var28 = var_pos + 4l;
-var22 = var28;
-goto RET_LABEL23;
-RET_LABEL23:(void)0;
+var137 = var_rem - 1l;
+var131 = var137;
+goto RET_LABEL132;
+RET_LABEL132:(void)0;
+}
+}
+var_rem = var131;
+{
+{ /* Inline kernel$Int$+ (var_chr_ln,1l) on <var_chr_ln:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var140 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var140)) {
+var_class_name143 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name143);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var144 = var_chr_ln + 1l;
+var138 = var144;
+goto RET_LABEL139;
+RET_LABEL139:(void)0;
+}
+}
+var_chr_ln = var138;
+goto BREAK_label77;
+} else {
+}
+{
+var145 = core___core__CString___char_at(self, var_pos);
+}
+var_c = var145;
+{
+{ /* Inline kernel$Char$code_point (var_c) on <var_c:Char> */
+var148 = (long)var_c;
+var146 = var148;
+goto RET_LABEL147;
+RET_LABEL147:(void)0;
 }
 }
-var_pos = var22;
+var_cp = var146;
 {
-{ /* Inline kernel#Int#+ (var_chr_ln,4l) on <var_chr_ln:Int> */
-/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
-/* <4l:Int> isa OTHER */
-var31 = 1; /* easy <4l:Int> isa OTHER*/
-if (unlikely(!var31)) {
-var_class_name34 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+{ /* Inline kernel$Int$== (var_nxst,1l) on <var_nxst:Int> */
+var151 = var_nxst == 1l;
+var149 = var151;
+goto RET_LABEL150;
+RET_LABEL150:(void)0;
+}
+}
+if (var149){
+{
+{ /* Inline kernel$Int$>= (var_cp,0l) on <var_cp:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var155 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var155)) {
+var_class_name158 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name158);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
 fatal_exit(1);
 }
-var35 = var_chr_ln + 4l;
-var29 = var35;
-goto RET_LABEL30;
-RET_LABEL30:(void)0;
+var159 = var_cp >= 0l;
+var153 = var159;
+goto RET_LABEL154;
+RET_LABEL154:(void)0;
 }
 }
-var_chr_ln = var29;
+var_ = var153;
+if (var153){
 {
-{ /* Inline kernel#Int#- (var_rem,4l) on <var_rem:Int> */
-/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
-/* <4l:Int> isa OTHER */
-var38 = 1; /* easy <4l:Int> isa OTHER*/
-if (unlikely(!var38)) {
-var_class_name41 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name41);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+{ /* Inline kernel$Int$<= (var_cp,127l) on <var_cp:Int> */
+/* Covariant cast for argument 0 (i) <127l:Int> isa OTHER */
+/* <127l:Int> isa OTHER */
+var162 = 1; /* easy <127l:Int> isa OTHER*/
+if (unlikely(!var162)) {
+var_class_name165 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name165);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
 fatal_exit(1);
 }
-var42 = var_rem - 4l;
-var36 = var42;
-goto RET_LABEL37;
-RET_LABEL37:(void)0;
+var166 = var_cp <= 127l;
+var160 = var166;
+goto RET_LABEL161;
+RET_LABEL161:(void)0;
 }
 }
-var_rem = var36;
+var152 = var160;
 } else {
-goto BREAK_label;
-}
+var152 = var_;
 }
-BREAK_label: (void)0;
+var_ok_c = var152;
+} else {
 {
-{ /* Inline kernel#Int#== (var_rem,0l) on <var_rem:Int> */
-var45 = var_rem == 0l;
-var43 = var45;
-goto RET_LABEL44;
-RET_LABEL44:(void)0;
-}
+{ /* Inline kernel$Int$== (var_nxst,2l) on <var_nxst:Int> */
+var169 = var_nxst == 2l;
+var167 = var169;
+goto RET_LABEL168;
+RET_LABEL168:(void)0;
 }
-if (var43){
-goto BREAK_label46;
-} else {
 }
+if (var167){
 {
-{ /* Inline native#NativeString#[] (self,var_pos) on <self:NativeString> */
-var49 = (unsigned char)((int)self[var_pos]);
-var47 = var49;
-goto RET_LABEL48;
-RET_LABEL48:(void)0;
+{ /* Inline kernel$Int$>= (var_cp,128l) on <var_cp:Int> */
+/* Covariant cast for argument 0 (i) <128l:Int> isa OTHER */
+/* <128l:Int> isa OTHER */
+var173 = 1; /* easy <128l:Int> isa OTHER*/
+if (unlikely(!var173)) {
+var_class_name176 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name176);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
+fatal_exit(1);
+}
+var177 = var_cp >= 128l;
+var171 = var177;
+goto RET_LABEL172;
+RET_LABEL172:(void)0;
 }
 }
-var_b = var47;
+var_178 = var171;
+if (var171){
 {
-{ /* Inline math#Byte#& (var_b,((unsigned char)0x80)) on <var_b:Byte> */
-var52 = var_b & ((unsigned char)0x80);
-var50 = var52;
-goto RET_LABEL51;
-RET_LABEL51:(void)0;
+{ /* Inline kernel$Int$<= (var_cp,2047l) on <var_cp:Int> */
+/* Covariant cast for argument 0 (i) <2047l:Int> isa OTHER */
+/* <2047l:Int> isa OTHER */
+var181 = 1; /* easy <2047l:Int> isa OTHER*/
+if (unlikely(!var181)) {
+var_class_name184 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name184);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
+fatal_exit(1);
 }
+var185 = var_cp <= 2047l;
+var179 = var185;
+goto RET_LABEL180;
+RET_LABEL180:(void)0;
 }
-{
-{ /* Inline kernel#Byte#== (var50,((unsigned char)0x00)) on <var50:Byte> */
-var55 = var50 == ((unsigned char)0x00);
-var53 = var55;
-goto RET_LABEL54;
-RET_LABEL54:(void)0;
 }
+var170 = var179;
+} else {
+var170 = var_178;
 }
-if (var53){
+var_ok_c = var170;
+} else {
 {
-{ /* Inline kernel#Int#+ (var_pos,1l) on <var_pos:Int> */
-/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
-/* <1l:Int> isa OTHER */
-var58 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var58)) {
-var_class_name61 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name61);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
-fatal_exit(1);
-}
-var62 = var_pos + 1l;
-var56 = var62;
-goto RET_LABEL57;
-RET_LABEL57:(void)0;
+{ /* Inline kernel$Int$== (var_nxst,3l) on <var_nxst:Int> */
+var188 = var_nxst == 3l;
+var186 = var188;
+goto RET_LABEL187;
+RET_LABEL187:(void)0;
 }
 }
-var_pos = var56;
+if (var186){
 {
-{ /* Inline kernel#Int#+ (var_chr_ln,1l) on <var_chr_ln:Int> */
-/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
-/* <1l:Int> isa OTHER */
-var65 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var65)) {
-var_class_name68 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name68);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+{ /* Inline kernel$Int$>= (var_cp,2048l) on <var_cp:Int> */
+/* Covariant cast for argument 0 (i) <2048l:Int> isa OTHER */
+/* <2048l:Int> isa OTHER */
+var192 = 1; /* easy <2048l:Int> isa OTHER*/
+if (unlikely(!var192)) {
+var_class_name195 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name195);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
 fatal_exit(1);
 }
-var69 = var_chr_ln + 1l;
-var63 = var69;
-goto RET_LABEL64;
-RET_LABEL64:(void)0;
+var196 = var_cp >= 2048l;
+var190 = var196;
+goto RET_LABEL191;
+RET_LABEL191:(void)0;
 }
 }
-var_chr_ln = var63;
+var_197 = var190;
+if (var190){
 {
-{ /* Inline kernel#Int#- (var_rem,1l) on <var_rem:Int> */
-/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
-/* <1l:Int> isa OTHER */
-var72 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var72)) {
-var_class_name75 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name75);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+{ /* Inline kernel$Int$<= (var_cp,65535l) on <var_cp:Int> */
+/* Covariant cast for argument 0 (i) <65535l:Int> isa OTHER */
+/* <65535l:Int> isa OTHER */
+var200 = 1; /* easy <65535l:Int> isa OTHER*/
+if (unlikely(!var200)) {
+var_class_name203 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name203);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
 fatal_exit(1);
 }
-var76 = var_rem - 1l;
-var70 = var76;
-goto RET_LABEL71;
-RET_LABEL71:(void)0;
+var204 = var_cp <= 65535l;
+var198 = var204;
+goto RET_LABEL199;
+RET_LABEL199:(void)0;
 }
 }
-var_rem = var70;
-goto BREAK_label77;
+var189 = var198;
 } else {
+var189 = var_197;
 }
+var_ok_c = var189;
+var_208 = var_ok_c;
+if (var_ok_c){
 {
-var78 = core___core__NativeString___length_of_char_at(self, var_pos);
+{ /* Inline kernel$Int$>= (var_cp,55296l) on <var_cp:Int> */
+/* Covariant cast for argument 0 (i) <55296l:Int> isa OTHER */
+/* <55296l:Int> isa OTHER */
+var212 = 1; /* easy <55296l:Int> isa OTHER*/
+if (unlikely(!var212)) {
+var_class_name215 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name215);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
+fatal_exit(1);
 }
-var_nxst = var78;
-{
-{ /* Inline kernel#Int#== (var_nxst,1l) on <var_nxst:Int> */
-var81 = var_nxst == 1l;
-var79 = var81;
-goto RET_LABEL80;
-RET_LABEL80:(void)0;
+var216 = var_cp >= 55296l;
+var210 = var216;
+goto RET_LABEL211;
+RET_LABEL211:(void)0;
 }
 }
-if (var79){
+var_217 = var210;
+if (var210){
 {
-{ /* Inline math#Byte#& (var_b,((unsigned char)0x80)) on <var_b:Byte> */
-var84 = var_b & ((unsigned char)0x80);
-var82 = var84;
-goto RET_LABEL83;
-RET_LABEL83:(void)0;
-}
+{ /* Inline kernel$Int$<= (var_cp,57343l) on <var_cp:Int> */
+/* Covariant cast for argument 0 (i) <57343l:Int> isa OTHER */
+/* <57343l:Int> isa OTHER */
+var220 = 1; /* easy <57343l:Int> isa OTHER*/
+if (unlikely(!var220)) {
+var_class_name223 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name223);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
+fatal_exit(1);
 }
-{
-{ /* Inline kernel#Byte#== (var82,((unsigned char)0x00)) on <var82:Byte> */
-var87 = var82 == ((unsigned char)0x00);
-var85 = var87;
-goto RET_LABEL86;
-RET_LABEL86:(void)0;
+var224 = var_cp <= 57343l;
+var218 = var224;
+goto RET_LABEL219;
+RET_LABEL219:(void)0;
 }
 }
-var_ok_st = var85;
+var209 = var218;
 } else {
-{
-{ /* Inline kernel#Int#== (var_nxst,2l) on <var_nxst:Int> */
-var90 = var_nxst == 2l;
-var88 = var90;
-goto RET_LABEL89;
-RET_LABEL89:(void)0;
+var209 = var_217;
 }
+var225 = !var209;
+var207 = var225;
+} else {
+var207 = var_208;
 }
-if (var88){
+var_226 = var207;
+if (var207){
 {
-{ /* Inline math#Byte#& (var_b,((unsigned char)0xe0)) on <var_b:Byte> */
-var93 = var_b & ((unsigned char)0xe0);
-var91 = var93;
-goto RET_LABEL92;
-RET_LABEL92:(void)0;
+{ /* Inline kernel$Int$!= (var_cp,65534l) on <var_cp:Int> */
+var229 = var_cp == 65534l;
+var230 = !var229;
+var227 = var230;
+goto RET_LABEL228;
+RET_LABEL228:(void)0;
+}
 }
+var206 = var227;
+} else {
+var206 = var_226;
 }
+var_231 = var206;
+if (var206){
 {
-{ /* Inline kernel#Byte#== (var91,((unsigned char)0xc0)) on <var91:Byte> */
-var96 = var91 == ((unsigned char)0xc0);
-var94 = var96;
-goto RET_LABEL95;
-RET_LABEL95:(void)0;
+{ /* Inline kernel$Int$!= (var_cp,65535l) on <var_cp:Int> */
+var234 = var_cp == 65535l;
+var235 = !var234;
+var232 = var235;
+goto RET_LABEL233;
+RET_LABEL233:(void)0;
 }
 }
-var_ok_st = var94;
+var205 = var232;
 } else {
-{
-{ /* Inline kernel#Int#== (var_nxst,3l) on <var_nxst:Int> */
-var99 = var_nxst == 3l;
-var97 = var99;
-goto RET_LABEL98;
-RET_LABEL98:(void)0;
-}
+var205 = var_231;
 }
-if (var97){
+var_ok_c = var205;
+} else {
 {
-{ /* Inline math#Byte#& (var_b,((unsigned char)0xf0)) on <var_b:Byte> */
-var102 = var_b & ((unsigned char)0xf0);
-var100 = var102;
-goto RET_LABEL101;
-RET_LABEL101:(void)0;
-}
+{ /* Inline kernel$Int$>= (var_cp,65536l) on <var_cp:Int> */
+/* Covariant cast for argument 0 (i) <65536l:Int> isa OTHER */
+/* <65536l:Int> isa OTHER */
+var239 = 1; /* easy <65536l:Int> isa OTHER*/
+if (unlikely(!var239)) {
+var_class_name242 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name242);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
+fatal_exit(1);
 }
-{
-{ /* Inline kernel#Byte#== (var100,((unsigned char)0xe0)) on <var100:Byte> */
-var105 = var100 == ((unsigned char)0xe0);
-var103 = var105;
-goto RET_LABEL104;
-RET_LABEL104:(void)0;
+var243 = var_cp >= 65536l;
+var237 = var243;
+goto RET_LABEL238;
+RET_LABEL238:(void)0;
 }
 }
-var_ok_st = var103;
-} else {
+var_244 = var237;
+if (var237){
 {
-{ /* Inline math#Byte#& (var_b,((unsigned char)0xf8)) on <var_b:Byte> */
-var108 = var_b & ((unsigned char)0xf8);
-var106 = var108;
-goto RET_LABEL107;
-RET_LABEL107:(void)0;
+{ /* Inline kernel$Int$<= (var_cp,1114111l) on <var_cp:Int> */
+/* Covariant cast for argument 0 (i) <1114111l:Int> isa OTHER */
+/* <1114111l:Int> isa OTHER */
+var247 = 1; /* easy <1114111l:Int> isa OTHER*/
+if (unlikely(!var247)) {
+var_class_name250 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name250);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
+fatal_exit(1);
 }
+var251 = var_cp <= 1114111l;
+var245 = var251;
+goto RET_LABEL246;
+RET_LABEL246:(void)0;
 }
-{
-{ /* Inline kernel#Byte#== (var106,((unsigned char)0xf0)) on <var106:Byte> */
-var111 = var106 == ((unsigned char)0xf0);
-var109 = var111;
-goto RET_LABEL110;
-RET_LABEL110:(void)0;
 }
+var236 = var245;
+} else {
+var236 = var_244;
 }
-var_ok_st = var109;
+var_ok_c = var236;
 }
 }
 }
-var112 = !var_ok_st;
-if (var112){
+var252 = !var_ok_c;
+if (var252){
 if (var_replacements == NULL) {
-var113 = 1; /* is null */
+var253 = 1; /* is null */
 } else {
-var113 = 0; /* arg is null but recv is not */
+var253 = 0; /* arg is null but recv is not */
 }
 if (0) {
-var114 = core___core__Array___core__kernel__Object___61d_61d(var_replacements, ((val*)NULL));
-var113 = var114;
+var254 = core___core__Array___core__kernel__Object___61d_61d(var_replacements, ((val*)NULL));
+var253 = var254;
 }
-if (var113){
-var115 = NEW_core__Array(&type_core__Array__core__Int);
+if (var253){
+var255 = NEW_core__Array(&type_core__Array__core__Int);
 {
-core___core__Array___core__kernel__Object__init(var115); /* Direct call array#Array#init on <var115:Array[Int]>*/
+core___core__Array___core__kernel__Object__init(var255); /* Direct call array$Array$init on <var255:Array[Int]>*/
 }
-var_replacements = var115;
+var_replacements = var255;
 } else {
 }
 {
-var116 = (val*)(var_pos<<2|1);
-core___core__Array___core__abstract_collection__SimpleCollection__add(var_replacements, var116); /* Direct call array#Array#add on <var_replacements:nullable Array[Int](Array[Int])>*/
+var256 = (val*)(var_pos<<2|1);
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_replacements, var256); /* Direct call array$Array$add on <var_replacements:nullable Array[Int](Array[Int])>*/
 }
 {
-{ /* Inline kernel#Int#+ (var_end_length,2l) on <var_end_length:Int> */
+{ /* Inline kernel$Int$+ (var_end_length,2l) on <var_end_length:Int> */
 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
 /* <2l:Int> isa OTHER */
-var119 = 1; /* easy <2l:Int> isa OTHER*/
-if (unlikely(!var119)) {
-var_class_name122 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name122);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var259 = 1; /* easy <2l:Int> isa OTHER*/
+if (unlikely(!var259)) {
+var_class_name262 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name262);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var123 = var_end_length + 2l;
-var117 = var123;
-goto RET_LABEL118;
-RET_LABEL118:(void)0;
+var263 = var_end_length + 2l;
+var257 = var263;
+goto RET_LABEL258;
+RET_LABEL258:(void)0;
 }
 }
-var_end_length = var117;
+var_end_length = var257;
 {
-{ /* Inline kernel#Int#+ (var_pos,1l) on <var_pos:Int> */
+{ /* Inline kernel$Int$+ (var_pos,1l) on <var_pos:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var126 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var126)) {
-var_class_name129 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name129);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var266 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var266)) {
+var_class_name269 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name269);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var130 = var_pos + 1l;
-var124 = var130;
-goto RET_LABEL125;
-RET_LABEL125:(void)0;
+var270 = var_pos + 1l;
+var264 = var270;
+goto RET_LABEL265;
+RET_LABEL265:(void)0;
 }
 }
-var_pos = var124;
+var_pos = var264;
 {
-{ /* Inline kernel#Int#- (var_rem,1l) on <var_rem:Int> */
+{ /* Inline kernel$Int$+ (var_chr_ln,1l) on <var_chr_ln:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var133 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var133)) {
-var_class_name136 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name136);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+var273 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var273)) {
+var_class_name276 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name276);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var137 = var_rem - 1l;
-var131 = var137;
-goto RET_LABEL132;
-RET_LABEL132:(void)0;
+var277 = var_chr_ln + 1l;
+var271 = var277;
+goto RET_LABEL272;
+RET_LABEL272:(void)0;
 }
 }
-var_rem = var131;
+var_chr_ln = var271;
 {
-{ /* Inline kernel#Int#+ (var_chr_ln,1l) on <var_chr_ln:Int> */
+{ /* Inline kernel$Int$- (var_rem,1l) on <var_rem:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var140 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var140)) {
-var_class_name143 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name143);
+var280 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var280)) {
+var_class_name283 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name283);
 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
-var144 = var_chr_ln + 1l;
-var138 = var144;
-goto RET_LABEL139;
-RET_LABEL139:(void)0;
+var284 = var_rem - 1l;
+var278 = var284;
+goto RET_LABEL279;
+RET_LABEL279:(void)0;
 }
 }
-var_chr_ln = var138;
+var_rem = var278;
 goto BREAK_label77;
 } else {
 }
 {
-var145 = core___core__NativeString___char_at(self, var_pos);
+var285 = core__abstract_text___Char___u8char_len(var_c);
 }
-var_c = var145;
+var_clen = var285;
 {
-{ /* Inline kernel#Char#code_point (var_c) on <var_c:Char> */
-var148 = (long)var_c;
-var146 = var148;
-goto RET_LABEL147;
-RET_LABEL147:(void)0;
+{ /* Inline kernel$Int$+ (var_pos,var_clen) on <var_pos:Int> */
+/* Covariant cast for argument 0 (i) <var_clen:Int> isa OTHER */
+/* <var_clen:Int> isa OTHER */
+var288 = 1; /* easy <var_clen:Int> isa OTHER*/
+if (unlikely(!var288)) {
+var_class_name291 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name291);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var292 = var_pos + var_clen;
+var286 = var292;
+goto RET_LABEL287;
+RET_LABEL287:(void)0;
+}
+}
+var_pos = var286;
+{
+{ /* Inline kernel$Int$- (var_rem,var_clen) on <var_rem:Int> */
+/* Covariant cast for argument 0 (i) <var_clen:Int> isa OTHER */
+/* <var_clen:Int> isa OTHER */
+var295 = 1; /* easy <var_clen:Int> isa OTHER*/
+if (unlikely(!var295)) {
+var_class_name298 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name298);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+fatal_exit(1);
+}
+var299 = var_rem - var_clen;
+var293 = var299;
+goto RET_LABEL294;
+RET_LABEL294:(void)0;
+}
+}
+var_rem = var293;
+{
+{ /* Inline kernel$Int$+ (var_chr_ln,1l) on <var_chr_ln:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var302 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var302)) {
+var_class_name305 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name305);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var306 = var_chr_ln + 1l;
+var300 = var306;
+goto RET_LABEL301;
+RET_LABEL301:(void)0;
+}
+}
+var_chr_ln = var300;
+} else {
+goto BREAK_label46;
+}
+BREAK_label77: (void)0;
+}
+BREAK_label46: (void)0;
+var_ret = self;
+{
+{ /* Inline kernel$Int$!= (var_end_length,var_len) on <var_end_length:Int> */
+var309 = var_end_length == var_len;
+var310 = !var309;
+var307 = var310;
+goto RET_LABEL308;
+RET_LABEL308:(void)0;
+}
+}
+if (var307){
+if (likely(varoncenew_guard)) {
+var311 = varoncenew;
+} else {
+var312 = NULL/*special!*/;
+var311 = var312;
+varoncenew = var311;
+varoncenew_guard = 1;
+}
+{
+{ /* Inline native$CString$new (var311,var_end_length) on <var311:CString> */
+var315 = (char*)nit_alloc(var_end_length);
+var313 = var315;
+goto RET_LABEL314;
+RET_LABEL314:(void)0;
+}
+}
+var_ret = var313;
+var_old_repl = 0l;
+var_off = 0l;
+if (unlikely(var_replacements == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
 }
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1427);
+fatal_exit(1);
 }
-var_cp = var146;
+var_repls = var_replacements;
 {
-{ /* Inline kernel#Int#== (var_nxst,1l) on <var_nxst:Int> */
-var151 = var_nxst == 1l;
-var149 = var151;
-goto RET_LABEL150;
-RET_LABEL150:(void)0;
+{ /* Inline array$Array$items (var_repls) on <var_repls:Array[Int]> */
+var318 = var_repls->attrs[COLOR_core__array__Array___items].val; /* _items on <var_repls:Array[Int]> */
+var316 = var318;
+RET_LABEL317:(void)0;
 }
 }
-if (var149){
-{
-{ /* Inline kernel#Int#>= (var_cp,0l) on <var_cp:Int> */
-/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
-/* <0l:Int> isa OTHER */
-var155 = 1; /* easy <0l:Int> isa OTHER*/
-if (unlikely(!var155)) {
-var_class_name158 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name158);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
+if (unlikely(var316 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1428);
 fatal_exit(1);
 }
-var159 = var_cp >= 0l;
-var153 = var159;
-goto RET_LABEL154;
-RET_LABEL154:(void)0;
+var_r = var316;
+{
+{ /* Inline array$AbstractArrayRead$length (var_repls) on <var_repls:Array[Int]> */
+var321 = var_repls->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_repls:Array[Int]> */
+var319 = var321;
+RET_LABEL320:(void)0;
 }
 }
-var_ = var153;
-if (var153){
+var_imax = var319;
+var_i322 = 0l;
+var_323 = var_imax;
+for(;;) {
 {
-{ /* Inline kernel#Int#<= (var_cp,127l) on <var_cp:Int> */
-/* Covariant cast for argument 0 (i) <127l:Int> isa OTHER */
-/* <127l:Int> isa OTHER */
-var162 = 1; /* easy <127l:Int> isa OTHER*/
-if (unlikely(!var162)) {
-var_class_name165 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name165);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
+{ /* Inline kernel$Int$< (var_i322,var_323) on <var_i322:Int> */
+/* Covariant cast for argument 0 (i) <var_323:Int> isa OTHER */
+/* <var_323:Int> isa OTHER */
+var326 = 1; /* easy <var_323:Int> isa OTHER*/
+if (unlikely(!var326)) {
+var_class_name329 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name329);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
 fatal_exit(1);
 }
-var166 = var_cp <= 127l;
-var160 = var166;
-goto RET_LABEL161;
-RET_LABEL161:(void)0;
+var330 = var_i322 < var_323;
+var324 = var330;
+goto RET_LABEL325;
+RET_LABEL325:(void)0;
 }
 }
-var152 = var160;
+if (var324){
 } else {
-var152 = var_;
+goto BREAK_label331;
 }
-var_ok_c = var152;
-} else {
 {
-{ /* Inline kernel#Int#== (var_nxst,2l) on <var_nxst:Int> */
-var169 = var_nxst == 2l;
-var167 = var169;
-goto RET_LABEL168;
-RET_LABEL168:(void)0;
+{ /* Inline array$NativeArray$[] (var_r,var_i322) on <var_r:NativeArray[Int]> */
+var334 = ((struct instance_core__NativeArray*)var_r)->values[var_i322];
+var332 = var334;
+goto RET_LABEL333;
+RET_LABEL333:(void)0;
 }
 }
-if (var167){
+var335 = (long)(var332)>>2;
+var_repl_pos = var335;
 {
-{ /* Inline kernel#Int#>= (var_cp,128l) on <var_cp:Int> */
-/* Covariant cast for argument 0 (i) <128l:Int> isa OTHER */
-/* <128l:Int> isa OTHER */
-var173 = 1; /* easy <128l:Int> isa OTHER*/
-if (unlikely(!var173)) {
-var_class_name176 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name176);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
+{ /* Inline kernel$Int$- (var_repl_pos,var_old_repl) on <var_repl_pos:Int> */
+/* Covariant cast for argument 0 (i) <var_old_repl:Int> isa OTHER */
+/* <var_old_repl:Int> isa OTHER */
+var338 = 1; /* easy <var_old_repl:Int> isa OTHER*/
+if (unlikely(!var338)) {
+var_class_name341 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name341);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
-var177 = var_cp >= 128l;
-var171 = var177;
-goto RET_LABEL172;
-RET_LABEL172:(void)0;
+var342 = var_repl_pos - var_old_repl;
+var336 = var342;
+goto RET_LABEL337;
+RET_LABEL337:(void)0;
 }
 }
-var_178 = var171;
-if (var171){
+var_chkln = var336;
 {
-{ /* Inline kernel#Int#<= (var_cp,2047l) on <var_cp:Int> */
-/* Covariant cast for argument 0 (i) <2047l:Int> isa OTHER */
-/* <2047l:Int> isa OTHER */
-var181 = 1; /* easy <2047l:Int> isa OTHER*/
-if (unlikely(!var181)) {
-var_class_name184 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name184);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
-fatal_exit(1);
+{ /* Inline native$CString$copy_to (self,var_ret,var_chkln,var_old_repl,var_off) on <self:CString> */
+memmove(var_ret+var_off,self+var_old_repl,var_chkln);
+RET_LABEL343:(void)0;
 }
-var185 = var_cp <= 2047l;
-var179 = var185;
-goto RET_LABEL180;
-RET_LABEL180:(void)0;
 }
+{
+{ /* Inline kernel$Int$+ (var_off,var_chkln) on <var_off:Int> */
+/* Covariant cast for argument 0 (i) <var_chkln:Int> isa OTHER */
+/* <var_chkln:Int> isa OTHER */
+var346 = 1; /* easy <var_chkln:Int> isa OTHER*/
+if (unlikely(!var346)) {
+var_class_name349 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name349);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
 }
-var170 = var179;
-} else {
-var170 = var_178;
+var350 = var_off + var_chkln;
+var344 = var350;
+goto RET_LABEL345;
+RET_LABEL345:(void)0;
 }
-var_ok_c = var170;
-} else {
+}
+var_off = var344;
 {
-{ /* Inline kernel#Int#== (var_nxst,3l) on <var_nxst:Int> */
-var188 = var_nxst == 3l;
-var186 = var188;
-goto RET_LABEL187;
-RET_LABEL187:(void)0;
+{ /* Inline native$CString$[]= (var_ret,var_off,((unsigned char)0xef)) on <var_ret:CString> */
+var_ret[var_off]=(unsigned char)((unsigned char)0xef);
+RET_LABEL351:(void)0;
 }
 }
-if (var186){
 {
-{ /* Inline kernel#Int#>= (var_cp,2048l) on <var_cp:Int> */
-/* Covariant cast for argument 0 (i) <2048l:Int> isa OTHER */
-/* <2048l:Int> isa OTHER */
-var192 = 1; /* easy <2048l:Int> isa OTHER*/
-if (unlikely(!var192)) {
-var_class_name195 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name195);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
+{ /* Inline kernel$Int$+ (var_off,1l) on <var_off:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var354 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var354)) {
+var_class_name357 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name357);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var196 = var_cp >= 2048l;
-var190 = var196;
-goto RET_LABEL191;
-RET_LABEL191:(void)0;
+var358 = var_off + 1l;
+var352 = var358;
+goto RET_LABEL353;
+RET_LABEL353:(void)0;
 }
 }
-var_197 = var190;
-if (var190){
 {
-{ /* Inline kernel#Int#<= (var_cp,65535l) on <var_cp:Int> */
-/* Covariant cast for argument 0 (i) <65535l:Int> isa OTHER */
-/* <65535l:Int> isa OTHER */
-var200 = 1; /* easy <65535l:Int> isa OTHER*/
-if (unlikely(!var200)) {
-var_class_name203 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name203);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
+{ /* Inline native$CString$[]= (var_ret,var352,((unsigned char)0xbf)) on <var_ret:CString> */
+var_ret[var352]=(unsigned char)((unsigned char)0xbf);
+RET_LABEL359:(void)0;
+}
+}
+{
+{ /* Inline kernel$Int$+ (var_off,2l) on <var_off:Int> */
+/* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
+/* <2l:Int> isa OTHER */
+var362 = 1; /* easy <2l:Int> isa OTHER*/
+if (unlikely(!var362)) {
+var_class_name365 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name365);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var204 = var_cp <= 65535l;
-var198 = var204;
-goto RET_LABEL199;
-RET_LABEL199:(void)0;
+var366 = var_off + 2l;
+var360 = var366;
+goto RET_LABEL361;
+RET_LABEL361:(void)0;
 }
 }
-var189 = var198;
-} else {
-var189 = var_197;
+{
+{ /* Inline native$CString$[]= (var_ret,var360,((unsigned char)0xbd)) on <var_ret:CString> */
+var_ret[var360]=(unsigned char)((unsigned char)0xbd);
+RET_LABEL367:(void)0;
+}
 }
-var_ok_c = var189;
-var_208 = var_ok_c;
-if (var_ok_c){
 {
-{ /* Inline kernel#Int#>= (var_cp,55296l) on <var_cp:Int> */
-/* Covariant cast for argument 0 (i) <55296l:Int> isa OTHER */
-/* <55296l:Int> isa OTHER */
-var212 = 1; /* easy <55296l:Int> isa OTHER*/
-if (unlikely(!var212)) {
-var_class_name215 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name215);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
+{ /* Inline kernel$Int$+ (var_repl_pos,1l) on <var_repl_pos:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var370 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var370)) {
+var_class_name373 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name373);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var216 = var_cp >= 55296l;
-var210 = var216;
-goto RET_LABEL211;
-RET_LABEL211:(void)0;
+var374 = var_repl_pos + 1l;
+var368 = var374;
+goto RET_LABEL369;
+RET_LABEL369:(void)0;
 }
 }
-var_217 = var210;
-if (var210){
+var_old_repl = var368;
 {
-{ /* Inline kernel#Int#<= (var_cp,57343l) on <var_cp:Int> */
-/* Covariant cast for argument 0 (i) <57343l:Int> isa OTHER */
-/* <57343l:Int> isa OTHER */
-var220 = 1; /* easy <57343l:Int> isa OTHER*/
-if (unlikely(!var220)) {
-var_class_name223 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name223);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
+{ /* Inline kernel$Int$+ (var_off,3l) on <var_off:Int> */
+/* Covariant cast for argument 0 (i) <3l:Int> isa OTHER */
+/* <3l:Int> isa OTHER */
+var377 = 1; /* easy <3l:Int> isa OTHER*/
+if (unlikely(!var377)) {
+var_class_name380 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name380);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var224 = var_cp <= 57343l;
-var218 = var224;
-goto RET_LABEL219;
-RET_LABEL219:(void)0;
+var381 = var_off + 3l;
+var375 = var381;
+goto RET_LABEL376;
+RET_LABEL376:(void)0;
 }
 }
-var209 = var218;
-} else {
-var209 = var_217;
+var_off = var375;
+{
+var382 = core___core__Int___Discrete__successor(var_i322, 1l);
 }
-var225 = !var209;
-var207 = var225;
-} else {
-var207 = var_208;
+var_i322 = var382;
 }
-var_226 = var207;
-if (var207){
+BREAK_label331: (void)0;
 {
-{ /* Inline kernel#Int#!= (var_cp,65534l) on <var_cp:Int> */
-var229 = var_cp == 65534l;
-var230 = !var229;
-var227 = var230;
-goto RET_LABEL228;
-RET_LABEL228:(void)0;
+{ /* Inline kernel$Int$- (var_len,var_old_repl) on <var_len:Int> */
+/* Covariant cast for argument 0 (i) <var_old_repl:Int> isa OTHER */
+/* <var_old_repl:Int> isa OTHER */
+var385 = 1; /* easy <var_old_repl:Int> isa OTHER*/
+if (unlikely(!var385)) {
+var_class_name388 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name388);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+fatal_exit(1);
 }
+var389 = var_len - var_old_repl;
+var383 = var389;
+goto RET_LABEL384;
+RET_LABEL384:(void)0;
 }
-var206 = var227;
-} else {
-var206 = var_226;
 }
-var_231 = var206;
-if (var206){
 {
-{ /* Inline kernel#Int#!= (var_cp,65535l) on <var_cp:Int> */
-var234 = var_cp == 65535l;
-var235 = !var234;
-var232 = var235;
-goto RET_LABEL233;
-RET_LABEL233:(void)0;
+{ /* Inline native$CString$copy_to (self,var_ret,var383,var_old_repl,var_off) on <self:CString> */
+memmove(var_ret+var_off,self+var_old_repl,var383);
+RET_LABEL390:(void)0;
 }
 }
-var205 = var232;
 } else {
-var205 = var_231;
 }
-var_ok_c = var205;
+if (likely(varoncenew391_guard)) {
+var392 = varoncenew391;
 } else {
+var393 = NEW_core__FlatString(&type_core__FlatString);
+var392 = var393;
+varoncenew391 = var392;
+varoncenew391_guard = 1;
+}
 {
-{ /* Inline kernel#Int#>= (var_cp,65536l) on <var_cp:Int> */
-/* Covariant cast for argument 0 (i) <65536l:Int> isa OTHER */
-/* <65536l:Int> isa OTHER */
-var239 = 1; /* easy <65536l:Int> isa OTHER*/
-if (unlikely(!var239)) {
-var_class_name242 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name242);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
-fatal_exit(1);
+var394 = core___core__FlatString___full(var392, var_ret, var_end_length, 0l, var_chr_ln);
 }
-var243 = var_cp >= 65536l;
-var237 = var243;
-goto RET_LABEL238;
-RET_LABEL238:(void)0;
+var = var394;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method flat$CString$set_char_at for (self: CString, Int, Char) */
+void core__flat___CString___set_char_at(char* self, long p0, uint32_t p1) {
+long var_pos /* var pos: Int */;
+uint32_t var_c /* var c: Char */;
+long var /* : Int */;
+long var2 /* : Int */;
+long var_cp /* var cp: Int */;
+short int var3 /* : Bool */;
+short int var5 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var6 /* : Bool */;
+unsigned char var7 /* : Byte */;
+unsigned char var9 /* : Byte */;
+long var11 /* : Int */;
+long var_ln /* var ln: Int */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+long var15 /* : Int */;
+long var17 /* : Int */;
+long var18 /* : Int */;
+long var20 /* : Int */;
+long var21 /* : Int */;
+long var23 /* : Int */;
+unsigned char var24 /* : Byte */;
+unsigned char var26 /* : Byte */;
+long var28 /* : Int */;
+short int var30 /* : Bool */;
+int cltype31;
+int idtype32;
+const char* var_class_name33;
+long var34 /* : Int */;
+long var35 /* : Int */;
+long var37 /* : Int */;
+long var38 /* : Int */;
+long var40 /* : Int */;
+unsigned char var41 /* : Byte */;
+unsigned char var43 /* : Byte */;
+short int var45 /* : Bool */;
+short int var47 /* : Bool */;
+long var48 /* : Int */;
+long var50 /* : Int */;
+long var51 /* : Int */;
+long var53 /* : Int */;
+long var54 /* : Int */;
+long var56 /* : Int */;
+unsigned char var57 /* : Byte */;
+unsigned char var59 /* : Byte */;
+long var61 /* : Int */;
+short int var63 /* : Bool */;
+int cltype64;
+int idtype65;
+const char* var_class_name66;
+long var67 /* : Int */;
+long var68 /* : Int */;
+long var70 /* : Int */;
+long var71 /* : Int */;
+long var73 /* : Int */;
+long var74 /* : Int */;
+long var76 /* : Int */;
+unsigned char var77 /* : Byte */;
+unsigned char var79 /* : Byte */;
+long var81 /* : Int */;
+short int var83 /* : Bool */;
+int cltype84;
+int idtype85;
+const char* var_class_name86;
+long var87 /* : Int */;
+long var88 /* : Int */;
+long var90 /* : Int */;
+long var91 /* : Int */;
+long var93 /* : Int */;
+unsigned char var94 /* : Byte */;
+unsigned char var96 /* : Byte */;
+short int var98 /* : Bool */;
+short int var100 /* : Bool */;
+long var101 /* : Int */;
+long var103 /* : Int */;
+long var104 /* : Int */;
+long var106 /* : Int */;
+long var107 /* : Int */;
+long var109 /* : Int */;
+unsigned char var110 /* : Byte */;
+unsigned char var112 /* : Byte */;
+long var114 /* : Int */;
+short int var116 /* : Bool */;
+int cltype117;
+int idtype118;
+const char* var_class_name119;
+long var120 /* : Int */;
+long var121 /* : Int */;
+long var123 /* : Int */;
+long var124 /* : Int */;
+long var126 /* : Int */;
+long var127 /* : Int */;
+long var129 /* : Int */;
+unsigned char var130 /* : Byte */;
+unsigned char var132 /* : Byte */;
+long var134 /* : Int */;
+short int var136 /* : Bool */;
+int cltype137;
+int idtype138;
+const char* var_class_name139;
+long var140 /* : Int */;
+long var141 /* : Int */;
+long var143 /* : Int */;
+long var144 /* : Int */;
+long var146 /* : Int */;
+long var147 /* : Int */;
+long var149 /* : Int */;
+unsigned char var150 /* : Byte */;
+unsigned char var152 /* : Byte */;
+long var154 /* : Int */;
+short int var156 /* : Bool */;
+int cltype157;
+int idtype158;
+const char* var_class_name159;
+long var160 /* : Int */;
+long var161 /* : Int */;
+long var163 /* : Int */;
+long var164 /* : Int */;
+long var166 /* : Int */;
+unsigned char var167 /* : Byte */;
+unsigned char var169 /* : Byte */;
+var_pos = p0;
+var_c = p1;
+{
+{ /* Inline kernel$Char$code_point (var_c) on <var_c:Char> */
+var2 = (long)var_c;
+var = var2;
+goto RET_LABEL1;
+RET_LABEL1:(void)0;
+}
+}
+var_cp = var;
+{
+{ /* Inline kernel$Int$< (var_cp,128l) on <var_cp:Int> */
+/* Covariant cast for argument 0 (i) <128l:Int> isa OTHER */
+/* <128l:Int> isa OTHER */
+var5 = 1; /* easy <128l:Int> isa OTHER*/
+if (unlikely(!var5)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
+fatal_exit(1);
 }
+var6 = var_cp < 128l;
+var3 = var6;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
 }
-var_244 = var237;
-if (var237){
+}
+if (var3){
 {
-{ /* Inline kernel#Int#<= (var_cp,1114111l) on <var_cp:Int> */
-/* Covariant cast for argument 0 (i) <1114111l:Int> isa OTHER */
-/* <1114111l:Int> isa OTHER */
-var247 = 1; /* easy <1114111l:Int> isa OTHER*/
-if (unlikely(!var247)) {
-var_class_name250 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name250);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
-fatal_exit(1);
+{ /* Inline kernel$Int$to_b (var_cp) on <var_cp:Int> */
+var9 = (unsigned char)var_cp;
+var7 = var9;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
 }
-var251 = var_cp <= 1114111l;
-var245 = var251;
-goto RET_LABEL246;
-RET_LABEL246:(void)0;
+}
+{
+{ /* Inline native$CString$[]= (self,var_pos,var7) on <self:CString> */
+self[var_pos]=(unsigned char)var7;
+RET_LABEL10:(void)0;
 }
 }
-var236 = var245;
+goto RET_LABEL;
 } else {
-var236 = var_244;
 }
-var_ok_c = var236;
+{
+var11 = core__abstract_text___Char___u8char_len(var_c);
 }
+var_ln = var11;
+{
+{ /* Inline kernel$Int$== (var_ln,2l) on <var_ln:Int> */
+var14 = var_ln == 2l;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
 }
-var252 = !var_ok_c;
-if (var252){
-if (var_replacements == NULL) {
-var253 = 1; /* is null */
-} else {
-var253 = 0; /* arg is null but recv is not */
+if (var12){
+{
+{ /* Inline math$Int$& (var_cp,1984l) on <var_cp:Int> */
+var17 = var_cp & 1984l;
+var15 = var17;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
 }
-if (0) {
-var254 = core___core__Array___core__kernel__Object___61d_61d(var_replacements, ((val*)NULL));
-var253 = var254;
 }
-if (var253){
-var255 = NEW_core__Array(&type_core__Array__core__Int);
 {
-core___core__Array___core__kernel__Object__init(var255); /* Direct call array#Array#init on <var255:Array[Int]>*/
+{ /* Inline kernel$Int$>> (var15,6l) on <var15:Int> */
+var20 = var15 >> 6l;
+var18 = var20;
+goto RET_LABEL19;
+RET_LABEL19:(void)0;
 }
-var_replacements = var255;
-} else {
 }
 {
-var256 = (val*)(var_pos<<2|1);
-core___core__Array___core__abstract_collection__SimpleCollection__add(var_replacements, var256); /* Direct call array#Array#add on <var_replacements:nullable Array[Int](Array[Int])>*/
+{ /* Inline math$Int$| (192l,var18) on <192l:Int> */
+var23 = 192l | var18;
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
+}
 }
 {
-{ /* Inline kernel#Int#+ (var_end_length,2l) on <var_end_length:Int> */
-/* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
-/* <2l:Int> isa OTHER */
-var259 = 1; /* easy <2l:Int> isa OTHER*/
-if (unlikely(!var259)) {
-var_class_name262 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name262);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
-fatal_exit(1);
+{ /* Inline kernel$Int$to_b (var21) on <var21:Int> */
+var26 = (unsigned char)var21;
+var24 = var26;
+goto RET_LABEL25;
+RET_LABEL25:(void)0;
 }
-var263 = var_end_length + 2l;
-var257 = var263;
-goto RET_LABEL258;
-RET_LABEL258:(void)0;
+}
+{
+{ /* Inline native$CString$[]= (self,var_pos,var24) on <self:CString> */
+self[var_pos]=(unsigned char)var24;
+RET_LABEL27:(void)0;
 }
 }
-var_end_length = var257;
 {
-{ /* Inline kernel#Int#+ (var_pos,1l) on <var_pos:Int> */
+{ /* Inline kernel$Int$+ (var_pos,1l) on <var_pos:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var266 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var266)) {
-var_class_name269 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name269);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var30 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var30)) {
+var_class_name33 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var270 = var_pos + 1l;
-var264 = var270;
-goto RET_LABEL265;
-RET_LABEL265:(void)0;
+var34 = var_pos + 1l;
+var28 = var34;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
 }
 }
-var_pos = var264;
 {
-{ /* Inline kernel#Int#+ (var_chr_ln,1l) on <var_chr_ln:Int> */
-/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
-/* <1l:Int> isa OTHER */
-var273 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var273)) {
-var_class_name276 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name276);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
-fatal_exit(1);
+{ /* Inline math$Int$& (var_cp,63l) on <var_cp:Int> */
+var37 = var_cp & 63l;
+var35 = var37;
+goto RET_LABEL36;
+RET_LABEL36:(void)0;
 }
-var277 = var_chr_ln + 1l;
-var271 = var277;
-goto RET_LABEL272;
-RET_LABEL272:(void)0;
+}
+{
+{ /* Inline math$Int$| (128l,var35) on <128l:Int> */
+var40 = 128l | var35;
+var38 = var40;
+goto RET_LABEL39;
+RET_LABEL39:(void)0;
 }
 }
-var_chr_ln = var271;
 {
-{ /* Inline kernel#Int#- (var_rem,1l) on <var_rem:Int> */
-/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
-/* <1l:Int> isa OTHER */
-var280 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var280)) {
-var_class_name283 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name283);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
-fatal_exit(1);
+{ /* Inline kernel$Int$to_b (var38) on <var38:Int> */
+var43 = (unsigned char)var38;
+var41 = var43;
+goto RET_LABEL42;
+RET_LABEL42:(void)0;
 }
-var284 = var_rem - 1l;
-var278 = var284;
-goto RET_LABEL279;
-RET_LABEL279:(void)0;
+}
+{
+{ /* Inline native$CString$[]= (self,var28,var41) on <self:CString> */
+self[var28]=(unsigned char)var41;
+RET_LABEL44:(void)0;
 }
 }
-var_rem = var278;
-goto BREAK_label77;
 } else {
+{
+{ /* Inline kernel$Int$== (var_ln,3l) on <var_ln:Int> */
+var47 = var_ln == 3l;
+var45 = var47;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
+}
 }
+if (var45){
 {
-var285 = core__abstract_text___Char___u8char_len(var_c);
+{ /* Inline math$Int$& (var_cp,61440l) on <var_cp:Int> */
+var50 = var_cp & 61440l;
+var48 = var50;
+goto RET_LABEL49;
+RET_LABEL49:(void)0;
+}
 }
-var_clen = var285;
 {
-{ /* Inline kernel#Int#+ (var_pos,var_clen) on <var_pos:Int> */
-/* Covariant cast for argument 0 (i) <var_clen:Int> isa OTHER */
-/* <var_clen:Int> isa OTHER */
-var288 = 1; /* easy <var_clen:Int> isa OTHER*/
-if (unlikely(!var288)) {
-var_class_name291 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name291);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
-fatal_exit(1);
+{ /* Inline kernel$Int$>> (var48,12l) on <var48:Int> */
+var53 = var48 >> 12l;
+var51 = var53;
+goto RET_LABEL52;
+RET_LABEL52:(void)0;
 }
-var292 = var_pos + var_clen;
-var286 = var292;
-goto RET_LABEL287;
-RET_LABEL287:(void)0;
+}
+{
+{ /* Inline math$Int$| (224l,var51) on <224l:Int> */
+var56 = 224l | var51;
+var54 = var56;
+goto RET_LABEL55;
+RET_LABEL55:(void)0;
 }
 }
-var_pos = var286;
 {
-{ /* Inline kernel#Int#- (var_rem,var_clen) on <var_rem:Int> */
-/* Covariant cast for argument 0 (i) <var_clen:Int> isa OTHER */
-/* <var_clen:Int> isa OTHER */
-var295 = 1; /* easy <var_clen:Int> isa OTHER*/
-if (unlikely(!var295)) {
-var_class_name298 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name298);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
-fatal_exit(1);
+{ /* Inline kernel$Int$to_b (var54) on <var54:Int> */
+var59 = (unsigned char)var54;
+var57 = var59;
+goto RET_LABEL58;
+RET_LABEL58:(void)0;
 }
-var299 = var_rem - var_clen;
-var293 = var299;
-goto RET_LABEL294;
-RET_LABEL294:(void)0;
+}
+{
+{ /* Inline native$CString$[]= (self,var_pos,var57) on <self:CString> */
+self[var_pos]=(unsigned char)var57;
+RET_LABEL60:(void)0;
 }
 }
-var_rem = var293;
 {
-{ /* Inline kernel#Int#+ (var_chr_ln,1l) on <var_chr_ln:Int> */
+{ /* Inline kernel$Int$+ (var_pos,1l) on <var_pos:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var302 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var302)) {
-var_class_name305 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name305);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var63 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var63)) {
+var_class_name66 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name66);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var306 = var_chr_ln + 1l;
-var300 = var306;
-goto RET_LABEL301;
-RET_LABEL301:(void)0;
+var67 = var_pos + 1l;
+var61 = var67;
+goto RET_LABEL62;
+RET_LABEL62:(void)0;
 }
 }
-var_chr_ln = var300;
-} else {
-goto BREAK_label46;
+{
+{ /* Inline math$Int$& (var_cp,4032l) on <var_cp:Int> */
+var70 = var_cp & 4032l;
+var68 = var70;
+goto RET_LABEL69;
+RET_LABEL69:(void)0;
 }
-BREAK_label77: (void)0;
 }
-BREAK_label46: (void)0;
-var_ret = self;
 {
-{ /* Inline kernel#Int#!= (var_end_length,var_len) on <var_end_length:Int> */
-var309 = var_end_length == var_len;
-var310 = !var309;
-var307 = var310;
-goto RET_LABEL308;
-RET_LABEL308:(void)0;
+{ /* Inline kernel$Int$>> (var68,6l) on <var68:Int> */
+var73 = var68 >> 6l;
+var71 = var73;
+goto RET_LABEL72;
+RET_LABEL72:(void)0;
 }
 }
-if (var307){
-var311 = NULL/*special!*/;
 {
-{ /* Inline native#NativeString#new (var311,var_end_length) on <var311:NativeString> */
-var314 = (char*)nit_alloc(var_end_length);
-var312 = var314;
-goto RET_LABEL313;
-RET_LABEL313:(void)0;
-}
+{ /* Inline math$Int$| (128l,var71) on <128l:Int> */
+var76 = 128l | var71;
+var74 = var76;
+goto RET_LABEL75;
+RET_LABEL75:(void)0;
 }
-var_ret = var312;
-var_old_repl = 0l;
-var_off = 0l;
-if (unlikely(var_replacements == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1230);
-fatal_exit(1);
 }
-var_repls = var_replacements;
 {
-{ /* Inline array#Array#items (var_repls) on <var_repls:Array[Int]> */
-var317 = var_repls->attrs[COLOR_core__array__Array___items].val; /* _items on <var_repls:Array[Int]> */
-var315 = var317;
-RET_LABEL316:(void)0;
+{ /* Inline kernel$Int$to_b (var74) on <var74:Int> */
+var79 = (unsigned char)var74;
+var77 = var79;
+goto RET_LABEL78;
+RET_LABEL78:(void)0;
 }
 }
-if (unlikely(var315 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1231);
-fatal_exit(1);
-}
-var_r = var315;
 {
-{ /* Inline array#AbstractArrayRead#length (var_repls) on <var_repls:Array[Int]> */
-var320 = var_repls->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_repls:Array[Int]> */
-var318 = var320;
-RET_LABEL319:(void)0;
+{ /* Inline native$CString$[]= (self,var61,var77) on <self:CString> */
+self[var61]=(unsigned char)var77;
+RET_LABEL80:(void)0;
 }
 }
-var_imax = var318;
-var_i321 = 0l;
-var_322 = var_imax;
-for(;;) {
 {
-{ /* Inline kernel#Int#< (var_i321,var_322) on <var_i321:Int> */
-/* Covariant cast for argument 0 (i) <var_322:Int> isa OTHER */
-/* <var_322:Int> isa OTHER */
-var325 = 1; /* easy <var_322:Int> isa OTHER*/
-if (unlikely(!var325)) {
-var_class_name328 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name328);
+{ /* Inline kernel$Int$+ (var_pos,2l) on <var_pos:Int> */
+/* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
+/* <2l:Int> isa OTHER */
+var83 = 1; /* easy <2l:Int> isa OTHER*/
+if (unlikely(!var83)) {
+var_class_name86 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name86);
 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var329 = var_i321 < var_322;
-var323 = var329;
-goto RET_LABEL324;
-RET_LABEL324:(void)0;
-}
+var87 = var_pos + 2l;
+var81 = var87;
+goto RET_LABEL82;
+RET_LABEL82:(void)0;
 }
-if (var323){
-} else {
-goto BREAK_label330;
 }
 {
-{ /* Inline array#NativeArray#[] (var_r,var_i321) on <var_r:NativeArray[Int]> */
-var333 = ((struct instance_core__NativeArray*)var_r)->values[var_i321];
-var331 = var333;
-goto RET_LABEL332;
-RET_LABEL332:(void)0;
+{ /* Inline math$Int$& (var_cp,63l) on <var_cp:Int> */
+var90 = var_cp & 63l;
+var88 = var90;
+goto RET_LABEL89;
+RET_LABEL89:(void)0;
 }
 }
-var334 = (long)(var331)>>2;
-var_repl_pos = var334;
 {
-{ /* Inline kernel#Int#- (var_repl_pos,var_old_repl) on <var_repl_pos:Int> */
-/* Covariant cast for argument 0 (i) <var_old_repl:Int> isa OTHER */
-/* <var_old_repl:Int> isa OTHER */
-var337 = 1; /* easy <var_old_repl:Int> isa OTHER*/
-if (unlikely(!var337)) {
-var_class_name340 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name340);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
-fatal_exit(1);
-}
-var341 = var_repl_pos - var_old_repl;
-var335 = var341;
-goto RET_LABEL336;
-RET_LABEL336:(void)0;
+{ /* Inline math$Int$| (128l,var88) on <128l:Int> */
+var93 = 128l | var88;
+var91 = var93;
+goto RET_LABEL92;
+RET_LABEL92:(void)0;
 }
 }
-var_chkln = var335;
 {
-{ /* Inline native#NativeString#copy_to (self,var_ret,var_chkln,var_old_repl,var_off) on <self:NativeString> */
-memmove(var_ret+var_off,self+var_old_repl,var_chkln);
-RET_LABEL342:(void)0;
+{ /* Inline kernel$Int$to_b (var91) on <var91:Int> */
+var96 = (unsigned char)var91;
+var94 = var96;
+goto RET_LABEL95;
+RET_LABEL95:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_off,var_chkln) on <var_off:Int> */
-/* Covariant cast for argument 0 (i) <var_chkln:Int> isa OTHER */
-/* <var_chkln:Int> isa OTHER */
-var345 = 1; /* easy <var_chkln:Int> isa OTHER*/
-if (unlikely(!var345)) {
-var_class_name348 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name348);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
-fatal_exit(1);
-}
-var349 = var_off + var_chkln;
-var343 = var349;
-goto RET_LABEL344;
-RET_LABEL344:(void)0;
+{ /* Inline native$CString$[]= (self,var81,var94) on <self:CString> */
+self[var81]=(unsigned char)var94;
+RET_LABEL97:(void)0;
 }
 }
-var_off = var343;
+} else {
 {
-{ /* Inline native#NativeString#[]= (var_ret,var_off,((unsigned char)0xef)) on <var_ret:NativeString> */
-var_ret[var_off]=(unsigned char)((unsigned char)0xef);
-RET_LABEL350:(void)0;
+{ /* Inline kernel$Int$== (var_ln,4l) on <var_ln:Int> */
+var100 = var_ln == 4l;
+var98 = var100;
+goto RET_LABEL99;
+RET_LABEL99:(void)0;
 }
 }
+if (var98){
 {
-{ /* Inline kernel#Int#+ (var_off,1l) on <var_off:Int> */
-/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
-/* <1l:Int> isa OTHER */
-var353 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var353)) {
-var_class_name356 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name356);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
-fatal_exit(1);
-}
-var357 = var_off + 1l;
-var351 = var357;
-goto RET_LABEL352;
-RET_LABEL352:(void)0;
+{ /* Inline math$Int$& (var_cp,1835008l) on <var_cp:Int> */
+var103 = var_cp & 1835008l;
+var101 = var103;
+goto RET_LABEL102;
+RET_LABEL102:(void)0;
 }
 }
 {
-{ /* Inline native#NativeString#[]= (var_ret,var351,((unsigned char)0xbf)) on <var_ret:NativeString> */
-var_ret[var351]=(unsigned char)((unsigned char)0xbf);
-RET_LABEL358:(void)0;
+{ /* Inline kernel$Int$>> (var101,18l) on <var101:Int> */
+var106 = var101 >> 18l;
+var104 = var106;
+goto RET_LABEL105;
+RET_LABEL105:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_off,2l) on <var_off:Int> */
-/* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
-/* <2l:Int> isa OTHER */
-var361 = 1; /* easy <2l:Int> isa OTHER*/
-if (unlikely(!var361)) {
-var_class_name364 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name364);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
-fatal_exit(1);
+{ /* Inline math$Int$| (240l,var104) on <240l:Int> */
+var109 = 240l | var104;
+var107 = var109;
+goto RET_LABEL108;
+RET_LABEL108:(void)0;
 }
-var365 = var_off + 2l;
-var359 = var365;
-goto RET_LABEL360;
-RET_LABEL360:(void)0;
+}
+{
+{ /* Inline kernel$Int$to_b (var107) on <var107:Int> */
+var112 = (unsigned char)var107;
+var110 = var112;
+goto RET_LABEL111;
+RET_LABEL111:(void)0;
 }
 }
 {
-{ /* Inline native#NativeString#[]= (var_ret,var359,((unsigned char)0xbd)) on <var_ret:NativeString> */
-var_ret[var359]=(unsigned char)((unsigned char)0xbd);
-RET_LABEL366:(void)0;
+{ /* Inline native$CString$[]= (self,var_pos,var110) on <self:CString> */
+self[var_pos]=(unsigned char)var110;
+RET_LABEL113:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_repl_pos,1l) on <var_repl_pos:Int> */
+{ /* Inline kernel$Int$+ (var_pos,1l) on <var_pos:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var369 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var369)) {
-var_class_name372 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name372);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var116 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var116)) {
+var_class_name119 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name119);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var373 = var_repl_pos + 1l;
-var367 = var373;
-goto RET_LABEL368;
-RET_LABEL368:(void)0;
+var120 = var_pos + 1l;
+var114 = var120;
+goto RET_LABEL115;
+RET_LABEL115:(void)0;
 }
 }
-var_old_repl = var367;
 {
-{ /* Inline kernel#Int#+ (var_off,3l) on <var_off:Int> */
-/* Covariant cast for argument 0 (i) <3l:Int> isa OTHER */
-/* <3l:Int> isa OTHER */
-var376 = 1; /* easy <3l:Int> isa OTHER*/
-if (unlikely(!var376)) {
-var_class_name379 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name379);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
-fatal_exit(1);
+{ /* Inline math$Int$& (var_cp,258048l) on <var_cp:Int> */
+var123 = var_cp & 258048l;
+var121 = var123;
+goto RET_LABEL122;
+RET_LABEL122:(void)0;
 }
-var380 = var_off + 3l;
-var374 = var380;
-goto RET_LABEL375;
-RET_LABEL375:(void)0;
+}
+{
+{ /* Inline kernel$Int$>> (var121,12l) on <var121:Int> */
+var126 = var121 >> 12l;
+var124 = var126;
+goto RET_LABEL125;
+RET_LABEL125:(void)0;
 }
 }
-var_off = var374;
 {
-var381 = core___core__Int___Discrete__successor(var_i321, 1l);
+{ /* Inline math$Int$| (128l,var124) on <128l:Int> */
+var129 = 128l | var124;
+var127 = var129;
+goto RET_LABEL128;
+RET_LABEL128:(void)0;
 }
-var_i321 = var381;
 }
-BREAK_label330: (void)0;
 {
-{ /* Inline kernel#Int#- (var_len,var_old_repl) on <var_len:Int> */
-/* Covariant cast for argument 0 (i) <var_old_repl:Int> isa OTHER */
-/* <var_old_repl:Int> isa OTHER */
-var384 = 1; /* easy <var_old_repl:Int> isa OTHER*/
-if (unlikely(!var384)) {
-var_class_name387 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name387);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
-fatal_exit(1);
+{ /* Inline kernel$Int$to_b (var127) on <var127:Int> */
+var132 = (unsigned char)var127;
+var130 = var132;
+goto RET_LABEL131;
+RET_LABEL131:(void)0;
+}
 }
-var388 = var_len - var_old_repl;
-var382 = var388;
-goto RET_LABEL383;
-RET_LABEL383:(void)0;
+{
+{ /* Inline native$CString$[]= (self,var114,var130) on <self:CString> */
+self[var114]=(unsigned char)var130;
+RET_LABEL133:(void)0;
 }
 }
 {
-{ /* Inline native#NativeString#copy_to (self,var_ret,var382,var_old_repl,var_off) on <self:NativeString> */
-memmove(var_ret+var_off,self+var_old_repl,var382);
-RET_LABEL389:(void)0;
+{ /* Inline kernel$Int$+ (var_pos,2l) on <var_pos:Int> */
+/* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
+/* <2l:Int> isa OTHER */
+var136 = 1; /* easy <2l:Int> isa OTHER*/
+if (unlikely(!var136)) {
+var_class_name139 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name139);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
 }
+var140 = var_pos + 2l;
+var134 = var140;
+goto RET_LABEL135;
+RET_LABEL135:(void)0;
 }
-} else {
 }
-var390 = NEW_core__FlatString(&type_core__FlatString);
 {
-core___core__FlatString___full(var390, var_ret, var_end_length, 0l, var_chr_ln); /* Direct call flat#FlatString#full on <var390:FlatString>*/
+{ /* Inline math$Int$& (var_cp,4032l) on <var_cp:Int> */
+var143 = var_cp & 4032l;
+var141 = var143;
+goto RET_LABEL142;
+RET_LABEL142:(void)0;
+}
+}
+{
+{ /* Inline kernel$Int$>> (var141,6l) on <var141:Int> */
+var146 = var141 >> 6l;
+var144 = var146;
+goto RET_LABEL145;
+RET_LABEL145:(void)0;
 }
-var = var390;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
 }
-/* method flat#NativeString#set_char_at for (self: NativeString, Int, Char) */
-void core__flat___NativeString___set_char_at(char* self, long p0, uint32_t p1) {
-long var_pos /* var pos: Int */;
-uint32_t var_c /* var c: Char */;
-long var /* : Int */;
-long var_ln /* var ln: Int */;
-var_pos = p0;
-var_c = p1;
 {
-var = core__abstract_text___Char___u8char_len(var_c);
+{ /* Inline math$Int$| (128l,var144) on <128l:Int> */
+var149 = 128l | var144;
+var147 = var149;
+goto RET_LABEL148;
+RET_LABEL148:(void)0;
+}
 }
-var_ln = var;
 {
-{ /* Inline flat#NativeString#native_set_char (self,var_pos,var_c,var_ln) on <self:NativeString> */
-flat___NativeString_native_set_char___impl(self, var_pos, var_c, var_ln);
-RET_LABEL1:(void)0;
+{ /* Inline kernel$Int$to_b (var147) on <var147:Int> */
+var152 = (unsigned char)var147;
+var150 = var152;
+goto RET_LABEL151;
+RET_LABEL151:(void)0;
 }
 }
-RET_LABEL:;
+{
+{ /* Inline native$CString$[]= (self,var134,var150) on <self:CString> */
+self[var134]=(unsigned char)var150;
+RET_LABEL153:(void)0;
 }
-/* method flat#NativeString#native_set_char for (self: NativeString, Int, Char, Int) */
-void core__flat___NativeString___native_set_char(char* self, long p0, uint32_t p1, long p2) {
-flat___NativeString_native_set_char___impl(self, p0, p1, p2);
-RET_LABEL:;
 }
-/* method flat#Int#to_base for (self: Int, Int, Bool): String */
-val* core__flat___Int___to_base(long self, long p0, short int p1) {
-val* var /* : String */;
-long var_base /* var base: Int */;
-short int var_signed /* var signed: Bool */;
-long var1 /* : Int */;
-long var_l /* var l: Int */;
-val* var2 /* : FlatBuffer */;
-static val* varonce;
-val* var3 /* : String */;
-char* var4 /* : NativeString */;
-val* var5 /* : String */;
-val* var6 /* : String */;
-val* var_s /* var s: FlatBuffer */;
-val* var7 /* : String */;
-var_base = p0;
-var_signed = p1;
 {
-var1 = core___core__Int___digit_count(self, var_base);
+{ /* Inline kernel$Int$+ (var_pos,3l) on <var_pos:Int> */
+/* Covariant cast for argument 0 (i) <3l:Int> isa OTHER */
+/* <3l:Int> isa OTHER */
+var156 = 1; /* easy <3l:Int> isa OTHER*/
+if (unlikely(!var156)) {
+var_class_name159 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name159);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var160 = var_pos + 3l;
+var154 = var160;
+goto RET_LABEL155;
+RET_LABEL155:(void)0;
 }
-var_l = var1;
-var2 = NEW_core__FlatBuffer(&type_core__FlatBuffer);
-if (likely(varonce!=NULL)) {
-var3 = varonce;
-} else {
-var4 = " ";
-var5 = core__flat___NativeString___to_s_full(var4, 1l, 1l);
-var3 = var5;
-varonce = var3;
 }
 {
-var6 = ((val*(*)(val* self, long p0))(var3->class->vft[COLOR_core__abstract_text__String___42d]))(var3, var_l); /* * on <var3:String>*/
+{ /* Inline math$Int$& (var_cp,63l) on <var_cp:Int> */
+var163 = var_cp & 63l;
+var161 = var163;
+goto RET_LABEL162;
+RET_LABEL162:(void)0;
+}
 }
 {
-core___core__FlatBuffer___from(var2, var6); /* Direct call flat#FlatBuffer#from on <var2:FlatBuffer>*/
+{ /* Inline math$Int$| (128l,var161) on <128l:Int> */
+var166 = 128l | var161;
+var164 = var166;
+goto RET_LABEL165;
+RET_LABEL165:(void)0;
+}
 }
-var_s = var2;
 {
-core__abstract_text___Int___fill_buffer(self, var_s, var_base, var_signed); /* Direct call abstract_text#Int#fill_buffer on <self:Int>*/
+{ /* Inline kernel$Int$to_b (var164) on <var164:Int> */
+var169 = (unsigned char)var164;
+var167 = var169;
+goto RET_LABEL168;
+RET_LABEL168:(void)0;
+}
 }
 {
-var7 = core___core__FlatBuffer___core__abstract_text__Object__to_s(var_s);
+{ /* Inline native$CString$[]= (self,var154,var167) on <self:CString> */
+self[var154]=(unsigned char)var167;
+RET_LABEL170:(void)0;
+}
+}
+} else {
+}
+}
 }
-var = var7;
-goto RET_LABEL;
 RET_LABEL:;
-return var;
 }
-/* method flat#Int#to_s for (self: Int): String */
+/* method flat$Int$to_s for (self: Int): String */
 val* core__flat___Int___core__abstract_text__Object__to_s(long self) {
 val* var /* : String */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
 static val* varonce;
 val* var4 /* : String */;
-char* var5 /* : NativeString */;
+char* var5 /* : CString */;
 val* var6 /* : String */;
-short int var7 /* : Bool */;
-short int var9 /* : Bool */;
-static val* varonce10;
-val* var11 /* : String */;
-char* var12 /* : NativeString */;
-val* var13 /* : String */;
-long var14 /* : Int */;
-long var16 /* : Int */;
+val* var7 /* : nullable Int */;
+val* var8 /* : nullable Int */;
+val* var9 /* : nullable Bool */;
+val* var10 /* : nullable Bool */;
+short int var11 /* : Bool */;
+short int var13 /* : Bool */;
+static val* varonce14;
+val* var15 /* : String */;
+char* var16 /* : CString */;
+val* var17 /* : String */;
+val* var18 /* : nullable Int */;
+val* var19 /* : nullable Int */;
+val* var20 /* : nullable Bool */;
+val* var21 /* : nullable Bool */;
+long var22 /* : Int */;
+long var24 /* : Int */;
 long var_nslen /* var nslen: Int */;
-char* var17 /* : NativeString */;
-long var18 /* : Int */;
-short int var20 /* : Bool */;
+static char* varoncenew;
+static int varoncenew_guard;
+char* var25 /* : CString */;
+char* var26 /* : CString */;
+long var27 /* : Int */;
+short int var29 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var21 /* : Int */;
-char* var22 /* : NativeString */;
-char* var24 /* : NativeString */;
-char* var_ns /* var ns: NativeString */;
-long var26 /* : Int */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-const char* var_class_name31;
-long var32 /* : Int */;
-val* var34 /* : FlatString */;
+long var30 /* : Int */;
+char* var31 /* : CString */;
+char* var33 /* : CString */;
+char* var_ns /* var ns: CString */;
+long var35 /* : Int */;
+short int var37 /* : Bool */;
+int cltype38;
+int idtype39;
+const char* var_class_name40;
+long var41 /* : Int */;
+static val* varoncenew43;
+static int varoncenew43_guard;
+val* var44 /* : FlatString */;
+val* var45 /* : FlatString */;
+val* var46 /* : FlatString */;
 {
-{ /* Inline kernel#Int#== (self,0l) on <self:Int> */
+{ /* Inline kernel$Int$== (self,0l) on <self:Int> */
 var3 = self == 0l;
 var1 = var3;
 goto RET_LABEL2;
@@ -1600,7 +3028,11 @@ if (likely(varonce!=NULL)) {
 var4 = varonce;
 } else {
 var5 = "0";
-var6 = core__flat___NativeString___to_s_full(var5, 1l, 1l);
+var7 = (val*)(1l<<2|1);
+var8 = (val*)(1l<<2|1);
+var9 = (val*)((long)(0)<<2|3);
+var10 = (val*)((long)(0)<<2|3);
+var6 = core__flat___CString___to_s_unsafe(var5, var7, var8, var9, var10);
 var4 = var6;
 varonce = var4;
 }
@@ -1609,101 +3041,119 @@ goto RET_LABEL;
 } else {
 }
 {
-{ /* Inline kernel#Int#== (self,1l) on <self:Int> */
-var9 = self == 1l;
-var7 = var9;
-goto RET_LABEL8;
-RET_LABEL8:(void)0;
+{ /* Inline kernel$Int$== (self,1l) on <self:Int> */
+var13 = self == 1l;
+var11 = var13;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
 }
 }
-if (var7){
-if (likely(varonce10!=NULL)) {
-var11 = varonce10;
+if (var11){
+if (likely(varonce14!=NULL)) {
+var15 = varonce14;
 } else {
-var12 = "1";
-var13 = core__flat___NativeString___to_s_full(var12, 1l, 1l);
-var11 = var13;
-varonce10 = var11;
+var16 = "1";
+var18 = (val*)(1l<<2|1);
+var19 = (val*)(1l<<2|1);
+var20 = (val*)((long)(0)<<2|3);
+var21 = (val*)((long)(0)<<2|3);
+var17 = core__flat___CString___to_s_unsafe(var16, var18, var19, var20, var21);
+var15 = var17;
+varonce14 = var15;
 }
-var = var11;
+var = var15;
 goto RET_LABEL;
 } else {
 }
 {
-{ /* Inline abstract_text#Int#int_to_s_len (self) on <self:Int> */
-var16 = abstract_text___Int_int_to_s_len___impl(self);
-var14 = var16;
-goto RET_LABEL15;
-RET_LABEL15:(void)0;
+{ /* Inline abstract_text$Int$int_to_s_len (self) on <self:Int> */
+var24 = core__abstract_text___Int_int_to_s_len___impl(self);
+var22 = var24;
+goto RET_LABEL23;
+RET_LABEL23:(void)0;
+}
 }
+var_nslen = var22;
+if (likely(varoncenew_guard)) {
+var25 = varoncenew;
+} else {
+var26 = NULL/*special!*/;
+var25 = var26;
+varoncenew = var25;
+varoncenew_guard = 1;
 }
-var_nslen = var14;
-var17 = NULL/*special!*/;
 {
-{ /* Inline kernel#Int#+ (var_nslen,1l) on <var_nslen:Int> */
+{ /* Inline kernel$Int$+ (var_nslen,1l) on <var_nslen:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var20 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var20)) {
+var29 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var29)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var21 = var_nslen + 1l;
-var18 = var21;
-goto RET_LABEL19;
-RET_LABEL19:(void)0;
+var30 = var_nslen + 1l;
+var27 = var30;
+goto RET_LABEL28;
+RET_LABEL28:(void)0;
 }
 }
 {
-{ /* Inline native#NativeString#new (var17,var18) on <var17:NativeString> */
-var24 = (char*)nit_alloc(var18);
-var22 = var24;
-goto RET_LABEL23;
-RET_LABEL23:(void)0;
+{ /* Inline native$CString$new (var25,var27) on <var25:CString> */
+var33 = (char*)nit_alloc(var27);
+var31 = var33;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
 }
 }
-var_ns = var22;
+var_ns = var31;
 {
-{ /* Inline native#NativeString#[]= (var_ns,var_nslen,((unsigned char)0x00)) on <var_ns:NativeString> */
+{ /* Inline native$CString$[]= (var_ns,var_nslen,((unsigned char)0x00)) on <var_ns:CString> */
 var_ns[var_nslen]=(unsigned char)((unsigned char)0x00);
-RET_LABEL25:(void)0;
+RET_LABEL34:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_nslen,1l) on <var_nslen:Int> */
+{ /* Inline kernel$Int$+ (var_nslen,1l) on <var_nslen: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);
+var37 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var37)) {
+var_class_name40 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name40);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var32 = var_nslen + 1l;
-var26 = var32;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
+var41 = var_nslen + 1l;
+var35 = var41;
+goto RET_LABEL36;
+RET_LABEL36:(void)0;
 }
 }
 {
-{ /* Inline abstract_text#Int#native_int_to_s (self,var_ns,var26) on <self:Int> */
-abstract_text___Int_native_int_to_s___impl(self, var_ns, var26);
-RET_LABEL33:(void)0;
+{ /* Inline abstract_text$Int$native_int_to_s (self,var_ns,var35) on <self:Int> */
+core__abstract_text___Int_native_int_to_s___impl(self, var_ns, var35);
+RET_LABEL42:(void)0;
 }
 }
-var34 = NEW_core__FlatString(&type_core__FlatString);
+if (likely(varoncenew43_guard)) {
+var44 = varoncenew43;
+} else {
+var45 = NEW_core__FlatString(&type_core__FlatString);
+var44 = var45;
+varoncenew43 = var44;
+varoncenew43_guard = 1;
+}
 {
-core___core__FlatString___full(var34, var_ns, var_nslen, 0l, var_nslen); /* Direct call flat#FlatString#full on <var34:FlatString>*/
+var46 = core___core__FlatString___full(var44, var_ns, var_nslen, 0l, var_nslen);
 }
-var = var34;
+var = var46;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method flat#Int#to_s for (self: Object): String */
+/* method flat$Int$to_s for (self: Object): String */
 val* VIRTUAL_core__flat___Int___core__abstract_text__Object__to_s(val* self) {
 val* var /* : String */;
 val* var1 /* : String */;
@@ -1714,7 +3164,7 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method flat#Array#plain_to_s for (self: Array[nullable Object]): String */
+/* method flat$Array$plain_to_s for (self: Array[nullable Object]): String */
 val* core__flat___Array___core__abstract_text__Collection__plain_to_s(val* self) {
 val* var /* : String */;
 long var1 /* : Int */;
@@ -1723,136 +3173,151 @@ short int var2 /* : Bool */;
 short int var4 /* : Bool */;
 static val* varonce;
 val* var5 /* : String */;
-char* var6 /* : NativeString */;
+char* var6 /* : CString */;
 val* var7 /* : String */;
-val* var8 /* : nullable NativeArray[nullable Object] */;
+val* var8 /* : nullable Int */;
+val* var9 /* : nullable Int */;
+val* var10 /* : nullable Bool */;
+val* var11 /* : nullable Bool */;
+val* var12 /* : nullable NativeArray[nullable Object] */;
 val* var_its /* var its: NativeArray[nullable Object] */;
-val* var9 /* : nullable Object */;
-val* var11 /* : Object */;
+val* var13 /* : nullable Object */;
+val* var15 /* : Object */;
 val* var_first /* var first: nullable Object */;
-short int var12 /* : Bool */;
-short int var14 /* : Bool */;
-short int var15 /* : Bool */;
 short int var16 /* : Bool */;
-static val* varonce17;
-val* var18 /* : String */;
-char* var19 /* : NativeString */;
-val* var20 /* : String */;
-val* var21 /* : String */;
-val* var22 /* : NativeArray[String] */;
+short int var18 /* : Bool */;
+short int var19 /* : Bool */;
+short int var20 /* : Bool */;
+static val* varonce21;
+val* var22 /* : String */;
+char* var23 /* : CString */;
+val* var24 /* : String */;
+val* var25 /* : nullable Int */;
+val* var26 /* : nullable Int */;
+val* var27 /* : nullable Bool */;
+val* var28 /* : nullable Bool */;
+val* var29 /* : String */;
+val* var30 /* : NativeArray[String] */;
 val* var_na /* var na: NativeArray[String] */;
 long var_i /* var i: Int */;
 long var_sl /* var sl: Int */;
 long var_mypos /* var mypos: Int */;
-short int var23 /* : Bool */;
-short int var25 /* : Bool */;
+short int var31 /* : Bool */;
+short int var33 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var26 /* : Bool */;
-val* var27 /* : nullable Object */;
-val* var29 /* : Object */;
-val* var_itsi /* var itsi: nullable Object */;
-short int var30 /* : Bool */;
-short int var31 /* : Bool */;
-long var32 /* : Int */;
 short int var34 /* : Bool */;
-int cltype35;
-int idtype36;
-const char* var_class_name37;
-long var38 /* : Int */;
-val* var39 /* : String */;
-val* var_tmp /* var tmp: String */;
+val* var35 /* : nullable Object */;
+val* var37 /* : Object */;
+val* var_itsi /* var itsi: nullable Object */;
+short int var38 /* : Bool */;
+short int var39 /* : Bool */;
 long var40 /* : Int */;
-long var41 /* : Int */;
-short int var43 /* : Bool */;
-int cltype44;
-int idtype45;
-const char* var_class_name46;
-long var47 /* : Int */;
-short int var49 /* : Bool */;
-int cltype50;
-int idtype51;
+short int var42 /* : Bool */;
+int cltype43;
+int idtype44;
+const char* var_class_name45;
+long var46 /* : Int */;
+val* var47 /* : String */;
+val* var_tmp /* var tmp: String */;
+long var48 /* : Int */;
+long var49 /* : Int */;
+short int var51 /* : Bool */;
+int cltype52;
+int idtype53;
+const char* var_class_name54;
+long var55 /* : Int */;
+short int var57 /* : Bool */;
+int cltype58;
+int idtype59;
 const struct type* type_struct;
-const char* var_class_name52;
-long var53 /* : Int */;
-short int var55 /* : Bool */;
-int cltype56;
-int idtype57;
-const char* var_class_name58;
-long var59 /* : Int */;
-long var60 /* : Int */;
-short int var62 /* : Bool */;
-int cltype63;
-int idtype64;
-const char* var_class_name65;
-long var66 /* : Int */;
-char* var68 /* : NativeString */;
-long var69 /* : Int */;
-short int var71 /* : Bool */;
-int cltype72;
-int idtype73;
-const char* var_class_name74;
-long var75 /* : Int */;
-char* var76 /* : NativeString */;
-char* var78 /* : NativeString */;
-char* var_ns /* var ns: NativeString */;
-long var_off /* var off: Int */;
+const char* var_class_name60;
+long var61 /* : Int */;
+short int var63 /* : Bool */;
+int cltype64;
+int idtype65;
+const char* var_class_name66;
+long var67 /* : Int */;
+long var68 /* : Int */;
+short int var70 /* : Bool */;
+int cltype71;
+int idtype72;
+const char* var_class_name73;
+long var74 /* : Int */;
+static char* varoncenew;
+static int varoncenew_guard;
+char* var76 /* : CString */;
+char* var77 /* : CString */;
+long var78 /* : Int */;
 short int var80 /* : Bool */;
-short int var82 /* : Bool */;
-int cltype83;
-int idtype84;
-const char* var_class_name85;
-short int var86 /* : Bool */;
-val* var87 /* : nullable Object */;
-val* var89 /* : Object */;
-val* var_tmp90 /* var tmp: String */;
+int cltype81;
+int idtype82;
+const char* var_class_name83;
+long var84 /* : Int */;
+char* var85 /* : CString */;
+char* var87 /* : CString */;
+char* var_ns /* var ns: CString */;
+long var_off /* var off: Int */;
+short int var89 /* : Bool */;
 short int var91 /* : Bool */;
 int cltype92;
 int idtype93;
-long var94 /* : Int */;
-long var_tpl /* var tpl: Int */;
-char* var95 /* : NativeString */;
-long var96 /* : Int */;
-long var98 /* : Int */;
+const char* var_class_name94;
+short int var95 /* : Bool */;
+val* var96 /* : nullable Object */;
+val* var98 /* : Object */;
+val* var_tmp99 /* var tmp: String */;
 short int var100 /* : Bool */;
 int cltype101;
 int idtype102;
-const char* var_class_name103;
-long var104 /* : Int */;
-val* var105 /* : Iterator[FlatText] */;
+long var103 /* : Int */;
+long var_tpl /* var tpl: Int */;
+char* var104 /* : CString */;
+long var105 /* : Int */;
+long var107 /* : Int */;
+short int var109 /* : Bool */;
+int cltype110;
+int idtype111;
+const char* var_class_name112;
+long var113 /* : Int */;
+val* var114 /* : Iterator[FlatText] */;
 val* var_ /* var : Iterator[FlatText] */;
-val* var106 /* : Iterator[nullable Object] */;
-val* var_107 /* var : Iterator[FlatText] */;
-short int var108 /* : Bool */;
-val* var110 /* : nullable Object */;
+val* var115 /* : Iterator[nullable Object] */;
+val* var_116 /* var : Iterator[FlatText] */;
+short int var117 /* : Bool */;
+val* var119 /* : nullable Object */;
 val* var_j /* var j: FlatText */;
-short int var111 /* : Bool */;
-int cltype112;
-int idtype113;
-const char* var_class_name114;
+short int var120 /* : Bool */;
+int cltype121;
+int idtype122;
+const char* var_class_name123;
 val* var_s /* var s: FlatString */;
-long var115 /* : Int */;
+long var124 /* : Int */;
 long var_slen /* var slen: Int */;
-char* var116 /* : NativeString */;
-long var117 /* : Int */;
-long var119 /* : Int */;
-short int var121 /* : Bool */;
-int cltype122;
-int idtype123;
-const char* var_class_name124;
-long var125 /* : Int */;
+char* var125 /* : CString */;
 long var126 /* : Int */;
-short int var128 /* : Bool */;
-int cltype129;
-int idtype130;
-const char* var_class_name131;
-long var132 /* : Int */;
-val* var134 /* : FlatString */;
+long var128 /* : Int */;
+short int var130 /* : Bool */;
+int cltype131;
+int idtype132;
+const char* var_class_name133;
+long var134 /* : Int */;
+long var135 /* : Int */;
+short int var137 /* : Bool */;
+int cltype138;
+int idtype139;
+const char* var_class_name140;
+long var141 /* : Int */;
+static val* varoncenew143;
+static int varoncenew143_guard;
+val* var144 /* : FlatString */;
+val* var145 /* : FlatString */;
+val* var146 /* : FlatString */;
 var1 = self->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <self:Array[nullable Object]> */
 var_l = var1;
 {
-{ /* Inline kernel#Int#== (var_l,0l) on <var_l:Int> */
+{ /* Inline kernel$Int$== (var_l,0l) on <var_l:Int> */
 var4 = var_l == 0l;
 var2 = var4;
 goto RET_LABEL3;
@@ -1864,7 +3329,11 @@ if (likely(varonce!=NULL)) {
 var5 = varonce;
 } else {
 var6 = "";
-var7 = core__flat___NativeString___to_s_full(var6, 0l, 0l);
+var8 = (val*)(0l<<2|1);
+var9 = (val*)(0l<<2|1);
+var10 = (val*)((long)(0)<<2|3);
+var11 = (val*)((long)(0)<<2|3);
+var7 = core__flat___CString___to_s_unsafe(var6, var8, var9, var10, var11);
 var5 = var7;
 varonce = var5;
 }
@@ -1872,419 +3341,440 @@ var = var5;
 goto RET_LABEL;
 } else {
 }
-var8 = self->attrs[COLOR_core__array__Array___items].val; /* _items on <self:Array[nullable Object]> */
-if (unlikely(var8 == NULL)) {
+var12 = self->attrs[COLOR_core__array__Array___items].val; /* _items on <self:Array[nullable Object]> */
+if (unlikely(var12 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1315);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1497);
 fatal_exit(1);
 }
-var_its = var8;
+var_its = var12;
 {
-{ /* Inline array#NativeArray#[] (var_its,0l) on <var_its:NativeArray[nullable Object]> */
-var11 = ((struct instance_core__NativeArray*)var_its)->values[0l];
-var9 = var11;
-goto RET_LABEL10;
-RET_LABEL10:(void)0;
+{ /* Inline array$NativeArray$[] (var_its,0l) on <var_its:NativeArray[nullable Object]> */
+var15 = ((struct instance_core__NativeArray*)var_its)->values[0l];
+var13 = var15;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
 }
 }
-var_first = var9;
+var_first = var13;
 {
-{ /* Inline kernel#Int#== (var_l,1l) on <var_l:Int> */
-var14 = var_l == 1l;
-var12 = var14;
-goto RET_LABEL13;
-RET_LABEL13:(void)0;
+{ /* Inline kernel$Int$== (var_l,1l) on <var_l:Int> */
+var18 = var_l == 1l;
+var16 = var18;
+goto RET_LABEL17;
+RET_LABEL17:(void)0;
 }
 }
-if (var12){
+if (var16){
 if (var_first == NULL) {
-var15 = 1; /* is null */
+var19 = 1; /* is null */
 } else {
-var15 = 0; /* arg is null but recv is not */
+var19 = 0; /* arg is null but recv is not */
 }
 if (0) {
-var16 = ((short int(*)(val* self, val* p0))((((long)var_first&3)?class_info[((long)var_first&3)]:var_first->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_first, ((val*)NULL)); /* == on <var_first:nullable Object>*/
-var15 = var16;
+var20 = ((short int(*)(val* self, val* p0))((((long)var_first&3)?class_info[((long)var_first&3)]:var_first->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_first, ((val*)NULL)); /* == on <var_first:nullable Object>*/
+var19 = var20;
 }
-if (var15){
-if (likely(varonce17!=NULL)) {
-var18 = varonce17;
+if (var19){
+if (likely(varonce21!=NULL)) {
+var22 = varonce21;
 } else {
-var19 = "";
-var20 = core__flat___NativeString___to_s_full(var19, 0l, 0l);
-var18 = var20;
-varonce17 = var18;
+var23 = "";
+var25 = (val*)(0l<<2|1);
+var26 = (val*)(0l<<2|1);
+var27 = (val*)((long)(0)<<2|3);
+var28 = (val*)((long)(0)<<2|3);
+var24 = core__flat___CString___to_s_unsafe(var23, var25, var26, var27, var28);
+var22 = var24;
+varonce21 = var22;
 }
-var = var18;
+var = var22;
 goto RET_LABEL;
 } else {
 {
-var21 = ((val*(*)(val* self))((((long)var_first&3)?class_info[((long)var_first&3)]:var_first->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var_first); /* to_s on <var_first:nullable Object(Object)>*/
+var29 = ((val*(*)(val* self))((((long)var_first&3)?class_info[((long)var_first&3)]:var_first->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var_first); /* to_s on <var_first:nullable Object(Object)>*/
 }
-var = var21;
+var = var29;
 goto RET_LABEL;
 }
 } else {
 }
-var22 = NEW_core__NativeArray(var_l, &type_core__NativeArray__core__String);
-var_na = var22;
+var30 = NEW_core__NativeArray((int)var_l, &type_core__NativeArray__core__String);
+var_na = var30;
 var_i = 0l;
 var_sl = 0l;
 var_mypos = 0l;
 for(;;) {
 {
-{ /* Inline kernel#Int#< (var_i,var_l) on <var_i:Int> */
+{ /* Inline kernel$Int$< (var_i,var_l) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
 /* <var_l:Int> isa OTHER */
-var25 = 1; /* easy <var_l:Int> isa OTHER*/
-if (unlikely(!var25)) {
+var33 = 1; /* easy <var_l:Int> isa OTHER*/
+if (unlikely(!var33)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
 fatal_exit(1);
 }
-var26 = var_i < var_l;
-var23 = var26;
-goto RET_LABEL24;
-RET_LABEL24:(void)0;
+var34 = var_i < var_l;
+var31 = var34;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
 }
 }
-if (var23){
+if (var31){
 {
-{ /* Inline array#NativeArray#[] (var_its,var_i) on <var_its:NativeArray[nullable Object]> */
-var29 = ((struct instance_core__NativeArray*)var_its)->values[var_i];
-var27 = var29;
-goto RET_LABEL28;
-RET_LABEL28:(void)0;
+{ /* Inline array$NativeArray$[] (var_its,var_i) on <var_its:NativeArray[nullable Object]> */
+var37 = ((struct instance_core__NativeArray*)var_its)->values[var_i];
+var35 = var37;
+goto RET_LABEL36;
+RET_LABEL36:(void)0;
 }
 }
-var_itsi = var27;
+var_itsi = var35;
 if (var_itsi == NULL) {
-var30 = 1; /* is null */
+var38 = 1; /* is null */
 } else {
-var30 = 0; /* arg is null but recv is not */
+var38 = 0; /* arg is null but recv is not */
 }
 if (0) {
-var31 = ((short int(*)(val* self, val* p0))((((long)var_itsi&3)?class_info[((long)var_itsi&3)]:var_itsi->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_itsi, ((val*)NULL)); /* == on <var_itsi:nullable Object>*/
-var30 = var31;
+var39 = ((short int(*)(val* self, val* p0))((((long)var_itsi&3)?class_info[((long)var_itsi&3)]:var_itsi->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_itsi, ((val*)NULL)); /* == on <var_itsi:nullable Object>*/
+var38 = var39;
 }
-if (var30){
+if (var38){
 {
-{ /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
+{ /* Inline kernel$Int$+ (var_i,1l) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var34 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var34)) {
-var_class_name37 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name37);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var42 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var42)) {
+var_class_name45 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name45);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var38 = var_i + 1l;
-var32 = var38;
-goto RET_LABEL33;
-RET_LABEL33:(void)0;
+var46 = var_i + 1l;
+var40 = var46;
+goto RET_LABEL41;
+RET_LABEL41:(void)0;
 }
 }
-var_i = var32;
+var_i = var40;
 goto BREAK_label;
 } else {
 }
 {
-var39 = ((val*(*)(val* self))((((long)var_itsi&3)?class_info[((long)var_itsi&3)]:var_itsi->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var_itsi); /* to_s on <var_itsi:nullable Object(Object)>*/
+var47 = ((val*(*)(val* self))((((long)var_itsi&3)?class_info[((long)var_itsi&3)]:var_itsi->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var_itsi); /* to_s on <var_itsi:nullable Object(Object)>*/
 }
-var_tmp = var39;
+var_tmp = var47;
 {
-var40 = ((long(*)(val* self))(var_tmp->class->vft[COLOR_core__abstract_text__Text__bytelen]))(var_tmp); /* bytelen on <var_tmp:String>*/
+var48 = ((long(*)(val* self))(var_tmp->class->vft[COLOR_core__abstract_text__Text__byte_length]))(var_tmp); /* byte_length on <var_tmp:String>*/
 }
 {
-{ /* Inline kernel#Int#+ (var_sl,var40) on <var_sl:Int> */
-/* Covariant cast for argument 0 (i) <var40:Int> isa OTHER */
-/* <var40:Int> isa OTHER */
-var43 = 1; /* easy <var40:Int> isa OTHER*/
-if (unlikely(!var43)) {
-var_class_name46 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name46);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+{ /* Inline kernel$Int$+ (var_sl,var48) on <var_sl:Int> */
+/* Covariant cast for argument 0 (i) <var48:Int> isa OTHER */
+/* <var48:Int> isa OTHER */
+var51 = 1; /* easy <var48:Int> isa OTHER*/
+if (unlikely(!var51)) {
+var_class_name54 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name54);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var47 = var_sl + var40;
-var41 = var47;
-goto RET_LABEL42;
-RET_LABEL42:(void)0;
+var55 = var_sl + var48;
+var49 = var55;
+goto RET_LABEL50;
+RET_LABEL50:(void)0;
 }
 }
-var_sl = var41;
+var_sl = var49;
 {
-{ /* Inline array#NativeArray#[]= (var_na,var_mypos,var_tmp) on <var_na:NativeArray[String]> */
+{ /* Inline array$NativeArray$[]= (var_na,var_mypos,var_tmp) on <var_na:NativeArray[String]> */
 /* Covariant cast for argument 1 (item) <var_tmp:String> isa E */
 /* <var_tmp:String> isa E */
 type_struct = var_na->type->resolution_table->types[COLOR_core__NativeArray___35dE];
-cltype50 = type_struct->color;
-idtype51 = type_struct->id;
-if(cltype50 >= var_tmp->type->table_size) {
-var49 = 0;
+cltype58 = type_struct->color;
+idtype59 = type_struct->id;
+if(cltype58 >= var_tmp->type->table_size) {
+var57 = 0;
 } else {
-var49 = var_tmp->type->type_table[cltype50] == idtype51;
+var57 = var_tmp->type->type_table[cltype58] == idtype59;
 }
-if (unlikely(!var49)) {
-var_class_name52 = var_tmp == NULL ? "null" : var_tmp->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name52);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__array, 988);
+if (unlikely(!var57)) {
+var_class_name60 = var_tmp == NULL ? "null" : var_tmp->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name60);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__array, 991);
 fatal_exit(1);
 }
 ((struct instance_core__NativeArray*)var_na)->values[var_mypos]=var_tmp;
-RET_LABEL48:(void)0;
+RET_LABEL56:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
+{ /* Inline kernel$Int$+ (var_i,1l) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var55 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var55)) {
-var_class_name58 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name58);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var63 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var63)) {
+var_class_name66 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name66);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var59 = var_i + 1l;
-var53 = var59;
-goto RET_LABEL54;
-RET_LABEL54:(void)0;
+var67 = var_i + 1l;
+var61 = var67;
+goto RET_LABEL62;
+RET_LABEL62:(void)0;
 }
 }
-var_i = var53;
+var_i = var61;
 {
-{ /* Inline kernel#Int#+ (var_mypos,1l) on <var_mypos:Int> */
+{ /* Inline kernel$Int$+ (var_mypos,1l) on <var_mypos:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var62 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var62)) {
-var_class_name65 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name65);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var70 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var70)) {
+var_class_name73 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name73);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var66 = var_mypos + 1l;
-var60 = var66;
-goto RET_LABEL61;
-RET_LABEL61:(void)0;
+var74 = var_mypos + 1l;
+var68 = var74;
+goto RET_LABEL69;
+RET_LABEL69:(void)0;
 }
 }
-var_mypos = var60;
+var_mypos = var68;
 } else {
-goto BREAK_label67;
+goto BREAK_label75;
 }
 BREAK_label: (void)0;
 }
-BREAK_label67: (void)0;
-var68 = NULL/*special!*/;
+BREAK_label75: (void)0;
+if (likely(varoncenew_guard)) {
+var76 = varoncenew;
+} else {
+var77 = NULL/*special!*/;
+var76 = var77;
+varoncenew = var76;
+varoncenew_guard = 1;
+}
 {
-{ /* Inline kernel#Int#+ (var_sl,1l) on <var_sl:Int> */
+{ /* Inline kernel$Int$+ (var_sl,1l) on <var_sl:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var71 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var71)) {
-var_class_name74 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name74);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var80 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var80)) {
+var_class_name83 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name83);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var75 = var_sl + 1l;
-var69 = var75;
-goto RET_LABEL70;
-RET_LABEL70:(void)0;
+var84 = var_sl + 1l;
+var78 = var84;
+goto RET_LABEL79;
+RET_LABEL79:(void)0;
 }
 }
 {
-{ /* Inline native#NativeString#new (var68,var69) on <var68:NativeString> */
-var78 = (char*)nit_alloc(var69);
-var76 = var78;
-goto RET_LABEL77;
-RET_LABEL77:(void)0;
+{ /* Inline native$CString$new (var76,var78) on <var76:CString> */
+var87 = (char*)nit_alloc(var78);
+var85 = var87;
+goto RET_LABEL86;
+RET_LABEL86:(void)0;
 }
 }
-var_ns = var76;
+var_ns = var85;
 {
-{ /* Inline native#NativeString#[]= (var_ns,var_sl,((unsigned char)0x00)) on <var_ns:NativeString> */
+{ /* Inline native$CString$[]= (var_ns,var_sl,((unsigned char)0x00)) on <var_ns:CString> */
 var_ns[var_sl]=(unsigned char)((unsigned char)0x00);
-RET_LABEL79:(void)0;
+RET_LABEL88:(void)0;
 }
 }
 var_i = 0l;
 var_off = 0l;
 for(;;) {
 {
-{ /* Inline kernel#Int#< (var_i,var_mypos) on <var_i:Int> */
+{ /* Inline kernel$Int$< (var_i,var_mypos) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <var_mypos:Int> isa OTHER */
 /* <var_mypos:Int> isa OTHER */
-var82 = 1; /* easy <var_mypos:Int> isa OTHER*/
-if (unlikely(!var82)) {
-var_class_name85 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name85);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+var91 = 1; /* easy <var_mypos:Int> isa OTHER*/
+if (unlikely(!var91)) {
+var_class_name94 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name94);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
 fatal_exit(1);
 }
-var86 = var_i < var_mypos;
-var80 = var86;
-goto RET_LABEL81;
-RET_LABEL81:(void)0;
+var95 = var_i < var_mypos;
+var89 = var95;
+goto RET_LABEL90;
+RET_LABEL90:(void)0;
 }
 }
-if (var80){
+if (var89){
 {
-{ /* Inline array#NativeArray#[] (var_na,var_i) on <var_na:NativeArray[String]> */
-var89 = ((struct instance_core__NativeArray*)var_na)->values[var_i];
-var87 = var89;
-goto RET_LABEL88;
-RET_LABEL88:(void)0;
+{ /* Inline array$NativeArray$[] (var_na,var_i) on <var_na:NativeArray[String]> */
+var98 = ((struct instance_core__NativeArray*)var_na)->values[var_i];
+var96 = var98;
+goto RET_LABEL97;
+RET_LABEL97:(void)0;
 }
 }
-var_tmp90 = var87;
-/* <var_tmp90:String> isa FlatString */
-cltype92 = type_core__FlatString.color;
-idtype93 = type_core__FlatString.id;
-if(cltype92 >= var_tmp90->type->table_size) {
-var91 = 0;
+var_tmp99 = var96;
+/* <var_tmp99:String> isa FlatString */
+cltype101 = type_core__FlatString.color;
+idtype102 = type_core__FlatString.id;
+if(cltype101 >= var_tmp99->type->table_size) {
+var100 = 0;
 } else {
-var91 = var_tmp90->type->type_table[cltype92] == idtype93;
+var100 = var_tmp99->type->type_table[cltype101] == idtype102;
 }
-if (var91){
-var94 = var_tmp90->attrs[COLOR_core__abstract_text__FlatText___bytelen].l; /* _bytelen on <var_tmp90:String(FlatString)> */
-var_tpl = var94;
-var95 = var_tmp90->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <var_tmp90:String(FlatString)> */
-var96 = var_tmp90->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <var_tmp90:String(FlatString)> */
+if (var100){
+var103 = var_tmp99->attrs[COLOR_core__abstract_text__FlatText___byte_length].l; /* _byte_length on <var_tmp99:String(FlatString)> */
+var_tpl = var103;
+var104 = var_tmp99->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <var_tmp99:String(FlatString)> */
+var105 = var_tmp99->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <var_tmp99:String(FlatString)> */
 {
-{ /* Inline native#NativeString#copy_to (var95,var_ns,var_tpl,var96,var_off) on <var95:NativeString> */
-memmove(var_ns+var_off,var95+var96,var_tpl);
-RET_LABEL97:(void)0;
+{ /* Inline native$CString$copy_to (var104,var_ns,var_tpl,var105,var_off) on <var104:CString> */
+memmove(var_ns+var_off,var104+var105,var_tpl);
+RET_LABEL106:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_off,var_tpl) on <var_off:Int> */
+{ /* Inline kernel$Int$+ (var_off,var_tpl) on <var_off:Int> */
 /* Covariant cast for argument 0 (i) <var_tpl:Int> isa OTHER */
 /* <var_tpl:Int> isa OTHER */
-var100 = 1; /* easy <var_tpl:Int> isa OTHER*/
-if (unlikely(!var100)) {
-var_class_name103 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name103);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var109 = 1; /* easy <var_tpl:Int> isa OTHER*/
+if (unlikely(!var109)) {
+var_class_name112 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name112);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var104 = var_off + var_tpl;
-var98 = var104;
-goto RET_LABEL99;
-RET_LABEL99:(void)0;
+var113 = var_off + var_tpl;
+var107 = var113;
+goto RET_LABEL108;
+RET_LABEL108:(void)0;
 }
 }
-var_off = var98;
+var_off = var107;
 } else {
 {
-var105 = ((val*(*)(val* self))(var_tmp90->class->vft[COLOR_core__abstract_text__Text__substrings]))(var_tmp90); /* substrings on <var_tmp90:String>*/
+var114 = ((val*(*)(val* self))(var_tmp99->class->vft[COLOR_core__abstract_text__Text__substrings]))(var_tmp99); /* substrings on <var_tmp99:String>*/
 }
-var_ = var105;
+var_ = var114;
 {
-var106 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Iterator__iterator]))(var_); /* iterator on <var_:Iterator[FlatText]>*/
+var115 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Iterator__iterator]))(var_); /* iterator on <var_:Iterator[FlatText]>*/
 }
-var_107 = var106;
+var_116 = var115;
 for(;;) {
 {
-var108 = ((short int(*)(val* self))((((long)var_107&3)?class_info[((long)var_107&3)]:var_107->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_107); /* is_ok on <var_107:Iterator[FlatText]>*/
+var117 = ((short int(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_116); /* is_ok on <var_116:Iterator[FlatText]>*/
 }
-if (var108){
+if (var117){
 } else {
-goto BREAK_label109;
+goto BREAK_label118;
 }
 {
-var110 = ((val*(*)(val* self))((((long)var_107&3)?class_info[((long)var_107&3)]:var_107->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_107); /* item on <var_107:Iterator[FlatText]>*/
+var119 = ((val*(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_116); /* item on <var_116:Iterator[FlatText]>*/
 }
-var_j = var110;
+var_j = var119;
 /* <var_j:FlatText> isa FlatString */
-cltype112 = type_core__FlatString.color;
-idtype113 = type_core__FlatString.id;
-if(cltype112 >= var_j->type->table_size) {
-var111 = 0;
+cltype121 = type_core__FlatString.color;
+idtype122 = type_core__FlatString.id;
+if(cltype121 >= var_j->type->table_size) {
+var120 = 0;
 } else {
-var111 = var_j->type->type_table[cltype112] == idtype113;
+var120 = var_j->type->type_table[cltype121] == idtype122;
 }
-if (unlikely(!var111)) {
-var_class_name114 = var_j == NULL ? "null" : var_j->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "FlatString", var_class_name114);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1346);
+if (unlikely(!var120)) {
+var_class_name123 = var_j == NULL ? "null" : var_j->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "FlatString", var_class_name123);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1528);
 fatal_exit(1);
 }
 var_s = var_j;
-var115 = var_s->attrs[COLOR_core__abstract_text__FlatText___bytelen].l; /* _bytelen on <var_s:FlatString> */
-var_slen = var115;
-var116 = var_s->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <var_s:FlatString> */
-var117 = var_s->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <var_s:FlatString> */
+var124 = var_s->attrs[COLOR_core__abstract_text__FlatText___byte_length].l; /* _byte_length on <var_s:FlatString> */
+var_slen = var124;
+var125 = var_s->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <var_s:FlatString> */
+var126 = var_s->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <var_s:FlatString> */
 {
-{ /* Inline native#NativeString#copy_to (var116,var_ns,var_slen,var117,var_off) on <var116:NativeString> */
-memmove(var_ns+var_off,var116+var117,var_slen);
-RET_LABEL118:(void)0;
+{ /* Inline native$CString$copy_to (var125,var_ns,var_slen,var126,var_off) on <var125:CString> */
+memmove(var_ns+var_off,var125+var126,var_slen);
+RET_LABEL127:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_off,var_slen) on <var_off:Int> */
+{ /* Inline kernel$Int$+ (var_off,var_slen) on <var_off:Int> */
 /* Covariant cast for argument 0 (i) <var_slen:Int> isa OTHER */
 /* <var_slen:Int> isa OTHER */
-var121 = 1; /* easy <var_slen:Int> isa OTHER*/
-if (unlikely(!var121)) {
-var_class_name124 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name124);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var130 = 1; /* easy <var_slen:Int> isa OTHER*/
+if (unlikely(!var130)) {
+var_class_name133 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name133);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var125 = var_off + var_slen;
-var119 = var125;
-goto RET_LABEL120;
-RET_LABEL120:(void)0;
+var134 = var_off + var_slen;
+var128 = var134;
+goto RET_LABEL129;
+RET_LABEL129:(void)0;
 }
 }
-var_off = var119;
+var_off = var128;
 {
-((void(*)(val* self))((((long)var_107&3)?class_info[((long)var_107&3)]:var_107->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_107); /* next on <var_107:Iterator[FlatText]>*/
+((void(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_116); /* next on <var_116:Iterator[FlatText]>*/
 }
 }
-BREAK_label109: (void)0;
+BREAK_label118: (void)0;
 {
-((void(*)(val* self))((((long)var_107&3)?class_info[((long)var_107&3)]:var_107->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_107); /* finish on <var_107:Iterator[FlatText]>*/
+((void(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_116); /* finish on <var_116:Iterator[FlatText]>*/
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
+{ /* Inline kernel$Int$+ (var_i,1l) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var128 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var128)) {
-var_class_name131 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name131);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var137 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var137)) {
+var_class_name140 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name140);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var132 = var_i + 1l;
-var126 = var132;
-goto RET_LABEL127;
-RET_LABEL127:(void)0;
+var141 = var_i + 1l;
+var135 = var141;
+goto RET_LABEL136;
+RET_LABEL136:(void)0;
 }
 }
-var_i = var126;
+var_i = var135;
 } else {
-goto BREAK_label133;
+goto BREAK_label142;
+}
 }
+BREAK_label142: (void)0;
+if (likely(varoncenew143_guard)) {
+var144 = varoncenew143;
+} else {
+var145 = NEW_core__FlatString(&type_core__FlatString);
+var144 = var145;
+varoncenew143 = var144;
+varoncenew143_guard = 1;
 }
-BREAK_label133: (void)0;
-var134 = NEW_core__FlatString(&type_core__FlatString);
 {
-core___core__FlatString___with_infos(var134, var_ns, var_sl, 0l); /* Direct call flat#FlatString#with_infos on <var134:FlatString>*/
+var146 = core___core__FlatString___with_infos(var144, var_ns, var_sl, 0l);
 }
-var = var134;
+var = var146;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method flat#NativeArray#native_to_s for (self: NativeArray[nullable Object]): String */
+/* method flat$NativeArray$native_to_s for (self: NativeArray[nullable Object]): String */
 val* core__flat___NativeArray___native_to_s(val* self) {
 val* var /* : String */;
 short int var1 /* : Bool */;
@@ -2324,68 +3814,75 @@ int cltype32;
 int idtype33;
 const char* var_class_name34;
 long var35 /* : Int */;
-char* var36 /* : NativeString */;
-long var37 /* : Int */;
-short int var39 /* : Bool */;
-int cltype40;
-int idtype41;
-const char* var_class_name42;
-long var43 /* : Int */;
-char* var44 /* : NativeString */;
-char* var46 /* : NativeString */;
-char* var_ns /* var ns: NativeString */;
+static char* varoncenew;
+static int varoncenew_guard;
+char* var36 /* : CString */;
+char* var37 /* : CString */;
+long var38 /* : Int */;
+short int var40 /* : Bool */;
+int cltype41;
+int idtype42;
+const char* var_class_name43;
+long var44 /* : Int */;
+char* var45 /* : CString */;
+char* var47 /* : CString */;
+char* var_ns /* var ns: CString */;
 long var_off /* var off: Int */;
-short int var48 /* : Bool */;
-short int var50 /* : Bool */;
-int cltype51;
-int idtype52;
-const char* var_class_name53;
-short int var54 /* : Bool */;
-val* var55 /* : nullable Object */;
-val* var57 /* : Object */;
+short int var49 /* : Bool */;
+short int var51 /* : Bool */;
+int cltype52;
+int idtype53;
+const char* var_class_name54;
+short int var55 /* : Bool */;
+val* var56 /* : nullable Object */;
+val* var58 /* : Object */;
 val* var_tmp /* var tmp: String */;
-short int var58 /* : Bool */;
-int cltype59;
-int idtype60;
-long var61 /* : Int */;
+short int var59 /* : Bool */;
+int cltype60;
+int idtype61;
+long var62 /* : Int */;
 long var_tpl /* var tpl: Int */;
-char* var62 /* : NativeString */;
-long var63 /* : Int */;
-long var65 /* : Int */;
-short int var67 /* : Bool */;
-int cltype68;
-int idtype69;
-const char* var_class_name70;
-long var71 /* : Int */;
-val* var72 /* : Iterator[FlatText] */;
+char* var63 /* : CString */;
+long var64 /* : Int */;
+long var66 /* : Int */;
+short int var68 /* : Bool */;
+int cltype69;
+int idtype70;
+const char* var_class_name71;
+long var72 /* : Int */;
+val* var73 /* : Iterator[FlatText] */;
 val* var_ /* var : Iterator[FlatText] */;
-val* var73 /* : Iterator[nullable Object] */;
-val* var_74 /* var : Iterator[FlatText] */;
-short int var75 /* : Bool */;
-val* var77 /* : nullable Object */;
+val* var74 /* : Iterator[nullable Object] */;
+val* var_75 /* var : Iterator[FlatText] */;
+short int var76 /* : Bool */;
+val* var78 /* : nullable Object */;
 val* var_j /* var j: FlatText */;
-short int var78 /* : Bool */;
-int cltype79;
-int idtype80;
-const char* var_class_name81;
+short int var79 /* : Bool */;
+int cltype80;
+int idtype81;
+const char* var_class_name82;
 val* var_s /* var s: FlatString */;
-long var82 /* : Int */;
+long var83 /* : Int */;
 long var_slen /* var slen: Int */;
-char* var83 /* : NativeString */;
-long var84 /* : Int */;
-long var86 /* : Int */;
-short int var88 /* : Bool */;
-int cltype89;
-int idtype90;
-const char* var_class_name91;
-long var92 /* : Int */;
+char* var84 /* : CString */;
+long var85 /* : Int */;
+long var87 /* : Int */;
+short int var89 /* : Bool */;
+int cltype90;
+int idtype91;
+const char* var_class_name92;
 long var93 /* : Int */;
-short int var95 /* : Bool */;
-int cltype96;
-int idtype97;
-const char* var_class_name98;
-long var99 /* : Int */;
-val* var101 /* : FlatString */;
+long var94 /* : Int */;
+short int var96 /* : Bool */;
+int cltype97;
+int idtype98;
+const char* var_class_name99;
+long var100 /* : Int */;
+static val* varoncenew102;
+static int varoncenew102_guard;
+val* var103 /* : FlatString */;
+val* var104 /* : FlatString */;
+val* var105 /* : FlatString */;
 /* <self:NativeArray[nullable Object]> isa NativeArray[String] */
 cltype = type_core__NativeArray__core__String.color;
 idtype = type_core__NativeArray__core__String.id;
@@ -2395,12 +3892,15 @@ var1 = 0;
 var1 = self->type->type_table[cltype] == idtype;
 }
 if (unlikely(!var1)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1360);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1542);
 fatal_exit(1);
 }
 {
-{ /* Inline array#NativeArray#length (self) on <self:NativeArray[nullable Object](NativeArray[String])> */
+{ /* Inline array$NativeArray$length (self) on <self:NativeArray[nullable Object](NativeArray[String])> */
 var4 = ((struct instance_core__NativeArray*)self)->length;
 var2 = var4;
 goto RET_LABEL3;
@@ -2414,14 +3914,14 @@ var_sl = 0l;
 var_mypos = 0l;
 for(;;) {
 {
-{ /* Inline kernel#Int#< (var_i,var_l) on <var_i:Int> */
+{ /* Inline kernel$Int$< (var_i,var_l) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
 /* <var_l:Int> isa OTHER */
 var7 = 1; /* easy <var_l: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, 728);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
 fatal_exit(1);
 }
 var10 = var_i < var_l;
@@ -2432,7 +3932,7 @@ RET_LABEL6:(void)0;
 }
 if (var5){
 {
-{ /* Inline array#NativeArray#[] (var_na,var_i) on <var_na:NativeArray[String]> */
+{ /* Inline array$NativeArray$[] (var_na,var_i) on <var_na:NativeArray[String]> */
 var13 = ((struct instance_core__NativeArray*)var_na)->values[var_i];
 var11 = var13;
 goto RET_LABEL12;
@@ -2440,17 +3940,17 @@ RET_LABEL12:(void)0;
 }
 }
 {
-var14 = ((long(*)(val* self))(var11->class->vft[COLOR_core__abstract_text__Text__bytelen]))(var11); /* bytelen on <var11:nullable Object(String)>*/
+var14 = ((long(*)(val* self))(var11->class->vft[COLOR_core__abstract_text__Text__byte_length]))(var11); /* byte_length on <var11:nullable Object(String)>*/
 }
 {
-{ /* Inline kernel#Int#+ (var_sl,var14) on <var_sl:Int> */
+{ /* Inline kernel$Int$+ (var_sl,var14) on <var_sl:Int> */
 /* Covariant cast for argument 0 (i) <var14:Int> isa OTHER */
 /* <var14:Int> isa OTHER */
 var17 = 1; /* easy <var14:Int> isa OTHER*/
 if (unlikely(!var17)) {
 var_class_name20 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var21 = var_sl + var14;
@@ -2461,14 +3961,14 @@ RET_LABEL16:(void)0;
 }
 var_sl = var15;
 {
-{ /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
+{ /* Inline kernel$Int$+ (var_i,1l) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var24 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var24)) {
 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_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var28 = var_i + 1l;
@@ -2479,14 +3979,14 @@ RET_LABEL23:(void)0;
 }
 var_i = var22;
 {
-{ /* Inline kernel#Int#+ (var_mypos,1l) on <var_mypos:Int> */
+{ /* Inline kernel$Int$+ (var_mypos,1l) on <var_mypos:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var31 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var31)) {
 var_class_name34 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var35 = var_mypos + 1l;
@@ -2501,212 +4001,226 @@ goto BREAK_label;
 }
 }
 BREAK_label: (void)0;
-var36 = NULL/*special!*/;
+if (likely(varoncenew_guard)) {
+var36 = varoncenew;
+} else {
+var37 = NULL/*special!*/;
+var36 = var37;
+varoncenew = var36;
+varoncenew_guard = 1;
+}
 {
-{ /* Inline kernel#Int#+ (var_sl,1l) on <var_sl:Int> */
+{ /* Inline kernel$Int$+ (var_sl,1l) on <var_sl:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var39 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var39)) {
-var_class_name42 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name42);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var40 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var40)) {
+var_class_name43 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name43);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var43 = var_sl + 1l;
-var37 = var43;
-goto RET_LABEL38;
-RET_LABEL38:(void)0;
+var44 = var_sl + 1l;
+var38 = var44;
+goto RET_LABEL39;
+RET_LABEL39:(void)0;
 }
 }
 {
-{ /* Inline native#NativeString#new (var36,var37) on <var36:NativeString> */
-var46 = (char*)nit_alloc(var37);
-var44 = var46;
-goto RET_LABEL45;
-RET_LABEL45:(void)0;
+{ /* Inline native$CString$new (var36,var38) on <var36:CString> */
+var47 = (char*)nit_alloc(var38);
+var45 = var47;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
 }
 }
-var_ns = var44;
+var_ns = var45;
 {
-{ /* Inline native#NativeString#[]= (var_ns,var_sl,((unsigned char)0x00)) on <var_ns:NativeString> */
+{ /* Inline native$CString$[]= (var_ns,var_sl,((unsigned char)0x00)) on <var_ns:CString> */
 var_ns[var_sl]=(unsigned char)((unsigned char)0x00);
-RET_LABEL47:(void)0;
+RET_LABEL48:(void)0;
 }
 }
 var_i = 0l;
 var_off = 0l;
 for(;;) {
 {
-{ /* Inline kernel#Int#< (var_i,var_mypos) on <var_i:Int> */
+{ /* Inline kernel$Int$< (var_i,var_mypos) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <var_mypos:Int> isa OTHER */
 /* <var_mypos:Int> isa OTHER */
-var50 = 1; /* easy <var_mypos:Int> isa OTHER*/
-if (unlikely(!var50)) {
-var_class_name53 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name53);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+var51 = 1; /* easy <var_mypos:Int> isa OTHER*/
+if (unlikely(!var51)) {
+var_class_name54 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name54);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
 fatal_exit(1);
 }
-var54 = var_i < var_mypos;
-var48 = var54;
-goto RET_LABEL49;
-RET_LABEL49:(void)0;
+var55 = var_i < var_mypos;
+var49 = var55;
+goto RET_LABEL50;
+RET_LABEL50:(void)0;
 }
 }
-if (var48){
+if (var49){
 {
-{ /* Inline array#NativeArray#[] (var_na,var_i) on <var_na:NativeArray[String]> */
-var57 = ((struct instance_core__NativeArray*)var_na)->values[var_i];
-var55 = var57;
-goto RET_LABEL56;
-RET_LABEL56:(void)0;
+{ /* Inline array$NativeArray$[] (var_na,var_i) on <var_na:NativeArray[String]> */
+var58 = ((struct instance_core__NativeArray*)var_na)->values[var_i];
+var56 = var58;
+goto RET_LABEL57;
+RET_LABEL57:(void)0;
 }
 }
-var_tmp = var55;
+var_tmp = var56;
 /* <var_tmp:String> isa FlatString */
-cltype59 = type_core__FlatString.color;
-idtype60 = type_core__FlatString.id;
-if(cltype59 >= var_tmp->type->table_size) {
-var58 = 0;
+cltype60 = type_core__FlatString.color;
+idtype61 = type_core__FlatString.id;
+if(cltype60 >= var_tmp->type->table_size) {
+var59 = 0;
 } else {
-var58 = var_tmp->type->type_table[cltype59] == idtype60;
+var59 = var_tmp->type->type_table[cltype60] == idtype61;
 }
-if (var58){
-var61 = var_tmp->attrs[COLOR_core__abstract_text__FlatText___bytelen].l; /* _bytelen on <var_tmp:String(FlatString)> */
-var_tpl = var61;
-var62 = var_tmp->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <var_tmp:String(FlatString)> */
-var63 = var_tmp->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <var_tmp:String(FlatString)> */
+if (var59){
+var62 = var_tmp->attrs[COLOR_core__abstract_text__FlatText___byte_length].l; /* _byte_length on <var_tmp:String(FlatString)> */
+var_tpl = var62;
+var63 = var_tmp->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <var_tmp:String(FlatString)> */
+var64 = var_tmp->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <var_tmp:String(FlatString)> */
 {
-{ /* Inline native#NativeString#copy_to (var62,var_ns,var_tpl,var63,var_off) on <var62:NativeString> */
-memmove(var_ns+var_off,var62+var63,var_tpl);
-RET_LABEL64:(void)0;
+{ /* Inline native$CString$copy_to (var63,var_ns,var_tpl,var64,var_off) on <var63:CString> */
+memmove(var_ns+var_off,var63+var64,var_tpl);
+RET_LABEL65:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_off,var_tpl) on <var_off:Int> */
+{ /* Inline kernel$Int$+ (var_off,var_tpl) on <var_off:Int> */
 /* Covariant cast for argument 0 (i) <var_tpl:Int> isa OTHER */
 /* <var_tpl:Int> isa OTHER */
-var67 = 1; /* easy <var_tpl:Int> isa OTHER*/
-if (unlikely(!var67)) {
-var_class_name70 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name70);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var68 = 1; /* easy <var_tpl:Int> isa OTHER*/
+if (unlikely(!var68)) {
+var_class_name71 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name71);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var71 = var_off + var_tpl;
-var65 = var71;
-goto RET_LABEL66;
-RET_LABEL66:(void)0;
+var72 = var_off + var_tpl;
+var66 = var72;
+goto RET_LABEL67;
+RET_LABEL67:(void)0;
 }
 }
-var_off = var65;
+var_off = var66;
 } else {
 {
-var72 = ((val*(*)(val* self))(var_tmp->class->vft[COLOR_core__abstract_text__Text__substrings]))(var_tmp); /* substrings on <var_tmp:String>*/
+var73 = ((val*(*)(val* self))(var_tmp->class->vft[COLOR_core__abstract_text__Text__substrings]))(var_tmp); /* substrings on <var_tmp:String>*/
 }
-var_ = var72;
+var_ = var73;
 {
-var73 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Iterator__iterator]))(var_); /* iterator on <var_:Iterator[FlatText]>*/
+var74 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Iterator__iterator]))(var_); /* iterator on <var_:Iterator[FlatText]>*/
 }
-var_74 = var73;
+var_75 = var74;
 for(;;) {
 {
-var75 = ((short int(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_74); /* is_ok on <var_74:Iterator[FlatText]>*/
+var76 = ((short int(*)(val* self))((((long)var_75&3)?class_info[((long)var_75&3)]:var_75->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_75); /* is_ok on <var_75:Iterator[FlatText]>*/
 }
-if (var75){
+if (var76){
 } else {
-goto BREAK_label76;
+goto BREAK_label77;
 }
 {
-var77 = ((val*(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_74); /* item on <var_74:Iterator[FlatText]>*/
+var78 = ((val*(*)(val* self))((((long)var_75&3)?class_info[((long)var_75&3)]:var_75->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_75); /* item on <var_75:Iterator[FlatText]>*/
 }
-var_j = var77;
+var_j = var78;
 /* <var_j:FlatText> isa FlatString */
-cltype79 = type_core__FlatString.color;
-idtype80 = type_core__FlatString.id;
-if(cltype79 >= var_j->type->table_size) {
-var78 = 0;
+cltype80 = type_core__FlatString.color;
+idtype81 = type_core__FlatString.id;
+if(cltype80 >= var_j->type->table_size) {
+var79 = 0;
 } else {
-var78 = var_j->type->type_table[cltype79] == idtype80;
+var79 = var_j->type->type_table[cltype80] == idtype81;
 }
-if (unlikely(!var78)) {
-var_class_name81 = var_j == NULL ? "null" : var_j->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "FlatString", var_class_name81);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1383);
+if (unlikely(!var79)) {
+var_class_name82 = var_j == NULL ? "null" : var_j->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "FlatString", var_class_name82);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__flat, 1565);
 fatal_exit(1);
 }
 var_s = var_j;
-var82 = var_s->attrs[COLOR_core__abstract_text__FlatText___bytelen].l; /* _bytelen on <var_s:FlatString> */
-var_slen = var82;
-var83 = var_s->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <var_s:FlatString> */
-var84 = var_s->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <var_s:FlatString> */
+var83 = var_s->attrs[COLOR_core__abstract_text__FlatText___byte_length].l; /* _byte_length on <var_s:FlatString> */
+var_slen = var83;
+var84 = var_s->attrs[COLOR_core__abstract_text__FlatText___items].str; /* _items on <var_s:FlatString> */
+var85 = var_s->attrs[COLOR_core__flat__FlatString___first_byte].l; /* _first_byte on <var_s:FlatString> */
 {
-{ /* Inline native#NativeString#copy_to (var83,var_ns,var_slen,var84,var_off) on <var83:NativeString> */
-memmove(var_ns+var_off,var83+var84,var_slen);
-RET_LABEL85:(void)0;
+{ /* Inline native$CString$copy_to (var84,var_ns,var_slen,var85,var_off) on <var84:CString> */
+memmove(var_ns+var_off,var84+var85,var_slen);
+RET_LABEL86:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_off,var_slen) on <var_off:Int> */
+{ /* Inline kernel$Int$+ (var_off,var_slen) on <var_off:Int> */
 /* Covariant cast for argument 0 (i) <var_slen:Int> isa OTHER */
 /* <var_slen:Int> isa OTHER */
-var88 = 1; /* easy <var_slen:Int> isa OTHER*/
-if (unlikely(!var88)) {
-var_class_name91 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name91);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var89 = 1; /* easy <var_slen:Int> isa OTHER*/
+if (unlikely(!var89)) {
+var_class_name92 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name92);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var92 = var_off + var_slen;
-var86 = var92;
-goto RET_LABEL87;
-RET_LABEL87:(void)0;
+var93 = var_off + var_slen;
+var87 = var93;
+goto RET_LABEL88;
+RET_LABEL88:(void)0;
 }
 }
-var_off = var86;
+var_off = var87;
 {
-((void(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_74); /* next on <var_74:Iterator[FlatText]>*/
+((void(*)(val* self))((((long)var_75&3)?class_info[((long)var_75&3)]:var_75->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_75); /* next on <var_75:Iterator[FlatText]>*/
 }
 }
-BREAK_label76: (void)0;
+BREAK_label77: (void)0;
 {
-((void(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_74); /* finish on <var_74:Iterator[FlatText]>*/
+((void(*)(val* self))((((long)var_75&3)?class_info[((long)var_75&3)]:var_75->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_75); /* finish on <var_75:Iterator[FlatText]>*/
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
+{ /* Inline kernel$Int$+ (var_i,1l) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var95 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var95)) {
-var_class_name98 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name98);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+var96 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var96)) {
+var_class_name99 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name99);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var99 = var_i + 1l;
-var93 = var99;
-goto RET_LABEL94;
-RET_LABEL94:(void)0;
+var100 = var_i + 1l;
+var94 = var100;
+goto RET_LABEL95;
+RET_LABEL95:(void)0;
 }
 }
-var_i = var93;
+var_i = var94;
 } else {
-goto BREAK_label100;
+goto BREAK_label101;
 }
 }
-BREAK_label100: (void)0;
-var101 = NEW_core__FlatString(&type_core__FlatString);
+BREAK_label101: (void)0;
+if (likely(varoncenew102_guard)) {
+var103 = varoncenew102;
+} else {
+var104 = NEW_core__FlatString(&type_core__FlatString);
+var103 = var104;
+varoncenew102 = var103;
+varoncenew102_guard = 1;
+}
 {
-core___core__FlatString___with_infos(var101, var_ns, var_sl, 0l); /* Direct call flat#FlatString#with_infos on <var101:FlatString>*/
+var105 = core___core__FlatString___with_infos(var103, var_ns, var_sl, 0l);
 }
-var = var101;
+var = var105;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method flat#Map#join for (self: Map[nullable Object, nullable Object], String, String): String */
+/* method flat$Map$join for (self: Map[nullable Object, nullable Object], String, String): String */
 val* core__flat___Map___join(val* self, val* p0, val* p1) {
 val* var /* : String */;
 val* var_sep /* var sep: String */;
@@ -2714,51 +4228,74 @@ val* var_couple_sep /* var couple_sep: String */;
 short int var1 /* : Bool */;
 static val* varonce;
 val* var2 /* : String */;
-char* var3 /* : NativeString */;
+char* var3 /* : CString */;
 val* var4 /* : String */;
-val* var5 /* : Buffer */;
-val* var6 /* : Buffer */;
+val* var5 /* : nullable Int */;
+val* var6 /* : nullable Int */;
+val* var7 /* : nullable Bool */;
+val* var8 /* : nullable Bool */;
+static val* varoncenew;
+static int varoncenew_guard;
+val* var9 /* : Buffer */;
+val* var10 /* : Buffer */;
+val* var11 /* : Buffer */;
 val* var_s /* var s: Buffer */;
-val* var7 /* : MapIterator[nullable Object, nullable Object] */;
+val* var12 /* : MapIterator[nullable Object, nullable Object] */;
 val* var_i /* var i: MapIterator[nullable Object, nullable Object] */;
-val* var8 /* : nullable Object */;
+val* var13 /* : nullable Object */;
 val* var_k /* var k: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var14 /* : nullable Object */;
 val* var_e /* var e: nullable Object */;
-val* var11 /* : NativeArray[String] */;
-static val* varonce10;
-val* var12 /* : Object */;
-static val* varonce13;
-val* var14 /* : String */;
-char* var15 /* : NativeString */;
-val* var16 /* : String */;
-val* var17 /* : String */;
-val* var18 /* : Object */;
-static val* varonce19;
-val* var20 /* : String */;
-char* var21 /* : NativeString */;
-val* var22 /* : String */;
-val* var23 /* : String */;
-val* var24 /* : String */;
-short int var25 /* : Bool */;
-val* var26 /* : nullable Object */;
-val* var27 /* : nullable Object */;
-val* var29 /* : NativeArray[String] */;
+val* var16 /* : NativeArray[String] */;
+static val* varonce15;
+val* var17 /* : Object */;
+static val* varonce18;
+val* var19 /* : String */;
+char* var20 /* : CString */;
+val* var21 /* : String */;
+val* var22 /* : nullable Int */;
+val* var23 /* : nullable Int */;
+val* var24 /* : nullable Bool */;
+val* var25 /* : nullable Bool */;
+val* var26 /* : String */;
+val* var27 /* : Object */;
 static val* varonce28;
-val* var30 /* : Object */;
-static val* varonce31;
-val* var32 /* : String */;
-char* var33 /* : NativeString */;
-val* var34 /* : String */;
-val* var35 /* : String */;
-val* var36 /* : Object */;
-static val* varonce37;
-val* var38 /* : String */;
-char* var39 /* : NativeString */;
-val* var40 /* : String */;
-val* var41 /* : String */;
-val* var42 /* : String */;
-val* var43 /* : String */;
+val* var29 /* : String */;
+char* var30 /* : CString */;
+val* var31 /* : String */;
+val* var32 /* : nullable Int */;
+val* var33 /* : nullable Int */;
+val* var34 /* : nullable Bool */;
+val* var35 /* : nullable Bool */;
+val* var36 /* : String */;
+val* var37 /* : String */;
+short int var38 /* : Bool */;
+val* var39 /* : nullable Object */;
+val* var40 /* : nullable Object */;
+val* var42 /* : NativeArray[String] */;
+static val* varonce41;
+val* var43 /* : Object */;
+static val* varonce44;
+val* var45 /* : String */;
+char* var46 /* : CString */;
+val* var47 /* : String */;
+val* var48 /* : nullable Int */;
+val* var49 /* : nullable Int */;
+val* var50 /* : nullable Bool */;
+val* var51 /* : nullable Bool */;
+val* var52 /* : String */;
+val* var53 /* : Object */;
+static val* varonce54;
+val* var55 /* : String */;
+char* var56 /* : CString */;
+val* var57 /* : String */;
+val* var58 /* : nullable Int */;
+val* var59 /* : nullable Int */;
+val* var60 /* : nullable Bool */;
+val* var61 /* : nullable Bool */;
+val* var62 /* : String */;
+val* var63 /* : String */;
+val* var64 /* : String */;
 var_sep = p0;
 var_couple_sep = p1;
 {
@@ -2769,7 +4306,11 @@ if (likely(varonce!=NULL)) {
 var2 = varonce;
 } else {
 var3 = "";
-var4 = core__flat___NativeString___to_s_full(var3, 0l, 0l);
+var5 = (val*)(0l<<2|1);
+var6 = (val*)(0l<<2|1);
+var7 = (val*)((long)(0)<<2|3);
+var8 = (val*)((long)(0)<<2|3);
+var4 = core__flat___CString___to_s_unsafe(var3, var5, var6, var7, var8);
 var2 = var4;
 varonce = var2;
 }
@@ -2777,137 +4318,160 @@ var = var2;
 goto RET_LABEL;
 } else {
 }
-var5 = NEW_core__Buffer(&type_core__Buffer);
+if (likely(varoncenew_guard)) {
+var9 = varoncenew;
+} else {
+var10 = NEW_core__Buffer(&type_core__Buffer);
+var9 = var10;
+varoncenew = var9;
+varoncenew_guard = 1;
+}
 {
-var6 = core__flat___Buffer___new(var5);
+var11 = core__flat___Buffer___new(var9);
 }
-var_s = var6;
+var_s = var11;
 {
-var7 = ((val*(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(self); /* iterator on <self:Map[nullable Object, nullable Object]>*/
+var12 = ((val*(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(self); /* iterator on <self:Map[nullable Object, nullable Object]>*/
 }
-var_i = var7;
+var_i = var12;
 {
-var8 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_i); /* key on <var_i:MapIterator[nullable Object, nullable Object]>*/
+var13 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_i); /* key on <var_i:MapIterator[nullable Object, nullable Object]>*/
 }
-var_k = var8;
+var_k = var13;
 {
-var9 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_i); /* item on <var_i:MapIterator[nullable Object, nullable Object]>*/
+var14 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_i); /* item on <var_i:MapIterator[nullable Object, nullable Object]>*/
 }
-var_e = var9;
-if (unlikely(varonce10==NULL)) {
-var11 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+var_e = var14;
+if (unlikely(varonce15==NULL)) {
+var16 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
 } else {
-var11 = varonce10;
-varonce10 = NULL;
+var16 = varonce15;
+varonce15 = NULL;
 }
 if (var_k!=NULL) {
-var12 = var_k;
+var17 = var_k;
 } else {
-if (likely(varonce13!=NULL)) {
-var14 = varonce13;
+if (likely(varonce18!=NULL)) {
+var19 = varonce18;
 } else {
-var15 = "<null>";
-var16 = core__flat___NativeString___to_s_full(var15, 6l, 6l);
-var14 = var16;
-varonce13 = var14;
+var20 = "<null>";
+var22 = (val*)(6l<<2|1);
+var23 = (val*)(6l<<2|1);
+var24 = (val*)((long)(0)<<2|3);
+var25 = (val*)((long)(0)<<2|3);
+var21 = core__flat___CString___to_s_unsafe(var20, var22, var23, var24, var25);
+var19 = var21;
+varonce18 = var19;
 }
-var12 = var14;
+var17 = var19;
 }
 {
-var17 = ((val*(*)(val* self))((((long)var12&3)?class_info[((long)var12&3)]:var12->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var12); /* to_s on <var12:Object>*/
+var26 = ((val*(*)(val* self))((((long)var17&3)?class_info[((long)var17&3)]:var17->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var17); /* to_s on <var17:Object>*/
 }
-((struct instance_core__NativeArray*)var11)->values[0]=var17;
-((struct instance_core__NativeArray*)var11)->values[1]=var_couple_sep;
+((struct instance_core__NativeArray*)var16)->values[0]=var26;
+((struct instance_core__NativeArray*)var16)->values[1]=var_couple_sep;
 if (var_e!=NULL) {
-var18 = var_e;
+var27 = var_e;
 } else {
-if (likely(varonce19!=NULL)) {
-var20 = varonce19;
+if (likely(varonce28!=NULL)) {
+var29 = varonce28;
 } else {
-var21 = "<null>";
-var22 = core__flat___NativeString___to_s_full(var21, 6l, 6l);
-var20 = var22;
-varonce19 = var20;
+var30 = "<null>";
+var32 = (val*)(6l<<2|1);
+var33 = (val*)(6l<<2|1);
+var34 = (val*)((long)(0)<<2|3);
+var35 = (val*)((long)(0)<<2|3);
+var31 = core__flat___CString___to_s_unsafe(var30, var32, var33, var34, var35);
+var29 = var31;
+varonce28 = var29;
 }
-var18 = var20;
+var27 = var29;
 }
 {
-var23 = ((val*(*)(val* self))((((long)var18&3)?class_info[((long)var18&3)]:var18->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var18); /* to_s on <var18:Object>*/
+var36 = ((val*(*)(val* self))((((long)var27&3)?class_info[((long)var27&3)]:var27->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var27); /* to_s on <var27:Object>*/
 }
-((struct instance_core__NativeArray*)var11)->values[2]=var23;
+((struct instance_core__NativeArray*)var16)->values[2]=var36;
 {
-var24 = ((val*(*)(val* self))(var11->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var11); /* native_to_s on <var11:NativeArray[String]>*/
+var37 = ((val*(*)(val* self))(var16->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var16); /* native_to_s on <var16:NativeArray[String]>*/
 }
-varonce10 = var11;
+varonce15 = var16;
 {
-((void(*)(val* self, val* p0))(var_s->class->vft[COLOR_core__abstract_text__Buffer__append]))(var_s, var24); /* append on <var_s:Buffer>*/
+((void(*)(val* self, val* p0))(var_s->class->vft[COLOR_core__abstract_text__Buffer__append]))(var_s, var37); /* append on <var_s:Buffer>*/
 }
 {
 ((void(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_i); /* next on <var_i:MapIterator[nullable Object, nullable Object]>*/
 }
 for(;;) {
 {
-var25 = ((short int(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_i); /* is_ok on <var_i:MapIterator[nullable Object, nullable Object]>*/
+var38 = ((short int(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_i); /* is_ok on <var_i:MapIterator[nullable Object, nullable Object]>*/
 }
-if (var25){
+if (var38){
 {
 ((void(*)(val* self, val* p0))(var_s->class->vft[COLOR_core__abstract_text__Buffer__append]))(var_s, var_sep); /* append on <var_s:Buffer>*/
 }
 {
-var26 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_i); /* key on <var_i:MapIterator[nullable Object, nullable Object]>*/
+var39 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_i); /* key on <var_i:MapIterator[nullable Object, nullable Object]>*/
 }
-var_k = var26;
+var_k = var39;
 {
-var27 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_i); /* item on <var_i:MapIterator[nullable Object, nullable Object]>*/
+var40 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_i); /* item on <var_i:MapIterator[nullable Object, nullable Object]>*/
 }
-var_e = var27;
-if (unlikely(varonce28==NULL)) {
-var29 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+var_e = var40;
+if (unlikely(varonce41==NULL)) {
+var42 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
 } else {
-var29 = varonce28;
-varonce28 = NULL;
+var42 = varonce41;
+varonce41 = NULL;
 }
 if (var_k!=NULL) {
-var30 = var_k;
+var43 = var_k;
 } else {
-if (likely(varonce31!=NULL)) {
-var32 = varonce31;
+if (likely(varonce44!=NULL)) {
+var45 = varonce44;
 } else {
-var33 = "<null>";
-var34 = core__flat___NativeString___to_s_full(var33, 6l, 6l);
-var32 = var34;
-varonce31 = var32;
+var46 = "<null>";
+var48 = (val*)(6l<<2|1);
+var49 = (val*)(6l<<2|1);
+var50 = (val*)((long)(0)<<2|3);
+var51 = (val*)((long)(0)<<2|3);
+var47 = core__flat___CString___to_s_unsafe(var46, var48, var49, var50, var51);
+var45 = var47;
+varonce44 = var45;
 }
-var30 = var32;
+var43 = var45;
 }
 {
-var35 = ((val*(*)(val* self))((((long)var30&3)?class_info[((long)var30&3)]:var30->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var30); /* to_s on <var30:Object>*/
+var52 = ((val*(*)(val* self))((((long)var43&3)?class_info[((long)var43&3)]:var43->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var43); /* to_s on <var43:Object>*/
 }
-((struct instance_core__NativeArray*)var29)->values[0]=var35;
-((struct instance_core__NativeArray*)var29)->values[1]=var_couple_sep;
+((struct instance_core__NativeArray*)var42)->values[0]=var52;
+((struct instance_core__NativeArray*)var42)->values[1]=var_couple_sep;
 if (var_e!=NULL) {
-var36 = var_e;
+var53 = var_e;
 } else {
-if (likely(varonce37!=NULL)) {
-var38 = varonce37;
+if (likely(varonce54!=NULL)) {
+var55 = varonce54;
 } else {
-var39 = "<null>";
-var40 = core__flat___NativeString___to_s_full(var39, 6l, 6l);
-var38 = var40;
-varonce37 = var38;
+var56 = "<null>";
+var58 = (val*)(6l<<2|1);
+var59 = (val*)(6l<<2|1);
+var60 = (val*)((long)(0)<<2|3);
+var61 = (val*)((long)(0)<<2|3);
+var57 = core__flat___CString___to_s_unsafe(var56, var58, var59, var60, var61);
+var55 = var57;
+varonce54 = var55;
 }
-var36 = var38;
+var53 = var55;
 }
 {
-var41 = ((val*(*)(val* self))((((long)var36&3)?class_info[((long)var36&3)]:var36->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var36); /* to_s on <var36:Object>*/
+var62 = ((val*(*)(val* self))((((long)var53&3)?class_info[((long)var53&3)]:var53->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var53); /* to_s on <var53:Object>*/
 }
-((struct instance_core__NativeArray*)var29)->values[2]=var41;
+((struct instance_core__NativeArray*)var42)->values[2]=var62;
 {
-var42 = ((val*(*)(val* self))(var29->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var29); /* native_to_s on <var29:NativeArray[String]>*/
+var63 = ((val*(*)(val* self))(var42->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var42); /* native_to_s on <var42:NativeArray[String]>*/
 }
-varonce28 = var29;
+varonce41 = var42;
 {
-((void(*)(val* self, val* p0))(var_s->class->vft[COLOR_core__abstract_text__Buffer__append]))(var_s, var42); /* append on <var_s:Buffer>*/
+((void(*)(val* self, val* p0))(var_s->class->vft[COLOR_core__abstract_text__Buffer__append]))(var_s, var63); /* append on <var_s:Buffer>*/
 }
 {
 ((void(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_i); /* next on <var_i:MapIterator[nullable Object, nullable Object]>*/
@@ -2918,9 +4482,9 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-var43 = ((val*(*)(val* self))(var_s->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_s); /* to_s on <var_s:Buffer>*/
+var64 = ((val*(*)(val* self))(var_s->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_s); /* to_s on <var_s:Buffer>*/
 }
-var = var43;
+var = var64;
 goto RET_LABEL;
 RET_LABEL:;
 return var;