+/* method csv#CsvWriter#write_sequence for (self: CsvWriter, SequenceRead[Object]) */
+void csv___csv__CsvWriter___write_sequence(val* self, val* p0) {
+val* var_row /* var row: SequenceRead[Object] */;
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+val* var2 /* : Iterator[nullable Object] */;
+val* var_i /* var i: IndexedIterator[Object] */;
+val* var3 /* : CsvFormat */;
+val* var5 /* : CsvFormat */;
+uint32_t var6 /* : Char */;
+uint32_t var8 /* : Char */;
+val* var9 /* : String */;
+val* var_separator /* var separator: String */;
+val* var10 /* : nullable Object */;
+val* var11 /* : String */;
+val* var_ /* var : IndexedIterator[Object] */;
+val* var12 /* : Iterator[nullable Object] */;
+val* var_13 /* var : Iterator[Object] */;
+short int var14 /* : Bool */;
+val* var15 /* : nullable Object */;
+val* var_cell /* var cell: Object */;
+val* var16 /* : Writer */;
+val* var18 /* : Writer */;
+val* var19 /* : String */;
+val* var20 /* : Writer */;
+val* var22 /* : Writer */;
+val* var23 /* : CsvFormat */;
+val* var25 /* : CsvFormat */;
+val* var26 /* : String */;
+val* var28 /* : String */;
+var_row = p0;
+{
+var = ((short int(*)(val* self))((((long)var_row&3)?class_info[((long)var_row&3)]:var_row->class)->vft[COLOR_standard__abstract_collection__Collection__is_empty]))(var_row); /* is_empty on <var_row:SequenceRead[Object]>*/
+}
+var1 = !var;
+if (var1){
+{
+var2 = ((val*(*)(val* self))((((long)var_row&3)?class_info[((long)var_row&3)]:var_row->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_row); /* iterator on <var_row:SequenceRead[Object]>*/
+}
+var_i = var2;
+{
+{ /* Inline csv#CsvWriter#format (self) on <self:CsvWriter> */
+var5 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on <self:CsvWriter> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format");
+PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+{ /* Inline csv#CsvFormat#separator (var3) on <var3:CsvFormat> */
+var8 = var3->attrs[COLOR_csv__CsvFormat___separator].c; /* _separator on <var3:CsvFormat> */
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+{
+var9 = standard__string___Char___Object__to_s(var6);
+}
+var_separator = var9;
+{
+var10 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_i); /* item on <var_i:IndexedIterator[Object]>*/
+}
+{
+var11 = ((val*(*)(val* self))((((long)var10&3)?class_info[((long)var10&3)]:var10->class)->vft[COLOR_standard__string__Object__to_s]))(var10); /* to_s on <var10:nullable Object(Object)>*/
+}
+{
+csv___csv__CsvWriter___write_cell(self, var11); /* Direct call csv#CsvWriter#write_cell on <self:CsvWriter>*/
+}
+{
+((void(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_i); /* next on <var_i:IndexedIterator[Object]>*/
+}
+var_ = var_i;
+{
+var12 = standard___standard__Iterator___iterator(var_);
+}
+var_13 = var12;
+for(;;) {
+{
+var14 = ((short int(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_13); /* is_ok on <var_13:Iterator[Object]>*/
+}
+if (var14){
+{
+var15 = ((val*(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_13); /* item on <var_13:Iterator[Object]>*/
+}
+var_cell = var15;
+{
+{ /* Inline csv#CsvWriter#ostream (self) on <self:CsvWriter> */
+var18 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on <self:CsvWriter> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream");
+PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152);
+fatal_exit(1);
+}
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+{
+standard___standard__FileWriter___standard__stream__Writer__write(var16, var_separator); /* Direct call file#FileWriter#write on <var16:Writer>*/
+}
+{
+var19 = ((val*(*)(val* self))((((long)var_cell&3)?class_info[((long)var_cell&3)]:var_cell->class)->vft[COLOR_standard__string__Object__to_s]))(var_cell); /* to_s on <var_cell:Object>*/
+}
+{
+csv___csv__CsvWriter___write_cell(self, var19); /* Direct call csv#CsvWriter#write_cell on <self:CsvWriter>*/
+}
+{
+((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_13); /* next on <var_13:Iterator[Object]>*/
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_13); /* finish on <var_13:Iterator[Object]>*/
+}
+} else {
+}
+{
+{ /* Inline csv#CsvWriter#ostream (self) on <self:CsvWriter> */
+var22 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on <self:CsvWriter> */
+if (unlikely(var22 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream");
+PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152);
+fatal_exit(1);
+}
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+{
+{ /* Inline csv#CsvWriter#format (self) on <self:CsvWriter> */
+var25 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on <self:CsvWriter> */
+if (unlikely(var25 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format");
+PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155);
+fatal_exit(1);
+}
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+{
+{ /* Inline csv#CsvFormat#eol (var23) on <var23:CsvFormat> */
+var28 = var23->attrs[COLOR_csv__CsvFormat___eol].val; /* _eol on <var23:CsvFormat> */
+if (unlikely(var28 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _eol");
+PRINT_ERROR(" (%s:%d)\n", FILE_csv, 28);
+fatal_exit(1);
+}
+var26 = var28;
+RET_LABEL27:(void)0;
+}
+}
+{
+standard___standard__FileWriter___standard__stream__Writer__write(var20, var26); /* Direct call file#FileWriter#write on <var20:Writer>*/
+}
+RET_LABEL:;
+}
+/* method csv#CsvWriter#write_cell for (self: CsvWriter, String) */
+void csv___csv__CsvWriter___write_cell(val* self, val* p0) {
+val* var_cell /* var cell: String */;
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var6 /* : CsvFormat */;
+val* var8 /* : CsvFormat */;
+short int var9 /* : Bool */;
+val* var10 /* : Writer */;
+val* var12 /* : Writer */;
+val* var13 /* : Writer */;
+val* var15 /* : Writer */;
+val* var16 /* : CsvFormat */;
+val* var18 /* : CsvFormat */;
+val* var19 /* : Text */;
+var_cell = p0;
+{
+var = standard___standard__Text___is_empty(var_cell);
+}
+if (var){
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline csv#CsvWriter#always_escape (self) on <self:CsvWriter> */
+var4 = self->attrs[COLOR_csv__CsvWriter___always_escape].s; /* _always_escape on <self:CsvWriter> */
+var2 = var4;
+RET_LABEL3:(void)0;
+}
+}
+var5 = !var2;
+var_ = var5;
+if (var5){
+{
+{ /* Inline csv#CsvWriter#format (self) on <self:CsvWriter> */
+var8 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on <self:CsvWriter> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format");
+PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155);
+fatal_exit(1);
+}
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+{
+var9 = csv___csv__CsvFormat___is_value_clean(var6, var_cell);
+}
+var1 = var9;
+} else {
+var1 = var_;
+}
+if (var1){
+{
+{ /* Inline csv#CsvWriter#ostream (self) on <self:CsvWriter> */
+var12 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on <self:CsvWriter> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream");
+PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152);
+fatal_exit(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+{
+standard___standard__FileWriter___standard__stream__Writer__write(var10, var_cell); /* Direct call file#FileWriter#write on <var10:Writer>*/
+}
+} else {
+{
+{ /* Inline csv#CsvWriter#ostream (self) on <self:CsvWriter> */
+var15 = self->attrs[COLOR_csv__CsvWriter___ostream].val; /* _ostream on <self:CsvWriter> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ostream");
+PRINT_ERROR(" (%s:%d)\n", FILE_csv, 152);
+fatal_exit(1);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+{
+{ /* Inline csv#CsvWriter#format (self) on <self:CsvWriter> */
+var18 = self->attrs[COLOR_csv__CsvWriter___format].val; /* _format on <self:CsvWriter> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _format");
+PRINT_ERROR(" (%s:%d)\n", FILE_csv, 155);
+fatal_exit(1);
+}
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+{
+var19 = csv___csv__CsvFormat___escape_cell(var16, var_cell);
+}
+{
+standard___standard__FileWriter___standard__stream__Writer__write(var13, var19); /* Direct call file#FileWriter#write on <var13:Writer>*/
+}
+}
+RET_LABEL:;
+}
+/* method csv#CsvWriter#init for (self: CsvWriter) */
+void csv___csv__CsvWriter___standard__kernel__Object__init(val* self) {
+{
+((void(*)(val* self))(self->class->vft[COLOR_csv___csv__CsvWriter___standard__kernel__Object__init]))(self); /* init on <self:CsvWriter>*/
+}
+RET_LABEL:;
+}
+/* method csv#Sys#rfc4180 for (self: Sys): CsvFormat */
+val* csv___standard__Sys___rfc4180(val* self) {
+val* var /* : CsvFormat */;
+static val* varonce;
+static int varonce_guard;
+val* var1 /* : CsvFormat */;
+val* var2 /* : CsvFormat */;
+static val* varonce3;
+val* var4 /* : String */;
+char* var5 /* : NativeString */;
+val* var6 /* : FlatString */;
+if (likely(varonce_guard)) {
+var1 = varonce;
+} else {
+var2 = NEW_csv__CsvFormat(&type_csv__CsvFormat);
+if (likely(varonce3!=NULL)) {
+var4 = varonce3;
+} else {
+var5 = "\015\n";
+var6 = standard___standard__NativeString___to_s_with_length(var5, 2l);
+var4 = var6;
+varonce3 = var4;
+}
+{
+((void(*)(val* self, uint32_t p0))(var2->class->vft[COLOR_csv__CsvFormat__delimiter_61d]))(var2, '\"'); /* delimiter= on <var2:CsvFormat>*/
+}
+{
+((void(*)(val* self, uint32_t p0))(var2->class->vft[COLOR_csv__CsvFormat__separator_61d]))(var2, ','); /* separator= on <var2:CsvFormat>*/
+}
+{
+((void(*)(val* self, val* p0))(var2->class->vft[COLOR_csv__CsvFormat__eol_61d]))(var2, var4); /* eol= on <var2:CsvFormat>*/
+}
+{
+((void(*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2); /* init on <var2:CsvFormat>*/
+}
+var1 = var2;
+varonce = var1;
+varonce_guard = 1;
+}
+var = var1;
+goto RET_LABEL;