/* Generated by Nim Compiler v1.0.4 */
/*   (c) 2019 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 32

#include "nimbase.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_TContext__C9bB2okDBl3OKGUBiY5k5Ug tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug;
typedef struct tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q;
typedef struct tySequence__Mh9agqM29bm9aP5AUL1x7dZGA tySequence__Mh9agqM29bm9aP5AUL1x7dZGA;
typedef struct tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w;
typedef struct tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg;
typedef struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q;
typedef struct tyObject_TPassContext__Hb6rFM0ecvtlLf2kv9aU75w tyObject_TPassContext__Hb6rFM0ecvtlLf2kv9aU75w;
typedef struct RootObj RootObj;
typedef struct tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
typedef struct tyObject_TScope__1cQRXW6aAknk7ywAwjH3nw tyObject_TScope__1cQRXW6aAknk7ywAwjH3nw;
typedef struct tyObject_TProcCon__s5jyYR8yL1QmFqiHICzU9aQ tyObject_TProcCon__s5jyYR8yL1QmFqiHICzU9aQ;
typedef struct tyObject_TMatchedConcept__9blNHn9cqK8EfxnwsfjDnKvg tyObject_TMatchedConcept__9blNHn9cqK8EfxnwsfjDnKvg;
typedef struct tySequence__DfgJFJEYoj4YBAHLZPl5lQ tySequence__DfgJFJEYoj4YBAHLZPl5lQ;
typedef struct tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg;
typedef struct tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ;
typedef struct tySequence__9brg1xNurxcus33lU4IE1Dw tySequence__9brg1xNurxcus33lU4IE1Dw;
typedef struct tySequence__oYkV9aFZe0MXcEAprJaOUsA tySequence__oYkV9aFZe0MXcEAprJaOUsA;
typedef struct tySequence__arD7Tw6eD6lvOczWZl9buNg tySequence__arD7Tw6eD6lvOczWZl9buNg;
typedef struct tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA;
typedef struct tyObject_TCtx__S3Av1Ng7MBWGEZZBhfDYCw tyObject_TCtx__S3Av1Ng7MBWGEZZBhfDYCw;
typedef struct tySequence__jWKvSdankQPoT5bw9cBU9aiw tySequence__jWKvSdankQPoT5bw9cBU9aiw;
typedef struct tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA;
typedef struct tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw;
typedef struct tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tySequence__YceFcaugL2PWNtVbyffD9bQ tySequence__YceFcaugL2PWNtVbyffD9bQ;
typedef struct tySequence__d4l6E4jBnTQ3BEfsLOpmEQ tySequence__d4l6E4jBnTQ3BEfsLOpmEQ;
typedef struct tyObject_HashSet__Gy4haGrophX9bC5RxnPAc6w tyObject_HashSet__Gy4haGrophX9bC5RxnPAc6w;
typedef struct tySequence__Bis5AbpONWcIRrPyPJS8Yw tySequence__Bis5AbpONWcIRrPyPJS8Yw;
typedef struct tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA;
typedef struct tySequence__Ef05srmQTDulnBdXR4Ja6Q tySequence__Ef05srmQTDulnBdXR4Ja6Q;
typedef struct tySequence__DXS6mEo7PVUFJkirsQ9bNQA tySequence__DXS6mEo7PVUFJkirsQ9bNQA;
typedef struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA;
typedef struct tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA;
typedef struct tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA;
typedef struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ;
typedef struct tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw;
typedef struct tyObject_Table__fdKWDDO1P17zvuQPReVgRA tyObject_Table__fdKWDDO1P17zvuQPReVgRA;
typedef struct tySequence__fdmz6VkIf1ewwrssKYqRFg tySequence__fdmz6VkIf1ewwrssKYqRFg;
typedef struct tyObject_Table__e2Ciu0s1q49aVQ7ULXy7l9bQ tyObject_Table__e2Ciu0s1q49aVQ7ULXy7l9bQ;
typedef struct tySequence__kxu4GK0onha2t9bo86mdVAg tySequence__kxu4GK0onha2t9bo86mdVAg;
typedef struct tySequence__48JTohSgTy339bRxHzUD8KA tySequence__48JTohSgTy339bRxHzUD8KA;
typedef struct tySequence__bWZXqEvLFwhLvAqSRoFNgQ tySequence__bWZXqEvLFwhLvAqSRoFNgQ;
typedef struct tyObject_IncrementalCtx__sdH7TnbKACuAzE7DBabnCA tyObject_IncrementalCtx__sdH7TnbKACuAzE7DBabnCA;
typedef struct tyObject_Table__IioUJGdqPI6xC7S7QF8MBw tyObject_Table__IioUJGdqPI6xC7S7QF8MBw;
typedef struct tySequence__Qr6E8eH7btq79cFKGaJfGLw tySequence__Qr6E8eH7btq79cFKGaJfGLw;
typedef struct tyObject_Table__G1v8c16HePOldLeucwe05Q tyObject_Table__G1v8c16HePOldLeucwe05Q;
typedef struct tySequence__fIB1rTQ55aFonoft9a9bmljQ tySequence__fIB1rTQ55aFonoft9a9bmljQ;
typedef struct tyObject_Table__0Y2brGGKD9bV6GJLXT9aUDgA tyObject_Table__0Y2brGGKD9bV6GJLXT9aUDgA;
typedef struct tySequence__23SMqauuRsbDANhthj9bWlA tySequence__23SMqauuRsbDANhthj9bWlA;
typedef struct tyObject_Table__NttoEzoiq5CiphZe81oadg tyObject_Table__NttoEzoiq5CiphZe81oadg;
typedef struct tySequence__squ9b9bUH4OLHf6cEMrt6hVA tySequence__squ9b9bUH4OLHf6cEMrt6hVA;
typedef struct tyObject_Table__nagDFX4QHx0s6Fvma9blmSg tyObject_Table__nagDFX4QHx0s6Fvma9blmSg;
typedef struct tySequence__pHNq3oXj9av2sEUdqaqeZjw tySequence__pHNq3oXj9av2sEUdqaqeZjw;
typedef struct tySequence__PzqTLBFNawCGiqTk0UORYw tySequence__PzqTLBFNawCGiqTk0UORYw;
typedef struct tySequence__MvZmat48bhe9b6x9aUD58D5Q tySequence__MvZmat48bhe9b6x9aUD58D5Q;
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 tyTuple__zwpS6d6iewrdlBSTNFoyVA tyTuple__zwpS6d6iewrdlBSTNFoyVA;
typedef struct tyTuple__kN8up2W6YKc5YA9avn5mV5w tyTuple__kN8up2W6YKc5YA9avn5mV5w;
typedef struct tyTuple__KlSLWBROOViO04uLQHu7ig tyTuple__KlSLWBROOViO04uLQHu7ig;
typedef struct tyObject_TIdPair__AdFnD2YdADPeuJbG2YJ4vg tyObject_TIdPair__AdFnD2YdADPeuJbG2YJ4vg;
typedef struct tyObject_TOptionEntry__H9ac5KbrDJVwT1zH5O83r7w tyObject_TOptionEntry__H9ac5KbrDJVwT1zH5O83r7w;
typedef struct tyObject_TInstantiationPair__HkXM4cJmOpk8zFcmq9c9c3gQ tyObject_TInstantiationPair__HkXM4cJmOpk8zFcmq9c9c3gQ;
typedef struct tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA;
typedef struct tyTuple__DJxbl4DYEJfb29cy1MYaUPQ tyTuple__DJxbl4DYEJfb29cy1MYaUPQ;
typedef struct tyTuple__NAaJgGVgNmlGoqmiWxdOHQ tyTuple__NAaJgGVgNmlGoqmiWxdOHQ;
typedef struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ;
typedef struct tyTuple__1mtQ8sCEE7DbfIuQciv9b5Q tyTuple__1mtQ8sCEE7DbfIuQciv9b5Q;
typedef struct tyTuple__xDU9bZmv1ZbZkJDaATBekIQ tyTuple__xDU9bZmv1ZbZkJDaATBekIQ;
typedef struct tyTuple__quA39a2QdEQU9cSEIUSibApQ tyTuple__quA39a2QdEQU9cSEIUSibApQ;
typedef struct tyTuple__EkGTYRWQ6y9cppXTlT8Xm5g tyTuple__EkGTYRWQ6y9cppXTlT8Xm5g;
typedef struct tyTuple__OJFzEczluV8Jmo9bRpBfkzw tyTuple__OJFzEczluV8Jmo9bRpBfkzw;
typedef struct tyTuple__2SGm9aGCXuo7XSQ9bqD29axXw tyTuple__2SGm9aGCXuo7XSQ9bqD29axXw;
typedef struct tyTuple__F3gkSrMB1qp2Tvf9bixVXwg tyTuple__F3gkSrMB1qp2Tvf9bixVXwg;
typedef struct tyTuple__wcNatyuf8WOqAhGLhSvgiw tyTuple__wcNatyuf8WOqAhGLhSvgiw;
typedef struct tyObject_BTree__VZdzO0Tlflp7WMN4gS8oPg tyObject_BTree__VZdzO0Tlflp7WMN4gS8oPg;
typedef struct tyObject_NodecolonObjectType___dNELmBSmY7nthjhZupWO6g tyObject_NodecolonObjectType___dNELmBSmY7nthjhZupWO6g;
typedef struct tyTuple__euPCXX9bc3XzndEhYlqNS7g tyTuple__euPCXX9bc3XzndEhYlqNS7g;
struct tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q {
NI counter;
tySequence__Mh9agqM29bm9aP5AUL1x7dZGA* data;
};
struct tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA {
tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q topLayer;
tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA* nextLayer;
};
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;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q {
NU16 line;
NI16 col;
NI32 fileIndex;
};
struct tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg {
tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c;
tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap;
tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q symMap;
tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q localCache;
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
NIM_BOOL allowMetaTypes;
NIM_BOOL skipTypedesc;
NIM_BOOL isReturnType;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner;
NI recursionLimit;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_TPassContext__Hb6rFM0ecvtlLf2kv9aU75w {
  RootObj Sup;
};
typedef NI tyArray__emiAJ8okywrJw7ZHLzlXbQ[34];
struct tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg {
NI elems;
NI counter;
NI max;
tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ* head;
tySequence__9brg1xNurxcus33lU4IE1Dw* data;
tyArray__emiAJ8okywrJw7ZHLzlXbQ a;
};
typedef N_NIMCALL_PTR(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, tyProc__RcJNn9bSvWdJgUmA1O6sbHA) (tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
typedef NU32 tySet_tyEnum_TExprFlag__0WWd9a4ssQWuY7Q6ZKepq9cQ;
typedef N_NIMCALL_PTR(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, tyProc__39auogS0nN05zO6JrT7za9cQ) (tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag__0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
typedef NU32 tySet_tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw;
typedef N_NIMCALL_PTR(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, tyProc__qlV9aWvA5wrWVg9bI5PqwJyA) (tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* nOrig, tySet_tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw filter, tySet_tyEnum_TExprFlag__0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
typedef N_NIMCALL_PTR(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, tyProc__PiEiMdzXg9bcm3lEo4Q6iNw) (tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
typedef struct {
N_NIMCALL_PTR(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, ClP_0) (tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, void* ClE_0);
void* ClE_0;
} tyProc__icITxWxlFufT9aDDCEKD2VQ;
typedef struct {
N_NIMCALL_PTR(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*, ClP_0) (tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, void* ClE_0);
void* ClE_0;
} tyProc__GeenfmDntvGEQoCko16JtA;
struct tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA {
NI counter;
tySequence__DfgJFJEYoj4YBAHLZPl5lQ* data;
};
typedef NU8 tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg;
typedef N_NIMCALL_PTR(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*, tyProc__9amcenQyXzP9cCQNnXZVgnYQ) (tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* dc, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg op, NI col);
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NU16 tySet_tyEnum_Feature__01UoAKYz1MxZiuG1X2VhNQ;
struct tyObject_HashSet__Gy4haGrophX9bC5RxnPAc6w {
tySequence__Bis5AbpONWcIRrPyPJS8Yw* data;
NI counter;
};
struct tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug {
  tyObject_TPassContext__Hb6rFM0ecvtlLf2kv9aU75w Sup;
tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* enforceVoidContext;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* module;
tyObject_TScope__1cQRXW6aAknk7ywAwjH3nw* currentScope;
tyObject_TScope__1cQRXW6aAknk7ywAwjH3nw* importTable;
tyObject_TScope__1cQRXW6aAknk7ywAwjH3nw* topLevelScope;
tyObject_TProcCon__s5jyYR8yL1QmFqiHICzU9aQ* p;
tyObject_TMatchedConcept__9blNHn9cqK8EfxnwsfjDnKvg* matchedConcept;
tySequence__DfgJFJEYoj4YBAHLZPl5lQ* friendModules;
NI instCounter;
tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg ambiguousSymbols;
NI inGenericContext;
NI inStaticContext;
NI inUnrolledContext;
NI compilesContextId;
NI compilesContextIdGenerator;
NI inGenericInst;
tySequence__DfgJFJEYoj4YBAHLZPl5lQ* converters;
tySequence__DfgJFJEYoj4YBAHLZPl5lQ* patterns;
tySequence__oYkV9aFZe0MXcEAprJaOUsA* optionStack;
tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q symMapping;
tySequence__arD7Tw6eD6lvOczWZl9buNg* libs;
tyProc__RcJNn9bSvWdJgUmA1O6sbHA semConstExpr;
tyProc__39auogS0nN05zO6JrT7za9cQ semExpr;
tyProc__39auogS0nN05zO6JrT7za9cQ semTryExpr;
tyProc__RcJNn9bSvWdJgUmA1O6sbHA semTryConstExpr;
tyProc__39auogS0nN05zO6JrT7za9cQ semOperand;
tyProc__RcJNn9bSvWdJgUmA1O6sbHA semConstBoolExpr;
tyProc__qlV9aWvA5wrWVg9bI5PqwJyA semOverloadedCall;
tyProc__PiEiMdzXg9bcm3lEo4Q6iNw semTypeNode;
tyProc__icITxWxlFufT9aDDCEKD2VQ semInferredLambda;
tyProc__GeenfmDntvGEQoCko16JtA semGenerateInstance;
tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg includedFiles;
tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA pureEnumFields;
tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA userPragmas;
tyObject_TCtx__S3Av1Ng7MBWGEZZBhfDYCw* evalContext;
tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg unknownIdents;
tySequence__jWKvSdankQPoT5bw9cBU9aiw* generics;
NI topStmts;
NI lastGenericIdx;
NI hloLoopDetector;
NI inParallelStmt;
tyProc__9amcenQyXzP9cCQNnXZVgnYQ instTypeBoundOp;
tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* selfName;
tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache;
tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ* graph;
tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA signatures;
NimStringDesc* recursiveDep;
NIM_BOOL suggestionsMade;
tySet_tyEnum_Feature__01UoAKYz1MxZiuG1X2VhNQ features;
NI inTypeContext;
tySequence__YceFcaugL2PWNtVbyffD9bQ* typesWithOps;
tySequence__d4l6E4jBnTQ3BEfsLOpmEQ* unusedImports;
tyObject_HashSet__Gy4haGrophX9bC5RxnPAc6w exportIndirections;
};
struct tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA {
  RootObj Sup;
NI id;
};
typedef NU8 tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw;
typedef NU16 tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg;
typedef NU64 tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw;
typedef NU32 tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg;
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_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;
};
typedef NU32 tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg;
typedef NU8 tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw;
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;
};
struct tyObject_Table__fdKWDDO1P17zvuQPReVgRA {
tySequence__fdmz6VkIf1ewwrssKYqRFg* data;
NI counter;
};
struct tyObject_Table__e2Ciu0s1q49aVQ7ULXy7l9bQ {
tySequence__kxu4GK0onha2t9bo86mdVAg* data;
NI counter;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClP_0) (void* ClE_0);
void* ClE_0;
} tyProc__xdLb0cyzx3FuM6Q4NnRTpQ;
typedef tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tyArray__OLX364rHC66WkzRbMp49aQg[64];
typedef tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tyArray__6GDJmNRiFxkWAAdMgUie8g[70];
struct tyObject_IncrementalCtx__sdH7TnbKACuAzE7DBabnCA {
char dummy;
};
struct tyObject_Table__IioUJGdqPI6xC7S7QF8MBw {
tySequence__Qr6E8eH7btq79cFKGaJfGLw* data;
NI counter;
};
struct tyObject_Table__G1v8c16HePOldLeucwe05Q {
tySequence__fIB1rTQ55aFonoft9a9bmljQ* data;
NI counter;
};
typedef N_NIMCALL_PTR(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*, tyProc__c6vdo1yHyj19b9bS17tijS2w) (tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* m, NI32 fileIdx);
typedef N_NIMCALL_PTR(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, tyProc__d5yEkT9aXkAtHvVerr7IeCQ) (tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* m, NI32 fileIdx);
typedef N_NIMCALL_PTR(void, tyProc__sP1I7TbCn358eLy9bX4IphA) (tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
struct tyObject_Table__0Y2brGGKD9bV6GJLXT9aUDgA {
tySequence__23SMqauuRsbDANhthj9bWlA* data;
NI counter;
};
struct tyObject_Table__NttoEzoiq5CiphZe81oadg {
tySequence__squ9b9bUH4OLHf6cEMrt6hVA* data;
NI counter;
};
struct tyObject_Table__nagDFX4QHx0s6Fvma9blmSg {
tySequence__pHNq3oXj9av2sEUdqaqeZjw* data;
NI counter;
};
typedef N_NIMCALL_PTR(void, tyProc__R9aa9aO9cNhvWgTGK9bAAvuSRA) (tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info);
struct tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ {
tySequence__DfgJFJEYoj4YBAHLZPl5lQ* modules;
tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA packageSyms;
tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg deps;
tyObject_Table__fdKWDDO1P17zvuQPReVgRA importDeps;
NIM_BOOL suggestMode;
NIM_BOOL invalidTransitiveClosure;
tyObject_Table__e2Ciu0s1q49aVQ7ULXy7l9bQ inclToMod;
tySequence__48JTohSgTy339bRxHzUD8KA* importStack;
RootObj* backend;
tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* config;
tyObject_IdentCachecolonObjectType___TzLHS09bRH9a0TYLs39cqcNaw* cache;
RootObj* vm;
tyProc__xdLb0cyzx3FuM6Q4NnRTpQ doStopCompile;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* usageSym;
tySequence__DfgJFJEYoj4YBAHLZPl5lQ* owners;
tySequence__bWZXqEvLFwhLvAqSRoFNgQ* methods;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* systemModule;
tyArray__OLX364rHC66WkzRbMp49aQg sysTypes;
tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA compilerprocs;
tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA exposed;
tyArray__6GDJmNRiFxkWAAdMgUie8g intTypeCache;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opContains;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opNot;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* emptyNode;
tyObject_IncrementalCtx__sdH7TnbKACuAzE7DBabnCA incr;
tyObject_Table__IioUJGdqPI6xC7S7QF8MBw canonTypes;
tyObject_Table__G1v8c16HePOldLeucwe05Q symBodyHashes;
tyProc__c6vdo1yHyj19b9bS17tijS2w importModuleCallback;
tyProc__d5yEkT9aXkAtHvVerr7IeCQ includeFileCallback;
tyProc__sP1I7TbCn358eLy9bX4IphA recordStmt;
tyObject_Table__0Y2brGGKD9bV6GJLXT9aUDgA cacheSeqs;
tyObject_Table__NttoEzoiq5CiphZe81oadg cacheCounters;
tyObject_Table__nagDFX4QHx0s6Fvma9blmSg cacheTables;
tySequence__PzqTLBFNawCGiqTk0UORYw* passes;
tyProc__R9aa9aO9cNhvWgTGK9bAAvuSRA onDefinition;
tyProc__R9aa9aO9cNhvWgTGK9bAAvuSRA onDefinitionResolveForward;
tyProc__R9aa9aO9cNhvWgTGK9bAAvuSRA onUsage;
tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* globalDestructors;
};
typedef NU8 tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA;
typedef NU64 tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw;
typedef tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* tyArray__PsPyPA45AAjHu4uDGHNjTg[4];
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 NU8 tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg;
typedef NU8 tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw;
typedef NU8 tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw;
typedef NU8 tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw;
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_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw;
typedef NU64 tySet_tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag;
struct tyTuple__zwpS6d6iewrdlBSTNFoyVA {
NI Field0;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* Field1;
};
typedef NU8 tySet_tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw[21];
struct tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA {
  tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA Sup;
NimStringDesc* s;
tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* next;
NI h;
};
struct tyTuple__kN8up2W6YKc5YA9avn5mV5w {
NimStringDesc* Field0;
NI Field1;
NI Field2;
};
struct tyTuple__KlSLWBROOViO04uLQHu7ig {
tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* Field0;
tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* Field1;
};
struct tyObject_TIdPair__AdFnD2YdADPeuJbG2YJ4vg {
tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* key;
RootObj* val;
};
struct tyObject_TInstantiationPair__HkXM4cJmOpk8zFcmq9c9c3gQ {
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* genericSym;
tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA* inst;
};
struct tyTuple__DJxbl4DYEJfb29cy1MYaUPQ {
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* Field0;
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q Field1;
};
struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ {
NI Field0;
NI Field1;
};
struct tyTuple__NAaJgGVgNmlGoqmiWxdOHQ {
NI Field0;
tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ Field1;
};
struct tyTuple__1mtQ8sCEE7DbfIuQciv9b5Q {
NI Field0;
NI32 Field1;
tySequence__48JTohSgTy339bRxHzUD8KA* Field2;
};
struct tyTuple__xDU9bZmv1ZbZkJDaATBekIQ {
NI Field0;
NI32 Field1;
NI32 Field2;
};
struct tyTuple__quA39a2QdEQU9cSEIUSibApQ {
tySequence__DfgJFJEYoj4YBAHLZPl5lQ* Field0;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* Field1;
};
typedef NU8 tyArray__qtqsWM5aXmcpMIVmvq3kAA[16];
struct tyTuple__EkGTYRWQ6y9cppXTlT8Xm5g {
NI Field0;
tyArray__qtqsWM5aXmcpMIVmvq3kAA Field1;
tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* Field2;
};
struct tyTuple__OJFzEczluV8Jmo9bRpBfkzw {
NI Field0;
NI Field1;
tyArray__qtqsWM5aXmcpMIVmvq3kAA Field2;
};
struct tyTuple__2SGm9aGCXuo7XSQ9bqD29axXw {
NI Field0;
NimStringDesc* Field1;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* Field2;
};
struct tyTuple__F3gkSrMB1qp2Tvf9bixVXwg {
NI Field0;
NimStringDesc* Field1;
NI64 Field2;
};
struct tyObject_BTree__VZdzO0Tlflp7WMN4gS8oPg {
tyObject_NodecolonObjectType___dNELmBSmY7nthjhZupWO6g* root;
NI entries;
};
struct tyTuple__wcNatyuf8WOqAhGLhSvgiw {
NI Field0;
NimStringDesc* Field1;
tyObject_BTree__VZdzO0Tlflp7WMN4gS8oPg Field2;
};
typedef N_NIMCALL_PTR(tyObject_TPassContext__Hb6rFM0ecvtlLf2kv9aU75w*, tyProc__8ooe5vdoqmvpHnfXV29bP3w) (tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* module);
typedef N_NIMCALL_PTR(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, tyProc__A7Sdoem70tRxSEmKrf9cmyg) (tyObject_TPassContext__Hb6rFM0ecvtlLf2kv9aU75w* p, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* topLevelStmt);
typedef N_NIMCALL_PTR(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, tyProc__EAEKmBUgKFg29agoUGtzDEQ) (tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TPassContext__Hb6rFM0ecvtlLf2kv9aU75w* p, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
struct tyTuple__euPCXX9bc3XzndEhYlqNS7g {
tyProc__8ooe5vdoqmvpHnfXV29bP3w Field0;
tyProc__A7Sdoem70tRxSEmKrf9cmyg Field1;
tyProc__EAEKmBUgKFg29agoUGtzDEQ Field2;
NIM_BOOL Field3;
};
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__ehmV9bTklH2Gt9cXHV9c0HLeQ {
  TGenericSeq Sup;
  tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
};
struct tySequence__YceFcaugL2PWNtVbyffD9bQ {
  TGenericSeq Sup;
  tyTuple__KlSLWBROOViO04uLQHu7ig data[SEQ_DECL_SIZE];
};
struct tySequence__Mh9agqM29bm9aP5AUL1x7dZGA {
  TGenericSeq Sup;
  tyObject_TIdPair__AdFnD2YdADPeuJbG2YJ4vg data[SEQ_DECL_SIZE];
};
struct tySequence__DfgJFJEYoj4YBAHLZPl5lQ {
  TGenericSeq Sup;
  tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* data[SEQ_DECL_SIZE];
};
struct tySequence__9brg1xNurxcus33lU4IE1Dw {
  TGenericSeq Sup;
  tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ* data[SEQ_DECL_SIZE];
};
struct tySequence__oYkV9aFZe0MXcEAprJaOUsA {
  TGenericSeq Sup;
  tyObject_TOptionEntry__H9ac5KbrDJVwT1zH5O83r7w* data[SEQ_DECL_SIZE];
};
struct tySequence__arD7Tw6eD6lvOczWZl9buNg {
  TGenericSeq Sup;
  tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA* data[SEQ_DECL_SIZE];
};
struct tySequence__jWKvSdankQPoT5bw9cBU9aiw {
  TGenericSeq Sup;
  tyObject_TInstantiationPair__HkXM4cJmOpk8zFcmq9c9c3gQ data[SEQ_DECL_SIZE];
};
struct tySequence__d4l6E4jBnTQ3BEfsLOpmEQ {
  TGenericSeq Sup;
  tyTuple__DJxbl4DYEJfb29cy1MYaUPQ data[SEQ_DECL_SIZE];
};
struct tySequence__Bis5AbpONWcIRrPyPJS8Yw {
  TGenericSeq Sup;
  tyTuple__NAaJgGVgNmlGoqmiWxdOHQ data[SEQ_DECL_SIZE];
};
struct tySequence__DXS6mEo7PVUFJkirsQ9bNQA {
  TGenericSeq Sup;
  tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA* data[SEQ_DECL_SIZE];
};
struct tySequence__48JTohSgTy339bRxHzUD8KA {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct tySequence__fdmz6VkIf1ewwrssKYqRFg {
  TGenericSeq Sup;
  tyTuple__1mtQ8sCEE7DbfIuQciv9b5Q data[SEQ_DECL_SIZE];
};
struct tySequence__kxu4GK0onha2t9bo86mdVAg {
  TGenericSeq Sup;
  tyTuple__xDU9bZmv1ZbZkJDaATBekIQ data[SEQ_DECL_SIZE];
};
struct tySequence__bWZXqEvLFwhLvAqSRoFNgQ {
  TGenericSeq Sup;
  tyTuple__quA39a2QdEQU9cSEIUSibApQ data[SEQ_DECL_SIZE];
};
struct tySequence__Qr6E8eH7btq79cFKGaJfGLw {
  TGenericSeq Sup;
  tyTuple__EkGTYRWQ6y9cppXTlT8Xm5g data[SEQ_DECL_SIZE];
};
struct tySequence__fIB1rTQ55aFonoft9a9bmljQ {
  TGenericSeq Sup;
  tyTuple__OJFzEczluV8Jmo9bRpBfkzw data[SEQ_DECL_SIZE];
};
struct tySequence__23SMqauuRsbDANhthj9bWlA {
  TGenericSeq Sup;
  tyTuple__2SGm9aGCXuo7XSQ9bqD29axXw data[SEQ_DECL_SIZE];
};
struct tySequence__squ9b9bUH4OLHf6cEMrt6hVA {
  TGenericSeq Sup;
  tyTuple__F3gkSrMB1qp2Tvf9bixVXwg data[SEQ_DECL_SIZE];
};
struct tySequence__pHNq3oXj9av2sEUdqaqeZjw {
  TGenericSeq Sup;
  tyTuple__wcNatyuf8WOqAhGLhSvgiw data[SEQ_DECL_SIZE];
};
struct tySequence__PzqTLBFNawCGiqTk0UORYw {
  TGenericSeq Sup;
  tyTuple__euPCXX9bc3XzndEhYlqNS7g data[SEQ_DECL_SIZE];
};
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__JE6t4x7Z3v2iVz27Nx0MRAmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, initLayeredTypeMap__CUPvqqdAvE7lW4r3YvsLsQ)(tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_LIB_PRIVATE N_NIMCALL(void, copyIdTable__kWmPoTDdSpeN1EEQ59bRmKA)(tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q* dest, tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q src);
N_LIB_PRIVATE N_NIMCALL(void, initTypeVars__Xi1rcYNuDZinU29bL68QCog)(tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* Result);
N_LIB_PRIVATE N_NIMCALL(void, initIdTable__Z7fF0Wc4DSB4kCiKZ8rGfQ)(tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q* x);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NIMCALL(void, pushInfoContext__uDLK9aoAOWwwFTev4NOwF7Q)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, NimStringDesc* detail);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, replaceTypeVarsN__TMTYUYo5YIKojKgBmj9boOQ)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, NI start);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, copyNode__Dsjo9bte8vGxzhtcSrsTyiQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* src);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, replaceTypeVarsTAux__cNsAY9aO2v1oTCPqZyHga1w_2)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lookup__bvHwbVO9aaeW8QVm81fQN3w)(tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* key);
N_LIB_PRIVATE N_NIMCALL(RootObj*, idTableGet__K5M5T7J9c0H7M5ahfeRl8xw)(tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q t, tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* key);
N_NIMCALL(void, chckObj)(TNimType* obj, TNimType* subclass);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, handleGenericInvocation__cNsAY9aO2v1oTCPqZyHga1w_3)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
N_LIB_PRIVATE N_NIMCALL(void, internalError__yTu5SGHF0j0P9cQrqN7YylA)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, NimStringDesc* errMsg);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, searchInstTypes__rG28W6V18KBAWJ6NSj4dKw)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* key);
N_NOINLINE(void, raiseFieldError)(NimStringDesc* f);
static N_INLINE(NIM_BOOL, sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, compareTypes__oyXq5u7iL4RjsT9bovvTE9cg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y, tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg cmp, tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw flags);
static N_INLINE(NI, addInt)(NI a, NI b);
N_NOINLINE(void, raiseOverflow)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
static N_INLINE(NI, len__5mJADrRYkP3r9auuiuDZN9cQast)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lookupTypeVar__cNsAY9aO2v1oTCPqZyHga1w_4)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
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_LIB_PRIVATE N_NIMCALL(NimStringDesc*, typeToString__QlvraUan7WbHowhAbvDvdA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, errorType__9aXTnVBVS5pbBC3zrwMhttg)(tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c);
N_LIB_PRIVATE N_NIMCALL(void, idTablePut__anELyz7VLsjbCIoxLpxbfQ)(tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q* t, tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* key, RootObj* val);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, instCopyType__cNsAY9aO2v1oTCPqZyHga1w_5)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, copyType__4O4aYoscFPo2FRSh4rP9ayg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner, NIM_BOOL keepId);
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(void, propagateToOwner__KHgxvzuOk6nXefcrhhP9cWw)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* owner, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* elem);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newType__SNqpa06pdVCLFFBR28119aQ)(tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_LIB_PRIVATE N_NIMCALL(void, cacheTypeInst__6pvfoL9blFXnykuTkgrOX8g)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* inst);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
N_LIB_PRIVATE N_NIMCALL(void, newTypeMapLayer__orm7ghV3oRMOox3jC0ljsA)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA* Result);
static N_INLINE(NI, subInt)(NI a, NI b);
N_LIB_PRIVATE N_NIMCALL(void, rawAddSon__9a8CdZqChTyqzq5bpSL3TzA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isGenericAlias__YPjOkGV9axAnGR3UfLeWZ1g)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipGenericAlias__PfgI9ap7WOnsRfFV4znQ27w_3)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, checkPartialConstructedType__TBCMogG4zgmSdneojQOMAg)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kinds);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, prepareNode__gKp9aBprbf0cqtXoSYBnCkw)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*, replaceTypeVarsS__sLVA1gNd8WU8o9cEwKvBh9cA)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*, copySym__lIu8wX6Beq6dBJgESOFFjg)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* s);
static N_INLINE(NI, safeLen__P89cqdlERShb9alU3iC0yj8w_2ast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NI, len__P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, add__P8dDSotTW25BkfbyspojGg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newTypeS__xb5E2cGIynZweqWlCP8Tig)(tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c);
static N_INLINE(void, nimGCunrefRC1)(void* p);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
static N_INLINE(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipIntLit__PyQcLUUKkDYcpwke36Qpxgmagicsys)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, makeTypeDesc__BhLel1oiCddEysrc3uc6iQ)(tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, base__PfgI9ap7WOnsRfFV4znQ27w)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsGenericType__YPjOkGV9axAnGR3UfLeWZ1g_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, internalError__5hPl6LjCYJxMYxh9af9b9bXzw)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, NimStringDesc* errMsg);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___r38WafKlW80RkvoZTcia4Q)(tyTuple__kN8up2W6YKc5YA9avn5mV5w x);
N_LIB_PRIVATE N_NIMCALL(void, propagateFieldFlags__Bjo9aRQCCUN0CrmERULS79bg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, eraseVoidParams__w2l6CVu9bYn8M06fJcMTkHw)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
static N_INLINE(NI, chckRange)(NI i, NI a, NI b);
N_NOINLINE(void, raiseRangeError)(NI64 val);
N_NIMCALL(TGenericSeq*, setLengthSeqV2)(TGenericSeq* s, TNimType* typ, NI newLen);
N_LIB_PRIVATE N_NIMCALL(void, skipIntLiteralParams__w2l6CVu9bYn8M06fJcMTkHw_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, replaceObjBranches__Io9bn1sBWaB9bMXajNZg3W5Q)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, illFormedAst__aOnJJ9cXkOooTyUuLmnc09bw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(void, checkSonsLen__EezdXeDvu4rB7fR84AJZgw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, NI length, tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newNodeI__vokyXY9cZDshCSxFKChhG9bg)(tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info);
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_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, reResolveCallsWithTypedescParams__gKp9aBprbf0cqtXoSYBnCkw_2)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTypeParam__9bQUIWM6kcjKJh9ayHoQtlkg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newSymNode__I2DV2TmmOysY1ZEGW19b9bRg)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(void, newSons__Bu9cqnssJjx4jfWBeiR9albg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* father, NI length);
N_LIB_PRIVATE N_NIMCALL(void, popInfoContext__O9arH9bYenXLOr27ZSmcQnEw_3)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(void, recomputeFieldPositions__XUkgGL16NQZcptTJ0lg7nQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* obj, NI* currPosition);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, lastSon__UPSW0jLTX5qJL51YMUAHgw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NI64, computeSize__vCG1GF2Iu043oALVyuJfOw_3)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTupleRecursive__YPjOkGV9axAnGR3UfLeWZ1g_10)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
TNimType NTI__Dxk9cFa3Fer9bZpQ9b4aBAFkA_;
extern TNimType NTI__9aiv9bp2t5icFNINcg9c4xi1Q_;
TNimType NTI__AWHx031vx269auvjKCITW9cw_;
TNimType NTI__gMP9b9b8d4Uze3mE5G9aP9afmg_;
extern TNimType NTI__EjEifkTC8tg9afiUW4StSSA_;
extern TNimType NTI__WGx4rAexNXnczy1Avn646Q_;
extern TNimType NTI__VaVACK0bpYmqIQ0mKcHfQQ_;
extern TNimType NTI__K9bspPztfoWajecnwjyHuYQ_;
extern TNimType NTI__rR5Bzr1D5krxoo1NcNyeMA_;
extern TNimType NTI__v9ae2Dpu13OW2ZJ2U9bNMd9cQ_;
extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;
extern TNimType NTI__Ef05srmQTDulnBdXR4Ja6Q_;
extern TNimType NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_;
extern TNimType NTI__YceFcaugL2PWNtVbyffD9bQ_;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_4, "no generic body", 15);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_5, "\'typeInstCache\' is not accessible using discriminant \'kind\' of "
"type \'TSym\'", 74);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_8, "iterators.nim(189, 11) `len(a) == L` the length of the seq chan"
"ged while iterating over it", 90);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_9, "cannot instantiate: \'", 21);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_10, "\'", 1);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_11, "substitution with generic parameter", 35);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_13, "semtypinst.nim(376, 12) `x.kind != tyGenericInvocation` ", 56);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_17, "type \'var var\' is not allowed", 29);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_18, "semtypinst.nim(419, 16) `newbody.kind in {tyRef, tyPtr}` ", 57);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_20, "\'; Maybe generic arguments are missing\?", 39);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_21, "semtypinst.nim(533, 12) `t.n.typ != t` ", 39);
static NIM_CONST tySet_tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw TM__mrkrD9c2e31kE4GdQtpMdaQ_22 = {
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_23, "\'sym\' is not accessible using discriminant \'kind\' of type \'TNod"
"e\'", 65);
static NIM_CONST tySet_tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw TM__mrkrD9c2e31kE4GdQtpMdaQ_24 = {
0xec, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_25, "\'sons\' is not accessible using discriminant \'kind\' of type \'TNo"
"de\'", 66);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_30, "cannot instantiate \'", 20);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_31, "\' inside of type definition: \'", 30);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_34, "semtypinst.nim", 14);
NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_33 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_34),
((NI) 611),
((NI) 23)}
;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_41, "ReplaceTypeVarsN: when condition not a bool", 43);
static NIM_CONST tySet_tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw TM__mrkrD9c2e31kE4GdQtpMdaQ_42 = {
0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_43, "\'intVal\' is not accessible using discriminant \'kind\' of type \'T"
"Node\'", 68);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_54, "illegal recursion in type \'", 27);
static N_INLINE(void, nimSetMem__JE6t4x7Z3v2iVz27Nx0MRAmemory)(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__JE6t4x7Z3v2iVz27Nx0MRAmemory(p, ((int) 0), size);
}
N_LIB_PRIVATE N_NIMCALL(void, initLayeredTypeMap__CUPvqqdAvE7lW4r3YvsLsQ)(tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA* Result) {	chckNil((void*)Result);
	genericReset((void*)Result, (&NTI__Dxk9cFa3Fer9bZpQ9b4aBAFkA_));
	copyIdTable__kWmPoTDdSpeN1EEQ59bRmKA((&(*Result).topLayer), pt);
}
N_LIB_PRIVATE N_NIMCALL(void, initTypeVars__Xi1rcYNuDZinU29bL68QCog)(tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* Result) {	chckNil((void*)Result);
	genericReset((void*)Result, (&NTI__gMP9b9b8d4Uze3mE5G9aP9afmg_));
	initIdTable__Z7fF0Wc4DSB4kCiKZ8rGfQ((&(*Result).symMap));
	initIdTable__Z7fF0Wc4DSB4kCiKZ8rGfQ((&(*Result).localCache));
	(*Result).typeMap = typeMap;
	(*Result).info = info;
	unsureAsgnRef((void**) (&(*Result).c), p);
	unsureAsgnRef((void**) (&(*Result).owner), owner);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lookup__bvHwbVO9aaeW8QVm81fQN3w)(tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* key) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA* tm;
{	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	tm = typeMap;
	{
		while (1) {
			tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T3_;
			RootObj* T4_;
			if (!!((tm == NIM_NIL))) goto LA2;
			T3_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
			T3_ = &key->Sup;
			T4_ = (RootObj*)0;
			T4_ = idTableGet__K5M5T7J9c0H7M5ahfeRl8xw((*tm).topLayer, T3_);
			if (T4_) chckObj((*T4_).m_type, (&NTI__v9ae2Dpu13OW2ZJ2U9bNMd9cQ_));
			result = ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T4_));
			{
				if (!!((result == NIM_NIL))) goto LA7_;
				goto BeforeRet_;
			}
			LA7_: ;
			tm = (*tm).nextLayer;
		} LA2: ;
	}
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NIM_BOOL, sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b) {	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((688128 & (*a).flags) == (688128 & (*b).flags));
	return result;
}
static N_INLINE(NI, addInt)(NI a, NI b) {	NI result;
{	result = (NI)0;
	result = (NI)((NU32)(a) + (NU32)(b));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(result ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(result ^ b));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	raiseOverflow();
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, searchInstTypes__rG28W6V18KBAWJ6NSj4dKw)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* key) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* genericTyp;
{	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	if ((NU)(((NI) 0)) >= (NU)((*key).sons ? (*key).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*key).sons ? (*key).sons->Sup.len : 0)-1);
	genericTyp = (*key).sons->data[((NI) 0)];
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = ((*genericTyp).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10));
		if (!(T4_)) goto LA5_;
		if ((NU)(((NI) 0)) >= (NU)((*key).sons ? (*key).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*key).sons ? (*key).sons->Sup.len : 0)-1);
		T4_ = ((*key).sons->data[((NI) 0)] == genericTyp);
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T3_ = !(((*genericTyp).sym == NIM_NIL));
		LA6_: ;
		if (!!(T3_)) goto LA7_;
		goto BeforeRet_;
	}
	LA7_: ;
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* inst;
		tySequence__Ef05srmQTDulnBdXR4Ja6Q* colontmp_;
		NI i;
		NI L;
		NI T10_;
		inst = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		colontmp_ = (tySequence__Ef05srmQTDulnBdXR4Ja6Q*)0;
		if (!(((144 &(1U<<((NU)((*(*genericTyp).sym).kind)&31U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5));
		colontmp_ = (*(*genericTyp).sym).typeInstCache;
		i = ((NI) 0);
		T10_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T10_;
		{
			while (1) {
				NI TM__mrkrD9c2e31kE4GdQtpMdaQ_7;
				if (!(i < L)) goto LA12;
				if ((NU)(i) >= (NU)(colontmp_ ? colontmp_->Sup.len : 0)) raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1);
				inst = colontmp_->data[i];
				{
					{
						if (!((*inst).Sup.id == (*key).Sup.id)) goto LA16_;
						result = inst;
						goto BeforeRet_;
					}
					LA16_: ;
					{
						NI T20_;
						NI T21_;
						T20_ = ((*inst).sons ? (*inst).sons->Sup.len : 0);
						T21_ = ((*key).sons ? (*key).sons->Sup.len : 0);
						if (!(T20_ < T21_)) goto LA22_;
						goto BeforeRet_;
					}
					LA22_: ;
					{
						NIM_BOOL T26_;
						T26_ = (NIM_BOOL)0;
						T26_ = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(inst, key);
						if (!!(T26_)) goto LA27_;
						goto LA13;
					}
					LA27_: ;
					{
						{
							NI j;
							NI colontmp__2;
							NI T31_;
							NI res;
							j = (NI)0;
							colontmp__2 = (NI)0;
							T31_ = (((*key).sons ? (*key).sons->Sup.len : 0)-1);
							colontmp__2 = T31_;
							res = ((NI) 1);
							{
								while (1) {
									NI TM__mrkrD9c2e31kE4GdQtpMdaQ_6;
									if (!(res <= colontmp__2)) goto LA33;
									j = res;
									{
										NIM_BOOL T36_;
										if ((NU)(j) >= (NU)((*inst).sons ? (*inst).sons->Sup.len : 0)) raiseIndexError2(j,((*inst).sons ? (*inst).sons->Sup.len : 0)-1);
										if ((NU)(j) >= (NU)((*key).sons ? (*key).sons->Sup.len : 0)) raiseIndexError2(j,((*key).sons ? (*key).sons->Sup.len : 0)-1);
										T36_ = (NIM_BOOL)0;
										T36_ = compareTypes__oyXq5u7iL4RjsT9bovvTE9cg((*inst).sons->data[j], (*key).sons->data[j], ((tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg) 0), 8);
										if (!!(T36_)) goto LA37_;
										goto LA29;
									}
									LA37_: ;
									TM__mrkrD9c2e31kE4GdQtpMdaQ_6 = addInt(res, ((NI) 1));
									res = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_6);
								} LA33: ;
							}
						}
						result = inst;
						goto BeforeRet_;
					} LA29: ;
				} LA13: ;
				TM__mrkrD9c2e31kE4GdQtpMdaQ_7 = addInt(i, ((NI) 1));
				i = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_7);
				{
					NI T41_;
					T41_ = (colontmp_ ? colontmp_->Sup.len : 0);
					if (!!((T41_ == L))) goto LA42_;
					failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_8));
				}
				LA42_: ;
			} LA12: ;
		}
	}
	}BeforeRet_: ;
	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;
}
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_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lookupTypeVar__cNsAY9aO2v1oTCPqZyHga1w_4)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
{	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = lookup__bvHwbVO9aaeW8QVm81fQN3w((*cl).typeMap, t);
	{
		NimStringDesc* T11_;
		NimStringDesc* T12_;
		tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T13_;
		RootObj* T14_;
		if (!(result == NIM_NIL)) goto LA3_;
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = (*cl).allowMetaTypes;
			if (T7_) goto LA8_;
			T7_ = (((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 11))&63U)))!=0);
			LA8_: ;
			if (!T7_) goto LA9_;
			goto BeforeRet_;
		}
		LA9_: ;
		T11_ = (NimStringDesc*)0;
		T12_ = (NimStringDesc*)0;
		T12_ = typeToString__QlvraUan7WbHowhAbvDvdA(t, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		T11_ = rawNewString((T12_ ? T12_->Sup.len : 0) + 22);
appendString(T11_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_9));
appendString(T11_, T12_);
appendString(T11_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_10));
		localError__NF6kBGchnhQYPbCedyefVA((*(*(*cl).c).graph).config, (*(*t).sym).info, T11_);
		result = errorType__9aXTnVBVS5pbBC3zrwMhttg((*cl).c);
		T13_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
		T13_ = &t->Sup;
		T14_ = (RootObj*)0;
		T14_ = &result->Sup.Sup;
		idTablePut__anELyz7VLsjbCIoxLpxbfQ((&(*(*cl).typeMap).topLayer), T13_, T14_);
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T16_;
		T16_ = (NIM_BOOL)0;
		T16_ = ((*result).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 12));
		if (!(T16_)) goto LA17_;
		T16_ = !((*cl).allowMetaTypes);
		LA17_: ;
		if (!T16_) goto LA18_;
		internalError__yTu5SGHF0j0P9cQrqN7YylA((*(*(*cl).c).graph).config, (*cl).info, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_11));
	}
	goto LA1_;
	LA18_: ;
	LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, instCopyType__cNsAY9aO2v1oTCPqZyHga1w_5)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
{	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = copyType__4O4aYoscFPo2FRSh4rP9ayg(t, (*t).owner, (*cl).allowMetaTypes);
	{
		if (!(*cl).allowMetaTypes) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8)) & 63);
	{
		NIM_BOOL T7_;
		NIM_BOOL T9_;
		T7_ = (NIM_BOOL)0;
		T7_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 6) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 12) || (*t).kind >= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 51) && (*t).kind <= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 54) || (*t).kind >= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 56) && (*t).kind <= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 59));
		if (T7_) goto LA8_;
		T9_ = (NIM_BOOL)0;
		T9_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60));
		if (!(T9_)) goto LA10_;
		T9_ = ((*t).n == NIM_NIL);
		LA10_: ;
		T7_ = T9_;
		LA8_: ;
		if (!!(T7_)) goto LA11_;
		(*result).flags = ((*result).flags & ~ 1049088);
	}
	LA11_: ;
	}BeforeRet_: ;
	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(void, cacheTypeInst__6pvfoL9blFXnykuTkgrOX8g)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* inst) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* gt;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	NI T10_;
{	if ((NU)(((NI) 0)) >= (NU)((*inst).sons ? (*inst).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*inst).sons ? (*inst).sons->Sup.len : 0)-1);
	gt = (*inst).sons->data[((NI) 0)];
	{
		if (!((*gt).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10))) goto LA3_;
		t = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(gt);
	}
	goto LA1_;
	LA3_: ;
	{
		t = gt;
	}
	LA1_: ;
	{
		if (!((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 12) || (*t).kind >= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50) && (*t).kind <= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 54) || (*t).kind >= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 56) && (*t).kind <= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA8_;
		goto BeforeRet_;
	}
	LA8_: ;
	if (!(((144 &(1U<<((NU)((*(*gt).sym).kind)&31U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5));
	asgnRef((void**) (&(*(*gt).sym).typeInstCache), (tySequence__Ef05srmQTDulnBdXR4Ja6Q*) incrSeqV3((TGenericSeq*)((*(*gt).sym).typeInstCache), (&NTI__Ef05srmQTDulnBdXR4Ja6Q_)));
	T10_ = (*(*gt).sym).typeInstCache->Sup.len++;
	asgnRef((void**) (&(*(*gt).sym).typeInstCache->data[T10_]), inst);
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, newTypeMapLayer__orm7ghV3oRMOox3jC0ljsA)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA* Result) {	chckNil((void*)Result);
	genericReset((void*)Result, (&NTI__Dxk9cFa3Fer9bZpQ9b4aBAFkA_));
	(*Result).nextLayer = (*cl).typeMap;
	initIdTable__Z7fF0Wc4DSB4kCiKZ8rGfQ((&(*Result).topLayer));
}
static N_INLINE(NI, subInt)(NI a, NI b) {	NI result;
{	result = (NI)0;
	result = (NI)((NU32)(a) - (NU32)(b));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(result ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(result ^ (NI)((NU32) ~(b))));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	raiseOverflow();
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, checkPartialConstructedType__TBCMogG4zgmSdneojQOMAg)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47));
		if (!(T3_)) goto LA4_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T3_ = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47));
		LA4_: ;
		if (!T3_) goto LA5_;
		localError__NF6kBGchnhQYPbCedyefVA(conf, info, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_17));
	}
	LA5_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, handleGenericInvocation__cNsAY9aO2v1oTCPqZyHga1w_3)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* body;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* header;
	tySequence__Ef05srmQTDulnBdXR4Ja6Q* T45_;
	NIM_BOOL oldSkipTypedesc;
	tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA typeMapLayer;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* bbody;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* newbody;
	NIM_BOOL bodyIsNew;
	tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* dc;
{	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
	body = (*t).sons->data[((NI) 0)];
	{
		if (!!(((*body).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10)))) goto LA3_;
		internalError__yTu5SGHF0j0P9cQrqN7YylA((*(*(*cl).c).graph).config, (*cl).info, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_4));
	}
	LA3_: ;
	header = t;
	{
		tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T9_;
		RootObj* T10_;
		if (!(*cl).allowMetaTypes) goto LA7_;
		T9_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
		T9_ = &t->Sup;
		T10_ = (RootObj*)0;
		T10_ = idTableGet__K5M5T7J9c0H7M5ahfeRl8xw((*cl).localCache, T9_);
		if (T10_) chckObj((*T10_).m_type, (&NTI__v9ae2Dpu13OW2ZJ2U9bNMd9cQ_));
		result = ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T10_));
	}
	goto LA5_;
	LA7_: ;
	{
		result = searchInstTypes__rG28W6V18KBAWJ6NSj4dKw(t);
	}
	LA5_: ;
	{
		NIM_BOOL T14_;
		T14_ = (NIM_BOOL)0;
		T14_ = !((result == NIM_NIL));
		if (!(T14_)) goto LA15_;
		T14_ = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(result, t);
		LA15_: ;
		if (!T14_) goto LA16_;
		goto BeforeRet_;
	}
	LA16_: ;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
		i_2 = ((NI) 1);
		{
			while (1) {
				tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x;
				NI TM__mrkrD9c2e31kE4GdQtpMdaQ_12;
				if (!(i_2 < colontmp_)) goto LA20;
				i = i_2;
				if ((NU)(i) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(i,((*t).sons ? (*t).sons->Sup.len : 0)-1);
				x = (*t).sons->data[i];
				{
					if (!((*x).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 12))) goto LA23_;
					x = lookupTypeVar__cNsAY9aO2v1oTCPqZyHga1w_4(cl, x);
					{
						if (!!((x == NIM_NIL))) goto LA27_;
						{
							if (!(header == t)) goto LA31_;
							header = instCopyType__cNsAY9aO2v1oTCPqZyHga1w_5(cl, t);
						}
						LA31_: ;
						if ((NU)(i) >= (NU)((*header).sons ? (*header).sons->Sup.len : 0)) raiseIndexError2(i,((*header).sons ? (*header).sons->Sup.len : 0)-1);
						asgnRef((void**) (&(*header).sons->data[i]), x);
						propagateToOwner__KHgxvzuOk6nXefcrhhP9cWw(header, x);
					}
					LA27_: ;
				}
				goto LA21_;
				LA23_: ;
				{
					propagateToOwner__KHgxvzuOk6nXefcrhhP9cWw(header, x);
				}
				LA21_: ;
				TM__mrkrD9c2e31kE4GdQtpMdaQ_12 = addInt(i_2, ((NI) 1));
				i_2 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_12);
			} LA20: ;
		}
	}
	{
		if (!!((header == t))) goto LA36_;
		result = searchInstTypes__rG28W6V18KBAWJ6NSj4dKw(header);
		{
			NIM_BOOL T40_;
			T40_ = (NIM_BOOL)0;
			T40_ = !((result == NIM_NIL));
			if (!(T40_)) goto LA41_;
			T40_ = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(result, t);
			LA41_: ;
			if (!T40_) goto LA42_;
			goto BeforeRet_;
		}
		LA42_: ;
	}
	goto LA34_;
	LA36_: ;
	{
		header = instCopyType__cNsAY9aO2v1oTCPqZyHga1w_5(cl, t);
	}
	LA34_: ;
	if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
	result = newType__SNqpa06pdVCLFFBR28119aQ(((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11), (*(*t).sons->data[((NI) 0)]).owner);
	(*result).flags = (*header).flags;
	T45_ = (tySequence__Ef05srmQTDulnBdXR4Ja6Q*)0;
	T45_ = (tySequence__Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI__Ef05srmQTDulnBdXR4Ja6Q_), 1);
	if ((NU)(((NI) 0)) >= (NU)((*header).sons ? (*header).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*header).sons ? (*header).sons->Sup.len : 0)-1);
	asgnRef((void**) (&T45_->data[0]), (*header).sons->data[((NI) 0)]);
	asgnRef((void**) (&(*result).sons), T45_);
	{
		if (!!((*cl).allowMetaTypes)) goto LA48_;
		cacheTypeInst__6pvfoL9blFXnykuTkgrOX8g(result);
	}
	goto LA46_;
	LA48_: ;
	{
		tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T51_;
		RootObj* T52_;
		T51_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
		T51_ = &t->Sup;
		T52_ = (RootObj*)0;
		T52_ = &result->Sup.Sup;
		idTablePut__anELyz7VLsjbCIoxLpxbfQ((&(*cl).localCache), T51_, T52_);
	}
	LA46_: ;
	oldSkipTypedesc = (*cl).skipTypedesc;
	(*cl).skipTypedesc = NIM_TRUE;
	nimZeroMem((void*)(&typeMapLayer), sizeof(tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA));
	newTypeMapLayer__orm7ghV3oRMOox3jC0ljsA(cl, (&typeMapLayer));
	(*cl).typeMap = (&typeMapLayer);
	{
		NI i_3;
		NI colontmp__2;
		NI i_4;
		i_3 = (NI)0;
		colontmp__2 = (NI)0;
		colontmp__2 = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
		i_4 = ((NI) 1);
		{
			while (1) {
				tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x_2;
				NI TM__mrkrD9c2e31kE4GdQtpMdaQ_14;
				tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T60_;
				RootObj* T61_;
				NI TM__mrkrD9c2e31kE4GdQtpMdaQ_15;
				if (!(i_4 < colontmp__2)) goto LA55;
				i_3 = i_4;
				if ((NU)(i_3) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(i_3,((*t).sons ? (*t).sons->Sup.len : 0)-1);
				x_2 = replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, (*t).sons->data[i_3]);
				{
					if (!!(!(((*x_2).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 9))))) goto LA58_;
					failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_13));
				}
				LA58_: ;
				if ((NU)(i_3) >= (NU)((*header).sons ? (*header).sons->Sup.len : 0)) raiseIndexError2(i_3,((*header).sons ? (*header).sons->Sup.len : 0)-1);
				asgnRef((void**) (&(*header).sons->data[i_3]), x_2);
				propagateToOwner__KHgxvzuOk6nXefcrhhP9cWw(header, x_2);
				TM__mrkrD9c2e31kE4GdQtpMdaQ_14 = subInt(i_3, ((NI) 1));
				if ((NU)((NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_14)) >= (NU)((*body).sons ? (*body).sons->Sup.len : 0)) raiseIndexError2((NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_14),((*body).sons ? (*body).sons->Sup.len : 0)-1);
				T60_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
				T60_ = &(*body).sons->data[(NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_14)]->Sup;
				T61_ = (RootObj*)0;
				T61_ = &x_2->Sup.Sup;
				idTablePut__anELyz7VLsjbCIoxLpxbfQ((&(*(*cl).typeMap).topLayer), T60_, T61_);
				TM__mrkrD9c2e31kE4GdQtpMdaQ_15 = addInt(i_4, ((NI) 1));
				i_4 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_15);
			} LA55: ;
		}
	}
	{
		NI i_5;
		NI colontmp__3;
		NI i_6;
		i_5 = (NI)0;
		colontmp__3 = (NI)0;
		colontmp__3 = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
		i_6 = ((NI) 1);
		{
			while (1) {
				NI TM__mrkrD9c2e31kE4GdQtpMdaQ_16;
				if (!(i_6 < colontmp__3)) goto LA64;
				i_5 = i_6;
				if ((NU)(i_5) >= (NU)((*header).sons ? (*header).sons->Sup.len : 0)) raiseIndexError2(i_5,((*header).sons ? (*header).sons->Sup.len : 0)-1);
				rawAddSon__9a8CdZqChTyqzq5bpSL3TzA(result, (*header).sons->data[i_5]);
				TM__mrkrD9c2e31kE4GdQtpMdaQ_16 = addInt(i_6, ((NI) 1));
				i_6 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_16);
			} LA64: ;
		}
	}
	{
		if (!((*body).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50))) goto LA67_;
		goto BeforeRet_;
	}
	LA67_: ;
	bbody = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(body);
	newbody = replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, bbody);
	bodyIsNew = !((newbody == bbody));
	(*cl).skipTypedesc = oldSkipTypedesc;
	(*newbody).flags = ((*newbody).flags | (((*t).flags | (*body).flags) & ~ 1049088));
	(*result).flags = (((*result).flags | (*newbody).flags) & ~ 1049088);
	(*cl).typeMap = (*(*cl).typeMap).nextLayer;
	{
		NIM_BOOL T71_;
		T71_ = (NIM_BOOL)0;
		T71_ = isGenericAlias__YPjOkGV9axAnGR3UfLeWZ1g(newbody);
		if (!T71_) goto LA72_;
		newbody = skipGenericAlias__PfgI9ap7WOnsRfFV4znQ27w_3(newbody);
	}
	LA72_: ;
	rawAddSon__9a8CdZqChTyqzq5bpSL3TzA(result, newbody);
	checkPartialConstructedType__TBCMogG4zgmSdneojQOMAg((*(*(*cl).c).graph).config, (*cl).info, newbody);
	dc = (*newbody).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 3))- 0];
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* mm;
		if (!!((*cl).allowMetaTypes)) goto LA76_;
		{
			NIM_BOOL T80_;
			T80_ = (NIM_BOOL)0;
			T80_ = !((dc == NIM_NIL));
			if (!(T80_)) goto LA81_;
			T80_ = !((((*(*newbody).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 3))- 0]).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0));
			LA81_: ;
			if (!T80_) goto LA82_;
			asgnRef((void**) (&(*newbody).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 3))- 0]), (*(*cl).c).instTypeBoundOp((*cl).c, dc, result, (*cl).info, ((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 3), ((NI) 1)));
		}
		LA82_: ;
		{
			NIM_BOOL T86_;
			T86_ = (NIM_BOOL)0;
			T86_ = bodyIsNew;
			if (!(T86_)) goto LA87_;
			T86_ = ((*newbody).typeInst == NIM_NIL);
			LA87_: ;
			if (!T86_) goto LA88_;
			asgnRef((void**) (&(*newbody).typeInst), result);
			{
				NIM_BOOL T92_;
				T92_ = (NIM_BOOL)0;
				T92_ = (((*newbody).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 33))&63U)))!=0);
				if (!(T92_)) goto LA93_;
				T92_ = !(((*newbody).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11)));
				LA93_: ;
				if (!T92_) goto LA94_;
				{
					if (!!(((*newbody).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22) || (*newbody).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 21)))) goto LA98_;
					failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_18));
				}
				LA98_: ;
				{
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T102_;
					T102_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T102_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(newbody);
					if (!!(((*T102_).typeInst == NIM_NIL))) goto LA103_;
				}
				goto LA100_;
				LA103_: ;
				{
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T106_;
					T106_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T106_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(newbody);
					asgnRef((void**) (&(*T106_).typeInst), result);
				}
				LA100_: ;
			}
			LA94_: ;
		}
		LA88_: ;
		mm = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(bbody, IL64(36275087638309136));
		{
			tySequence__MvZmat48bhe9b6x9aUD58D5Q* methods;
			if (!!((((*mm).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8))&63U)))!=0))) goto LA109_;
			(*mm).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8)) & 63);
			methods = (*mm).methods;
			{
				NI col;
				tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* meth;
				NI i_7;
				NI L;
				NI T112_;
				col = (NI)0;
				meth = (tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*)0;
				i_7 = ((NI) 0);
				T112_ = (methods ? methods->Sup.len : 0);
				L = T112_;
				{
					while (1) {
						tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* T115_;
						NI TM__mrkrD9c2e31kE4GdQtpMdaQ_19;
						if (!(i_7 < L)) goto LA114;
						if ((NU)(i_7) >= (NU)(methods ? methods->Sup.len : 0)) raiseIndexError2(i_7,(methods ? methods->Sup.len : 0)-1);
						col = methods->data[i_7].Field0;
						if ((NU)(i_7) >= (NU)(methods ? methods->Sup.len : 0)) raiseIndexError2(i_7,(methods ? methods->Sup.len : 0)-1);
						meth = methods->data[i_7].Field1;
						T115_ = (tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*)0;
						T115_ = (*(*cl).c).instTypeBoundOp((*cl).c, meth, result, (*cl).info, ((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 1), col);
						(void)(T115_);
						TM__mrkrD9c2e31kE4GdQtpMdaQ_19 = addInt(i_7, ((NI) 1));
						i_7 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_19);
						{
							NI T118_;
							T118_ = (methods ? methods->Sup.len : 0);
							if (!!((T118_ == L))) goto LA119_;
							failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_8));
						}
						LA119_: ;
					} LA114: ;
				}
			}
			(*mm).flags &= ~(((NU64)1) << ((((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8)) & 63));
		}
		LA109_: ;
	}
	LA76_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*, replaceTypeVarsS__sLVA1gNd8WU8o9cEwKvBh9cA)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* s) {	tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* result;
{	result = (tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		if (!(s == NIM_NIL)) goto LA3_;
		result = NIM_NIL;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = !(((*cl).owner == NIM_NIL));
		if (!(T7_)) goto LA8_;
		T7_ = !(((*s).owner == (*cl).owner));
		LA8_: ;
		if (!T7_) goto LA9_;
		result = s;
		goto BeforeRet_;
	}
	LA9_: ;
	{
		NIM_BOOL T13_;
		T13_ = (NIM_BOOL)0;
		T13_ = ((521984 &(1U<<((NU)((*s).kind)&31U)))!=0);
		if (T13_) goto LA14_;
		T13_ = !(((*s).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 0)));
		LA14_: ;
		if (!T13_) goto LA15_;
		result = s;
		goto BeforeRet_;
	}
	LA15_: ;
	result = copySym__lIu8wX6Beq6dBJgESOFFjg(s);
	(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw) 2)) & 63);
	asgnRef((void**) (&(*result).owner), (*s).owner);
	asgnRef((void**) (&(*result).typ), replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, (*s).typ));
	{
		if (!!(((*result).kind == ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 7)))) goto LA19_;
		asgnRef((void**) (&(*result).ast), replaceTypeVarsN__TMTYUYo5YIKojKgBmj9boOQ(cl, (*s).ast, ((NI) 0)));
	}
	LA19_: ;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, len__P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {	NI result;
	NI T1_;
	result = (NI)0;
	if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
	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*, prepareNode__gKp9aBprbf0cqtXoSYBnCkw)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	NIM_BOOL isCall;
{	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	t = replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, (*n).typ);
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = !((t == NIM_NIL));
		if (!(T4_)) goto LA5_;
		T4_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60));
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T3_ = !(((*t).n == NIM_NIL));
		LA6_: ;
		if (!T3_) goto LA7_;
		{
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0)) goto LA11_;
			result = prepareNode__gKp9aBprbf0cqtXoSYBnCkw(cl, (*t).n);
		}
		goto LA9_;
		LA11_: ;
		{
			result = (*t).n;
		}
		LA9_: ;
		goto BeforeRet_;
	}
	LA7_: ;
	result = copyNode__Dsjo9bte8vGxzhtcSrsTyiQ(n);
	asgnRef((void**) (&(*result).typ), t);
	{
		if (!((*result).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA16_;
		if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
		if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
		asgnRef((void**) (&(*result).sym), replaceTypeVarsS__sLVA1gNd8WU8o9cEwKvBh9cA(cl, (*n).sym));
	}
	LA16_: ;
	isCall = ((*result).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*result).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*result).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*result).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*result).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*result).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*result).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 32));
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				NI TM__mrkrD9c2e31kE4GdQtpMdaQ_26;
				if (!(i_2 < colontmp_)) goto LA20;
				i = i_2;
				{
					NIM_BOOL T23_;
					T23_ = (NIM_BOOL)0;
					T23_ = isCall;
					if (!(T23_)) goto LA24_;
					T23_ = (i == ((NI) 0));
					LA24_: ;
					if (!T23_) goto LA25_;
					if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					add__P8dDSotTW25BkfbyspojGg(result, (*n).sons->data[i]);
				}
				goto LA21_;
				LA25_: ;
				{
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T28_;
					if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					T28_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
					T28_ = prepareNode__gKp9aBprbf0cqtXoSYBnCkw(cl, (*n).sons->data[i]);
					add__P8dDSotTW25BkfbyspojGg(result, T28_);
				}
				LA21_: ;
				TM__mrkrD9c2e31kE4GdQtpMdaQ_26 = addInt(i_2, ((NI) 1));
				i_2 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_26);
			} LA20: ;
		}
	}
	}BeforeRet_: ;
	return result;
}
static N_INLINE(void, nimGCunrefRC1)(void* p) {	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(p);
	decRef__AT1eRuflKWyTTBdLjEDZbgsystem(T1_);
}
static N_INLINE(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipIntLit__PyQcLUUKkDYcpwke36Qpxgmagicsys)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*t).n == NIM_NIL));
		if (!(T3_)) goto LA4_;
		T3_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 36));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = copyType__4O4aYoscFPo2FRSh4rP9ayg(t, (*t).owner, NIM_FALSE);
		asgnRef((void**) (&(*result).n), NIM_NIL);
	}
	goto LA1_;
	LA5_: ;
	{
		result = t;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, propagateFieldFlags__Bjo9aRQCCUN0CrmERULS79bg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {{	{
		if (!(n == 0)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
		propagateToOwner__KHgxvzuOk6nXefcrhhP9cWw(t, (*(*n).sym).typ);
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 139):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 85):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 88):
	{
		{
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* son;
			son = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast(n);
				i_2 = ((NI) 0);
				{
					while (1) {
						NI TM__mrkrD9c2e31kE4GdQtpMdaQ_35;
						if (!(i_2 < colontmp_)) goto LA10;
						i = i_2;
						if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
						son = (*n).sons->data[i];
						propagateFieldFlags__Bjo9aRQCCUN0CrmERULS79bg(t, son);
						TM__mrkrD9c2e31kE4GdQtpMdaQ_35 = addInt(i_2, ((NI) 1));
						i_2 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_35);
					} LA10: ;
				}
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
}
static N_INLINE(NI, chckRange)(NI i, NI a, NI b) {	NI result;
{	result = (NI)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (a <= i);
		if (!(T3_)) goto LA4_;
		T3_ = (i <= b);
		LA4_: ;
		if (!T3_) goto LA5_;
		result = i;
		goto BeforeRet_;
	}
	goto LA1_;
	LA5_: ;
	{
		raiseRangeError(((NI64) (i)));
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eraseVoidParams__w2l6CVu9bYn8M06fJcMTkHw)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T3_ = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
		if (!(T3_)) goto LA4_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T3_ = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 63));
		LA4_: ;
		if (!T3_) goto LA5_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		asgnRef((void**) (&(*t).sons->data[((NI) 0)]), NIM_NIL);
	}
	LA5_: ;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
		i_2 = ((NI) 1);
		{
			while (1) {
				NI TM__mrkrD9c2e31kE4GdQtpMdaQ_39;
				if (!(i_2 < colontmp_)) goto LA9;
				i = i_2;
				{
					NI pos;
					if ((NU)(i) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(i,((*t).sons ? (*t).sons->Sup.len : 0)-1);
					if (!((*(*t).sons->data[i]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 63))) goto LA12_;
					pos = i;
					{
						NI j;
						NI colontmp__2;
						NI colontmp__3;
						NI TM__mrkrD9c2e31kE4GdQtpMdaQ_36;
						NI i_3;
						j = (NI)0;
						colontmp__2 = (NI)0;
						colontmp__3 = (NI)0;
						TM__mrkrD9c2e31kE4GdQtpMdaQ_36 = addInt(i, ((NI) 1));
						colontmp__2 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_36);
						colontmp__3 = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
						i_3 = colontmp__2;
						{
							while (1) {
								NI TM__mrkrD9c2e31kE4GdQtpMdaQ_38;
								if (!(i_3 < colontmp__3)) goto LA16;
								j = i_3;
								{
									NI TM__mrkrD9c2e31kE4GdQtpMdaQ_37;
									if ((NU)(j) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(j,((*t).sons ? (*t).sons->Sup.len : 0)-1);
									if (!!(((*(*t).sons->data[j]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 63)))) goto LA19_;
									if ((NU)(pos) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(pos,((*t).sons ? (*t).sons->Sup.len : 0)-1);
									if ((NU)(j) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(j,((*t).sons ? (*t).sons->Sup.len : 0)-1);
									asgnRef((void**) (&(*t).sons->data[pos]), (*t).sons->data[j]);
									if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*(*t).n).kind)>>3] &(1U<<((NU)((*(*t).n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
									if ((NU)(pos) >= (NU)((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)) raiseIndexError2(pos,((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)-1);
									if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*(*t).n).kind)>>3] &(1U<<((NU)((*(*t).n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
									if ((NU)(j) >= (NU)((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)) raiseIndexError2(j,((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)-1);
									asgnRef((void**) (&(*(*t).n).sons->data[pos]), (*(*t).n).sons->data[j]);
									TM__mrkrD9c2e31kE4GdQtpMdaQ_37 = addInt(pos, ((NI) 1));
									pos = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_37);
								}
								LA19_: ;
								TM__mrkrD9c2e31kE4GdQtpMdaQ_38 = addInt(i_3, ((NI) 1));
								i_3 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_38);
							} LA16: ;
						}
					}
					asgnRef((void**) (&(*t).sons), (tySequence__Ef05srmQTDulnBdXR4Ja6Q*) setLengthSeqV2(&((*t).sons)->Sup, (&NTI__Ef05srmQTDulnBdXR4Ja6Q_), ((NI)chckRange(pos, ((NI) 0), ((NI) 2147483647)))));
					if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*(*t).n).kind)>>3] &(1U<<((NU)((*(*t).n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
					asgnRef((void**) (&(*(*t).n).sons), (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*) setLengthSeqV2(&((*(*t).n).sons)->Sup, (&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_), ((NI)chckRange(pos, ((NI) 0), ((NI) 2147483647)))));
					goto LA7;
				}
				LA12_: ;
				TM__mrkrD9c2e31kE4GdQtpMdaQ_39 = addInt(i_2, ((NI) 1));
				i_2 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_39);
			} LA9: ;
		}
	} LA7: ;
}
N_LIB_PRIVATE N_NIMCALL(void, skipIntLiteralParams__w2l6CVu9bYn8M06fJcMTkHw_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
		i_2 = ((NI) 0);
		{
			while (1) {
				NI TM__mrkrD9c2e31kE4GdQtpMdaQ_40;
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				{
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* p;
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* skipped;
					if ((NU)(i) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(i,((*t).sons ? (*t).sons->Sup.len : 0)-1);
					p = (*t).sons->data[i];
					{
						if (!(p == NIM_NIL)) goto LA7_;
						goto LA4;
					}
					LA7_: ;
					skipped = skipIntLit__PyQcLUUKkDYcpwke36Qpxgmagicsys(p);
					{
						if (!!((skipped == p))) goto LA11_;
						if ((NU)(i) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(i,((*t).sons ? (*t).sons->Sup.len : 0)-1);
						asgnRef((void**) (&(*t).sons->data[i]), skipped);
						{
							if (!(((NI) 0) < i)) goto LA15_;
							if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*(*t).n).kind)>>3] &(1U<<((NU)((*(*t).n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
							if ((NU)(i) >= (NU)((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)) raiseIndexError2(i,((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)-1);
							if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*(*(*t).n).sons->data[i]).kind)>>3] &(1U<<((NU)((*(*(*t).n).sons->data[i]).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
							asgnRef((void**) (&(*(*(*(*t).n).sons->data[i]).sym).typ), skipped);
						}
						LA15_: ;
					}
					LA11_: ;
				} LA4: ;
				TM__mrkrD9c2e31kE4GdQtpMdaQ_40 = addInt(i_2, ((NI) 1));
				i_2 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_40);
			} LA3: ;
		}
	}
	{
		NIM_BOOL T19_;
		T19_ = (NIM_BOOL)0;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T19_ = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
		if (!(T19_)) goto LA20_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T19_ = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60));
		LA20_: ;
		if (!T19_) goto LA21_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		asgnRef((void**) (&(*t).sons->data[((NI) 0)]), base__PfgI9ap7WOnsRfFV4znQ27w((*t).sons->data[((NI) 0)]));
	}
	LA21_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, replaceObjBranches__Io9bn1sBWaB9bMXajNZg3W5Q)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 0) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 140):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* branch;
		branch = NIM_NIL;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* it;
					NI TM__mrkrD9c2e31kE4GdQtpMdaQ_44;
					if (!(i_2 < colontmp_)) goto LA5;
					i = i_2;
					if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					it = (*n).sons->data[i];
					{
						if (!(it == NIM_NIL)) goto LA8_;
						illFormedAst__aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*cl).c).graph).config);
					}
					LA8_: ;
					switch ((*it).kind) {
					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 86):
					{
						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* cond;
						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* e;
						checkSonsLen__EezdXeDvu4rB7fR84AJZgw(it, ((NI) 2), (*(*(*cl).c).graph).config);
						if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(((NI) 0)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*it).sons ? (*it).sons->Sup.len : 0)-1);
						cond = (*it).sons->data[((NI) 0)];
						e = (*(*cl).c).semConstExpr((*cl).c, cond);
						{
							if (!!(((*e).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6)))) goto LA13_;
							internalError__yTu5SGHF0j0P9cQrqN7YylA((*(*(*cl).c).graph).config, (*e).info, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_41));
						}
						LA13_: ;
						{
							NIM_BOOL T17_;
							T17_ = (NIM_BOOL)0;
							if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_42[(NU)((*e).kind)>>3] &(1U<<((NU)((*e).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_43));
							T17_ = !(((*e).intVal == IL64(0)));
							if (!(T17_)) goto LA18_;
							T17_ = (branch == NIM_NIL);
							LA18_: ;
							if (!T17_) goto LA19_;
							if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
							if ((NU)(((NI) 1)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*it).sons ? (*it).sons->Sup.len : 0)-1);
							branch = (*it).sons->data[((NI) 1)];
						}
						LA19_: ;
					}
					break;
					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 88):
					{
						checkSonsLen__EezdXeDvu4rB7fR84AJZgw(it, ((NI) 1), (*(*(*cl).c).graph).config);
						{
							if (!(branch == NIM_NIL)) goto LA24_;
							if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
							if ((NU)(((NI) 0)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*it).sons ? (*it).sons->Sup.len : 0)-1);
							branch = (*it).sons->data[((NI) 0)];
						}
						LA24_: ;
					}
					break;
					default:
					{
						illFormedAst__aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*cl).c).graph).config);
					}
					break;
					}
					TM__mrkrD9c2e31kE4GdQtpMdaQ_44 = addInt(i_2, ((NI) 1));
					i_2 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_44);
				} LA5: ;
			}
		}
		{
			if (!!((branch == NIM_NIL))) goto LA29_;
			result = replaceObjBranches__Io9bn1sBWaB9bMXajNZg3W5Q(cl, branch);
		}
		goto LA27_;
		LA29_: ;
		{
			result = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info);
		}
		LA27_: ;
	}
	break;
	default:
	{
		{
			NI i_3;
			NI colontmp__2;
			NI i_4;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len__P89cqdlERShb9alU3iC0yj8wast(n);
			i_4 = ((NI) 0);
			{
				while (1) {
					NI TM__mrkrD9c2e31kE4GdQtpMdaQ_45;
					if (!(i_4 < colontmp__2)) goto LA35;
					i_3 = i_4;
					if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i_3) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i_3,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i_3) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i_3,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					asgnRef((void**) (&(*n).sons->data[i_3]), replaceObjBranches__Io9bn1sBWaB9bMXajNZg3W5Q(cl, (*n).sons->data[i_3]));
					TM__mrkrD9c2e31kE4GdQtpMdaQ_45 = addInt(i_4, ((NI) 1));
					i_4 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_45);
				} LA35: ;
			}
		}
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, replaceTypeVarsTAux__cNsAY9aO2v1oTCPqZyHga1w_2)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
{	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = t;
	{
		if (!(t == NIM_NIL)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lookup;
		if (!((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 12) || (*t).kind >= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 51) && (*t).kind <= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 54) || (*t).kind >= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 56) && (*t).kind <= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA7_;
		lookup = lookup__bvHwbVO9aaeW8QVm81fQN3w((*cl).typeMap, t);
		{
			if (!!((lookup == NIM_NIL))) goto LA11_;
			result = lookup;
			goto BeforeRet_;
		}
		LA11_: ;
	}
	LA7_: ;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 9):
	{
		result = handleGenericInvocation__cNsAY9aO2v1oTCPqZyHga1w_3(cl, t);
		{
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T16_;
			T16_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T16_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(result);
			if (!((*T16_).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52))) goto LA17_;
			(*result).kind = ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53);
		}
		LA17_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10):
	{
		NimStringDesc* T20_;
		NimStringDesc* T21_;
		T20_ = (NimStringDesc*)0;
		T21_ = (NimStringDesc*)0;
		T21_ = typeToString__QlvraUan7WbHowhAbvDvdA(t, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 1));
		T20_ = rawNewString((T21_ ? T21_->Sup.len : 0) + 60);
appendString(T20_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_9));
appendString(T20_, T21_);
appendString(T20_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_20));
		localError__NF6kBGchnhQYPbCedyefVA((*(*(*cl).c).graph).config, (*cl).info, T20_);
		result = errorType__9aXTnVBVS5pbBC3zrwMhttg((*cl).c);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 61):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n;
		{
			if (!(*cl).allowMetaTypes) goto LA25_;
			goto BeforeRet_;
		}
		LA25_: ;
		{
			if (!!(!(((*(*t).n).typ == t)))) goto LA29_;
			failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_21));
		}
		LA29_: ;
		n = prepareNode__gKp9aBprbf0cqtXoSYBnCkw(cl, (*t).n);
		{
			if (!!(((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA33_;
			n = (*(*cl).c).semConstExpr((*cl).c, n);
		}
		LA33_: ;
		{
			if (!((*(*n).typ).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA37_;
			result = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*n).typ, 256);
		}
		goto LA35_;
		LA37_: ;
		{
			{
				if (!!(((*(*n).typ).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60)))) goto LA42_;
				result = newTypeS__xb5E2cGIynZweqWlCP8Tig(((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60), (*cl).c);
				if ((*result).sons) { nimGCunrefRC1((*result).sons); (*result).sons = NIM_NIL; }
				(*result).sons = (tySequence__Ef05srmQTDulnBdXR4Ja6Q*) newSeqRC1((&NTI__Ef05srmQTDulnBdXR4Ja6Q_), 1);
				asgnRef((void**) (&(*result).sons->data[0]), (*n).typ);
				asgnRef((void**) (&(*result).n), n);
			}
			goto LA40_;
			LA42_: ;
			{
				result = (*n).typ;
			}
			LA40_: ;
		}
		LA35_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 36):
	{
		result = skipIntLit__PyQcLUUKkDYcpwke36Qpxgmagicsys(t);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lookup_2;
		lookup_2 = lookup__bvHwbVO9aaeW8QVm81fQN3w((*cl).typeMap, t);
		{
			if (!!((lookup_2 == NIM_NIL))) goto LA49_;
			result = lookup_2;
			{
				if (!!(((*result).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8)))) goto LA53_;
				result = makeTypeDesc__BhLel1oiCddEysrc3uc6iQ((*cl).c, result);
			}
			goto LA51_;
			LA53_: ;
			{
				NIM_BOOL T56_;
				T56_ = (NIM_BOOL)0;
				T56_ = (((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0);
				if (T56_) goto LA57_;
				T56_ = (*cl).skipTypedesc;
				LA57_: ;
				if (!T56_) goto LA58_;
				result = base__PfgI9ap7WOnsRfFV4znQ27w(result);
			}
			goto LA51_;
			LA58_: ;
			LA51_: ;
		}
		goto LA47_;
		LA49_: ;
		{
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T63_;
			if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
			if (!!(((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 0)))) goto LA61_;
			if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
			T63_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T63_ = replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, (*t).sons->data[((NI) 0)]);
			result = makeTypeDesc__BhLel1oiCddEysrc3uc6iQ((*cl).c, T63_);
		}
		goto LA47_;
		LA61_: ;
		LA47_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
	{
		result = t;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53):
	{
		NI TM__mrkrD9c2e31kE4GdQtpMdaQ_27;
		tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T76_;
		RootObj* T77_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T81_;
		{
			tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T70_;
			RootObj* T71_;
			if (!(((NI) 100) < (*cl).recursionLimit)) goto LA68_;
			T70_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
			T70_ = &t->Sup;
			T71_ = (RootObj*)0;
			T71_ = idTableGet__K5M5T7J9c0H7M5ahfeRl8xw((*cl).localCache, T70_);
			if (T71_) chckObj((*T71_).m_type, (&NTI__v9ae2Dpu13OW2ZJ2U9bNMd9cQ_));
			result = ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T71_));
			{
				if (!!((result == NIM_NIL))) goto LA74_;
				goto BeforeRet_;
			}
			LA74_: ;
		}
		LA68_: ;
		TM__mrkrD9c2e31kE4GdQtpMdaQ_27 = addInt((*cl).recursionLimit, ((NI) 1));
		(*cl).recursionLimit = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_27);
		result = instCopyType__cNsAY9aO2v1oTCPqZyHga1w_5(cl, t);
		T76_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
		T76_ = &t->Sup;
		T77_ = (RootObj*)0;
		T77_ = &result->Sup.Sup;
		idTablePut__anELyz7VLsjbCIoxLpxbfQ((&(*cl).localCache), T76_, T77_);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(result);
			i_2 = ((NI) 1);
			{
				while (1) {
					NI TM__mrkrD9c2e31kE4GdQtpMdaQ_28;
					if (!(i_2 < colontmp_)) goto LA80;
					i = i_2;
					if ((NU)(i) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i,((*result).sons ? (*result).sons->Sup.len : 0)-1);
					if ((NU)(i) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i,((*result).sons ? (*result).sons->Sup.len : 0)-1);
					asgnRef((void**) (&(*result).sons->data[i]), replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, (*result).sons->data[i]));
					TM__mrkrD9c2e31kE4GdQtpMdaQ_28 = addInt(i_2, ((NI) 1));
					i_2 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_28);
				} LA80: ;
			}
		}
		T81_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T81_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(result);
		propagateToOwner__KHgxvzuOk6nXefcrhhP9cWw(result, T81_);
	}
	break;
	default:
	{
		{
			NIM_BOOL T85_;
			NI TM__mrkrD9c2e31kE4GdQtpMdaQ_29;
			tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T98_;
			RootObj* T99_;
			T85_ = (NIM_BOOL)0;
			T85_ = containsGenericType__YPjOkGV9axAnGR3UfLeWZ1g_2(t);
			if (!T85_) goto LA86_;
			{
				tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T92_;
				RootObj* T93_;
				if (!(((NI) 100) < (*cl).recursionLimit)) goto LA90_;
				T92_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
				T92_ = &t->Sup;
				T93_ = (RootObj*)0;
				T93_ = idTableGet__K5M5T7J9c0H7M5ahfeRl8xw((*cl).localCache, T92_);
				if (T93_) chckObj((*T93_).m_type, (&NTI__v9ae2Dpu13OW2ZJ2U9bNMd9cQ_));
				result = ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T93_));
				{
					if (!!((result == NIM_NIL))) goto LA96_;
					goto BeforeRet_;
				}
				LA96_: ;
			}
			LA90_: ;
			TM__mrkrD9c2e31kE4GdQtpMdaQ_29 = addInt((*cl).recursionLimit, ((NI) 1));
			(*cl).recursionLimit = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_29);
			result = instCopyType__cNsAY9aO2v1oTCPqZyHga1w_5(cl, t);
			(*result).size = IL64(-1);
			T98_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
			T98_ = &t->Sup;
			T99_ = (RootObj*)0;
			T99_ = &result->Sup.Sup;
			idTablePut__anELyz7VLsjbCIoxLpxbfQ((&(*cl).localCache), T98_, T99_);
			{
				NI i_3;
				NI colontmp__2;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = len__5mJADrRYkP3r9auuiuDZN9cQast(result);
				i_4 = ((NI) 0);
				{
					while (1) {
						NI TM__mrkrD9c2e31kE4GdQtpMdaQ_32;
						if (!(i_4 < colontmp__2)) goto LA102;
						i_3 = i_4;
						{
							tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* r;
							if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
							if (!!(((*result).sons->data[i_3] == NIM_NIL))) goto LA105_;
							{
								tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T111_;
								NimStringDesc* T117_;
								NimStringDesc* T118_;
								if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
								if (!((*(*result).sons->data[i_3]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10))) goto LA109_;
								{
									if (!!(((*t).sym == NIM_NIL))) goto LA114_;
									T111_ = (*(*t).sym).info;
								}
								goto LA112_;
								LA114_: ;
								{
									T111_ = (*cl).info;
								}
								LA112_: ;
								T117_ = (NimStringDesc*)0;
								if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
								T118_ = (NimStringDesc*)0;
								T118_ = typeToString__QlvraUan7WbHowhAbvDvdA((*result).sons->data[i_3], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 1));
								T117_ = rawNewString((T118_ ? T118_->Sup.len : 0) + ((*(*(*t).owner).name).s ? (*(*(*t).owner).name).s->Sup.len : 0) + 89);
appendString(T117_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_30));
appendString(T117_, T118_);
appendString(T117_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_31));
appendString(T117_, (*(*(*t).owner).name).s);
appendString(T117_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_20));
								localError__NF6kBGchnhQYPbCedyefVA((*(*(*cl).c).graph).config, T111_, T117_);
							}
							LA109_: ;
							if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
							r = replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, (*result).sons->data[i_3]);
							{
								tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* r2;
								if (!((*result).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA121_;
								r2 = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(r, IL64(105553116266512));
								{
									if (!((*r2).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 21) || (*r2).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22))) goto LA125_;
									r = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(r2, 6291456);
								}
								LA125_: ;
							}
							LA121_: ;
							if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
							asgnRef((void**) (&(*result).sons->data[i_3]), r);
							{
								NIM_BOOL T129_;
								T129_ = (NIM_BOOL)0;
								T129_ = !(((*result).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16)));
								if (T129_) goto LA130_;
								T129_ = !((i_3 == ((NI) 0)));
								LA130_: ;
								if (!T129_) goto LA131_;
								propagateToOwner__KHgxvzuOk6nXefcrhhP9cWw(result, r);
							}
							LA131_: ;
						}
						LA105_: ;
						TM__mrkrD9c2e31kE4GdQtpMdaQ_32 = addInt(i_4, ((NI) 1));
						i_4 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_32);
					} LA102: ;
				}
			}
			asgnRef((void**) (&(*result).n), replaceTypeVarsN__TMTYUYo5YIKojKgBmj9boOQ(cl, (*result).n, ((*result).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25))));
			switch ((*result).kind) {
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
			{
				tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* idx;
				if ((NU)(((NI) 0)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*result).sons ? (*result).sons->Sup.len : 0)-1);
				idx = (*result).sons->data[((NI) 0)];
				{
					NimStringDesc* T138_;
					if (!!(!(((*idx).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60))))) goto LA136_;
					T138_ = (NimStringDesc*)0;
					T138_ = dollar___r38WafKlW80RkvoZTcia4Q(TM__mrkrD9c2e31kE4GdQtpMdaQ_33);
					internalError__5hPl6LjCYJxMYxh9af9b9bXzw((*(*(*cl).c).graph).config, T138_);
				}
				LA136_: ;
			}
			break;
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17):
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
			{
				propagateFieldFlags__Bjo9aRQCCUN0CrmERULS79bg(result, (*result).n);
			}
			break;
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25):
			{
				eraseVoidParams__w2l6CVu9bYn8M06fJcMTkHw(result);
				skipIntLiteralParams__w2l6CVu9bYn8M06fJcMTkHw_2(result);
			}
			break;
			default:
			{
			}
			break;
			}
		}
		goto LA83_;
		LA86_: ;
		{
			result = t;
			{
				NIM_BOOL T145_;
				T145_ = (NIM_BOOL)0;
				T145_ = !(((*result).n == NIM_NIL));
				if (!(T145_)) goto LA146_;
				T145_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17));
				LA146_: ;
				if (!T145_) goto LA147_;
				(*result).size = IL64(-1);
				asgnRef((void**) (&(*result).n), replaceObjBranches__Io9bn1sBWaB9bMXajNZg3W5Q((&(*cl)), (*result).n));
			}
			LA147_: ;
		}
		LA83_: ;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = replaceTypeVarsTAux__cNsAY9aO2v1oTCPqZyHga1w_2(cl, t);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTypeParam__9bQUIWM6kcjKJh9ayHoQtlkg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T3_;
	NIM_BOOL T5_;
{	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3));
	if (!(T1_)) goto LA2_;
	T3_ = (NIM_BOOL)0;
	if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
	T3_ = ((*(*n).sym).kind == ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 4));
	if (T3_) goto LA4_;
	T5_ = (NIM_BOOL)0;
	if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
	T5_ = ((*(*n).sym).kind == ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 7));
	if (!(T5_)) goto LA6_;
	if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
	T5_ = (((*(*n).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0);
	LA6_: ;
	T3_ = T5_;
	LA4_: ;
	T1_ = T3_;
	LA2_: ;
	result = T1_;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, reResolveCallsWithTypedescParams__gKp9aBprbf0cqtXoSYBnCkw_2)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NIM_BOOL needsFixing;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 32));
		if (!(T3_)) goto LA4_;
		if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
		if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*(*n).sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*n).sons->data[((NI) 0)]).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
		T3_ = (((*(*(*n).sons->data[((NI) 0)]).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0);
		LA4_: ;
		if (!T3_) goto LA5_;
		needsFixing = NIM_FALSE;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast(n);
			i_2 = ((NI) 1);
			{
				while (1) {
					NI TM__mrkrD9c2e31kE4GdQtpMdaQ_47;
					if (!(i_2 < colontmp_)) goto LA9;
					i = i_2;
					{
						NIM_BOOL T12_;
						if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
						T12_ = (NIM_BOOL)0;
						T12_ = isTypeParam__9bQUIWM6kcjKJh9ayHoQtlkg((*n).sons->data[i]);
						if (!T12_) goto LA13_;
						needsFixing = NIM_TRUE;
					}
					LA13_: ;
					TM__mrkrD9c2e31kE4GdQtpMdaQ_47 = addInt(i_2, ((NI) 1));
					i_2 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_47);
				} LA9: ;
			}
		}
		{
			if (!needsFixing) goto LA17_;
			if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
			if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
			if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
			if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
			if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*(*n).sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*n).sons->data[((NI) 0)]).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
			asgnRef((void**) (&(*n).sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg((*(*(*n).sons->data[((NI) 0)]).sym).owner));
			result = (*(*cl).c).semOverloadedCall((*cl).c, n, n, 12288, 0);
			goto BeforeRet_;
		}
		LA17_: ;
	}
	LA5_: ;
	{
		NI i_3;
		NI colontmp__2;
		NI i_4;
		i_3 = (NI)0;
		colontmp__2 = (NI)0;
		colontmp__2 = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast(n);
		i_4 = ((NI) 0);
		{
			while (1) {
				NI TM__mrkrD9c2e31kE4GdQtpMdaQ_48;
				if (!(i_4 < colontmp__2)) goto LA21;
				i_3 = i_4;
				if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
				if ((NU)(i_3) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i_3,((*n).sons ? (*n).sons->Sup.len : 0)-1);
				if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
				if ((NU)(i_3) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i_3,((*n).sons ? (*n).sons->Sup.len : 0)-1);
				asgnRef((void**) (&(*n).sons->data[i_3]), reResolveCallsWithTypedescParams__gKp9aBprbf0cqtXoSYBnCkw_2(cl, (*n).sons->data[i_3]));
				TM__mrkrD9c2e31kE4GdQtpMdaQ_48 = addInt(i_4, ((NI) 1));
				i_4 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_48);
			} LA21: ;
		}
	}
	result = n;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, replaceTypeVarsN__TMTYUYo5YIKojKgBmj9boOQ)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, NI start) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!(n == NIM_NIL)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	result = copyNode__Dsjo9bte8vGxzhtcSrsTyiQ(n);
	{
		if (!!(((*n).typ == NIM_NIL))) goto LA7_;
		asgnRef((void**) (&(*result).typ), replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, (*n).typ));
	}
	LA7_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 0) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 2):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 4) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 57):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 56):
	{
		result = n;
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
		if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
		asgnRef((void**) (&(*result).sym), replaceTypeVarsS__sLVA1gNd8WU8o9cEwKvBh9cA(cl, (*n).sym));
		{
			tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* T16_;
			if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
			if (!((*(*(*result).sym).typ).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 63))) goto LA14_;
			T16_ = (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
			T16_ = NIM_NIL;
			result = newNode__duw0Uu9cIFXmCAaunQWIP0g(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info, T16_, NIM_NIL);
		}
		LA14_: ;
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 140):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* branch;
		branch = NIM_NIL;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* it;
					NI TM__mrkrD9c2e31kE4GdQtpMdaQ_46;
					if (!(i_2 < colontmp_)) goto LA20;
					i = i_2;
					if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					it = (*n).sons->data[i];
					{
						if (!(it == NIM_NIL)) goto LA23_;
						illFormedAst__aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*cl).c).graph).config);
					}
					LA23_: ;
					switch ((*it).kind) {
					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 86):
					{
						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* cond;
						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* e;
						checkSonsLen__EezdXeDvu4rB7fR84AJZgw(it, ((NI) 2), (*(*(*cl).c).graph).config);
						if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(((NI) 0)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*it).sons ? (*it).sons->Sup.len : 0)-1);
						cond = prepareNode__gKp9aBprbf0cqtXoSYBnCkw(cl, (*it).sons->data[((NI) 0)]);
						e = (*(*cl).c).semConstExpr((*cl).c, cond);
						{
							if (!!(((*e).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6)))) goto LA28_;
							internalError__yTu5SGHF0j0P9cQrqN7YylA((*(*(*cl).c).graph).config, (*e).info, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_41));
						}
						LA28_: ;
						{
							NIM_BOOL T32_;
							T32_ = (NIM_BOOL)0;
							if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_42[(NU)((*e).kind)>>3] &(1U<<((NU)((*e).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_43));
							T32_ = !(((*e).intVal == IL64(0)));
							if (!(T32_)) goto LA33_;
							T32_ = (branch == NIM_NIL);
							LA33_: ;
							if (!T32_) goto LA34_;
							if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
							if ((NU)(((NI) 1)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*it).sons ? (*it).sons->Sup.len : 0)-1);
							branch = (*it).sons->data[((NI) 1)];
						}
						LA34_: ;
					}
					break;
					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 88):
					{
						checkSonsLen__EezdXeDvu4rB7fR84AJZgw(it, ((NI) 1), (*(*(*cl).c).graph).config);
						{
							if (!(branch == NIM_NIL)) goto LA39_;
							if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
							if ((NU)(((NI) 0)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*it).sons ? (*it).sons->Sup.len : 0)-1);
							branch = (*it).sons->data[((NI) 0)];
						}
						LA39_: ;
					}
					break;
					default:
					{
						illFormedAst__aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*cl).c).graph).config);
					}
					break;
					}
					TM__mrkrD9c2e31kE4GdQtpMdaQ_46 = addInt(i_2, ((NI) 1));
					i_2 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_46);
				} LA20: ;
			}
		}
		{
			if (!!((branch == NIM_NIL))) goto LA44_;
			result = replaceTypeVarsN__TMTYUYo5YIKojKgBmj9boOQ(cl, branch, ((NI) 0));
		}
		goto LA42_;
		LA44_: ;
		{
			result = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info);
		}
		LA42_: ;
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 62):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n_2;
		n_2 = prepareNode__gKp9aBprbf0cqtXoSYBnCkw(cl, n);
		n_2 = reResolveCallsWithTypedescParams__gKp9aBprbf0cqtXoSYBnCkw_2(cl, n_2);
		{
			if (!(*cl).allowMetaTypes) goto LA50_;
			result = n_2;
		}
		goto LA48_;
		LA50_: ;
		{
			result = (*(*cl).c).semExpr((*cl).c, n_2, 0);
		}
		LA48_: ;
	}
	break;
	default:
	{
		NI length;
		length = len__P89cqdlERShb9alU3iC0yj8wast(n);
		{
			if (!(((NI) 0) < length)) goto LA56_;
			newSons__Bu9cqnssJjx4jfWBeiR9albg(result, length);
			{
				if (!(((NI) 0) < start)) goto LA60_;
				if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
				if ((NU)(((NI) 0)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*result).sons ? (*result).sons->Sup.len : 0)-1);
				if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
				if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
				asgnRef((void**) (&(*result).sons->data[((NI) 0)]), (*n).sons->data[((NI) 0)]);
			}
			LA60_: ;
			{
				NI i_3;
				NI i_4;
				i_3 = (NI)0;
				i_4 = start;
				{
					while (1) {
						NI TM__mrkrD9c2e31kE4GdQtpMdaQ_49;
						if (!(i_4 < length)) goto LA64;
						i_3 = i_4;
						if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
						if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(i_3) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i_3,((*n).sons ? (*n).sons->Sup.len : 0)-1);
						asgnRef((void**) (&(*result).sons->data[i_3]), replaceTypeVarsN__TMTYUYo5YIKojKgBmj9boOQ(cl, (*n).sons->data[i_3], ((NI) 0)));
						TM__mrkrD9c2e31kE4GdQtpMdaQ_49 = addInt(i_4, ((NI) 1));
						i_4 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_49);
					} LA64: ;
				}
			}
		}
		LA56_: ;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, replaceTypesInBody__JQMwbj1fgdFwBCg7mhUBRQ)(tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner, NIM_BOOL allowMetaTypes) {	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA typeMap;
	tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg cl;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&typeMap), sizeof(tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA));
	initLayeredTypeMap__CUPvqqdAvE7lW4r3YvsLsQ(pt, (&typeMap));
	nimZeroMem((void*)(&cl), sizeof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg));
	initTypeVars__Xi1rcYNuDZinU29bL68QCog(p, (&typeMap), (*n).info, owner, (&cl));
	cl.allowMetaTypes = allowMetaTypes;
	pushInfoContext__uDLK9aoAOWwwFTev4NOwF7Q((*(*p).graph).config, (*n).info, ((NimStringDesc*) NIM_NIL));
	result = replaceTypeVarsN__TMTYUYo5YIKojKgBmj9boOQ((&cl), n, ((NI) 0));
	popInfoContext__O9arH9bYenXLOr27ZSmcQnEw_3((*(*p).graph).config);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, recomputeFieldPositions__XUkgGL16NQZcptTJ0lg7nQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* obj, NI* currPosition) {	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		NI T6_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = !((t == NIM_NIL));
		if (!(T4_)) goto LA5_;
		T6_ = (NI)0;
		T6_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
		T4_ = (((NI) 0) < T6_);
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA7_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T3_ = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
		LA7_: ;
		if (!T3_) goto LA8_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		b = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*t).sons->data[((NI) 0)], IL64(36275087638268176));
		recomputeFieldPositions__XUkgGL16NQZcptTJ0lg7nQ(b, (*b).n, currPosition);
	}
	LA8_: ;
	switch ((*obj).kind) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(obj);
			i_2 = ((NI) 0);
			{
				while (1) {
					NI TM__mrkrD9c2e31kE4GdQtpMdaQ_50;
					if (!(i_2 < colontmp_)) goto LA13;
					i = i_2;
					if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*obj).kind)>>3] &(1U<<((NU)((*obj).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i) >= (NU)((*obj).sons ? (*obj).sons->Sup.len : 0)) raiseIndexError2(i,((*obj).sons ? (*obj).sons->Sup.len : 0)-1);
					recomputeFieldPositions__XUkgGL16NQZcptTJ0lg7nQ(NIM_NIL, (*obj).sons->data[i], currPosition);
					TM__mrkrD9c2e31kE4GdQtpMdaQ_50 = addInt(i_2, ((NI) 1));
					i_2 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_50);
				} LA13: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*obj).kind)>>3] &(1U<<((NU)((*obj).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
		if ((NU)(((NI) 0)) >= (NU)((*obj).sons ? (*obj).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*obj).sons ? (*obj).sons->Sup.len : 0)-1);
		recomputeFieldPositions__XUkgGL16NQZcptTJ0lg7nQ(NIM_NIL, (*obj).sons->data[((NI) 0)], currPosition);
		{
			NI i_3;
			NI colontmp__2;
			NI i_4;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len__P89cqdlERShb9alU3iC0yj8wast(obj);
			i_4 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T18_;
					NI TM__mrkrD9c2e31kE4GdQtpMdaQ_51;
					if (!(i_4 < colontmp__2)) goto LA17;
					i_3 = i_4;
					if (((TM__mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*obj).kind)>>3] &(1U<<((NU)((*obj).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i_3) >= (NU)((*obj).sons ? (*obj).sons->Sup.len : 0)) raiseIndexError2(i_3,((*obj).sons ? (*obj).sons->Sup.len : 0)-1);
					T18_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
					T18_ = lastSon__UPSW0jLTX5qJL51YMUAHgw((*obj).sons->data[i_3]);
					recomputeFieldPositions__XUkgGL16NQZcptTJ0lg7nQ(NIM_NIL, T18_, currPosition);
					TM__mrkrD9c2e31kE4GdQtpMdaQ_51 = addInt(i_4, ((NI) 1));
					i_4 = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_51);
				} LA17: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		NI TM__mrkrD9c2e31kE4GdQtpMdaQ_52;
		if (!(((TM__mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*obj).kind)>>3] &(1U<<((NU)((*obj).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_23));
		(*(*obj).sym).position = (*currPosition);
		TM__mrkrD9c2e31kE4GdQtpMdaQ_52 = addInt((*currPosition), ((NI) 1));
		(*currPosition) = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_52);
	}
	break;
	default:
	{
	}
	break;
	}
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, generateTypeInstance__ab5BITmU2P8zKztV9cfNtsg)(tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA typeMap;
	tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg cl;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* objType;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	nimZeroMem((void*)(&typeMap), sizeof(tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA));
	initLayeredTypeMap__CUPvqqdAvE7lW4r3YvsLsQ(pt, (&typeMap));
	nimZeroMem((void*)(&cl), sizeof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg));
	initTypeVars__Xi1rcYNuDZinU29bL68QCog(p, (&typeMap), info, NIM_NIL, (&cl));
	pushInfoContext__uDLK9aoAOWwwFTev4NOwF7Q((*(*p).graph).config, info, ((NimStringDesc*) NIM_NIL));
	result = replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w((&cl), t);
	popInfoContext__O9arH9bYenXLOr27ZSmcQnEw_3((*(*p).graph).config);
	objType = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(result, IL64(36134350135273744));
	{
		NI position;
		if (!((*objType).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA3_;
		position = ((NI) 0);
		recomputeFieldPositions__XUkgGL16NQZcptTJ0lg7nQ(objType, (*objType).n, (&position));
	}
	LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, prepareMetatypeForSigmatch__ab5BITmU2P8zKztV9cfNtsg_2)(tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA typeMap;
	tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg cl;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	nimZeroMem((void*)(&typeMap), sizeof(tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA));
	initLayeredTypeMap__CUPvqqdAvE7lW4r3YvsLsQ(pt, (&typeMap));
	nimZeroMem((void*)(&cl), sizeof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg));
	initTypeVars__Xi1rcYNuDZinU29bL68QCog(p, (&typeMap), info, NIM_NIL, (&cl));
	cl.allowMetaTypes = NIM_TRUE;
	pushInfoContext__uDLK9aoAOWwwFTev4NOwF7Q((*(*p).graph).config, info, ((NimStringDesc*) NIM_NIL));
	result = replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w((&cl), t);
	popInfoContext__O9arH9bYenXLOr27ZSmcQnEw_3((*(*p).graph).config);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, instAllTypeBoundOp__Qpi3NgGJ9aSfcPm9cZqhFJUg)(tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info) {	NI i;
	i = ((NI) 0);
	{
		while (1) {
			NI T3_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* newty;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* oldty;
			tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* oprX60gensym631435_;
			tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* oprX60gensym631458_;
			tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* oprX60gensym631481_;
			NI TM__mrkrD9c2e31kE4GdQtpMdaQ_53;
			T3_ = ((*c).typesWithOps ? (*c).typesWithOps->Sup.len : 0);
			if (!(i < T3_)) goto LA2;
			if ((NU)(i) >= (NU)((*c).typesWithOps ? (*c).typesWithOps->Sup.len : 0)) raiseIndexError2(i,((*c).typesWithOps ? (*c).typesWithOps->Sup.len : 0)-1);
			newty = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			newty = (*c).typesWithOps->data[i].Field0;
			oldty = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			oldty = (*c).typesWithOps->data[i].Field1;
			oprX60gensym631435_ = (*newty).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 0))- 0];
			{
				NIM_BOOL T6_;
				T6_ = (NIM_BOOL)0;
				T6_ = !((oprX60gensym631435_ == NIM_NIL));
				if (!(T6_)) goto LA7_;
				T6_ = !((((*oprX60gensym631435_).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0));
				LA7_: ;
				if (!T6_) goto LA8_;
				asgnRef((void**) (&(*newty).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 0))- 0]), (*c).instTypeBoundOp(c, oprX60gensym631435_, oldty, info, ((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 1), ((NI) 1)));
			}
			LA8_: ;
			oprX60gensym631458_ = (*newty).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 2))- 0];
			{
				NIM_BOOL T12_;
				T12_ = (NIM_BOOL)0;
				T12_ = !((oprX60gensym631458_ == NIM_NIL));
				if (!(T12_)) goto LA13_;
				T12_ = !((((*oprX60gensym631458_).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0));
				LA13_: ;
				if (!T12_) goto LA14_;
				asgnRef((void**) (&(*newty).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 2))- 0]), (*c).instTypeBoundOp(c, oprX60gensym631458_, oldty, info, ((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 1), ((NI) 1)));
			}
			LA14_: ;
			oprX60gensym631481_ = (*newty).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 1))- 0];
			{
				NIM_BOOL T18_;
				T18_ = (NIM_BOOL)0;
				T18_ = !((oprX60gensym631481_ == NIM_NIL));
				if (!(T18_)) goto LA19_;
				T18_ = !((((*oprX60gensym631481_).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0));
				LA19_: ;
				if (!T18_) goto LA20_;
				asgnRef((void**) (&(*newty).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 1))- 0]), (*c).instTypeBoundOp(c, oprX60gensym631481_, oldty, info, ((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 1), ((NI) 1)));
			}
			LA20_: ;
			TM__mrkrD9c2e31kE4GdQtpMdaQ_53 = addInt(i, ((NI) 1));
			i = (NI)(TM__mrkrD9c2e31kE4GdQtpMdaQ_53);
		} LA2: ;
	}
	asgnRef((void**) (&(*c).typesWithOps), (tySequence__YceFcaugL2PWNtVbyffD9bQ*) setLengthSeqV2(&((*c).typesWithOps)->Sup, (&NTI__YceFcaugL2PWNtVbyffD9bQ_), ((NI) 0)));
}
N_LIB_PRIVATE N_NIMCALL(void, checkConstructedType__09chTcGpP9cwUssGPOfkWIGw)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	t = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(typ, 8192);
	{
		if (!((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 51) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 54) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 56) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 57) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 58) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 59))) goto LA3_;
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T6_;
		T6_ = (NIM_BOOL)0;
		T6_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47));
		if (!(T6_)) goto LA7_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T6_ = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47));
		LA7_: ;
		if (!T6_) goto LA8_;
		localError__NF6kBGchnhQYPbCedyefVA(conf, info, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_17));
	}
	goto LA1_;
	LA8_: ;
	{
		NIM_BOOL T11_;
		NI64 T12_;
		NimStringDesc* T16_;
		NimStringDesc* T17_;
		T11_ = (NIM_BOOL)0;
		T12_ = (NI64)0;
		T12_ = computeSize__vCG1GF2Iu043oALVyuJfOw_3(conf, t);
		T11_ = (T12_ == IL64(-2));
		if (T11_) goto LA13_;
		T11_ = isTupleRecursive__YPjOkGV9axAnGR3UfLeWZ1g_10(t);
		LA13_: ;
		if (!T11_) goto LA14_;
		T16_ = (NimStringDesc*)0;
		T17_ = (NimStringDesc*)0;
		T17_ = typeToString__QlvraUan7WbHowhAbvDvdA(t, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		T16_ = rawNewString((T17_ ? T17_->Sup.len : 0) + 28);
appendString(T16_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_54));
appendString(T16_, T17_);
appendString(T16_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_10));
		localError__NF6kBGchnhQYPbCedyefVA(conf, info, T16_);
	}
	goto LA1_;
	LA14_: ;
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_semtypinstDatInit000)(void) {
static TNimNode* TM__mrkrD9c2e31kE4GdQtpMdaQ_2_2[2];
static TNimNode* TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[10];
static TNimNode TM__mrkrD9c2e31kE4GdQtpMdaQ_0[14];
NTI__Dxk9cFa3Fer9bZpQ9b4aBAFkA_.size = sizeof(tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA);
NTI__Dxk9cFa3Fer9bZpQ9b4aBAFkA_.kind = 18;
NTI__Dxk9cFa3Fer9bZpQ9b4aBAFkA_.base = 0;
TM__mrkrD9c2e31kE4GdQtpMdaQ_2_2[0] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[1];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[1].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[1].offset = offsetof(tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA, topLayer);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[1].typ = (&NTI__9aiv9bp2t5icFNINcg9c4xi1Q_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[1].name = "topLayer";
TM__mrkrD9c2e31kE4GdQtpMdaQ_2_2[1] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[2];
NTI__AWHx031vx269auvjKCITW9cw_.size = sizeof(tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA*);
NTI__AWHx031vx269auvjKCITW9cw_.kind = 21;
NTI__AWHx031vx269auvjKCITW9cw_.base = (&NTI__Dxk9cFa3Fer9bZpQ9b4aBAFkA_);
NTI__AWHx031vx269auvjKCITW9cw_.flags = 3;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[2].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[2].offset = offsetof(tyObject_LayeredIdTable__Dxk9cFa3Fer9bZpQ9b4aBAFkA, nextLayer);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[2].typ = (&NTI__AWHx031vx269auvjKCITW9cw_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[2].name = "nextLayer";
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[0].len = 2; TM__mrkrD9c2e31kE4GdQtpMdaQ_0[0].kind = 2; TM__mrkrD9c2e31kE4GdQtpMdaQ_0[0].sons = &TM__mrkrD9c2e31kE4GdQtpMdaQ_2_2[0];
NTI__Dxk9cFa3Fer9bZpQ9b4aBAFkA_.node = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[0];
NTI__gMP9b9b8d4Uze3mE5G9aP9afmg_.size = sizeof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg);
NTI__gMP9b9b8d4Uze3mE5G9aP9afmg_.kind = 18;
NTI__gMP9b9b8d4Uze3mE5G9aP9afmg_.base = 0;
TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[0] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[4];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[4].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[4].offset = offsetof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg, c);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[4].typ = (&NTI__EjEifkTC8tg9afiUW4StSSA_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[4].name = "c";
TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[1] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[5];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[5].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[5].offset = offsetof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg, typeMap);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[5].typ = (&NTI__AWHx031vx269auvjKCITW9cw_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[5].name = "typeMap";
TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[2] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[6];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[6].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[6].offset = offsetof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg, symMap);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[6].typ = (&NTI__9aiv9bp2t5icFNINcg9c4xi1Q_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[6].name = "symMap";
TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[3] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[7];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[7].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[7].offset = offsetof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg, localCache);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[7].typ = (&NTI__9aiv9bp2t5icFNINcg9c4xi1Q_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[7].name = "localCache";
TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[4] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[8];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[8].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[8].offset = offsetof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg, info);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[8].typ = (&NTI__WGx4rAexNXnczy1Avn646Q_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[8].name = "info";
TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[5] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[9];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[9].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[9].offset = offsetof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg, allowMetaTypes);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[9].typ = (&NTI__VaVACK0bpYmqIQ0mKcHfQQ_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[9].name = "allowMetaTypes";
TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[6] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[10];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[10].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[10].offset = offsetof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg, skipTypedesc);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[10].typ = (&NTI__VaVACK0bpYmqIQ0mKcHfQQ_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[10].name = "skipTypedesc";
TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[7] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[11];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[11].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[11].offset = offsetof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg, isReturnType);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[11].typ = (&NTI__VaVACK0bpYmqIQ0mKcHfQQ_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[11].name = "isReturnType";
TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[8] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[12];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[12].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[12].offset = offsetof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg, owner);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[12].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[12].name = "owner";
TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[9] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[13];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[13].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[13].offset = offsetof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg, recursionLimit);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[13].typ = (&NTI__rR5Bzr1D5krxoo1NcNyeMA_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[13].name = "recursionLimit";
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[3].len = 10; TM__mrkrD9c2e31kE4GdQtpMdaQ_0[3].kind = 2; TM__mrkrD9c2e31kE4GdQtpMdaQ_0[3].sons = &TM__mrkrD9c2e31kE4GdQtpMdaQ_3_10[0];
NTI__gMP9b9b8d4Uze3mE5G9aP9afmg_.node = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[3];
}

