+/* method csv$Text$escape_to_csv for (self: Text, Char, Char, String): String */
+val* csv___core__Text___escape_to_csv(val* self, uint32_t p0, uint32_t p1, val* p2) {
+val* var /* : String */;
+uint32_t var_sep_char /* var sep_char: Char */;
+uint32_t var_delim_char /* var delim_char: Char */;
+val* var_eol /* var eol: String */;
+long var1 /* : Int */;
+long var_add_sp /* var add_sp: Int */;
+short int var2 /* : Bool */;
+short int var4 /* : Bool */;
+val* var5 /* : String */;
+static val* varoncenew;
+static int varoncenew_guard;
+val* var6 /* : Buffer */;
+val* var7 /* : Buffer */;
+long var8 /* : Int */;
+long var9 /* : Int */;
+short int var11 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var12 /* : Int */;
+val* var13 /* : Buffer */;
+val* var_bf /* var bf: Buffer */;
+long var_i /* var i: Int */;
+long var14 /* : Int */;
+long var_ /* var : Int */;
+short int var15 /* : Bool */;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
+const char* var_class_name20;
+short int var21 /* : Bool */;
+uint32_t var22 /* : Char */;
+uint32_t var_c /* var c: Char */;
+short int var23 /* : Bool */;
+short int var25 /* : Bool */;
+long var26 /* : Int */;
+val* var27 /* : String */;
+var_sep_char = p0;
+var_delim_char = p1;
+var_eol = p2;
+{
+var1 = csv___core__Text___chars_to_escape_csv(self, var_sep_char, var_delim_char, var_eol);
+}
+var_add_sp = var1;
+{
+{ /* Inline kernel$Int$== (var_add_sp,0l) on <var_add_sp:Int> */
+var4 = var_add_sp == 0l;
+var2 = var4;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+}
+if (var2){
+{
+var5 = ((val*(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Object__to_s]))(self); /* to_s on <self:Text>*/
+}
+var = var5;
+goto RET_LABEL;
+} else {
+}
+if (likely(varoncenew_guard)) {
+var6 = varoncenew;
+} else {
+var7 = NEW_core__Buffer(&type_core__Buffer);
+var6 = var7;
+varoncenew = var6;
+varoncenew_guard = 1;
+}
+{
+var8 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__byte_length]))(self); /* byte_length on <self:Text>*/
+}
+{
+{ /* Inline kernel$Int$+ (var_add_sp,var8) on <var_add_sp:Int> */
+/* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
+/* <var8:Int> isa OTHER */
+var11 = 1; /* easy <var8:Int> isa OTHER*/
+if (unlikely(!var11)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var12 = var_add_sp + var8;
+var9 = var12;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+}
+{
+var13 = core__flat___Buffer___with_cap(var6, var9);
+}
+var_bf = var13;
+{
+((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, '\"'); /* add on <var_bf:Buffer>*/
+}
+var_i = 0l;
+{
+var14 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:Text>*/
+}
+var_ = var14;
+for(;;) {
+{
+{ /* Inline kernel$Int$< (var_i,var_) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
+/* <var_:Int> isa OTHER */
+var17 = 1; /* easy <var_: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, 725);
+fatal_exit(1);
+}
+var21 = var_i < var_;
+var15 = var21;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+}
+if (var15){
+} else {
+goto BREAK_label;
+}
+{
+var22 = ((uint32_t(*)(val* self, long p0))(self->class->vft[COLOR_core__abstract_text__Text___91d_93d]))(self, var_i); /* [] on <self:Text>*/
+}
+var_c = var22;
+{
+{ /* Inline kernel$Char$== (var_c,var_delim_char) on <var_c:Char> */
+var25 = var_c == var_delim_char;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
+}
+}
+if (var23){
+{
+((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, var_c); /* add on <var_bf:Buffer>*/
+}
+} else {
+}
+{
+((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, var_c); /* add on <var_bf:Buffer>*/
+}
+{
+var26 = core___core__Int___Discrete__successor(var_i, 1l);
+}
+var_i = var26;
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self, uint32_t p0))(var_bf->class->vft[COLOR_core__abstract_text__Buffer__add]))(var_bf, '\"'); /* add on <var_bf:Buffer>*/
+}
+{
+var27 = ((val*(*)(val* self))(var_bf->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_bf); /* to_s on <var_bf:Buffer>*/
+}
+var = var27;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method csv$Text$chars_to_escape_csv for (self: Text, Char, Char, String): Int */
+long csv___core__Text___chars_to_escape_csv(val* self, uint32_t p0, uint32_t p1, val* p2) {
+long var /* : Int */;
+uint32_t var_sep_char /* var sep_char: Char */;
+uint32_t var_delim_char /* var delim_char: Char */;
+val* var_eol /* var eol: String */;
+long var_more_ln /* var more_ln: Int */;
+long var1 /* : Int */;
+long var_ln /* var ln: Int */;
+short int var_need_esc /* var need_esc: Bool */;
+uint32_t var2 /* : Char */;
+uint32_t var_fst_eol /* var fst_eol: Char */;
+long var_i /* var i: Int */;
+short int var3 /* : Bool */;
+short int var5 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var6 /* : Bool */;
+uint32_t var7 /* : Char */;
+uint32_t var_c /* var c: Char */;
+short int var8 /* : Bool */;
+short int var10 /* : Bool */;
+long var11 /* : Int */;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
+const char* var_class_name16;
+long var17 /* : Int */;
+short int var18 /* : Bool */;
+short int var20 /* : Bool */;
+long var_j /* var j: Int */;
+long var21 /* : Int */;
+long var_ /* var : Int */;
+short int var22 /* : Bool */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+const char* var_class_name27;
+short int var28 /* : Bool */;
+long var29 /* : Int */;
+short int var31 /* : Bool */;
+int cltype32;
+int idtype33;
+const char* var_class_name34;
+long var35 /* : Int */;
+uint32_t var36 /* : Char */;
+uint32_t var37 /* : Char */;
+short int var38 /* : Bool */;
+short int var40 /* : Bool */;
+short int var41 /* : Bool */;
+long var42 /* : Int */;
+short int var44 /* : Bool */;
+int cltype45;
+int idtype46;
+const char* var_class_name47;
+long var48 /* : Int */;
+long var49 /* : Int */;
+short int var50 /* : Bool */;
+short int var52 /* : Bool */;
+long var53 /* : Int */;
+short int var55 /* : Bool */;
+int cltype56;
+int idtype57;
+const char* var_class_name58;
+long var59 /* : Int */;
+long var61 /* : Int */;
+long var62 /* : Int */;
+short int var64 /* : Bool */;
+int cltype65;
+int idtype66;
+const char* var_class_name67;
+long var68 /* : Int */;
+long var_more /* var more: Int */;
+long var69 /* : Int */;
+short int var71 /* : Bool */;
+int cltype72;
+int idtype73;
+const char* var_class_name74;
+long var75 /* : Int */;
+var_sep_char = p0;
+var_delim_char = p1;
+var_eol = p2;
+var_more_ln = 0l;
+{
+var1 = ((long(*)(val* self))(self->class->vft[COLOR_core__abstract_text__Text__length]))(self); /* length on <self:Text>*/
+}
+var_ln = var1;
+var_need_esc = 0;
+{
+var2 = core___core__Text___first(var_eol);
+}
+var_fst_eol = var2;
+var_i = 0l;
+for(;;) {
+{
+{ /* Inline kernel$Int$< (var_i,var_ln) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_ln:Int> isa OTHER */
+/* <var_ln:Int> isa OTHER */
+var5 = 1; /* easy <var_ln: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_i < var_ln;
+var3 = var6;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
+}
+}
+if (var3){
+{
+var7 = ((uint32_t(*)(val* self, long p0))(self->class->vft[COLOR_core__abstract_text__Text___91d_93d]))(self, var_i); /* [] on <self:Text>*/
+}
+var_c = var7;
+{
+{ /* Inline kernel$Char$== (var_c,var_delim_char) on <var_c:Char> */
+var10 = var_c == var_delim_char;
+var8 = var10;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
+}
+}
+if (var8){
+{
+{ /* Inline kernel$Int$+ (var_more_ln,1l) on <var_more_ln:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var13 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var13)) {
+var_class_name16 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var17 = var_more_ln + 1l;
+var11 = var17;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
+}
+}
+var_more_ln = var11;
+} else {
+}
+{
+{ /* Inline kernel$Char$== (var_c,var_fst_eol) on <var_c:Char> */
+var20 = var_c == var_fst_eol;
+var18 = var20;
+goto RET_LABEL19;
+RET_LABEL19:(void)0;
+}
+}
+if (var18){
+var_need_esc = 1;
+var_j = 1l;
+{
+var21 = ((long(*)(val* self))(var_eol->class->vft[COLOR_core__abstract_text__Text__length]))(var_eol); /* length on <var_eol:String>*/
+}
+var_ = var21;
+for(;;) {
+{
+{ /* Inline kernel$Int$< (var_j,var_) on <var_j:Int> */
+/* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
+/* <var_:Int> isa OTHER */
+var24 = 1; /* easy <var_: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, 725);
+fatal_exit(1);