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

/* section: NIM_merge_HEADERS */

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix

/* section: NIM_merge_FRAME_DEFINES */
#define nimfr_(x, y)
#define nimln_(x, y)

/* section: NIM_merge_FORWARD_TYPES */
typedef struct tyObject_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_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ;
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 tyTuple__kN8up2W6YKc5YA9avn5mV5w tyTuple__kN8up2W6YKc5YA9avn5mV5w;
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__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;

/* section: NIM_merge_TYPES */
struct tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q {
NI counter;
tySequence__Mh9agqM29bm9aP5AUL1x7dZGA* data;
};
struct tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ {
tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q topLayer;
tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* 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;
NI align;
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_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* 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 N_NIMCALL_PTR(NIM_BOOL, tyProc__msQKNa7Ucgnt49aAZ3YRJww) (tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClP_0) (tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, void* ClE_0);
void* ClE_0;
} tyProc__7JwrY3AhkVNlleAJXClX9cw;
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__3cacbJ4la9bDJNibHybQSnA;
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__L4XfH7VEp8aJssG3EbEBaQ;
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;
NI* templInstCounter;
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__msQKNa7Ucgnt49aAZ3YRJww computeRequiresInit;
tyProc__7JwrY3AhkVNlleAJXClX9cw hasUnresolvedArgs;
tyProc__39auogS0nN05zO6JrT7za9cQ semOperand;
tyProc__RcJNn9bSvWdJgUmA1O6sbHA semConstBoolExpr;
tyProc__qlV9aWvA5wrWVg9bI5PqwJyA semOverloadedCall;
tyProc__PiEiMdzXg9bcm3lEo4Q6iNw semTypeNode;
tyProc__3cacbJ4la9bDJNibHybQSnA semInferredLambda;
tyProc__L4XfH7VEp8aJssG3EbEBaQ 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;
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q lastTLineInfo;
};
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;
} _kind_1;
struct {tySequence__DXS6mEo7PVUFJkirsQ9bNQA* procInstCache;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* gcUnsafetyReason;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* transformedBody;
} _kind_2;
struct {tySequence__DXS6mEo7PVUFJkirsQ9bNQA* usedGenerics;
tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA tab;
} _kind_3;
struct {tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* guard;
NI bitsize;
NI alignment;
} _kind_4;
};
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;
} _kind_1;
struct {NF floatVal;
} _kind_2;
struct {NimStringDesc* strVal;
} _kind_3;
struct {tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym;
} _kind_4;
struct {tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* ident;
} _kind_5;
struct {tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
} _kind_6;
};
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__In3g79a0qTcRmbTbJp9ba9ctg;
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);
typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__3TeLOx1euAsRk3YCaQCuPg) (tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* actual);
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__In3g79a0qTcRmbTbJp9ba9ctg 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;
tyProc__sP1I7TbCn358eLy9bX4IphA strongSemCheck;
tyProc__3TeLOx1euAsRk3YCaQCuPg compatibleProps;
};
typedef NU8 tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA;
typedef NU64 tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw;
typedef tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* tyArray__PsPyPA45AAjHu4uDGHNjTg[6];
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;
};
struct tyTuple__kN8up2W6YKc5YA9avn5mV5w {
NimStringDesc* Field0;
NI Field1;
NI Field2;
};
typedef NU8 tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg;
typedef NU8 tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw;
typedef NU8 tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw;
typedef NU8 tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w;
typedef NU8 tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw;
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__SPr7N6UKfuF549bNPiUvSRw[256];
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__SPr7N6UKfuF549bNPiUvSRw 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;
};
struct tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA {
  tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA Sup;
NimStringDesc* s;
tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* next;
NI h;
};
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;
};

/* section: NIM_merge_SEQ_TYPES */
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];
};

/* section: NIM_merge_PROC_HEADERS */
N_LIB_PRIVATE N_NIMCALL(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*, initLayeredTypeMap__B4ANHmRtTNsf0tY0IplCpw)(tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q pt);
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, Marker_tyRef__zSq8dodcWpSdfE0WaiBU9cw)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_LIB_PRIVATE N_NIMCALL(void, copyIdTable__kWmPoTDdSpeN1EEQ59bRmKA)(tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q* dest, tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q src);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, initTypeVars__EZn0NSR9cUjgZYKdEVkzwaA)(tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* typeMap, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* Result);
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NIMCALL(void, initIdTable__Z7fF0Wc4DSB4kCiKZ8rGfQ)(tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q* x);
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_2)(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__B4VUqV7c9b0TyAQyulrWswg)(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* typeMap, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* key);
N_LIB_PRIVATE N_NIMCALL(RootObj*, idTableGet__K5M5T7J9c0H7M5ahfeRl8xw)(tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q t, tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* key);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, handleGenericInvocation__cNsAY9aO2v1oTCPqZyHga1w_3)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, NimStringDesc* errMsg, tyTuple__kN8up2W6YKc5YA9avn5mV5w info2);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, searchInstTypes__rG28W6V18KBAWJ6NSj4dKw)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* key);
static N_INLINE(NI, len__5mJADrRYkP3r9auuiuDZN9cQast)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
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);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lookupTypeVar__cNsAY9aO2v1oTCPqZyHga1w_4)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NOINLINE(void, liMessage__Q6JNH4uRwLyZrj0dJakHew)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w msg, NimStringDesc* arg, tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw eh, tyTuple__kN8up2W6YKc5YA9avn5mV5w info2, NIM_BOOL isRaw);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copyMem__i80o3k0SgEI5gTRCzYdyWAsystem)(void* dest, void* source, NI size);
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, typeToString__QlvraUan7WbHowhAbvDvdA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
N_LIB_PRIVATE 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(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y);
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y);
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__SzeWf39bw6SALsrL5NDJWbQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* owner, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* elem, NIM_BOOL propagateHasAsgn);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newType__SNqpa06pdVCLFFBR28119aQ)(tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE 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_LIB_PRIVATE N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*, newTypeMapLayer__9br9cGVg6OJk0D4slBg4n2Tg)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl);
N_LIB_PRIVATE N_NIMCALL(void, rawAddSon__LW9aGb2JfjdMXhDZwQYa5xg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son, NIM_BOOL propagateHasAsgn);
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, nimGCunrefNoCycle)(void* p);
N_LIB_PRIVATE 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);
static N_INLINE(NimStringDesc*, toFileLineCol__fTQr4TRmeNwYlKvcPy3kYAmsgs)(tyTuple__kN8up2W6YKc5YA9avn5mV5w info);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_LIB_PRIVATE N_NIMCALL(void, addInt__mftMOxbyu0h4yByfs3sqjA)(NimStringDesc** result, NI64 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);
N_LIB_PRIVATE 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*, 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_12)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);

