text: /* Generated by Nim Compiler v1.3.7 */
  /*   (c) 2020 Andreas Rumpf */
  /* The generated code is subject to the original license. */
  #define NIM_INTBITS 64
  
  /* section: NIM_merge_HEADERS */
  
  #include "nimbase.h"
  #include <string.h>
  #include <stdio.h>
  #undef LANGUAGE_C
  #undef MIPSEB
  #undef MIPSEL
  #undef PPC
  #undef R3000
  #undef R4000
  #undef i386
  #undef linux
  #undef mips
  #undef near
  #undef far
  #undef powerpc
  #undef unix
  
  /* section: NIM_merge_FRAME_DEFINES */
  #define nimfr_(x, y)
  #define nimln_(x, y)
  
  /* section: NIM_merge_FORWARD_TYPES */
  typedef struct tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw;
  typedef struct NimStringDesc NimStringDesc;
  typedef struct TGenericSeq TGenericSeq;
  typedef struct tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ;
  typedef struct tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw;
  typedef struct tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw;
  typedef struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA;
  typedef struct Exception Exception;
  typedef struct RootObj RootObj;
  typedef struct TNimType TNimType;
  typedef struct TNimNode TNimNode;
  typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
  typedef struct tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg;
  typedef struct tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ;
  typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ tySequence__sM4lkSb7zS6F7OVMvW9cffQ;
  typedef struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA;
  typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
  
  /* section: NIM_merge_TYPES */
  struct TGenericSeq {
  NI len;
  NI reserved;
  };
  struct NimStringDesc {
    TGenericSeq Sup;
  NIM_CHAR data[SEQ_DECL_SIZE];
  };
  typedef NU8 tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg;
  typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
  typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
  typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
  typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
  struct TNimType {
  NI size;
  NI align;
  tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
  tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
  TNimType* base;
  TNimNode* node;
  void* finalizer;
  tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
  tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
  };
  struct RootObj {
  TNimType* m_type;
  };
  struct Exception {
    RootObj Sup;
  Exception* parent;
  NCSTRING name;
  NimStringDesc* message;
  tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
  Exception* up;
  };
  struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA {
    Exception Sup;
  };
  struct tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw {
    tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
  };
  struct tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw {
    tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw Sup;
  };
  typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
  struct TNimNode {
  tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
  NI offset;
  TNimType* typ;
  NCSTRING name;
  NI len;
  TNimNode** sons;
  };
  typedef NU8 tySet_tyChar__nmiMWKVIe46vacnhAFrQvw[32];
  struct tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg {
    RootObj Sup;
  NI bufpos;
  NimStringDesc* buf;
  tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* input;
  NI lineNumber;
  NI sentinel;
  NI lineStart;
  NI offsetBase;
  tySet_tyChar__nmiMWKVIe46vacnhAFrQvw refillChars;
  };
  struct tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw {
    tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg Sup;
  tySequence__sM4lkSb7zS6F7OVMvW9cffQ* row;
  NimStringDesc* filename;
  NIM_CHAR sep;
  NIM_CHAR quote;
  NIM_CHAR esc;
  NIM_BOOL skipWhite;
  NI currRow;
  tySequence__sM4lkSb7zS6F7OVMvW9cffQ* headers;
  };
  typedef N_NIMCALL_PTR(void, tyProc__JQrsH08b4uPTH9cyFPlVOZg) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__9bmhFrLahRsL2hltfRDVtlQ) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  typedef N_NIMCALL_PTR(void, tyProc__3svSoGIUJIsHkaBL7q4DAQ) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NI pos);
  typedef N_NIMCALL_PTR(NI, tyProc__xflqkf2D1uVClg70czEDHA) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  typedef N_NIMCALL_PTR(NI, tyProc__c9c0f59ak4YGQ6neEym8LPKw) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** buffer, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA slice);
  typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__7jFfqMk9ajToCz6Hv9atCA4A) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** line);
  typedef N_NIMCALL_PTR(NI, tyProc__2VVzVL9bOnKhj1eZKkf9cEuA) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  typedef N_NIMCALL_PTR(void, tyProc__ki6p1QyfOkJLQJ9aw5NI0AQ) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  struct tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ {
    RootObj Sup;
  tyProc__JQrsH08b4uPTH9cyFPlVOZg closeImpl;
  tyProc__9bmhFrLahRsL2hltfRDVtlQ atEndImpl;
  tyProc__3svSoGIUJIsHkaBL7q4DAQ setPositionImpl;
  tyProc__xflqkf2D1uVClg70czEDHA getPositionImpl;
  tyProc__c9c0f59ak4YGQ6neEym8LPKw readDataStrImpl;
  tyProc__7jFfqMk9ajToCz6Hv9atCA4A readLineImpl;
  tyProc__2VVzVL9bOnKhj1eZKkf9cEuA readDataImpl;
  tyProc__2VVzVL9bOnKhj1eZKkf9cEuA peekDataImpl;
  tyProc__ki6p1QyfOkJLQJ9aw5NI0AQ writeDataImpl;
  tyProc__JQrsH08b4uPTH9cyFPlVOZg flushImpl;
  };
  struct tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ {
    tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ Sup;
  FILE* f;
  };
  struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
  NCSTRING procname;
  NI line;
  NCSTRING filename;
  };
  struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA {
  NI a;
  NI b;
  };
  
  /* section: NIM_merge_SEQ_TYPES */
  struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ {
    TGenericSeq Sup;
    NimStringDesc* data[SEQ_DECL_SIZE];
  };
  struct tySequence__uB9b75OUPRENsBAu4AnoePA {
    TGenericSeq Sup;
    tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
  };
  
  /* section: NIM_merge_PROC_HEADERS */
  N_LIB_PRIVATE N_NIMCALL(tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*, newFileStream__cwYJiP3D7DOTCJxCdBqBZQ)(NimStringDesc* filename, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode, NI bufSize);
  N_LIB_PRIVATE N_NIMCALL(void, error__f9crHXb9bbHrCy0OT6soYNKg)(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw* my, NI pos, NimStringDesc* msg);
  N_LIB_PRIVATE N_NIMCALL(void, raiseEInvalidCsv__oc6YUSPHm4LfyH6RkE9c7Mw)(NimStringDesc* filename, NI line, NI col, NimStringDesc* msg);
  N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
  static N_NIMCALL(void, Marker_tyRef__iCpSBrfwInduIhD9a0cvmIw)(void* p, NI op);
  N_LIB_PRIVATE N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
  static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
  static N_INLINE(void, copyMem__i80o3k0SgEI5gTRCzYdyWAsystem)(void* dest, void* source, NI size);
  static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
  N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
  N_LIB_PRIVATE N_NIMCALL(NI, getColNumber__KUMaHICF9bUPO7tt6hrBs3g)(tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg* L, NI pos);
  static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
  N_LIB_PRIVATE N_NIMCALL(void, open__u368GCTtl0rTy2J0zni8uw)(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw* my, tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* input, NimStringDesc* filename, NIM_CHAR separator, NIM_CHAR quote, NIM_CHAR escape, NIM_BOOL skipInitialSpace);
  N_LIB_PRIVATE N_NIMCALL(void, open__P89aGatd6bDNJ0Ak5E9cQgWw)(tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg* L, tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* input, NI bufLen, tySet_tyChar__nmiMWKVIe46vacnhAFrQvw refillChars);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
  N_LIB_PRIVATE N_NIMCALL(NI, handleCR__sLQC1Z9cokufE3lZEw9b42Cw_3)(tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg* L, NI pos);
  N_LIB_PRIVATE N_NIMCALL(NI, handleLF__sLQC1Z9cokufE3lZEw9b42Cw_4)(tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg* L, NI pos);
  N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, setLengthSeqV2)(TGenericSeq* s, TNimType* typ, NI newLen);
  N_LIB_PRIVATE N_NIMCALL(void, parseField__6mfYg4gHtbgPqGUu2wyijQ)(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw* my, NimStringDesc** a);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen);
  static N_INLINE(void, nimZeroMem)(void* p, NI size);
  static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
  static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
  
  /* section: NIM_merge_DATA */
  extern TNimType NTI__iLZrPn9anoh9ad1MmO0RczFw_;
  N_LIB_PRIVATE TNimType NTI__F6ONStXzG2u7i8uj6UG9aiw_;
  N_LIB_PRIVATE TNimType NTI__iCpSBrfwInduIhD9a0cvmIw_;
  STRING_LITERAL(TM__3rBY6NOHI29c34PPPPzLAdQ_2, "Error: ", 7);
  STRING_LITERAL(TM__3rBY6NOHI29c34PPPPzLAdQ_3, "(", 1);
  STRING_LITERAL(TM__3rBY6NOHI29c34PPPPzLAdQ_4, ", ", 2);
  STRING_LITERAL(TM__3rBY6NOHI29c34PPPPzLAdQ_5, ") Error: ", 9);
  STRING_LITERAL(TM__3rBY6NOHI29c34PPPPzLAdQ_6, "cannot open: ", 13);
  static NIM_CONST tySet_tyChar__nmiMWKVIe46vacnhAFrQvw TM__3rBY6NOHI29c34PPPPzLAdQ_7 = {
  0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
  ;
  extern TNimType NTI__sM4lkSb7zS6F7OVMvW9cffQ_;
  extern TNimType NTI__MAw8rJZtJ279bVV3TWMtXSg_;
  N_LIB_PRIVATE TNimType NTI__Db2TWjG9cPe5dYnhFvawyIw_;
  extern TNimType NTI__77mFvmsOLKik79ci2hXkHEg_;
  extern TNimType NTI__nmiMWKVIe46vacnhAFrQvw_;
  extern TNimType NTI__VaVACK0bpYmqIQ0mKcHfQQ_;
  extern TNimType NTI__rR5Bzr1D5krxoo1NcNyeMA_;
  STRING_LITERAL(TM__3rBY6NOHI29c34PPPPzLAdQ_9, " expected", 9);
  STRING_LITERAL(TM__3rBY6NOHI29c34PPPPzLAdQ_10, "\012", 1);
  STRING_LITERAL(TM__3rBY6NOHI29c34PPPPzLAdQ_11, " columns expected, but found ", 29);
  STRING_LITERAL(TM__3rBY6NOHI29c34PPPPzLAdQ_12, " columns", 8);
  
  /* section: NIM_merge_VARS */
  extern NIM_BOOL nimInErrorMode__759bT87luu8XGcbkw13FUjA;
  
  /* section: NIM_merge_PROCS */
  static N_NIMCALL(void, Marker_tyRef__iCpSBrfwInduIhD9a0cvmIw)(void* p, NI op) {
  	tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw* a;
  	a = (tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw*)p;
  	nimGCvisit((void*)(*a).Sup.Sup.Sup.parent, op);
  	nimGCvisit((void*)(*a).Sup.Sup.Sup.message, op);
  	nimGCvisit((void*)(*a).Sup.Sup.Sup.trace, op);
  	nimGCvisit((void*)(*a).Sup.Sup.Sup.up, op);
  }
  static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
  	void* T1_;
  	T1_ = (void*)0;
  	T1_ = memcpy(dest, source, ((size_t) (size)));
  }
  static N_INLINE(void, copyMem__i80o3k0SgEI5gTRCzYdyWAsystem)(void* dest, void* source, NI size) {
  	nimCopyMem(dest, source, size);
  }
  static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
  	{
  		void* T5_;
  		void* T6_;
  		if (!!((src == NIM_NIL))) goto LA3_;
  		T5_ = (void*)0;
  		T5_ = ((void*) ((&(*dest).data[(*dest).Sup.len])));
  		T6_ = (void*)0;
  		T6_ = ((void*) ((*src).data));
  		copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(T5_, T6_, ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
  		(*dest).Sup.len += (*src).Sup.len;
  	}
  	LA3_: ;
  }
  N_LIB_PRIVATE N_NIMCALL(void, raiseEInvalidCsv__oc6YUSPHm4LfyH6RkE9c7Mw)(NimStringDesc* filename, NI line, NI col, NimStringDesc* msg) {
  	tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw* e;
  {	e = (tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw*)0;
  	e = (tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw*) newObj((&NTI__iCpSBrfwInduIhD9a0cvmIw_), sizeof(tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw));
  	(*e).Sup.Sup.Sup.Sup.m_type = (&NTI__F6ONStXzG2u7i8uj6UG9aiw_);
  	(*e).Sup.Sup.Sup.name = "CsvError";
  	{
  		NimStringDesc* T5_;
  		if (!((filename ? filename->Sup.len : 0) == ((NI) 0))) goto LA3_;
  		T5_ = (NimStringDesc*)0;
  		T5_ = rawNewString((msg ? msg->Sup.len : 0) + 7);
  appendString(T5_, ((NimStringDesc*) &TM__3rBY6NOHI29c34PPPPzLAdQ_2));
  appendString(T5_, msg);
  		(*e).Sup.Sup.Sup.message = T5_;
  	}
  	goto LA1_;
  	LA3_: ;
  	{
  		NimStringDesc* T7_;
  		NimStringDesc* T8_;
  		NimStringDesc* T9_;
  		T7_ = (NimStringDesc*)0;
  		T8_ = (NimStringDesc*)0;
  		T8_ = nimIntToStr(line);
  		T9_ = (NimStringDesc*)0;
  		T9_ = nimIntToStr(col);
  		T7_ = rawNewString((filename ? filename->Sup.len : 0) + (T8_ ? T8_->Sup.len : 0) + (T9_ ? T9_->Sup.len : 0) + (msg ? msg->Sup.len : 0) + 12);
  appendString(T7_, filename);
  appendString(T7_, ((NimStringDesc*) &TM__3rBY6NOHI29c34PPPPzLAdQ_3));
  appendString(T7_, T8_);
  appendString(T7_, ((NimStringDesc*) &TM__3rBY6NOHI29c34PPPPzLAdQ_4));
  appendString(T7_, T9_);
  appendString(T7_, ((NimStringDesc*) &TM__3rBY6NOHI29c34PPPPzLAdQ_5));
  appendString(T7_, msg);
  		(*e).Sup.Sup.Sup.message = T7_;
  	}
  	LA1_: ;
  	raiseExceptionEx((Exception*)e, "CsvError", "raiseEInvalidCsv", "parsecsv.nim", 98);
  	goto BeforeRet_;
  	}BeforeRet_: ;
  }
  static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
  	NIM_BOOL* result;
  	result = (NIM_BOOL*)0;
  	result = (&nimInErrorMode__759bT87luu8XGcbkw13FUjA);
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(void, error__f9crHXb9bbHrCy0OT6soYNKg)(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw* my, NI pos, NimStringDesc* msg) {
  	NimStringDesc* T1_;
  	NI T2_;
  	NI T3_;
  NIM_BOOL* nimErr_;
  {nimErr_ = nimErrorFlag();
  	T1_ = (NimStringDesc*)0;
  	T1_ = (*my).filename;
  	T2_ = (NI)0;
  	T2_ = (*my).Sup.lineNumber;
  	T3_ = (NI)0;
  	T3_ = getColNumber__KUMaHICF9bUPO7tt6hrBs3g((&(*my).Sup), pos);
  	raiseEInvalidCsv__oc6YUSPHm4LfyH6RkE9c7Mw(T1_, T2_, T3_, msg);
  	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  	}BeforeRet_: ;
  }
  N_LIB_PRIVATE N_NIMCALL(void, open__u368GCTtl0rTy2J0zni8uw)(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw* my, tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* input, NimStringDesc* filename, NIM_CHAR separator, NIM_CHAR quote, NIM_CHAR escape, NIM_BOOL skipInitialSpace) {
  	tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg* T1_;
  NIM_BOOL* nimErr_;
  {nimErr_ = nimErrorFlag();
  	T1_ = (tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg*)0;
  	T1_ = &my->Sup;
  	open__P89aGatd6bDNJ0Ak5E9cQgWw(T1_, input, ((NI) 8192), TM__3rBY6NOHI29c34PPPPzLAdQ_7);
  	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  	(*my).filename = copyString(filename);
  	(*my).sep = separator;
  	(*my).quote = quote;
  	(*my).esc = escape;
  	(*my).skipWhite = skipInitialSpace;
  	(*my).row = NIM_NIL;
  	(*my).currRow = ((NI) 0);
  	}BeforeRet_: ;
  }
  N_LIB_PRIVATE N_NIMCALL(void, open__Vgw0zlgAfMha09cLjvmwOUg)(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw* my, NimStringDesc* filename, NIM_CHAR separator, NIM_CHAR quote, NIM_CHAR escape, NIM_BOOL skipInitialSpace) {
  	tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ* s;
  	tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* T6_;
  NIM_BOOL* nimErr_;
  {nimErr_ = nimErrorFlag();
  	s = newFileStream__cwYJiP3D7DOTCJxCdBqBZQ(filename, ((tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg) 0), ((NI) -1));
  	{
  		NimStringDesc* T5_;
  		if (!(s == NIM_NIL)) goto LA3_;
  		T5_ = (NimStringDesc*)0;
  		T5_ = rawNewString((filename ? filename->Sup.len : 0) + 13);
  appendString(T5_, ((NimStringDesc*) &TM__3rBY6NOHI29c34PPPPzLAdQ_6));
  appendString(T5_, filename);
  		error__f9crHXb9bbHrCy0OT6soYNKg((&(*my)), ((NI) 0), T5_);
  		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  	}
  	LA3_: ;
  	T6_ = (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ*)0;
  	T6_ = &s->Sup;
  	open__u368GCTtl0rTy2J0zni8uw(my, T6_, filename, separator, quote, escape, skipInitialSpace);
  	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  	}BeforeRet_: ;
  }
  static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
  	void* T1_;
  	T1_ = (void*)0;
  	T1_ = memset(a, v, ((size_t) (size)));
  }
  static N_INLINE(void, nimZeroMem)(void* p, NI size) {
  	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
  }
  static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c) {
  	(*dest).data[(*dest).Sup.len] = c;
  	(*dest).data[(NI)((*dest).Sup.len + ((NI) 1))] = 0;
  	(*dest).Sup.len += ((NI) 1);
  }
  N_LIB_PRIVATE N_NIMCALL(void, parseField__6mfYg4gHtbgPqGUu2wyijQ)(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw* my, NimStringDesc** a) {
  	NI pos;
  NIM_BOOL* nimErr_;
  {nimErr_ = nimErrorFlag();
  	pos = (*my).Sup.bufpos;
  	{
  		if (!(*my).skipWhite) goto LA3_;
  		{
  			while (1) {
  				if (!(((NU8)((*my).Sup.buf->data[pos])) == ((NU8)(32)) || ((NU8)((*my).Sup.buf->data[pos])) == ((NU8)(9)))) goto LA6;
  				pos += ((NI) 1);
  			} LA6: ;
  		}
  	}
  	LA3_: ;
  	(*a) = setLengthStr((*a), ((NI) 0));
  	{
  		NIM_BOOL T9_;
  		T9_ = (NIM_BOOL)0;
  		T9_ = ((NU8)((*my).Sup.buf->data[pos]) == (NU8)((*my).quote));
  		if (!(T9_)) goto LA10_;
  		T9_ = !(((NU8)((*my).quote) == (NU8)(0)));
  		LA10_: ;
  		if (!T9_) goto LA11_;
  		pos += ((NI) 1);
  		{
  			while (1) {
  				NIM_CHAR c;
  				c = (*my).Sup.buf->data[pos];
  				{
  					tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw T19_;
  					NimStringDesc* T20_;
  					if (!((NU8)(c) == (NU8)(0))) goto LA17_;
  					(*my).Sup.bufpos = pos;
  					nimZeroMem((void*)(&T19_), sizeof(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw));
  					T19_.Sup.Sup.m_type = (&NTI__Db2TWjG9cPe5dYnhFvawyIw_);
  					nimCopyMem((void*)(&T19_), (NIM_CONST void*)(&(*my)), sizeof(T19_));
  					T20_ = (NimStringDesc*)0;
  					T20_ = rawNewString(10);
  appendChar(T20_, (*my).quote);
  appendString(T20_, ((NimStringDesc*) &TM__3rBY6NOHI29c34PPPPzLAdQ_9));
  					error__f9crHXb9bbHrCy0OT6soYNKg((&T19_), pos, T20_);
  					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  					goto LA13;
  				}
  				goto LA15_;
  				LA17_: ;
  				{
  					if (!((NU8)(c) == (NU8)((*my).quote))) goto LA22_;
  					{
  						NIM_BOOL T26_;
  						T26_ = (NIM_BOOL)0;
  						T26_ = ((NU8)((*my).esc) == (NU8)(0));
  						if (!(T26_)) goto LA27_;
  						T26_ = ((NU8)((*my).Sup.buf->data[(NI)(pos + ((NI) 1))]) == (NU8)((*my).quote));
  						LA27_: ;
  						if (!T26_) goto LA28_;
  						(*a) = addChar((*a), (*my).quote);
  						pos += ((NI) 2);
  					}
  					goto LA24_;
  					LA28_: ;
  					{
  						pos += ((NI) 1);
  						goto LA13;
  					}
  					LA24_: ;
  				}
  				goto LA15_;
  				LA22_: ;
  				{
  					if (!((NU8)(c) == (NU8)((*my).esc))) goto LA32_;
  					(*a) = addChar((*a), (*my).Sup.buf->data[(NI)(pos + ((NI) 1))]);
  					pos += ((NI) 2);
  				}
  				goto LA15_;
  				LA32_: ;
  				{
  					switch (((NU8)(c))) {
  					case 13:
  					{
  						tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg* T36_;
  						T36_ = (tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg*)0;
  						T36_ = &my->Sup;
  						pos = handleCR__sLQC1Z9cokufE3lZEw9b42Cw_3(T36_, pos);
  						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  						(*a) = resizeString((*a), 1);
  appendString((*a), ((NimStringDesc*) &TM__3rBY6NOHI29c34PPPPzLAdQ_10));
  					}
  					break;
  					case 10:
  					{
  						tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg* T38_;
  						T38_ = (tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg*)0;
  						T38_ = &my->Sup;
  						pos = handleLF__sLQC1Z9cokufE3lZEw9b42Cw_4(T38_, pos);
  						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  						(*a) = resizeString((*a), 1);
  appendString((*a), ((NimStringDesc*) &TM__3rBY6NOHI29c34PPPPzLAdQ_10));
  					}
  					break;
  					default:
  					{
  						(*a) = addChar((*a), c);
  						pos += ((NI) 1);
  					}
  					break;
  					}
  				}
  				LA15_: ;
  			}
  		} LA13: ;
  	}
  	goto LA7_;
  	LA11_: ;
  	{
  		{
  			while (1) {
  				NIM_CHAR c_2;
  				c_2 = (*my).Sup.buf->data[pos];
  				{
  					if (!((NU8)(c_2) == (NU8)((*my).sep))) goto LA45_;
  					goto LA41;
  				}
  				LA45_: ;
  				{
  					if (!(((NU8)(c_2)) == ((NU8)(13)) || ((NU8)(c_2)) == ((NU8)(10)) || ((NU8)(c_2)) == ((NU8)(0)))) goto LA49_;
  					goto LA41;
  				}
  				LA49_: ;
  				(*a) = addChar((*a), c_2);
  				pos += ((NI) 1);
  			}
  		} LA41: ;
  	}
  	LA7_: ;
  	(*my).Sup.bufpos = pos;
  	}BeforeRet_: ;
  }
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, readRow__b09aWQWdQLmOgKmRBW0eKTQ)(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw* my, NI columns) {
  	NIM_BOOL result;
  	NI col;
  	NI oldpos;
  NIM_BOOL* nimErr_;
  {nimErr_ = nimErrorFlag();
  	result = (NIM_BOOL)0;
  	col = ((NI) 0);
  	oldpos = (*my).Sup.bufpos;
  	{
  		while (1) {
  			switch (((NU8)((*my).Sup.buf->data[(*my).Sup.bufpos]))) {
  			case 13:
  			{
  				tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg* T4_;
  				NI T5_;
  				T4_ = (tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg*)0;
  				T4_ = &my->Sup;
  				T5_ = (NI)0;
  				T5_ = handleCR__sLQC1Z9cokufE3lZEw9b42Cw_3(T4_, (*my).Sup.bufpos);
  				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  				(*my).Sup.bufpos = T5_;
  			}
  			break;
  			case 10:
  			{
  				tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg* T7_;
  				NI T8_;
  				T7_ = (tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg*)0;
  				T7_ = &my->Sup;
  				T8_ = (NI)0;
  				T8_ = handleLF__sLQC1Z9cokufE3lZEw9b42Cw_4(T7_, (*my).Sup.bufpos);
  				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  				(*my).Sup.bufpos = T8_;
  			}
  			break;
  			default:
  			{
  				goto LA1;
  			}
  			break;
  			}
  		}
  	} LA1: ;
  	{
  		while (1) {
  			NI oldlen;
  			NI T12_;
  			tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw* T17_;
  			if (!!(((NU8)((*my).Sup.buf->data[(*my).Sup.bufpos]) == (NU8)(0)))) goto LA11;
  			T12_ = ((*my).row ? (*my).row->Sup.len : 0);
  			oldlen = T12_;
  			{
  				if (!(oldlen < (NI)(col + ((NI) 1)))) goto LA15_;
  				(*my).row = (tySequence__sM4lkSb7zS6F7OVMvW9cffQ*) setLengthSeqV2(&((*my).row)->Sup, (&NTI__sM4lkSb7zS6F7OVMvW9cffQ_), ((NI) ((NI)(col + ((NI) 1)))));
  				(*my).row->data[col] = ((NimStringDesc*) NIM_NIL);
  			}
  			LA15_: ;
  			T17_ = (tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw*)0;
  			T17_ = my;
  			parseField__6mfYg4gHtbgPqGUu2wyijQ(T17_, (&(*my).row->data[col]));
  			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  			col += ((NI) 1);
  			{
  				if (!((NU8)((*my).Sup.buf->data[(*my).Sup.bufpos]) == (NU8)((*my).sep))) goto LA20_;
  				(*my).Sup.bufpos += ((NI) 1);
  			}
  			goto LA18_;
  			LA20_: ;
  			{
  				switch (((NU8)((*my).Sup.buf->data[(*my).Sup.bufpos]))) {
  				case 13:
  				case 10:
  				{
  					{
  						while (1) {
  							switch (((NU8)((*my).Sup.buf->data[(*my).Sup.bufpos]))) {
  							case 13:
  							{
  								tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg* T27_;
  								NI T28_;
  								T27_ = (tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg*)0;
  								T27_ = &my->Sup;
  								T28_ = (NI)0;
  								T28_ = handleCR__sLQC1Z9cokufE3lZEw9b42Cw_3(T27_, (*my).Sup.bufpos);
  								if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  								(*my).Sup.bufpos = T28_;
  							}
  							break;
  							case 10:
  							{
  								tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg* T30_;
  								NI T31_;
  								T30_ = (tyObject_BaseLexer__MAw8rJZtJ279bVV3TWMtXSg*)0;
  								T30_ = &my->Sup;
  								T31_ = (NI)0;
  								T31_ = handleLF__sLQC1Z9cokufE3lZEw9b42Cw_4(T30_, (*my).Sup.bufpos);
  								if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  								(*my).Sup.bufpos = T31_;
  							}
  							break;
  							default:
  							{
  								goto LA24;
  							}
  							break;
  							}
  						}
  					} LA24: ;
  				}
  				break;
  				case 0:
  				{
  				}
  				break;
  				default:
  				{
  					tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw T35_;
  					NI T36_;
  					NimStringDesc* T37_;
  					nimZeroMem((void*)(&T35_), sizeof(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw));
  					T35_.Sup.Sup.m_type = (&NTI__Db2TWjG9cPe5dYnhFvawyIw_);
  					nimCopyMem((void*)(&T35_), (NIM_CONST void*)(&(*my)), sizeof(T35_));
  					T36_ = (NI)0;
  					T36_ = (*my).Sup.bufpos;
  					T37_ = (NimStringDesc*)0;
  					T37_ = rawNewString(10);
  appendChar(T37_, (*my).sep);
  appendString(T37_, ((NimStringDesc*) &TM__3rBY6NOHI29c34PPPPzLAdQ_9));
  					error__f9crHXb9bbHrCy0OT6soYNKg((&T35_), T36_, T37_);
  					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  				}
  				break;
  				}
  				goto LA10;
  			}
  			LA18_: ;
  		} LA11: ;
  	} LA10: ;
  	(*my).row = (tySequence__sM4lkSb7zS6F7OVMvW9cffQ*) setLengthSeqV2(&((*my).row)->Sup, (&NTI__sM4lkSb7zS6F7OVMvW9cffQ_), ((NI) (col)));
  	result = (((NI) 0) < col);
  	{
  		NIM_BOOL T40_;
  		NIM_BOOL T41_;
  		NimStringDesc* T46_;
  		NimStringDesc* T47_;
  		NimStringDesc* T48_;
  		T40_ = (NIM_BOOL)0;
  		T41_ = (NIM_BOOL)0;
  		T41_ = result;
  		if (!(T41_)) goto LA42_;
  		T41_ = !((col == columns));
  		LA42_: ;
  		T40_ = T41_;
  		if (!(T40_)) goto LA43_;
  		T40_ = (((NI) 0) < columns);
  		LA43_: ;
  		if (!T40_) goto LA44_;
  		T46_ = (NimStringDesc*)0;
  		T47_ = (NimStringDesc*)0;
  		T47_ = nimIntToStr(columns);
  		T48_ = (NimStringDesc*)0;
  		T48_ = nimIntToStr(col);
  		T46_ = rawNewString((T47_ ? T47_->Sup.len : 0) + (T48_ ? T48_->Sup.len : 0) + 37);
  appendString(T46_, T47_);
  appendString(T46_, ((NimStringDesc*) &TM__3rBY6NOHI29c34PPPPzLAdQ_11));
  appendString(T46_, T48_);
  appendString(T46_, ((NimStringDesc*) &TM__3rBY6NOHI29c34PPPPzLAdQ_12));
  		error__f9crHXb9bbHrCy0OT6soYNKg((&(*my)), (NI)(oldpos + ((NI) 1)), T46_);
  		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  	}
  	LA44_: ;
  	(*my).currRow += ((NI) 1);
  	}BeforeRet_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(void, stdlib_parsecsvDatInit000)(void) {
  
  /* section: NIM_merge_TYPE_INIT1 */
  static TNimNode* TM__3rBY6NOHI29c34PPPPzLAdQ_8_8[8];
  static TNimNode TM__3rBY6NOHI29c34PPPPzLAdQ_0[10];
  
  /* section: NIM_merge_TYPE_INIT3 */
  NTI__F6ONStXzG2u7i8uj6UG9aiw_.size = sizeof(tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw);
  NTI__F6ONStXzG2u7i8uj6UG9aiw_.align = NIM_ALIGNOF(tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw);
  NTI__F6ONStXzG2u7i8uj6UG9aiw_.kind = 17;
  NTI__F6ONStXzG2u7i8uj6UG9aiw_.base = (&NTI__iLZrPn9anoh9ad1MmO0RczFw_);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[0].len = 0; TM__3rBY6NOHI29c34PPPPzLAdQ_0[0].kind = 2;
  NTI__F6ONStXzG2u7i8uj6UG9aiw_.node = &TM__3rBY6NOHI29c34PPPPzLAdQ_0[0];
  NTI__iCpSBrfwInduIhD9a0cvmIw_.size = sizeof(tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw*);
  NTI__iCpSBrfwInduIhD9a0cvmIw_.align = NIM_ALIGNOF(tyObject_CsvError__F6ONStXzG2u7i8uj6UG9aiw*);
  NTI__iCpSBrfwInduIhD9a0cvmIw_.kind = 22;
  NTI__iCpSBrfwInduIhD9a0cvmIw_.base = (&NTI__F6ONStXzG2u7i8uj6UG9aiw_);
  NTI__iCpSBrfwInduIhD9a0cvmIw_.marker = Marker_tyRef__iCpSBrfwInduIhD9a0cvmIw;
  NTI__Db2TWjG9cPe5dYnhFvawyIw_.size = sizeof(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw);
  NTI__Db2TWjG9cPe5dYnhFvawyIw_.align = NIM_ALIGNOF(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw);
  NTI__Db2TWjG9cPe5dYnhFvawyIw_.kind = 17;
  NTI__Db2TWjG9cPe5dYnhFvawyIw_.base = (&NTI__MAw8rJZtJ279bVV3TWMtXSg_);
  TM__3rBY6NOHI29c34PPPPzLAdQ_8_8[0] = &TM__3rBY6NOHI29c34PPPPzLAdQ_0[2];
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[2].kind = 1;
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[2].offset = offsetof(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw, row);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[2].typ = (&NTI__sM4lkSb7zS6F7OVMvW9cffQ_);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[2].name = "row";
  TM__3rBY6NOHI29c34PPPPzLAdQ_8_8[1] = &TM__3rBY6NOHI29c34PPPPzLAdQ_0[3];
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[3].kind = 1;
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[3].offset = offsetof(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw, filename);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[3].typ = (&NTI__77mFvmsOLKik79ci2hXkHEg_);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[3].name = "filename";
  TM__3rBY6NOHI29c34PPPPzLAdQ_8_8[2] = &TM__3rBY6NOHI29c34PPPPzLAdQ_0[4];
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[4].kind = 1;
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[4].offset = offsetof(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw, sep);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[4].typ = (&NTI__nmiMWKVIe46vacnhAFrQvw_);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[4].name = "sep";
  TM__3rBY6NOHI29c34PPPPzLAdQ_8_8[3] = &TM__3rBY6NOHI29c34PPPPzLAdQ_0[5];
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[5].kind = 1;
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[5].offset = offsetof(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw, quote);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[5].typ = (&NTI__nmiMWKVIe46vacnhAFrQvw_);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[5].name = "quote";
  TM__3rBY6NOHI29c34PPPPzLAdQ_8_8[4] = &TM__3rBY6NOHI29c34PPPPzLAdQ_0[6];
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[6].kind = 1;
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[6].offset = offsetof(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw, esc);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[6].typ = (&NTI__nmiMWKVIe46vacnhAFrQvw_);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[6].name = "esc";
  TM__3rBY6NOHI29c34PPPPzLAdQ_8_8[5] = &TM__3rBY6NOHI29c34PPPPzLAdQ_0[7];
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[7].kind = 1;
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[7].offset = offsetof(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw, skipWhite);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[7].typ = (&NTI__VaVACK0bpYmqIQ0mKcHfQQ_);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[7].name = "skipWhite";
  TM__3rBY6NOHI29c34PPPPzLAdQ_8_8[6] = &TM__3rBY6NOHI29c34PPPPzLAdQ_0[8];
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[8].kind = 1;
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[8].offset = offsetof(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw, currRow);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[8].typ = (&NTI__rR5Bzr1D5krxoo1NcNyeMA_);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[8].name = "currRow";
  TM__3rBY6NOHI29c34PPPPzLAdQ_8_8[7] = &TM__3rBY6NOHI29c34PPPPzLAdQ_0[9];
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[9].kind = 1;
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[9].offset = offsetof(tyObject_CsvParser__Db2TWjG9cPe5dYnhFvawyIw, headers);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[9].typ = (&NTI__sM4lkSb7zS6F7OVMvW9cffQ_);
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[9].name = "headers";
  TM__3rBY6NOHI29c34PPPPzLAdQ_0[1].len = 8; TM__3rBY6NOHI29c34PPPPzLAdQ_0[1].kind = 2; TM__3rBY6NOHI29c34PPPPzLAdQ_0[1].sons = &TM__3rBY6NOHI29c34PPPPzLAdQ_8_8[0];
  NTI__Db2TWjG9cPe5dYnhFvawyIw_.node = &TM__3rBY6NOHI29c34PPPPzLAdQ_0[1];
  }
  
  