text: /* Generated by Nim Compiler v1.0.11 */
  /*   (c) 2019 Andreas Rumpf */
  /* The generated code is subject to the original license. */
  #define NIM_INTBITS 32
  
  #include "nimbase.h"
  #include <setjmp.h>
  #include <string.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
  #define nimfr_(x, y)
  #define nimln_(x, y)
  typedef struct tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw;
  typedef struct tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw;
  typedef struct tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
  typedef struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q;
  typedef struct NimStringDesc NimStringDesc;
  typedef struct TGenericSeq TGenericSeq;
  typedef struct tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w;
  typedef struct tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA;
  typedef struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ;
  typedef struct tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA;
  typedef struct RootObj RootObj;
  typedef struct TNimType TNimType;
  typedef struct TNimNode TNimNode;
  typedef struct tySequence__Ef05srmQTDulnBdXR4Ja6Q tySequence__Ef05srmQTDulnBdXR4Ja6Q;
  typedef struct tySequence__MvZmat48bhe9b6x9aUD58D5Q tySequence__MvZmat48bhe9b6x9aUD58D5Q;
  typedef struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA;
  typedef struct tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA;
  typedef struct tySequence__DXS6mEo7PVUFJkirsQ9bNQA tySequence__DXS6mEo7PVUFJkirsQ9bNQA;
  typedef struct tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA;
  typedef struct tySequence__DfgJFJEYoj4YBAHLZPl5lQ tySequence__DfgJFJEYoj4YBAHLZPl5lQ;
  typedef struct tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA;
  typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
  typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
  typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
  typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
  typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
  typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
  typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
  typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
  typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
  typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
  typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
  typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
  typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
  typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
  typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
  typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
  typedef struct tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw;
  typedef struct Exception Exception;
  typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
  typedef struct TSafePoint TSafePoint;
  typedef struct tyTuple__zwpS6d6iewrdlBSTNFoyVA tyTuple__zwpS6d6iewrdlBSTNFoyVA;
  typedef struct tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA;
  typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
  struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q {
  NU16 line;
  NI16 col;
  NI32 fileIndex;
  };
  typedef NU32 tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg;
  typedef NU8 tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw;
  struct TGenericSeq {
  NI len;
  NI reserved;
  };
  struct NimStringDesc {
    TGenericSeq Sup;
  NIM_CHAR data[SEQ_DECL_SIZE];
  };
  struct tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw {
  tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
  tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
  tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg flags;
  tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind;
  union{
  struct {NI64 intVal;
  };
  struct {NF floatVal;
  };
  struct {NimStringDesc* strVal;
  };
  struct {tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym;
  };
  struct {tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* ident;
  };
  struct {tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
  };
  };
  NimStringDesc* comment;
  };
  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;
  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 tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA {
    RootObj Sup;
  NI id;
  };
  typedef NU8 tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag;
  typedef NU8 tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA;
  typedef NU64 tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw;
  typedef tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* tyArray__PsPyPA45AAjHu4uDGHNjTg[4];
  typedef NU8 tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg;
  typedef NU8 tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw;
  typedef NU16 tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA;
  struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA {
  tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg k;
  tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw storage;
  tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA flags;
  tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* lode;
  tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* r;
  };
  struct tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ {
    tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA Sup;
  tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kind;
  tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA callConv;
  tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw flags;
  tySequence__Ef05srmQTDulnBdXR4Ja6Q* sons;
  tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n;
  tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner;
  tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym;
  tyArray__PsPyPA45AAjHu4uDGHNjTg attachedOps;
  tySequence__MvZmat48bhe9b6x9aUD58D5Q* methods;
  NI64 size;
  NI16 align;
  NI16 paddingAtEnd;
  NI16 lockLevel;
  tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA loc;
  tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeInst;
  NI uniqueId;
  };
  typedef NU16 tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg;
  typedef NU8 tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw;
  typedef NU32 tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg;
  struct tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA {
  NI counter;
  tySequence__DfgJFJEYoj4YBAHLZPl5lQ* data;
  };
  typedef NU64 tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw;
  struct tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w {
    tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA Sup;
  tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw kind;
  union{
  struct {tySequence__Ef05srmQTDulnBdXR4Ja6Q* typeInstCache;
  };
  struct {tySequence__DXS6mEo7PVUFJkirsQ9bNQA* procInstCache;
  tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* gcUnsafetyReason;
  tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* transformedBody;
  };
  struct {tySequence__DXS6mEo7PVUFJkirsQ9bNQA* usedGenerics;
  tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA tab;
  };
  struct {tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* guard;
  NI bitsize;
  };
  };
  tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg magic;
  tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
  tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* name;
  tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
  tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner;
  tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw flags;
  tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* ast;
  tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg options;
  NI position;
  NI offset;
  tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA loc;
  tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA* annex;
  tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* constraint;
  };
  struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
  NI refcount;
  TNimType* typ;
  };
  struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
  void* bottom;
  };
  struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
  NI len;
  NI cap;
  tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
  };
  typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SiRwrEKZdLgxqz9a9aoVBglg[512];
  typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
  typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
  typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
  typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
  struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
  tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
  };
  typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
  struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
  tyArray__0aOLqZchNi8nWtMTi8ND8w link;
  NI key;
  NI upperBound;
  NI level;
  };
  struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
  tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
  NI Field1;
  };
  typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
  struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
  NI len;
  tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
  tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
  };
  struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
  NI minLargeObj;
  NI maxLargeObj;
  tyArray__SiRwrEKZdLgxqz9a9aoVBglg freeSmallChunks;
  NU32 flBitmap;
  tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
  tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
  tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
  NI currMem;
  NI maxMem;
  NI freeMem;
  NI occ;
  NI lastSize;
  tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
  tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
  tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
  tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
  tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
  NIM_BOOL locked;
  NIM_BOOL blockChunkSizeIncrease;
  NI nextChunkSize;
  tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
  tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
  };
  struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
  NI stackScans;
  NI cycleCollections;
  NI maxThreshold;
  NI maxStackSize;
  NI maxStackCells;
  NI cycleTableSize;
  NI64 maxPause;
  };
  struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
  NI counter;
  NI max;
  tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
  tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
  };
  struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
  tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
  NI cycleThreshold;
  NI zctThreshold;
  tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
  tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
  tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
  NI recGcLock;
  tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
  tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
  tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
  tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
  NI gcThreadId;
  };
  typedef NU8 tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw;
  struct Exception {
    RootObj Sup;
  Exception* parent;
  NCSTRING name;
  NimStringDesc* message;
  tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
  NU raiseId;
  Exception* up;
  };
  typedef struct {
  N_NIMCALL_PTR(NIM_BOOL, ClP_0) (Exception* e, void* ClE_0);
  void* ClE_0;
  } tyProc__NT9bSe2DDkjdtx7j9aov2Z6g;
  struct TSafePoint {
  TSafePoint* prev;
  NI status;
  jmp_buf context;
  NIM_BOOL hasRaiseAction;
  tyProc__NT9bSe2DDkjdtx7j9aov2Z6g raiseAction;
  };
  typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
  struct TNimNode {
  tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
  NI offset;
  TNimType* typ;
  NCSTRING name;
  NI len;
  TNimNode** sons;
  };
  struct tyTuple__zwpS6d6iewrdlBSTNFoyVA {
  NI Field0;
  tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* Field1;
  };
  struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
  NCSTRING procname;
  NI line;
  NCSTRING filename;
  };
  struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ {
    TGenericSeq Sup;
    tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
  };
  struct tySequence__Ef05srmQTDulnBdXR4Ja6Q {
    TGenericSeq Sup;
    tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* data[SEQ_DECL_SIZE];
  };
  struct tySequence__MvZmat48bhe9b6x9aUD58D5Q {
    TGenericSeq Sup;
    tyTuple__zwpS6d6iewrdlBSTNFoyVA data[SEQ_DECL_SIZE];
  };
  struct tySequence__DXS6mEo7PVUFJkirsQ9bNQA {
    TGenericSeq Sup;
    tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA* data[SEQ_DECL_SIZE];
  };
  struct tySequence__DfgJFJEYoj4YBAHLZPl5lQ {
    TGenericSeq Sup;
    tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* data[SEQ_DECL_SIZE];
  };
  struct tySequence__uB9b75OUPRENsBAu4AnoePA {
    TGenericSeq Sup;
    tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
  };
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, NIM_BOOL inst, NIM_BOOL allowRecursionX);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, atomicTypeX__bT4Mm3vdYhgzdzTQ9cFUn0A)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newSymNode__I2DV2TmmOysY1ZEGW19b9bRg)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache, NimStringDesc* name, tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg m, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*, newSym__IXbidcxhXTQGZY9abN63Cxg)(tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw symKind, tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* name, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg options);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA*, getIdent__9coBOmdXN09be4rJvXK6fQGQ)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* ic, NimStringDesc* identifier);
  static N_INLINE(void, asgnRef)(void** dest, void* src);
  static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
  static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
  static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
  static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
  N_LIB_PRIVATE N_NOINLINE(void, addZCT__Y66tOYFjgwJ0k4aLz4bc0Q)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg)(tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
  N_LIB_PRIVATE N_NIMCALL(void, add__P8dDSotTW25BkfbyspojGg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* son);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newIdentNode__KZLyxk08RZ9cnzbQfphbJPQ)(tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* ident, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* src);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, base__PfgI9ap7WOnsRfFV4znQ27w)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
  static N_INLINE(NI, len__5mJADrRYkP3r9auuiuDZN9cQast)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache, NimStringDesc* name, tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg m, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, NIM_BOOL inst);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newType__SNqpa06pdVCLFFBR28119aQ)(tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newNodeI__vokyXY9cZDshCSxFKChhG9bg)(tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info);
  static N_INLINE(NI, len__P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, objectNode__AHGzaNMYbGutvMVBddUSng)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, copyNode__Dsjo9bte8vGxzhtcSrsTyiQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* src);
  static N_INLINE(NI, safeLen__P89cqdlERShb9alU3iC0yj8w_2ast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
  static N_INLINE(void, pushSafePoint)(TSafePoint* s);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, slash___gEyhbzZ1UcxyenWRLJRXNQ)(NimStringDesc* head, NimStringDesc* tail);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosparentDir)(NimStringDesc* path);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, toFullPath__VW1RaR1l9c9bPnJxr1KuvIrg)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, NI32 fileIdx);
  static N_INLINE(NIM_BOOL, fileExists__2KLbGVKGy3qOdtJ4Bb1ADgos)(NimStringDesc* filename);
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, findFile__Jsd6LfkMRIXL9b0vzcHVYOA)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, NimStringDesc* f, NIM_BOOL suppressStdlib);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readFile__4PGnM9bWmsH0Nu7dnr3XzgA)(NimStringDesc* filename);
  N_LIB_PRIVATE N_NIMCALL(NI32, fileInfoIdx__3HRSVgYDcnQTolSZGx1zjA)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, NimStringDesc* filename);
  N_LIB_PRIVATE N_NIMCALL(void, appendToModule__T4o9clzgbAgGY4ORbfP6LmQ)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newNode__duw0Uu9cIFXmCAaunQWIP0g)(tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* sons, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
  N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newStrNode__zLcHGdlEbBYFtoCoan9agkg)(tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind, NimStringDesc* strVal);
  static N_INLINE(void, popSafePoint)(void);
  N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass);
  static N_INLINE(Exception*, getCurrentException)(void);
  N_LIB_PRIVATE N_NIMCALL(void, localError__NF6kBGchnhQYPbCedyefVA)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, NimStringDesc* arg);
  static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
  static N_INLINE(void, copyMem__M04YC71iJg1N7gBF3HZTngsystem)(void* dest, void* source, NI size);
  static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
  N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
  static N_INLINE(void, popCurrentException)(void);
  N_NIMCALL(void, reraiseException)(void);
  extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;
  extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
  extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
  extern TNimType NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_;
  extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
  extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
  extern TNimType NTI__iLZrPn9anoh9ad1MmO0RczFw_;
  extern Exception* currException__9bVPeDJlYTi9bQApZpfH8wjg;
  extern Exception* currException__9bVPeDJlYTi9bQApZpfH8wjg;
  extern Exception* currException__9bVPeDJlYTi9bQApZpfH8wjg;
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_2, "none", 4);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_3, "bool", 4);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_4, "char", 4);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_5, "nil", 3);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_6, "expr", 4);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_7, "stmt", 4);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_8, "void", 4);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_9, "empty", 5);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_10, "UncheckedArray", 14);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_11, "array", 5);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_12, "..", 2);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_13, "typeDesc", 8);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_14, "distinct", 8);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_15, "tuple", 5);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_16, "set", 3);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_17, "ptr", 3);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_18, "ref", 3);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_19, "var", 3);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_20, "lent", 4);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_21, "sink", 4);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_22, "seq", 3);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_23, "opt", 3);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_24, "proc", 4);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_25, "openArray", 9);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_26, "range", 5);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_27, "pointer", 7);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_28, "string", 6);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_29, "cstring", 7);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_30, "int", 3);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_31, "int8", 4);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_32, "int16", 5);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_33, "int32", 5);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_34, "int64", 5);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_35, "float", 5);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_36, "float32", 7);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_37, "float64", 7);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_38, "float128", 8);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_39, "uint", 4);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_40, "uint8", 5);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_41, "uint16", 6);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_42, "uint32", 6);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_43, "uint64", 6);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_44, "varargs", 7);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_45, "error", 5);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_46, "builtinTypeClass", 16);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_47, "concept", 7);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_48, "compositeTypeClass", 18);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_49, "and", 3);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_50, "or", 2);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_51, "not", 3);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_52, "anything", 8);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_53, "static", 6);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_54, "owned", 5);
  STRING_LITERAL(TM__gLSXNlwmnHPzTIXzvpQGfw_56, "cannot open file: ", 18);
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, atomicTypeX__bT4Mm3vdYhgzdzTQ9cFUn0A)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
  	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  	result = newSymNode__I2DV2TmmOysY1ZEGW19b9bRg(s);
  	(*result).info = info;
  	return result;
  }
  static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {	(*c).refcount = (NI)((NU32)((*c).refcount) + (NU32)(((NI) 8)));
  }
  static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
  	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
  	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) ((NI)((NU32)(((NI) (ptrdiff_t) (usr))) - (NU32)(((NI) 8)))));
  	return result;
  }
  static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {	addZCT__Y66tOYFjgwJ0k4aLz4bc0Q((&gch__IcYaEuuWivYAS86vFMTS3Q.zct), c);
  }
  static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {	(*c).refcount = (NI)((NU32)((*c).refcount) - (NU32)(((NI) 8)));
  	{
  		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3_;
  		rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system(c);
  	}
  	LA3_: ;
  }
  static N_INLINE(void, asgnRef)(void** dest, void* src) {	{
  		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
  		if (!!((src == NIM_NIL))) goto LA3_;
  		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
  		T5_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(src);
  		incRef__AT1eRuflKWyTTBdLjEDZbg_3system(T5_);
  	}
  	LA3_: ;
  	{
  		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
  		if (!!(((*dest) == NIM_NIL))) goto LA8_;
  		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
  		T10_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem((*dest));
  		decRef__AT1eRuflKWyTTBdLjEDZbgsystem(T10_);
  	}
  	LA8_: ;
  	(*dest) = src;
  }
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache, NimStringDesc* name, tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg m, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
  	tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym;
  	tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* T1_;
  	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  	T1_ = (tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA*)0;
  	T1_ = getIdent__9coBOmdXN09be4rJvXK6fQGQ(cache, name);
  	sym = newSym__IXbidcxhXTQGZY9abN63Cxg(((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 7), T1_, (*t).owner, info, 0);
  	(*sym).magic = m;
  	asgnRef((void**) (&(*sym).typ), t);
  	result = newSymNode__I2DV2TmmOysY1ZEGW19b9bRg(sym);
  	asgnRef((void**) (&(*result).typ), t);
  	return result;
  }
  static N_INLINE(NI, len__5mJADrRYkP3r9auuiuDZN9cQast)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n) {	NI result;
  	NI T1_;
  	result = (NI)0;
  	T1_ = ((*n).sons ? (*n).sons->Sup.len : 0);
  	result = T1_;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache, NimStringDesc* name, tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg m, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, NIM_BOOL inst) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
  	tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T1_;
  	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T7_;
  	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  	{
  		if (!((*t).n == 0)) goto LA4_;
  		T1_ = info;
  	}
  	goto LA2_;
  	LA4_: ;
  	{
  		T1_ = (*(*t).n).info;
  	}
  	LA2_: ;
  	result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 42), T1_, t);
  	T7_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  	T7_ = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, name, m, t, info);
  	add__P8dDSotTW25BkfbyspojGg(result, T7_);
  	{
  		NI i;
  		NI colontmp_;
  		NI i_2;
  		i = (NI)0;
  		colontmp_ = (NI)0;
  		colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
  		i_2 = ((NI) 0);
  		{
  			while (1) {
  				if (!(i_2 < colontmp_)) goto LA10;
  				i = i_2;
  				{
  					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* void_1;
  					if (!((*t).sons->data[i] == NIM_NIL)) goto LA13_;
  					void_1 = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_8), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 171), t, info);
  					asgnRef((void**) (&(*void_1).typ), newType__SNqpa06pdVCLFFBR28119aQ(((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 63), (*t).owner));
  					add__P8dDSotTW25BkfbyspojGg(result, void_1);
  				}
  				goto LA11_;
  				LA13_: ;
  				{
  					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T16_;
  					T16_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  					T16_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[i], info, inst, NIM_FALSE);
  					add__P8dDSotTW25BkfbyspojGg(result, T16_);
  				}
  				LA11_: ;
  				i_2 += ((NI) 1);
  			} LA10: ;
  		}
  	}
  	return result;
  }
  static N_INLINE(NI, len__P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {	NI result;
  	NI T1_;
  	result = (NI)0;
  	T1_ = ((*n).sons ? (*n).sons->Sup.len : 0);
  	result = T1_;
  	return result;
  }
  static N_INLINE(NI, safeLen__P89cqdlERShb9alU3iC0yj8w_2ast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {	NI result;
  	result = (NI)0;
  	{
  		if (!((*n).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 0) && (*n).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23))) goto LA3_;
  		result = ((NI) 0);
  	}
  	goto LA1_;
  	LA3_: ;
  	{
  		result = len__P89cqdlERShb9alU3iC0yj8wast(n);
  	}
  	LA1_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, objectNode__AHGzaNMYbGutvMVBddUSng)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
  	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  	{
  		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T5_;
  		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T6_;
  		if (!((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA3_;
  		result = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 35), (*n).info);
  		add__P8dDSotTW25BkfbyspojGg(result, n);
  		T5_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  		T5_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*(*n).sym).typ, (*n).info, NIM_TRUE, NIM_FALSE);
  		add__P8dDSotTW25BkfbyspojGg(result, T5_);
  		T6_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  		T6_ = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1), (*n).info);
  		add__P8dDSotTW25BkfbyspojGg(result, T6_);
  	}
  	goto LA1_;
  	LA3_: ;
  	{
  		result = copyNode__Dsjo9bte8vGxzhtcSrsTyiQ(n);
  		{
  			NI i;
  			NI colontmp_;
  			NI i_2;
  			i = (NI)0;
  			colontmp_ = (NI)0;
  			colontmp_ = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast(n);
  			i_2 = ((NI) 0);
  			{
  				while (1) {
  					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T11_;
  					if (!(i_2 < colontmp_)) goto LA10;
  					i = i_2;
  					T11_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  					T11_ = objectNode__AHGzaNMYbGutvMVBddUSng(cache, (*n).sons->data[i]);
  					add__P8dDSotTW25BkfbyspojGg(result, T11_);
  					i_2 += ((NI) 1);
  				} LA10: ;
  			}
  		}
  	}
  	LA1_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, NIM_BOOL inst, NIM_BOOL allowRecursionX) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
  	NIM_BOOL allowRecursion;
  {	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  	allowRecursion = allowRecursionX;
  	{
  		NIM_BOOL T3_;
  		NIM_BOOL T4_;
  		T3_ = (NIM_BOOL)0;
  		T4_ = (NIM_BOOL)0;
  		T4_ = inst;
  		if (!(T4_)) goto LA5_;
  		T4_ = !(allowRecursion);
  		LA5_: ;
  		T3_ = T4_;
  		if (!(T3_)) goto LA6_;
  		T3_ = !(((*t).sym == NIM_NIL));
  		LA6_: ;
  		if (!T3_) goto LA7_;
  		result = atomicTypeX__bT4Mm3vdYhgzdzTQ9cFUn0A((*t).sym, info);
  		goto BeforeRet_;
  	}
  	LA7_: ;
  	switch ((*t).kind) {
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 0):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_2), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 0), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 1):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_3), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 188), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 2):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_4), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 189), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 5):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_5), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 195), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 6):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_6), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 196), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 7):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_7), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 197), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 63):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_8), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 171), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 3):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_9), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 0), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 49):
  	{
  		tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T18_;
  		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T24_;
  		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T25_;
  		{
  			if (!((*t).n == 0)) goto LA21_;
  			T18_ = info;
  		}
  		goto LA19_;
  		LA21_: ;
  		{
  			T18_ = (*(*t).n).info;
  		}
  		LA19_: ;
  		result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 42), T18_, t);
  		T24_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  		T24_ = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_10), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 277), t, info);
  		add__P8dDSotTW25BkfbyspojGg(result, T24_);
  		T25_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  		T25_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
  		add__P8dDSotTW25BkfbyspojGg(result, T25_);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
  	{
  		tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T27_;
  		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T33_;
  		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T52_;
  		{
  			if (!((*t).n == 0)) goto LA30_;
  			T27_ = info;
  		}
  		goto LA28_;
  		LA30_: ;
  		{
  			T27_ = (*(*t).n).info;
  		}
  		LA28_: ;
  		result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 42), T27_, t);
  		T33_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  		T33_ = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_11), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 160), t, info);
  		add__P8dDSotTW25BkfbyspojGg(result, T33_);
  		{
  			NIM_BOOL T36_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* rng;
  			tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T40_;
  			tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* T46_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T47_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T48_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T49_;
  			T36_ = (NIM_BOOL)0;
  			T36_ = inst;
  			if (!(T36_)) goto LA37_;
  			T36_ = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20));
  			LA37_: ;
  			if (!T36_) goto LA38_;
  			{
  				if (!((*t).n == 0)) goto LA43_;
  				T40_ = info;
  			}
  			goto LA41_;
  			LA43_: ;
  			{
  				T40_ = (*(*t).n).info;
  			}
  			LA41_: ;
  			rng = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 29), T40_, t);
  			T46_ = (tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA*)0;
  			T46_ = getIdent__9coBOmdXN09be4rJvXK6fQGQ(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_12));
  			T47_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T47_ = newIdentNode__KZLyxk08RZ9cnzbQfphbJPQ(T46_, info);
  			add__P8dDSotTW25BkfbyspojGg(rng, T47_);
  			T48_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T48_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*(*(*t).sons->data[((NI) 0)]).n).sons->data[((NI) 0)]);
  			add__P8dDSotTW25BkfbyspojGg(rng, T48_);
  			T49_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T49_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*(*(*t).sons->data[((NI) 0)]).n).sons->data[((NI) 1)]);
  			add__P8dDSotTW25BkfbyspojGg(rng, T49_);
  			add__P8dDSotTW25BkfbyspojGg(result, rng);
  		}
  		goto LA34_;
  		LA38_: ;
  		{
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T51_;
  			T51_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T51_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
  			add__P8dDSotTW25BkfbyspojGg(result, T51_);
  		}
  		LA34_: ;
  		T52_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  		T52_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 1)], info, inst, NIM_FALSE);
  		add__P8dDSotTW25BkfbyspojGg(result, T52_);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8):
  	{
  		{
  			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T56_;
  			tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T59_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T65_;
  			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T66_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T67_;
  			T56_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
  			T56_ = base__PfgI9ap7WOnsRfFV4znQ27w(t);
  			if (!!((T56_ == NIM_NIL))) goto LA57_;
  			{
  				if (!((*t).n == 0)) goto LA62_;
  				T59_ = info;
  			}
  			goto LA60_;
  			LA62_: ;
  			{
  				T59_ = (*(*t).n).info;
  			}
  			LA60_: ;
  			result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 42), T59_, t);
  			T65_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T65_ = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_13), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 198), t, info);
  			add__P8dDSotTW25BkfbyspojGg(result, T65_);
  			T66_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
  			T66_ = base__PfgI9ap7WOnsRfFV4znQ27w(t);
  			T67_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T67_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, T66_, info, inst, NIM_FALSE);
  			add__P8dDSotTW25BkfbyspojGg(result, T67_);
  		}
  		goto LA54_;
  		LA57_: ;
  		{
  			result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_13), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 198), t, info);
  		}
  		LA54_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 9):
  	{
  		tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T70_;
  		{
  			if (!((*t).n == 0)) goto LA73_;
  			T70_ = info;
  		}
  		goto LA71_;
  		LA73_: ;
  		{
  			T70_ = (*(*t).n).info;
  		}
  		LA71_: ;
  		result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 42), T70_, t);
  		{
  			NI i;
  			NI colontmp_;
  			NI i_2;
  			i = (NI)0;
  			colontmp_ = (NI)0;
  			colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
  			i_2 = ((NI) 0);
  			{
  				while (1) {
  					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T79_;
  					if (!(i_2 < colontmp_)) goto LA78;
  					i = i_2;
  					T79_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  					T79_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[i], info, inst, NIM_FALSE);
  					add__P8dDSotTW25BkfbyspojGg(result, T79_);
  					i_2 += ((NI) 1);
  				} LA78: ;
  			}
  		}
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
  	{
  		{
  			if (!inst) goto LA83_;
  			{
  				tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T89_;
  				if (!allowRecursion) goto LA87_;
  				T89_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
  				T89_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
  				result = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, T89_, info, inst, NIM_TRUE);
  			}
  			goto LA85_;
  			LA87_: ;
  			{
  				tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T91_;
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T97_;
  				{
  					if (!((*t).n == 0)) goto LA94_;
  					T91_ = info;
  				}
  				goto LA92_;
  				LA94_: ;
  				{
  					T91_ = (*(*t).n).info;
  				}
  				LA92_: ;
  				result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 42), T91_, t);
  				T97_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T97_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
  				add__P8dDSotTW25BkfbyspojGg(result, T97_);
  				{
  					NI i_3;
  					NI colontmp__2;
  					NI T99_;
  					NI i_4;
  					i_3 = (NI)0;
  					colontmp__2 = (NI)0;
  					T99_ = (NI)0;
  					T99_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
  					colontmp__2 = (NI)(T99_ - ((NI) 1));
  					i_4 = ((NI) 1);
  					{
  						while (1) {
  							tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T102_;
  							if (!(i_4 < colontmp__2)) goto LA101;
  							i_3 = i_4;
  							T102_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  							T102_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[i_3], info, inst, NIM_FALSE);
  							add__P8dDSotTW25BkfbyspojGg(result, T102_);
  							i_4 += ((NI) 1);
  						} LA101: ;
  					}
  				}
  			}
  			LA85_: ;
  		}
  		goto LA81_;
  		LA83_: ;
  		{
  			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T104_;
  			T104_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
  			T104_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
  			result = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, T104_, info, inst, allowRecursion);
  		}
  		LA81_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10):
  	{
  		{
  			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T110_;
  			if (!inst) goto LA108_;
  			T110_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
  			T110_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
  			result = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, T110_, info, inst, NIM_TRUE);
  		}
  		goto LA106_;
  		LA108_: ;
  		{
  			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T112_;
  			T112_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
  			T112_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
  			result = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, T112_, info, inst, NIM_FALSE);
  		}
  		LA106_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
  	{
  		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T114_;
  		T114_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
  		T114_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
  		result = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, T114_, info, inst, allowRecursion);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 15):
  	{
  		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T116_;
  		T116_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
  		T116_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
  		result = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, T116_, info, inst, NIM_FALSE);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
  	{
  		{
  			tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T122_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T128_;
  			if (!inst) goto LA120_;
  			{
  				if (!((*t).n == 0)) goto LA125_;
  				T122_ = info;
  			}
  			goto LA123_;
  			LA125_: ;
  			{
  				T122_ = (*(*t).n).info;
  			}
  			LA123_: ;
  			result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 146), T122_, t);
  			T128_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T128_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
  			add__P8dDSotTW25BkfbyspojGg(result, T128_);
  		}
  		goto LA118_;
  		LA120_: ;
  		{
  			{
  				NIM_BOOL T132_;
  				T132_ = (NIM_BOOL)0;
  				T132_ = allowRecursion;
  				if (T132_) goto LA133_;
  				T132_ = ((*t).sym == NIM_NIL);
  				LA133_: ;
  				if (!T132_) goto LA134_;
  				result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_14), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 170), t, info, inst);
  			}
  			goto LA130_;
  			LA134_: ;
  			{
  				result = atomicTypeX__bT4Mm3vdYhgzdzTQ9cFUn0A((*t).sym, info);
  			}
  			LA130_: ;
  		}
  		LA118_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 12):
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 30):
  	{
  		result = atomicTypeX__bT4Mm3vdYhgzdzTQ9cFUn0A((*t).sym, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17):
  	{
  		{
  			tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T143_;
  			if (!inst) goto LA141_;
  			{
  				if (!((*t).n == 0)) goto LA146_;
  				T143_ = info;
  			}
  			goto LA144_;
  			LA146_: ;
  			{
  				T143_ = (*(*t).n).info;
  			}
  			LA144_: ;
  			result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 133), T143_, t);
  			{
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T153_;
  				if (!!(((*(*t).sym).ast == NIM_NIL))) goto LA151_;
  				T153_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T153_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*(*(*(*t).sym).ast).sons->data[((NI) 2)]).sons->data[((NI) 0)]);
  				add__P8dDSotTW25BkfbyspojGg(result, T153_);
  			}
  			goto LA149_;
  			LA151_: ;
  			{
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T155_;
  				T155_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T155_ = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
  				add__P8dDSotTW25BkfbyspojGg(result, T155_);
  			}
  			LA149_: ;
  			{
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T160_;
  				if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA158_;
  				T160_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T160_ = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
  				add__P8dDSotTW25BkfbyspojGg(result, T160_);
  			}
  			goto LA156_;
  			LA158_: ;
  			{
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* nn;
  				tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T162_;
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T168_;
  				{
  					if (!((*t).n == 0)) goto LA165_;
  					T162_ = info;
  				}
  				goto LA163_;
  				LA165_: ;
  				{
  					T162_ = (*(*t).n).info;
  				}
  				LA163_: ;
  				nn = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 77), T162_, t);
  				T168_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T168_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
  				add__P8dDSotTW25BkfbyspojGg(nn, T168_);
  				add__P8dDSotTW25BkfbyspojGg(result, nn);
  			}
  			LA156_: ;
  			{
  				NI T171_;
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T174_;
  				T171_ = (NI)0;
  				T171_ = len__P89cqdlERShb9alU3iC0yj8wast((*t).n);
  				if (!(((NI) 0) < T171_)) goto LA172_;
  				T174_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T174_ = objectNode__AHGzaNMYbGutvMVBddUSng(cache, (*t).n);
  				add__P8dDSotTW25BkfbyspojGg(result, T174_);
  			}
  			goto LA169_;
  			LA172_: ;
  			{
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T176_;
  				T176_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T176_ = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
  				add__P8dDSotTW25BkfbyspojGg(result, T176_);
  			}
  			LA169_: ;
  		}
  		goto LA139_;
  		LA141_: ;
  		{
  			{
  				NIM_BOOL T180_;
  				tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T184_;
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T190_;
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T198_;
  				T180_ = (NIM_BOOL)0;
  				T180_ = allowRecursion;
  				if (T180_) goto LA181_;
  				T180_ = ((*t).sym == NIM_NIL);
  				LA181_: ;
  				if (!T180_) goto LA182_;
  				{
  					if (!((*t).n == 0)) goto LA187_;
  					T184_ = info;
  				}
  				goto LA185_;
  				LA187_: ;
  				{
  					T184_ = (*(*t).n).info;
  				}
  				LA185_: ;
  				result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 133), T184_, t);
  				T190_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T190_ = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
  				add__P8dDSotTW25BkfbyspojGg(result, T190_);
  				{
  					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T195_;
  					if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA193_;
  					T195_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  					T195_ = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
  					add__P8dDSotTW25BkfbyspojGg(result, T195_);
  				}
  				goto LA191_;
  				LA193_: ;
  				{
  					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T197_;
  					T197_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  					T197_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
  					add__P8dDSotTW25BkfbyspojGg(result, T197_);
  				}
  				LA191_: ;
  				T198_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T198_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*t).n);
  				add__P8dDSotTW25BkfbyspojGg(result, T198_);
  			}
  			goto LA178_;
  			LA182_: ;
  			{
  				result = atomicTypeX__bT4Mm3vdYhgzdzTQ9cFUn0A((*t).sym, info);
  			}
  			LA178_: ;
  		}
  		LA139_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 14):
  	{
  		tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T201_;
  		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T207_;
  		{
  			if (!((*t).n == 0)) goto LA204_;
  			T201_ = info;
  		}
  		goto LA202_;
  		LA204_: ;
  		{
  			T201_ = (*(*t).n).info;
  		}
  		LA202_: ;
  		result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 150), T201_, t);
  		T207_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  		T207_ = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
  		add__P8dDSotTW25BkfbyspojGg(result, T207_);
  		{
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c;
  			tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* colontmp__3;
  			NI i_5;
  			NI L;
  			NI T209_;
  			c = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			colontmp__3 = (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
  			colontmp__3 = (*(*t).n).sons;
  			i_5 = ((NI) 0);
  			T209_ = (colontmp__3 ? colontmp__3->Sup.len : 0);
  			L = T209_;
  			{
  				while (1) {
  					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T212_;
  					if (!(i_5 < L)) goto LA211;
  					c = colontmp__3->data[i_5];
  					T212_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  					T212_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2(c);
  					add__P8dDSotTW25BkfbyspojGg(result, T212_);
  					i_5 += ((NI) 1);
  				} LA211: ;
  			}
  		}
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
  	{
  		{
  			if (!inst) goto LA216_;
  			{
  				tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T222_;
  				if (!((*t).n == 0)) goto LA220_;
  				{
  					if (!((*t).n == 0)) goto LA225_;
  					T222_ = info;
  				}
  				goto LA223_;
  				LA225_: ;
  				{
  					T222_ = (*(*t).n).info;
  				}
  				LA223_: ;
  				result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 160), T222_, t);
  				{
  					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* subType;
  					NI i_6;
  					NI L_2;
  					NI T229_;
  					subType = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
  					i_6 = ((NI) 0);
  					T229_ = ((*t).sons ? (*t).sons->Sup.len : 0);
  					L_2 = T229_;
  					{
  						while (1) {
  							tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T232_;
  							if (!(i_6 < L_2)) goto LA231;
  							subType = (*t).sons->data[i_6];
  							T232_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  							T232_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, subType, info, inst, NIM_FALSE);
  							add__P8dDSotTW25BkfbyspojGg(result, T232_);
  							i_6 += ((NI) 1);
  						} LA231: ;
  					}
  				}
  			}
  			goto LA218_;
  			LA220_: ;
  			{
  				tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T234_;
  				{
  					if (!((*t).n == 0)) goto LA237_;
  					T234_ = info;
  				}
  				goto LA235_;
  				LA237_: ;
  				{
  					T234_ = (*(*t).n).info;
  				}
  				LA235_: ;
  				result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 134), T234_, t);
  				{
  					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* s;
  					tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* colontmp__4;
  					NI i_7;
  					NI L_3;
  					NI T241_;
  					s = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  					colontmp__4 = (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
  					colontmp__4 = (*(*t).n).sons;
  					i_7 = ((NI) 0);
  					T241_ = (colontmp__4 ? colontmp__4->Sup.len : 0);
  					L_3 = T241_;
  					{
  						while (1) {
  							tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* idX60gensym847554_;
  							tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T244_;
  							tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T250_;
  							tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T251_;
  							if (!(i_7 < L_3)) goto LA243;
  							s = colontmp__4->data[i_7];
  							{
  								if (!((*t).n == 0)) goto LA247_;
  								T244_ = info;
  							}
  							goto LA245_;
  							LA247_: ;
  							{
  								T244_ = (*(*t).n).info;
  							}
  							LA245_: ;
  							idX60gensym847554_ = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 35), T244_, t);
  							add__P8dDSotTW25BkfbyspojGg(idX60gensym847554_, s);
  							T250_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  							T250_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*s).typ, info, inst, NIM_FALSE);
  							add__P8dDSotTW25BkfbyspojGg(idX60gensym847554_, T250_);
  							T251_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  							T251_ = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
  							add__P8dDSotTW25BkfbyspojGg(idX60gensym847554_, T251_);
  							add__P8dDSotTW25BkfbyspojGg(result, idX60gensym847554_);
  							i_7 += ((NI) 1);
  						} LA243: ;
  					}
  				}
  			}
  			LA218_: ;
  		}
  		goto LA214_;
  		LA216_: ;
  		{
  			result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_15), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 172), t, info, inst);
  		}
  		LA214_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 19):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_16), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 163), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 21):
  	{
  		{
  			tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T259_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T265_;
  			if (!inst) goto LA257_;
  			{
  				if (!((*t).n == 0)) goto LA262_;
  				T259_ = info;
  			}
  			goto LA260_;
  			LA262_: ;
  			{
  				T259_ = (*(*t).n).info;
  			}
  			LA260_: ;
  			result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 142), T259_, t);
  			T265_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T265_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
  			add__P8dDSotTW25BkfbyspojGg(result, T265_);
  		}
  		goto LA255_;
  		LA257_: ;
  		{
  			result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_17), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 168), t, info, inst);
  		}
  		LA255_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22):
  	{
  		{
  			tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T272_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T278_;
  			if (!inst) goto LA270_;
  			{
  				if (!((*t).n == 0)) goto LA275_;
  				T272_ = info;
  			}
  			goto LA273_;
  			LA275_: ;
  			{
  				T272_ = (*(*t).n).info;
  			}
  			LA273_: ;
  			result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 141), T272_, t);
  			T278_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T278_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
  			add__P8dDSotTW25BkfbyspojGg(result, T278_);
  		}
  		goto LA268_;
  		LA270_: ;
  		{
  			result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_18), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 167), t, info, inst);
  		}
  		LA268_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23):
  	{
  		{
  			tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T285_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T291_;
  			if (!inst) goto LA283_;
  			{
  				if (!((*t).n == 0)) goto LA288_;
  				T285_ = info;
  			}
  			goto LA286_;
  			LA288_: ;
  			{
  				T285_ = (*(*t).n).info;
  			}
  			LA286_: ;
  			result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 143), T285_, t);
  			T291_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T291_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
  			add__P8dDSotTW25BkfbyspojGg(result, T291_);
  		}
  		goto LA281_;
  		LA283_: ;
  		{
  			result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_19), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 169), t, info, inst);
  		}
  		LA281_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_20), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 275), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_21), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 275), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_22), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 164), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 62):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_23), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 165), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25):
  	{
  		{
  			tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T302_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fp;
  			tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T308_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T333_;
  			if (!inst) goto LA300_;
  			{
  				if (!((*t).n == 0)) goto LA305_;
  				T302_ = info;
  			}
  			goto LA303_;
  			LA305_: ;
  			{
  				T302_ = (*(*t).n).info;
  			}
  			LA303_: ;
  			result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 147), T302_, t);
  			{
  				if (!((*t).n == 0)) goto LA311_;
  				T308_ = info;
  			}
  			goto LA309_;
  			LA311_: ;
  			{
  				T308_ = (*(*t).n).info;
  			}
  			LA309_: ;
  			fp = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 76), T308_, t);
  			{
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T318_;
  				if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA316_;
  				T318_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T318_ = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
  				add__P8dDSotTW25BkfbyspojGg(fp, T318_);
  			}
  			goto LA314_;
  			LA316_: ;
  			{
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T320_;
  				T320_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T320_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], (*(*(*t).n).sons->data[((NI) 0)]).info, inst, NIM_FALSE);
  				add__P8dDSotTW25BkfbyspojGg(fp, T320_);
  			}
  			LA314_: ;
  			{
  				NI i_8;
  				NI colontmp__5;
  				NI T322_;
  				NI i_9;
  				i_8 = (NI)0;
  				colontmp__5 = (NI)0;
  				T322_ = ((*t).sons ? (*t).sons->Sup.len : 0);
  				colontmp__5 = T322_;
  				i_9 = ((NI) 1);
  				{
  					while (1) {
  						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* idX60gensym847629_;
  						tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T325_;
  						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T331_;
  						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T332_;
  						if (!(i_9 < colontmp__5)) goto LA324;
  						i_8 = i_9;
  						{
  							if (!((*t).n == 0)) goto LA328_;
  							T325_ = info;
  						}
  						goto LA326_;
  						LA328_: ;
  						{
  							T325_ = (*(*t).n).info;
  						}
  						LA326_: ;
  						idX60gensym847629_ = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 35), T325_, t);
  						add__P8dDSotTW25BkfbyspojGg(idX60gensym847629_, (*(*t).n).sons->data[i_8]);
  						T331_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  						T331_ = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[i_8], info, inst, NIM_FALSE);
  						add__P8dDSotTW25BkfbyspojGg(idX60gensym847629_, T331_);
  						T332_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  						T332_ = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
  						add__P8dDSotTW25BkfbyspojGg(idX60gensym847629_, T332_);
  						add__P8dDSotTW25BkfbyspojGg(fp, idX60gensym847629_);
  						i_9 += ((NI) 1);
  					} LA324: ;
  				}
  			}
  			add__P8dDSotTW25BkfbyspojGg(result, fp);
  			T333_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			{
  				NI T336_;
  				T336_ = (NI)0;
  				T336_ = len__P89cqdlERShb9alU3iC0yj8wast((*(*t).n).sons->data[((NI) 0)]);
  				if (!(((NI) 0) < T336_)) goto LA337_;
  				T333_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*(*(*t).n).sons->data[((NI) 0)]).sons->data[((NI) 4)]);
  			}
  			goto LA334_;
  			LA337_: ;
  			{
  				T333_ = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
  			}
  			LA334_: ;
  			add__P8dDSotTW25BkfbyspojGg(result, T333_);
  		}
  		goto LA298_;
  		LA300_: ;
  		{
  			result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_24), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 0), t, info, inst);
  		}
  		LA298_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 27):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_25), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 161), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20):
  	{
  		tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T343_;
  		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T349_;
  		{
  			if (!((*t).n == 0)) goto LA346_;
  			T343_ = info;
  		}
  		goto LA344_;
  		LA346_: ;
  		{
  			T343_ = (*(*t).n).info;
  		}
  		LA344_: ;
  		result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 42), T343_, t);
  		T349_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  		T349_ = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_26), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 162), t, info);
  		add__P8dDSotTW25BkfbyspojGg(result, T349_);
  		{
  			NIM_BOOL T352_;
  			NI T354_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* rng_2;
  			tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T357_;
  			tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* T363_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T364_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T365_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T366_;
  			T352_ = (NIM_BOOL)0;
  			T352_ = inst;
  			if (!(T352_)) goto LA353_;
  			T354_ = (NI)0;
  			T354_ = len__P89cqdlERShb9alU3iC0yj8wast((*t).n);
  			T352_ = (T354_ == ((NI) 2));
  			LA353_: ;
  			if (!T352_) goto LA355_;
  			{
  				if (!((*t).n == 0)) goto LA360_;
  				T357_ = info;
  			}
  			goto LA358_;
  			LA360_: ;
  			{
  				T357_ = (*(*t).n).info;
  			}
  			LA358_: ;
  			rng_2 = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 29), T357_, t);
  			T363_ = (tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA*)0;
  			T363_ = getIdent__9coBOmdXN09be4rJvXK6fQGQ(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_12));
  			T364_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T364_ = newIdentNode__KZLyxk08RZ9cnzbQfphbJPQ(T363_, info);
  			add__P8dDSotTW25BkfbyspojGg(rng_2, T364_);
  			T365_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T365_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*(*t).n).sons->data[((NI) 0)]);
  			add__P8dDSotTW25BkfbyspojGg(rng_2, T365_);
  			T366_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T366_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*(*t).n).sons->data[((NI) 1)]);
  			add__P8dDSotTW25BkfbyspojGg(rng_2, T366_);
  			add__P8dDSotTW25BkfbyspojGg(result, rng_2);
  		}
  		goto LA350_;
  		LA355_: ;
  		{
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T368_;
  			T368_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T368_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*(*t).n).sons->data[((NI) 0)]);
  			add__P8dDSotTW25BkfbyspojGg(result, T368_);
  			{
  				NI T371_;
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T374_;
  				T371_ = (NI)0;
  				T371_ = len__P89cqdlERShb9alU3iC0yj8wast((*t).n);
  				if (!(((NI) 1) < T371_)) goto LA372_;
  				T374_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T374_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*(*t).n).sons->data[((NI) 1)]);
  				add__P8dDSotTW25BkfbyspojGg(result, T374_);
  			}
  			LA372_: ;
  		}
  		LA350_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 26):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_27), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 192), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 28):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_28), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 190), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 29):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_29), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 191), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_30), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 174), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 32):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_31), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 175), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 33):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_32), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 176), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 34):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_33), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 177), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 35):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_34), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 178), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 36):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_35), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 184), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 37):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_36), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 185), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 38):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_37), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 186), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 39):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_38), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 187), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 40):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_39), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 179), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 41):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_40), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 180), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 42):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_41), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 181), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 43):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_42), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 182), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 44):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_43), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 183), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 48):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_44), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 166), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_45), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 0), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 51):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_46), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 0), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52):
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53):
  	{
  		{
  			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T400_;
  			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0)) goto LA398_;
  			T400_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
  			T400_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
  			result = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, T400_, info, inst, NIM_FALSE);
  		}
  		goto LA396_;
  		LA398_: ;
  		{
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T402_;
  			result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_47), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 0), t, info, inst);
  			T402_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T402_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*t).n);
  			add__P8dDSotTW25BkfbyspojGg(result, T402_);
  		}
  		LA396_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 54):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_48), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 0), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 56):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_49), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 115), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 57):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_50), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 116), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 58):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_51), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 102), t, info, inst);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 59):
  	{
  		result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_52), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 0), t, info);
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 55):
  	{
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 61):
  	{
  		{
  			if (!inst) goto LA412_;
  			{
  				if (!!(((*t).n == NIM_NIL))) goto LA416_;
  				result = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*t).n);
  			}
  			goto LA414_;
  			LA416_: ;
  			{
  				result = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_8), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 171), t, info);
  			}
  			LA414_: ;
  		}
  		goto LA410_;
  		LA412_: ;
  		{
  			tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T420_;
  			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T426_;
  			{
  				if (!((*t).n == 0)) goto LA423_;
  				T420_ = info;
  			}
  			goto LA421_;
  			LA423_: ;
  			{
  				T420_ = (*(*t).n).info;
  			}
  			LA421_: ;
  			result = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 42), T420_, t);
  			T426_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  			T426_ = atomicTypeX__dxogOUDK6Q9bCBgEkvVRVjg(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_53), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 0), t, info);
  			add__P8dDSotTW25BkfbyspojGg(result, T426_);
  			{
  				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T431_;
  				if (!!(((*t).n == NIM_NIL))) goto LA429_;
  				T431_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  				T431_ = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2((*t).n);
  				add__P8dDSotTW25BkfbyspojGg(result, T431_);
  			}
  			LA429_: ;
  		}
  		LA410_: ;
  	}
  	break;
  	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 45):
  	{
  		result = mapTypeToBracketX__5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_54), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 275), t, info, inst);
  	}
  	break;
  	}
  	}BeforeRet_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, opMapTypeToAst__B7DYLotR9aw6o9cHZhrLIPGg)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
  	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  	result = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, t, info, NIM_FALSE, NIM_TRUE);
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, opMapTypeInstToAst__B7DYLotR9aw6o9cHZhrLIPGg_2)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
  	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  	result = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, t, info, NIM_TRUE, NIM_FALSE);
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, opMapTypeImplToAst__B7DYLotR9aw6o9cHZhrLIPGg_3)(tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
  	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  	result = mapTypeToAstX__9aIygTHXLfvkdHTvOw62hGw(cache, t, info, NIM_TRUE, NIM_TRUE);
  	return result;
  }
  static N_INLINE(void, pushSafePoint)(TSafePoint* s) {	(*s).hasRaiseAction = NIM_FALSE;
  	(*s).prev = excHandler__rqLlY5bs9atDw2OXYqJEn5g;
  	excHandler__rqLlY5bs9atDw2OXYqJEn5g = s;
  }
  static N_INLINE(NIM_BOOL, fileExists__2KLbGVKGy3qOdtJ4Bb1ADgos)(NimStringDesc* filename) {	NIM_BOOL result;
  	result = (NIM_BOOL)0;
  	result = nosexistsFile(filename);
  	return result;
  }
  static N_INLINE(void, popSafePoint)(void) {	excHandler__rqLlY5bs9atDw2OXYqJEn5g = (*excHandler__rqLlY5bs9atDw2OXYqJEn5g).prev;
  }
  static N_INLINE(Exception*, getCurrentException)(void) {	Exception* result;
  	result = (Exception*)0;
  	result = currException__9bVPeDJlYTi9bQApZpfH8wjg;
  	return result;
  }
  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__M04YC71iJg1N7gBF3HZTngsystem)(void* dest, void* source, NI size) {	nimCopyMem(dest, source, size);
  }
  static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {	{
  		if (!!((src == NIM_NIL))) goto LA3_;
  		copyMem__M04YC71iJg1N7gBF3HZTngsystem(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
  		(*dest).Sup.len += (*src).Sup.len;
  	}
  	LA3_: ;
  }
  static N_INLINE(void, popCurrentException)(void) {	asgnRef((void**) (&currException__9bVPeDJlYTi9bQApZpfH8wjg), (*currException__9bVPeDJlYTi9bQApZpfH8wjg).up);
  }
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, opSlurp__BZteCpC7yurCSeB8YcFcgg)(NimStringDesc* file, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* module, tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf) {	NimStringDesc* volatile result;
  	TSafePoint TM__gLSXNlwmnHPzTIXzvpQGfw_55;
  	result = (NimStringDesc*)0;
  	pushSafePoint(&TM__gLSXNlwmnHPzTIXzvpQGfw_55);
  	TM__gLSXNlwmnHPzTIXzvpQGfw_55.status = setjmp(TM__gLSXNlwmnHPzTIXzvpQGfw_55.context);
  	if (TM__gLSXNlwmnHPzTIXzvpQGfw_55.status == 0) {
  		NimStringDesc* volatile filename;
  		NimStringDesc* T2_;
  		NimStringDesc* T3_;
  		NI32 T9_;
  		tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* T10_;
  		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T11_;
  		T2_ = (NimStringDesc*)0;
  		T2_ = toFullPath__VW1RaR1l9c9bPnJxr1KuvIrg(conf, info.fileIndex);
  		T3_ = (NimStringDesc*)0;
  		T3_ = nosparentDir(T2_);
  		filename = slash___gEyhbzZ1UcxyenWRLJRXNQ(T3_, file);
  		{
  			NIM_BOOL T6_;
  			T6_ = (NIM_BOOL)0;
  			T6_ = fileExists__2KLbGVKGy3qOdtJ4Bb1ADgos(filename);
  			if (!!(T6_)) goto LA7_;
  			filename = findFile__Jsd6LfkMRIXL9b0vzcHVYOA(conf, file, NIM_FALSE);
  		}
  		LA7_: ;
  		result = readFile__4PGnM9bWmsH0Nu7dnr3XzgA(filename);
  		T9_ = (NI32)0;
  		T9_ = fileInfoIdx__3HRSVgYDcnQTolSZGx1zjA(conf, filename);
  		(void)(T9_);
  		T10_ = (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
  		T10_ = (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*) newSeq((&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_), 1);
  		asgnRef((void**) (&T10_->data[0]), newStrNode__zLcHGdlEbBYFtoCoan9agkg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 20), filename));
  		T11_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
  		T11_ = newNode__duw0Uu9cIFXmCAaunQWIP0g(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 121), info, T10_, NIM_NIL);
  		appendToModule__T4o9clzgbAgGY4ORbfP6LmQ(module, T11_);
  		popSafePoint();
  	}
  	else {
  		popSafePoint();
  		if (isObj(getCurrentException()->Sup.m_type, (&NTI__iLZrPn9anoh9ad1MmO0RczFw_))) {
  			NimStringDesc* T14_;
  			TM__gLSXNlwmnHPzTIXzvpQGfw_55.status = 0;
  			T14_ = (NimStringDesc*)0;
  			T14_ = rawNewString((file ? file->Sup.len : 0) + 18);
  appendString(T14_, ((NimStringDesc*) &TM__gLSXNlwmnHPzTIXzvpQGfw_56));
  appendString(T14_, file);
  			localError__NF6kBGchnhQYPbCedyefVA(conf, info, T14_);
  			result = ((NimStringDesc*) NIM_NIL);
  			popCurrentException();
  		}
  	}
  	if (TM__gLSXNlwmnHPzTIXzvpQGfw_55.status != 0) reraiseException();
  	return result;
  }
  