/* section: NIM_merge_DATA */
N_LIB_PRIVATE TNimType NTI__VAXPousy5FCnCEYMcHN9bDQ_;
extern TNimType NTI__9aiv9bp2t5icFNINcg9c4xi1Q_;
N_LIB_PRIVATE TNimType NTI__zSq8dodcWpSdfE0WaiBU9cw_;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_3, "no generic body", 15);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_5, "/home/runner/work/nightlies/nightlies/nim/compiler/semtypinst.n"
"im", 65);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_4 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5),
((NI) 324),
((NI) 17)}
;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_6, "cannot instantiate: \'", 21);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_7, "\'", 1);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_8 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5),
((NI) 294),
((NI) 14)}
;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_9, "substitution with generic parameter", 35);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_10 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5),
((NI) 301),
((NI) 17)}
;
extern TNimType NTI__Ef05srmQTDulnBdXR4Ja6Q_;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_11, "type \'var var\' is not allowed", 29);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_12 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5),
((NI) 19),
((NI) 14)}
;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_13, "\'; Maybe generic arguments are missing\?", 39);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_14 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5),
((NI) 518),
((NI) 14)}
;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_15, "cannot instantiate \'", 20);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_16, "\' inside of type definition: \'", 30);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_17 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5),
((NI) 592),
((NI) 22)}
;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_18, "(", 1);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_19, ", ", 2);
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_20, ")", 1);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_21 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5),
((NI) 611),
((NI) 23)}
;
extern NIM_CONST tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg;
extern TNimType NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_22, "ReplaceTypeVarsN: when condition not a bool", 43);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_23 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5),
((NI) 182),
((NI) 23)}
;
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_24 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5),
((NI) 222),
((NI) 23)}
;
extern TNimType NTI__YceFcaugL2PWNtVbyffD9bQ_;
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_25 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5),
((NI) 25),
((NI) 14)}
;
STRING_LITERAL(TM__mrkrD9c2e31kE4GdQtpMdaQ_26, "illegal recursion in type \'", 27);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__mrkrD9c2e31kE4GdQtpMdaQ_27 = {((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_5),
((NI) 27),
((NI) 14)}
;

/* section: NIM_merge_VARS */
extern tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw eqTypeFlags__9aJCM4BDGbCJ8tj1Vz9bDB7g;
extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;

/* section: NIM_merge_PROCS */
static N_NIMCALL(void, Marker_tyRef__zSq8dodcWpSdfE0WaiBU9cw)(void* p, NI op) {
	tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* a;
	a = (tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*)p;
	nimGCvisit((void*)(*a).topLayer.data, op);
	nimGCvisit((void*)(*a).nextLayer, op);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*, initLayeredTypeMap__B4ANHmRtTNsf0tY0IplCpw)(tyObject_TIdTable__9aiv9bp2t5icFNINcg9c4xi1Q pt) {
	tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* result;
	tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* T1_;
	result = (tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*)0;
	T1_ = (tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*)0;
	T1_ = (tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*) newObj((&NTI__zSq8dodcWpSdfE0WaiBU9cw_), sizeof(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ));
	result = T1_;
	copyIdTable__kWmPoTDdSpeN1EEQ59bRmKA((&(*result).topLayer), pt);
	return result;
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
N_LIB_PRIVATE N_NIMCALL(void, initTypeVars__EZn0NSR9cUjgZYKdEVkzwaA)(tyObject_TContext__C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* typeMap, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* Result) {
	unsureAsgnRef((void**)&(*Result).c, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).typeMap, NIM_NIL);
	(*Result).symMap.counter = 0;
	unsureAsgnRef((void**)&(*Result).symMap.data, NIM_NIL);
	(*Result).localCache.counter = 0;
	unsureAsgnRef((void**)&(*Result).localCache.data, NIM_NIL);
	(*Result).info.line = 0;
	(*Result).info.col = 0;
	(*Result).info.fileIndex = 0;
	(*Result).allowMetaTypes = 0;
	(*Result).skipTypedesc = 0;
	(*Result).isReturnType = 0;
	unsureAsgnRef((void**)&(*Result).owner, NIM_NIL);
	(*Result).recursionLimit = 0;
	initIdTable__Z7fF0Wc4DSB4kCiKZ8rGfQ((&(*Result).symMap));
	initIdTable__Z7fF0Wc4DSB4kCiKZ8rGfQ((&(*Result).localCache));
	unsureAsgnRef((void**) (&(*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__B4VUqV7c9b0TyAQyulrWswg)(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* typeMap, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* key) {
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* tm;
{	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	tm = typeMap;
	{
		while (1) {
			tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T3_;
			RootObj* T4_;
			if (!!((tm == ((tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*) NIM_NIL)))) goto LA2;
			T3_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
			T3_ = &key->Sup;
			T4_ = (RootObj*)0;
			T4_ = idTableGet__K5M5T7J9c0H7M5ahfeRl8xw((*tm).topLayer, T3_);
			result = ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T4_));
			{
				if (!!((result == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA7_;
				goto BeforeRet_;
			}
			LA7_: ;
			tm = (*tm).nextLayer;
		} LA2: ;
	}
	}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(NIM_BOOL, sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((eqTypeFlags__9aJCM4BDGbCJ8tj1Vz9bDB7g & (*a).flags) == (eqTypeFlags__9aJCM4BDGbCJ8tj1Vz9bDB7g & (*b).flags));
	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;
	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_;
		T4_ = ((*key).sons->data[((NI) 0)] == genericTyp);
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T3_ = !(((*genericTyp).sym == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) 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;
		colontmp_ = (*(*genericTyp).sym)._kind_1.typeInstCache;
		i = ((NI) 0);
		T10_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T10_;
		{
			while (1) {
				if (!(i < L)) goto LA12;
				inst = &colontmp_->data[i];
				{
					{
						if (!((*(*inst)).Sup.id == (*key).Sup.id)) goto LA16_;
						result = (*inst);
						goto BeforeRet_;
					}
					LA16_: ;
					{
						NI T20_;
						NI T21_;
						T20_ = (NI)0;
						T20_ = len__5mJADrRYkP3r9auuiuDZN9cQast((*inst));
						T21_ = (NI)0;
						T21_ = len__5mJADrRYkP3r9auuiuDZN9cQast(key);
						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) {
									if (!(res <= colontmp__2)) goto LA33;
									j = res;
									{
										NIM_BOOL T36_;
										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_: ;
									res += ((NI) 1);
								} LA33: ;
							}
						}
						result = (*inst);
						goto BeforeRet_;
					} LA29: ;
				} LA13: ;
				i += ((NI) 1);
			} LA12: ;
		}
	}
	}BeforeRet_: ;
	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__i80o3k0SgEI5gTRCzYdyWAsystem)(void* dest, void* source, NI size) {
	nimCopyMem(dest, source, size);
}
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	{
		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
		copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((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__B4VUqV7c9b0TyAQyulrWswg((*cl).typeMap, t);
	{
		NimStringDesc* T11_;
		NimStringDesc* T12_;
		tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T13_;
		RootObj* T14_;
		if (!(result == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) 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_6));
appendString(T11_, T12_);
appendString(T11_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_7));
		liMessage__Q6JNH4uRwLyZrj0dJakHew((*(*(*cl).c).graph).config, (*(*t).sym).info, ((tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w) 10), T11_, ((tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw) 0), TM__mrkrD9c2e31kE4GdQtpMdaQ_8, NIM_FALSE);
		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_;
		internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw((*(*(*cl).c).graph).config, (*cl).info, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_9), TM__mrkrD9c2e31kE4GdQtpMdaQ_10);
	}
	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_ = ((IL64(1114640907774202176) &((NU64)1<<((NU)((*t).kind)&63U)))!=0);
		if (T7_) goto LA8_;
		T9_ = (NIM_BOOL)0;
		T9_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60));
		if (!(T9_)) goto LA10_;
		T9_ = ((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL));
		LA10_: ;
		T7_ = T9_;
		LA8_: ;
		if (!!(T7_)) goto LA11_;
		(*result).flags = ((*result).flags & ~ 2097664);
	}
	goto LA5_;
	LA11_: ;
	{
		(*result).flags &= ~(((NU64)1) << ((((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 31)) & 63));
	}
	LA5_: ;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
	return result;
}
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem((*c).refcount, ((NI) 8));
}
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
	return result;
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
	NI T1_;
	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = (NI)0;
	T1_ = minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system(((NI) (ptrdiff_t) (usr)), ((NI) 16));
	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	return result;
}
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
	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 = minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system((*c).refcount, ((NI) 8));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem((*c).refcount, ((NI) 8));
		if (!T3_) goto LA4_;
		rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system(c);
	}
	LA4_: ;
}
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_;
{	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 (!((IL64(2268688312287891456) &((NU64)1<<((NU)((*t).kind)&63U)))!=0)) goto LA8_;
		goto BeforeRet_;
	}
	LA8_: ;
	asgnRef((void**) (&(*(*gt).sym)._kind_1.typeInstCache), (tySequence__Ef05srmQTDulnBdXR4Ja6Q*) incrSeqV3((TGenericSeq*)((*(*gt).sym)._kind_1.typeInstCache), (&NTI__Ef05srmQTDulnBdXR4Ja6Q_)));
	T10_ = (*(*gt).sym)._kind_1.typeInstCache->Sup.len++;
	asgnRef((void**) (&(*(*gt).sym)._kind_1.typeInstCache->data[T10_]), inst);
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*, newTypeMapLayer__9br9cGVg6OJk0D4slBg4n2Tg)(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg* cl) {
	tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* result;
	tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* T1_;
	result = (tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*)0;
	T1_ = (tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*)0;
	T1_ = (tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*) newObj((&NTI__zSq8dodcWpSdfE0WaiBU9cw_), sizeof(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ));
	result = T1_;
	asgnRef((void**) (&(*result).nextLayer), (*cl).typeMap);
	initIdTable__Z7fF0Wc4DSB4kCiKZ8rGfQ((&(*result).topLayer));
	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_ = ((IL64(140737496743936) &((NU64)1<<((NU)((*t).kind)&63U)))!=0);
		if (!(T3_)) goto LA4_;
		T3_ = ((IL64(140737496743936) &((NU64)1<<((NU)((*(*t).sons->data[((NI) 0)]).kind)&63U)))!=0);
		LA4_: ;
		if (!T3_) goto LA5_;
		liMessage__Q6JNH4uRwLyZrj0dJakHew(conf, info, ((tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w) 10), ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_11), ((tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw) 0), TM__mrkrD9c2e31kE4GdQtpMdaQ_12, NIM_FALSE);
	}
	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_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* bbody;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* newbody;
	tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* dc;
{	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	body = (*t).sons->data[((NI) 0)];
	{
		if (!!(((*body).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10)))) goto LA3_;
		internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw((*(*(*cl).c).graph).config, (*cl).info, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_3), 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_);
		result = ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T10_));
	}
	goto LA5_;
	LA7_: ;
	{
		result = searchInstTypes__rG28W6V18KBAWJ6NSj4dKw(t);
	}
	LA5_: ;
	{
		NIM_BOOL T14_;
		T14_ = (NIM_BOOL)0;
		T14_ = !((result == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) 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;
				if (!(i_2 < colontmp_)) goto LA20;
				i = i_2;
				x = (*t).sons->data[i];
				{
					if (!((4096 &((NU64)1<<((NU)((*x).kind)&63U)))!=0)) goto LA23_;
					x = lookupTypeVar__cNsAY9aO2v1oTCPqZyHga1w_4(cl, x);
					{
						if (!!((x == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA27_;
						{
							if (!(header == t)) goto LA31_;
							header = instCopyType__cNsAY9aO2v1oTCPqZyHga1w_5(cl, t);
						}
						LA31_: ;
						asgnRef((void**) (&(*header).sons->data[i]), x);
						propagateToOwner__SzeWf39bw6SALsrL5NDJWbQ(header, x, NIM_TRUE);
					}
					LA27_: ;
				}
				goto LA21_;
				LA23_: ;
				{
					propagateToOwner__SzeWf39bw6SALsrL5NDJWbQ(header, x, NIM_TRUE);
				}
				LA21_: ;
				i_2 += ((NI) 1);
			} LA20: ;
		}
	}
	{
		if (!!((header == t))) goto LA36_;
		result = searchInstTypes__rG28W6V18KBAWJ6NSj4dKw(header);
		{
			NIM_BOOL T40_;
			T40_ = (NIM_BOOL)0;
			T40_ = !((result == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) 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_: ;
	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);
	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;
	unsureAsgnRef((void**) (&(*cl).typeMap), newTypeMapLayer__9br9cGVg6OJk0D4slBg4n2Tg(cl));
	{
		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;
				tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T56_;
				RootObj* T57_;
				if (!(i_4 < colontmp__2)) goto LA55;
				i_3 = i_4;
				x_2 = replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, (*t).sons->data[i_3]);
				asgnRef((void**) (&(*header).sons->data[i_3]), x_2);
				propagateToOwner__SzeWf39bw6SALsrL5NDJWbQ(header, x_2, NIM_TRUE);
				T56_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
				T56_ = &(*body).sons->data[(NI)(i_3 - ((NI) 1))]->Sup;
				T57_ = (RootObj*)0;
				T57_ = &x_2->Sup.Sup;
				idTablePut__anELyz7VLsjbCIoxLpxbfQ((&(*(*cl).typeMap).topLayer), T56_, T57_);
				i_4 += ((NI) 1);
			} 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) {
				if (!(i_6 < colontmp__3)) goto LA60;
				i_5 = i_6;
				rawAddSon__LW9aGb2JfjdMXhDZwQYa5xg(result, (*header).sons->data[i_5], NIM_FALSE);
				i_6 += ((NI) 1);
			} LA60: ;
		}
	}
	{
		if (!((*body).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50))) goto LA63_;
		goto BeforeRet_;
	}
	LA63_: ;
	bbody = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(body);
	newbody = replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, bbody);
	(*cl).skipTypedesc = oldSkipTypedesc;
	(*newbody).flags = ((*newbody).flags | (((*t).flags | (*body).flags) & ~ 2097664));
	(*result).flags = (((*result).flags | (*newbody).flags) & ~ 2097664);
	unsureAsgnRef((void**) (&(*cl).typeMap), (*(*cl).typeMap).nextLayer);
	{
		NIM_BOOL T67_;
		T67_ = (NIM_BOOL)0;
		T67_ = isGenericAlias__YPjOkGV9axAnGR3UfLeWZ1g(newbody);
		if (!T67_) goto LA68_;
		newbody = skipGenericAlias__PfgI9ap7WOnsRfFV4znQ27w_3(newbody);
	}
	LA68_: ;
	rawAddSon__LW9aGb2JfjdMXhDZwQYa5xg(result, newbody, NIM_TRUE);
	checkPartialConstructedType__TBCMogG4zgmSdneojQOMAg((*(*(*cl).c).graph).config, (*cl).info, newbody);
	dc = (*newbody).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 5))- 0];
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* mm;
		if (!!((*cl).allowMetaTypes)) goto LA72_;
		{
			NIM_BOOL T76_;
			T76_ = (NIM_BOOL)0;
			T76_ = !((dc == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
			if (!(T76_)) goto LA77_;
			T76_ = !((((*(*newbody).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 5))- 0]).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0));
			LA77_: ;
			if (!T76_) goto LA78_;
			asgnRef((void**) (&(*newbody).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 5))- 0]), (*(*cl).c).instTypeBoundOp((*cl).c, dc, result, (*cl).info, ((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 5), ((NI) 1)));
		}
		LA78_: ;
		{
			if (!((*newbody).typeInst == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA82_;
			asgnRef((void**) (&(*newbody).typeInst), result);
			{
				NIM_BOOL T86_;
				T86_ = (NIM_BOOL)0;
				T86_ = (((*newbody).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 34))&63U)))!=0);
				if (!(T86_)) goto LA87_;
				T86_ = !(((*newbody).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11)));
				LA87_: ;
				if (!T86_) goto LA88_;
				{
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T92_;
					T92_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T92_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(newbody);
					if (!!(((*T92_).typeInst == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA93_;
				}
				goto LA90_;
				LA93_: ;
				{
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T96_;
					T96_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T96_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(newbody);
					asgnRef((void**) (&(*T96_).typeInst), result);
				}
				LA90_: ;
			}
			LA88_: ;
		}
		LA82_: ;
		mm = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(bbody, IL64(36275087638309136));
		{
			tySequence__MvZmat48bhe9b6x9aUD58D5Q* methods;
			if (!!((((*mm).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8))&63U)))!=0))) goto LA99_;
			(*mm).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8)) & 63);
			methods = (*mm).methods;
			{
				NI* col;
				tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w** meth;
				NI i_7;
				NI L;
				NI T102_;
				col = (NI*)0;
				meth = (tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w**)0;
				i_7 = ((NI) 0);
				T102_ = (methods ? methods->Sup.len : 0);
				L = T102_;
				{
					while (1) {
						tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* T105_;
						if (!(i_7 < L)) goto LA104;
						col = (&methods->data[i_7].Field0);
						meth = &methods->data[i_7].Field1;
						T105_ = (tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*)0;
						T105_ = (*(*cl).c).instTypeBoundOp((*cl).c, (*meth), result, (*cl).info, ((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 1), (*col));
						(void)(T105_);
						i_7 += ((NI) 1);
					} LA104: ;
				}
			}
			(*mm).flags &= ~(((NU64)1) << ((((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8)) & 63));
		}
		LA99_: ;
	}
	LA72_: ;
	}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 == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL))) goto LA3_;
		result = ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL);
		goto BeforeRet_;
	}
	LA3_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = !(((*cl).owner == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) 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 &((NU32)1<<((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;
	T1_ = ((*n)._kind_6.sons ? (*n)._kind_6.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 == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)));
		if (!(T4_)) goto LA5_;
		T4_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60));
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T3_ = !(((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) 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_2(n);
	asgnRef((void**) (&(*result).typ), t);
	{
		if (!((*result).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA16_;
		asgnRef((void**) (&(*result)._kind_4.sym), replaceTypeVarsS__sLVA1gNd8WU8o9cEwKvBh9cA(cl, (*n)._kind_4.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) {
				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_;
					add__P8dDSotTW25BkfbyspojGg(result, (*n)._kind_6.sons->data[i]);
				}
				goto LA21_;
				LA25_: ;
				{
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T28_;
					T28_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
					T28_ = prepareNode__gKp9aBprbf0cqtXoSYBnCkw(cl, (*n)._kind_6.sons->data[i]);
					add__P8dDSotTW25BkfbyspojGg(result, T28_);
				}
				LA21_: ;
				i_2 += ((NI) 1);
			} LA20: ;
		}
	}
	}BeforeRet_: ;
	return result;
}
static N_INLINE(void, nimGCunrefNoCycle)(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 == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
		if (!(T3_)) goto LA4_;
		T3_ = ((IL64(70866960384) &((NU64)1<<((NU)((*t).kind)&63U)))!=0);
		LA4_: ;
		if (!T3_) goto LA5_;
		result = copyType__4O4aYoscFPo2FRSh4rP9ayg(t, (*t).owner, NIM_FALSE);
		asgnRef((void**) (&(*result).n), ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL));
	}
	goto LA1_;
	LA5_: ;
	{
		result = t;
	}
	LA1_: ;
	return result;
}
static N_INLINE(NimStringDesc*, toFileLineCol__fTQr4TRmeNwYlKvcPy3kYAmsgs)(tyTuple__kN8up2W6YKc5YA9avn5mV5w info) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	result = resizeString(result, (info.Field0 ? info.Field0->Sup.len : 0) + 0);
appendString(result, info.Field0);
	{
		if (!(((NI) 0) < info.Field1)) goto LA3_;
		result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_18));
		addInt__mftMOxbyu0h4yByfs3sqjA((&result), ((NI64) (info.Field1)));
		{
			if (!(((NI) 0) < (NI)(info.Field2 + ((NI) 1)))) goto LA7_;
			result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_19));
			addInt__mftMOxbyu0h4yByfs3sqjA((&result), ((NI64) ((NI)(info.Field2 + ((NI) 1)))));
		}
		LA7_: ;
		result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_20));
	}
	LA3_: ;
	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):
	{
		propagateToOwner__SzeWf39bw6SALsrL5NDJWbQ(t, (*(*n)._kind_4.sym).typ, NIM_TRUE);
	}
	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) {
						if (!(i_2 < colontmp_)) goto LA10;
						i = i_2;
						son = (*n)._kind_6.sons->data[i];
						propagateFieldFlags__Bjo9aRQCCUN0CrmERULS79bg(t, son);
						i_2 += ((NI) 1);
					} LA10: ;
				}
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, eraseVoidParams__w2l6CVu9bYn8M06fJcMTkHw)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*t).sons->data[((NI) 0)] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)));
		if (!(T3_)) goto LA4_;
		T3_ = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 63));
		LA4_: ;
		if (!T3_) goto LA5_;
		asgnRef((void**) (&(*t).sons->data[((NI) 0)]), ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) 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) {
				if (!(i_2 < colontmp_)) goto LA9;
				i = i_2;
				{
					NI pos;
					if (!((*(*t).sons->data[i]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 63))) goto LA12_;
					pos = i;
					{
						NI j;
						NI colontmp__2;
						NI colontmp__3;
						NI i_3;
						j = (NI)0;
						colontmp__2 = (NI)0;
						colontmp__3 = (NI)0;
						colontmp__2 = (NI)(i + ((NI) 1));
						colontmp__3 = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
						i_3 = colontmp__2;
						{
							while (1) {
								if (!(i_3 < colontmp__3)) goto LA16;
								j = i_3;
								{
									if (!!(((*(*t).sons->data[j]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 63)))) goto LA19_;
									asgnRef((void**) (&(*t).sons->data[pos]), (*t).sons->data[j]);
									asgnRef((void**) (&(*(*t).n)._kind_6.sons->data[pos]), (*(*t).n)._kind_6.sons->data[j]);
									pos += ((NI) 1);
								}
								LA19_: ;
								i_3 += ((NI) 1);
							} LA16: ;
						}
					}
					asgnRef((void**) (&(*t).sons), (tySequence__Ef05srmQTDulnBdXR4Ja6Q*) setLengthSeqV2(&((*t).sons)->Sup, (&NTI__Ef05srmQTDulnBdXR4Ja6Q_), ((NI) (pos))));
					asgnRef((void**) (&(*(*t).n)._kind_6.sons), (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*) setLengthSeqV2(&((*(*t).n)._kind_6.sons)->Sup, (&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_), ((NI) (pos))));
					goto LA7;
				}
				LA12_: ;
				i_2 += ((NI) 1);
			} 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) {
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				{
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* p;
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* skipped;
					p = (*t).sons->data[i];
					{
						if (!(p == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA7_;
						goto LA4;
					}
					LA7_: ;
					skipped = skipIntLit__PyQcLUUKkDYcpwke36Qpxgmagicsys(p);
					{
						if (!!((skipped == p))) goto LA11_;
						asgnRef((void**) (&(*t).sons->data[i]), skipped);
						{
							if (!(((NI) 0) < i)) goto LA15_;
							asgnRef((void**) (&(*(*(*(*t).n)._kind_6.sons->data[i])._kind_4.sym).typ), skipped);
						}
						LA15_: ;
					}
					LA11_: ;
				} LA4: ;
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NIM_BOOL T19_;
		T19_ = (NIM_BOOL)0;
		T19_ = !(((*t).sons->data[((NI) 0)] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)));
		if (!(T19_)) goto LA20_;
		T19_ = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60));
		LA20_: ;
		if (!T19_) goto LA21_;
		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 = ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) 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;
					if (!(i_2 < colontmp_)) goto LA5;
					i = i_2;
					it = (*n)._kind_6.sons->data[i];
					{
						if (!(it == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) 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);
						cond = (*it)._kind_6.sons->data[((NI) 0)];
						e = (*(*cl).c).semConstExpr((*cl).c, cond);
						{
							if (!!(((*e).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6)))) goto LA13_;
							internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw((*(*(*cl).c).graph).config, (*e).info, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_22), TM__mrkrD9c2e31kE4GdQtpMdaQ_23);
						}
						LA13_: ;
						{
							NIM_BOOL T17_;
							T17_ = (NIM_BOOL)0;
							T17_ = !(((*e)._kind_1.intVal == IL64(0)));
							if (!(T17_)) goto LA18_;
							T17_ = (branch == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL));
							LA18_: ;
							if (!T17_) goto LA19_;
							branch = (*it)._kind_6.sons->data[((NI) 1)];
						}
						LA19_: ;
					}
					break;
					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 88):
					{
						checkSonsLen__EezdXeDvu4rB7fR84AJZgw(it, ((NI) 1), (*(*(*cl).c).graph).config);
						{
							if (!(branch == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL))) goto LA24_;
							branch = (*it)._kind_6.sons->data[((NI) 0)];
						}
						LA24_: ;
					}
					break;
					default:
					{
						illFormedAst__aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*cl).c).graph).config);
					}
					break;
					}
					i_2 += ((NI) 1);
				} LA5: ;
			}
		}
		{
			if (!!((branch == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) 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) {
					if (!(i_4 < colontmp__2)) goto LA35;
					i_3 = i_4;
					asgnRef((void**) (&(*n)._kind_6.sons->data[i_3]), replaceObjBranches__Io9bn1sBWaB9bMXajNZg3W5Q(cl, (*n)._kind_6.sons->data[i_3]));
					i_4 += ((NI) 1);
				} 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 == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lookup;
		if (!((IL64(2267562412381048832) &((NU64)1<<((NU)((*t).kind)&63U)))!=0)) goto LA7_;
		lookup = lookup__B4VUqV7c9b0TyAQyulrWswg((*cl).typeMap, t);
		{
			if (!!((lookup == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) 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_6));
appendString(T20_, T21_);
appendString(T20_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_13));
		liMessage__Q6JNH4uRwLyZrj0dJakHew((*(*(*cl).c).graph).config, (*cl).info, ((tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w) 10), T20_, ((tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw) 0), TM__mrkrD9c2e31kE4GdQtpMdaQ_14, NIM_FALSE);
		result = errorType__9aXTnVBVS5pbBC3zrwMhttg((*cl).c);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 61):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n;
		{
			if (!(*cl).allowMetaTypes) goto LA25_;
			goto BeforeRet_;
		}
		LA25_: ;
		n = prepareNode__gKp9aBprbf0cqtXoSYBnCkw(cl, (*t).n);
		{
			if (!!(((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA29_;
			n = (*(*cl).c).semConstExpr((*cl).c, n);
		}
		LA29_: ;
		{
			if (!((*(*n).typ).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA33_;
			result = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*n).typ, 256);
		}
		goto LA31_;
		LA33_: ;
		{
			{
				if (!!(((*(*n).typ).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60)))) goto LA38_;
				result = newTypeS__xb5E2cGIynZweqWlCP8Tig(((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60), (*cl).c);
				if ((*result).sons) { nimGCunrefNoCycle((*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 LA36_;
			LA38_: ;
			{
				result = (*n).typ;
			}
			LA36_: ;
		}
		LA31_: ;
	}
	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__B4VUqV7c9b0TyAQyulrWswg((*cl).typeMap, t);
		{
			if (!!((lookup_2 == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA45_;
			result = lookup_2;
			{
				if (!!(((*result).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8)))) goto LA49_;
				result = makeTypeDesc__BhLel1oiCddEysrc3uc6iQ((*cl).c, result);
			}
			goto LA47_;
			LA49_: ;
			{
				NIM_BOOL T52_;
				T52_ = (NIM_BOOL)0;
				T52_ = (((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0);
				if (T52_) goto LA53_;
				T52_ = (*cl).skipTypedesc;
				LA53_: ;
				if (!T52_) goto LA54_;
				result = base__PfgI9ap7WOnsRfFV4znQ27w(result);
			}
			goto LA47_;
			LA54_: ;
			LA47_: ;
		}
		goto LA43_;
		LA45_: ;
		{
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T59_;
			if (!!(((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 0)))) goto LA57_;
			T59_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T59_ = replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, (*t).sons->data[((NI) 0)]);
			result = makeTypeDesc__BhLel1oiCddEysrc3uc6iQ((*cl).c, T59_);
		}
		goto LA43_;
		LA57_: ;
		LA43_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
	{
		result = t;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53):
	{
		tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T72_;
		RootObj* T73_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T77_;
		{
			tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T66_;
			RootObj* T67_;
			if (!(((NI) 100) < (*cl).recursionLimit)) goto LA64_;
			T66_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
			T66_ = &t->Sup;
			T67_ = (RootObj*)0;
			T67_ = idTableGet__K5M5T7J9c0H7M5ahfeRl8xw((*cl).localCache, T66_);
			result = ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T67_));
			{
				if (!!((result == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA70_;
				goto BeforeRet_;
			}
			LA70_: ;
		}
		LA64_: ;
		(*cl).recursionLimit += ((NI) 1);
		result = instCopyType__cNsAY9aO2v1oTCPqZyHga1w_5(cl, t);
		T72_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
		T72_ = &t->Sup;
		T73_ = (RootObj*)0;
		T73_ = &result->Sup.Sup;
		idTablePut__anELyz7VLsjbCIoxLpxbfQ((&(*cl).localCache), T72_, T73_);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(result);
			i_2 = ((NI) 1);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA76;
					i = i_2;
					asgnRef((void**) (&(*result).sons->data[i]), replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, (*result).sons->data[i]));
					i_2 += ((NI) 1);
				} LA76: ;
			}
		}
		T77_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T77_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(result);
		propagateToOwner__SzeWf39bw6SALsrL5NDJWbQ(result, T77_, NIM_TRUE);
	}
	break;
	default:
	{
		{
			NIM_BOOL T81_;
			tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T94_;
			RootObj* T95_;
			T81_ = (NIM_BOOL)0;
			T81_ = containsGenericType__YPjOkGV9axAnGR3UfLeWZ1g_2(t);
			if (!T81_) goto LA82_;
			{
				tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA* T88_;
				RootObj* T89_;
				if (!(((NI) 100) < (*cl).recursionLimit)) goto LA86_;
				T88_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
				T88_ = &t->Sup;
				T89_ = (RootObj*)0;
				T89_ = idTableGet__K5M5T7J9c0H7M5ahfeRl8xw((*cl).localCache, T88_);
				result = ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T89_));
				{
					if (!!((result == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA92_;
					goto BeforeRet_;
				}
				LA92_: ;
			}
			LA86_: ;
			(*cl).recursionLimit += ((NI) 1);
			result = instCopyType__cNsAY9aO2v1oTCPqZyHga1w_5(cl, t);
			(*result).size = IL64(-1);
			T94_ = (tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA*)0;
			T94_ = &t->Sup;
			T95_ = (RootObj*)0;
			T95_ = &result->Sup.Sup;
			idTablePut__anELyz7VLsjbCIoxLpxbfQ((&(*cl).localCache), T94_, T95_);
			{
				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) {
						if (!(i_4 < colontmp__2)) goto LA98;
						i_3 = i_4;
						{
							tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* r;
							if (!!(((*result).sons->data[i_3] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA101_;
							{
								tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q T107_;
								NimStringDesc* T113_;
								NimStringDesc* T114_;
								if (!((*(*result).sons->data[i_3]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10))) goto LA105_;
								{
									if (!!(((*t).sym == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)))) goto LA110_;
									T107_ = (*(*t).sym).info;
								}
								goto LA108_;
								LA110_: ;
								{
									T107_ = (*cl).info;
								}
								LA108_: ;
								T113_ = (NimStringDesc*)0;
								T114_ = (NimStringDesc*)0;
								T114_ = typeToString__QlvraUan7WbHowhAbvDvdA((*result).sons->data[i_3], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 1));
								T113_ = rawNewString((T114_ ? T114_->Sup.len : 0) + ((*(*(*t).owner).name).s ? (*(*(*t).owner).name).s->Sup.len : 0) + 89);
appendString(T113_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_15));
appendString(T113_, T114_);
appendString(T113_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_16));
appendString(T113_, (*(*(*t).owner).name).s);
appendString(T113_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_13));
								liMessage__Q6JNH4uRwLyZrj0dJakHew((*(*(*cl).c).graph).config, T107_, ((tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w) 10), T113_, ((tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw) 0), TM__mrkrD9c2e31kE4GdQtpMdaQ_17, NIM_FALSE);
							}
							LA105_: ;
							r = replaceTypeVarsT__cNsAY9aO2v1oTCPqZyHga1w(cl, (*result).sons->data[i_3]);
							{
								tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* r2;
								if (!((*result).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA117_;
								r2 = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(r, IL64(105553116266512));
								{
									if (!((6291456 &((NU64)1<<((NU)((*r2).kind)&63U)))!=0)) goto LA121_;
									r = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(r2, 6291456);
								}
								LA121_: ;
							}
							LA117_: ;
							asgnRef((void**) (&(*result).sons->data[i_3]), r);
							{
								NIM_BOOL T125_;
								T125_ = (NIM_BOOL)0;
								T125_ = !(((*result).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16)));
								if (T125_) goto LA126_;
								T125_ = !((i_3 == ((NI) 0)));
								LA126_: ;
								if (!T125_) goto LA127_;
								propagateToOwner__SzeWf39bw6SALsrL5NDJWbQ(result, r, NIM_TRUE);
							}
							LA127_: ;
						}
						LA101_: ;
						i_4 += ((NI) 1);
					} LA98: ;
				}
			}
			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;
				idx = (*result).sons->data[((NI) 0)];
				{
					NimStringDesc* argX60gensym186_;
					if (!!(!(((*idx).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60))))) goto LA132_;
					argX60gensym186_ = toFileLineCol__fTQr4TRmeNwYlKvcPy3kYAmsgs(TM__mrkrD9c2e31kE4GdQtpMdaQ_21);
					internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw((*(*(*cl).c).graph).config, unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg, argX60gensym186_, TM__mrkrD9c2e31kE4GdQtpMdaQ_21);
				}
				LA132_: ;
			}
			break;
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17):
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
			{
				propagateFieldFlags__Bjo9aRQCCUN0CrmERULS79bg(result, (*result).n);
				{
					NIM_BOOL T137_;
					T137_ = (NIM_BOOL)0;
					T137_ = ((*result).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17));
					if (!(T137_)) goto LA138_;
					T137_ = (*(*cl).c).computeRequiresInit((*cl).c, result);
					LA138_: ;
					if (!T137_) goto LA139_;
					(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 18)) & 63);
				}
				LA139_: ;
			}
			break;
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25):
			{
				eraseVoidParams__w2l6CVu9bYn8M06fJcMTkHw(result);
				skipIntLiteralParams__w2l6CVu9bYn8M06fJcMTkHw_2(result);
			}
			break;
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20):
			{
				asgnRef((void**) (&(*result).sons->data[((NI) 0)]), skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*result).sons->data[((NI) 0)], IL64(1152921504606855168)));
			}
			break;
			default:
			{
			}
			break;
			}
		}
		goto LA79_;
		LA82_: ;
		{
			result = t;
			{
				NIM_BOOL T147_;
				NIM_BOOL T148_;
				NIM_BOOL T149_;
				NI T151_;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T156_;
				T147_ = (NIM_BOOL)0;
				T148_ = (NIM_BOOL)0;
				T149_ = (NIM_BOOL)0;
				T149_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22));
				if (!(T149_)) goto LA150_;
				T151_ = (NI)0;
				T151_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
				T149_ = (((NI) 0) < T151_);
				LA150_: ;
				T148_ = T149_;
				if (!(T148_)) goto LA152_;
				T148_ = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17));
				LA152_: ;
				T147_ = T148_;
				if (!(T147_)) goto LA153_;
				T147_ = !(((*(*t).sons->data[((NI) 0)]).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
				LA153_: ;
				if (!T147_) goto LA154_;
				T156_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T156_ = replaceObjBranches__Io9bn1sBWaB9bMXajNZg3W5Q((&(*cl)), (*(*t).sons->data[((NI) 0)]).n);
				(void)(T156_);
			}
			goto LA145_;
			LA154_: ;
			{
				NIM_BOOL T158_;
				T158_ = (NIM_BOOL)0;
				T158_ = !(((*result).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
				if (!(T158_)) goto LA159_;
				T158_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17));
				LA159_: ;
				if (!T158_) goto LA160_;
				(*result).size = IL64(-1);
				asgnRef((void**) (&(*result).n), replaceObjBranches__Io9bn1sBWaB9bMXajNZg3W5Q((&(*cl)), (*result).n));
			}
			goto LA145_;
			LA160_: ;
			LA145_: ;
		}
		LA79_: ;
	}
	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;
	T3_ = ((*(*n)._kind_4.sym).kind == ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 4));
	if (T3_) goto LA4_;
	T5_ = (NIM_BOOL)0;
	T5_ = ((*(*n)._kind_4.sym).kind == ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 7));
	if (!(T5_)) goto LA6_;
	T5_ = (((*(*n)._kind_4.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_;
		T3_ = (((*(*(*n)._kind_6.sons->data[((NI) 0)])._kind_4.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) {
					if (!(i_2 < colontmp_)) goto LA9;
					i = i_2;
					{
						NIM_BOOL T12_;
						T12_ = (NIM_BOOL)0;
						T12_ = isTypeParam__9bQUIWM6kcjKJh9ayHoQtlkg((*n)._kind_6.sons->data[i]);
						if (!T12_) goto LA13_;
						needsFixing = NIM_TRUE;
					}
					LA13_: ;
					i_2 += ((NI) 1);
				} LA9: ;
			}
		}
		{
			if (!needsFixing) goto LA17_;
			asgnRef((void**) (&(*n)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg((*(*(*n)._kind_6.sons->data[((NI) 0)])._kind_4.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) {
				if (!(i_4 < colontmp__2)) goto LA21;
				i_3 = i_4;
				asgnRef((void**) (&(*n)._kind_6.sons->data[i_3]), reResolveCallsWithTypedescParams__gKp9aBprbf0cqtXoSYBnCkw_2(cl, (*n)._kind_6.sons->data[i_3]));
				i_4 += ((NI) 1);
			} 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 == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	result = copyNode__Dsjo9bte8vGxzhtcSrsTyiQ_2(n);
	{
		if (!!(((*n).typ == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) 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):
	{
		asgnRef((void**) (&(*result)._kind_4.sym), replaceTypeVarsS__sLVA1gNd8WU8o9cEwKvBh9cA(cl, (*n)._kind_4.sym));
		{
			if (!((*(*(*result)._kind_4.sym).typ).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 63))) goto LA14_;
			result = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info);
		}
		LA14_: ;
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 140):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* branch;
		branch = ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) 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;
					if (!(i_2 < colontmp_)) goto LA19;
					i = i_2;
					it = (*n)._kind_6.sons->data[i];
					{
						if (!(it == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL))) goto LA22_;
						illFormedAst__aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*cl).c).graph).config);
					}
					LA22_: ;
					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);
						cond = prepareNode__gKp9aBprbf0cqtXoSYBnCkw(cl, (*it)._kind_6.sons->data[((NI) 0)]);
						e = (*(*cl).c).semConstExpr((*cl).c, cond);
						{
							if (!!(((*e).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6)))) goto LA27_;
							internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw((*(*(*cl).c).graph).config, (*e).info, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_22), TM__mrkrD9c2e31kE4GdQtpMdaQ_24);
						}
						LA27_: ;
						{
							NIM_BOOL T31_;
							T31_ = (NIM_BOOL)0;
							T31_ = !(((*e)._kind_1.intVal == IL64(0)));
							if (!(T31_)) goto LA32_;
							T31_ = (branch == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL));
							LA32_: ;
							if (!T31_) goto LA33_;
							branch = (*it)._kind_6.sons->data[((NI) 1)];
						}
						LA33_: ;
					}
					break;
					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 88):
					{
						checkSonsLen__EezdXeDvu4rB7fR84AJZgw(it, ((NI) 1), (*(*(*cl).c).graph).config);
						{
							if (!(branch == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL))) goto LA38_;
							branch = (*it)._kind_6.sons->data[((NI) 0)];
						}
						LA38_: ;
					}
					break;
					default:
					{
						illFormedAst__aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*cl).c).graph).config);
					}
					break;
					}
					i_2 += ((NI) 1);
				} LA19: ;
			}
		}
		{
			if (!!((branch == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA43_;
			result = replaceTypeVarsN__TMTYUYo5YIKojKgBmj9boOQ(cl, branch, ((NI) 0));
		}
		goto LA41_;
		LA43_: ;
		{
			result = newNodeI__vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info);
		}
		LA41_: ;
	}
	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 LA49_;
			result = n_2;
		}
		goto LA47_;
		LA49_: ;
		{
			result = (*(*cl).c).semExpr((*cl).c, n_2, 0);
		}
		LA47_: ;
	}
	break;
	default:
	{
		{
			NI T55_;
			NI T58_;
			T55_ = (NI)0;
			T55_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
			if (!(((NI) 0) < T55_)) goto LA56_;
			T58_ = (NI)0;
			T58_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
			newSons__Bu9cqnssJjx4jfWBeiR9albg(result, T58_);
			{
				if (!(((NI) 0) < start)) goto LA61_;
				asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), (*n)._kind_6.sons->data[((NI) 0)]);
			}
			LA61_: ;
			{
				NI i_3;
				NI colontmp__2;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = len__P89cqdlERShb9alU3iC0yj8wast(n);
				i_4 = start;
				{
					while (1) {
						if (!(i_4 < colontmp__2)) goto LA65;
						i_3 = i_4;
						asgnRef((void**) (&(*result)._kind_6.sons->data[i_3]), replaceTypeVarsN__TMTYUYo5YIKojKgBmj9boOQ(cl, (*n)._kind_6.sons->data[i_3], ((NI) 0)));
						i_4 += ((NI) 1);
					} LA65: ;
				}
			}
		}
		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_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* typeMap;
	tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg cl;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	typeMap = initLayeredTypeMap__B4ANHmRtTNsf0tY0IplCpw(pt);
	nimZeroMem((void*)(&cl), sizeof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg));
	initTypeVars__EZn0NSR9cUjgZYKdEVkzwaA(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 == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)));
		if (!(T4_)) goto LA5_;
		T6_ = (NI)0;
		T6_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
		T4_ = (((NI) 0) < T6_);
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA7_;
		T3_ = !(((*t).sons->data[((NI) 0)] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)));
		LA7_: ;
		if (!T3_) goto LA8_;
		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) {
					if (!(i_2 < colontmp_)) goto LA13;
					i = i_2;
					recomputeFieldPositions__XUkgGL16NQZcptTJ0lg7nQ(((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL), (*obj)._kind_6.sons->data[i], currPosition);
					i_2 += ((NI) 1);
				} LA13: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		recomputeFieldPositions__XUkgGL16NQZcptTJ0lg7nQ(((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL), (*obj)._kind_6.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_;
					if (!(i_4 < colontmp__2)) goto LA17;
					i_3 = i_4;
					T18_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
					T18_ = lastSon__UPSW0jLTX5qJL51YMUAHgw((*obj)._kind_6.sons->data[i_3]);
					recomputeFieldPositions__XUkgGL16NQZcptTJ0lg7nQ(((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL), T18_, currPosition);
					i_4 += ((NI) 1);
				} LA17: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		(*(*obj)._kind_4.sym).position = (*currPosition);
		(*currPosition) += ((NI) 1);
	}
	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_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* typeMap;
	tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg cl;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* objType;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	typeMap = initLayeredTypeMap__B4ANHmRtTNsf0tY0IplCpw(pt);
	nimZeroMem((void*)(&cl), sizeof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg));
	initTypeVars__EZn0NSR9cUjgZYKdEVkzwaA(p, typeMap, info, ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) 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_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ* typeMap;
	tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg cl;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	typeMap = initLayeredTypeMap__B4ANHmRtTNsf0tY0IplCpw(pt);
	nimZeroMem((void*)(&cl), sizeof(tyObject_TReplTypeVars__gMP9b9b8d4Uze3mE5G9aP9afmg));
	initTypeVars__EZn0NSR9cUjgZYKdEVkzwaA(p, typeMap, info, ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) 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* oprX60gensym196_;
			tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* oprX60gensym199_;
			tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* oprX60gensym202_;
			T3_ = ((*c).typesWithOps ? (*c).typesWithOps->Sup.len : 0);
			if (!(i < T3_)) goto LA2;
			newty = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			newty = (*c).typesWithOps->data[i].Field0;
			oldty = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			oldty = (*c).typesWithOps->data[i].Field1;
			oprX60gensym196_ = (*newty).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 0))- 0];
			{
				NIM_BOOL T6_;
				T6_ = (NIM_BOOL)0;
				T6_ = !((oprX60gensym196_ == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
				if (!(T6_)) goto LA7_;
				T6_ = !((((*oprX60gensym196_).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, oprX60gensym196_, oldty, info, ((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 1), ((NI) 1)));
			}
			LA8_: ;
			oprX60gensym199_ = (*newty).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 2))- 0];
			{
				NIM_BOOL T12_;
				T12_ = (NIM_BOOL)0;
				T12_ = !((oprX60gensym199_ == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
				if (!(T12_)) goto LA13_;
				T12_ = !((((*oprX60gensym199_).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, oprX60gensym199_, oldty, info, ((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 1), ((NI) 1)));
			}
			LA14_: ;
			oprX60gensym202_ = (*newty).attachedOps[(((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 1))- 0];
			{
				NIM_BOOL T18_;
				T18_ = (NIM_BOOL)0;
				T18_ = !((oprX60gensym202_ == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
				if (!(T18_)) goto LA19_;
				T18_ = !((((*oprX60gensym202_).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, oprX60gensym202_, oldty, info, ((tyEnum_TTypeAttachedOp__Rp5P9bWYldQTLkZ7DytmxOg) 1), ((NI) 1)));
			}
			LA20_: ;
			i += ((NI) 1);
		} 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 (!((IL64(1114640907774197760) &((NU64)1<<((NU)((*t).kind)&63U)))!=0)) goto LA3_;
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T6_;
		T6_ = (NIM_BOOL)0;
		T6_ = ((IL64(140737496743936) &((NU64)1<<((NU)((*t).kind)&63U)))!=0);
		if (!(T6_)) goto LA7_;
		T6_ = ((IL64(140737496743936) &((NU64)1<<((NU)((*(*t).sons->data[((NI) 0)]).kind)&63U)))!=0);
		LA7_: ;
		if (!T6_) goto LA8_;
		liMessage__Q6JNH4uRwLyZrj0dJakHew(conf, info, ((tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w) 10), ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_11), ((tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw) 0), TM__mrkrD9c2e31kE4GdQtpMdaQ_25, NIM_FALSE);
	}
	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_12(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_26));
appendString(T16_, T17_);
appendString(T16_, ((NimStringDesc*) &TM__mrkrD9c2e31kE4GdQtpMdaQ_7));
		liMessage__Q6JNH4uRwLyZrj0dJakHew(conf, info, ((tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w) 10), T16_, ((tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw) 0), TM__mrkrD9c2e31kE4GdQtpMdaQ_27, NIM_FALSE);
	}
	goto LA1_;
	LA14_: ;
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_semtypinstDatInit000)(void) {

/* section: NIM_merge_TYPE_INIT1 */
static TNimNode* TM__mrkrD9c2e31kE4GdQtpMdaQ_2_2[2];
static TNimNode TM__mrkrD9c2e31kE4GdQtpMdaQ_0[3];

/* section: NIM_merge_TYPE_INIT3 */
NTI__VAXPousy5FCnCEYMcHN9bDQ_.size = sizeof(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ);
NTI__VAXPousy5FCnCEYMcHN9bDQ_.align = NIM_ALIGNOF(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ);
NTI__VAXPousy5FCnCEYMcHN9bDQ_.kind = 18;
NTI__VAXPousy5FCnCEYMcHN9bDQ_.base = 0;
TM__mrkrD9c2e31kE4GdQtpMdaQ_2_2[0] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[1];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[1].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[1].offset = offsetof(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ, topLayer);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[1].typ = (&NTI__9aiv9bp2t5icFNINcg9c4xi1Q_);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[1].name = "topLayer";
TM__mrkrD9c2e31kE4GdQtpMdaQ_2_2[1] = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[2];
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[2].kind = 1;
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[2].offset = offsetof(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ, nextLayer);
TM__mrkrD9c2e31kE4GdQtpMdaQ_0[2].typ = (&NTI__zSq8dodcWpSdfE0WaiBU9cw_);
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__VAXPousy5FCnCEYMcHN9bDQ_.node = &TM__mrkrD9c2e31kE4GdQtpMdaQ_0[0];
NTI__zSq8dodcWpSdfE0WaiBU9cw_.size = sizeof(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*);
NTI__zSq8dodcWpSdfE0WaiBU9cw_.align = NIM_ALIGNOF(tyObject_LayeredIdTablecolonObjectType___VAXPousy5FCnCEYMcHN9bDQ*);
NTI__zSq8dodcWpSdfE0WaiBU9cw_.kind = 22;
NTI__zSq8dodcWpSdfE0WaiBU9cw_.base = (&NTI__VAXPousy5FCnCEYMcHN9bDQ_);
NTI__zSq8dodcWpSdfE0WaiBU9cw_.marker = Marker_tyRef__zSq8dodcWpSdfE0WaiBU9cw;
}

