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

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
#define nimfr_(x, y)
#define nimln_(x, y)
typedef struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw;
typedef struct tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug;
typedef struct tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q;
typedef struct tySequence_Mh9agqM29bm9aP5AUL1x7dZGA tySequence_Mh9agqM29bm9aP5AUL1x7dZGA;
typedef struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w;
typedef struct tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg;
typedef struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q;
typedef struct tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w;
typedef struct RootObj RootObj;
typedef struct tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
typedef struct tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw;
typedef struct tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ;
typedef struct tyObject_TMatchedConcept_9blNHn9cqK8EfxnwsfjDnKvg tyObject_TMatchedConcept_9blNHn9cqK8EfxnwsfjDnKvg;
typedef struct tySequence_DfgJFJEYoj4YBAHLZPl5lQ tySequence_DfgJFJEYoj4YBAHLZPl5lQ;
typedef struct tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg;
typedef struct tyObject_Trunk_ul49aWfv9aes8cutmeltT3gQ tyObject_Trunk_ul49aWfv9aes8cutmeltT3gQ;
typedef struct tySequence_9brg1xNurxcus33lU4IE1Dw tySequence_9brg1xNurxcus33lU4IE1Dw;
typedef struct tySequence_oYkV9aFZe0MXcEAprJaOUsA tySequence_oYkV9aFZe0MXcEAprJaOUsA;
typedef struct tySequence_arD7Tw6eD6lvOczWZl9buNg tySequence_arD7Tw6eD6lvOczWZl9buNg;
typedef struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA;
typedef struct tyObject_TCtx_S3Av1Ng7MBWGEZZBhfDYCw tyObject_TCtx_S3Av1Ng7MBWGEZZBhfDYCw;
typedef struct tySequence_jWKvSdankQPoT5bw9cBU9aiw tySequence_jWKvSdankQPoT5bw9cBU9aiw;
typedef struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA;
typedef struct tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw;
typedef struct tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tySequence_YceFcaugL2PWNtVbyffD9bQ tySequence_YceFcaugL2PWNtVbyffD9bQ;
typedef struct tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA;
typedef struct tySequence_Ef05srmQTDulnBdXR4Ja6Q tySequence_Ef05srmQTDulnBdXR4Ja6Q;
typedef struct tySequence_DXS6mEo7PVUFJkirsQ9bNQA tySequence_DXS6mEo7PVUFJkirsQ9bNQA;
typedef struct tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA;
typedef struct tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA;
typedef struct tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA;
typedef struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ;
typedef struct tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw;
typedef struct tyObject_Table_fdKWDDO1P17zvuQPReVgRA tyObject_Table_fdKWDDO1P17zvuQPReVgRA;
typedef struct tySequence_fdmz6VkIf1ewwrssKYqRFg tySequence_fdmz6VkIf1ewwrssKYqRFg;
typedef struct tyObject_Table_e2Ciu0s1q49aVQ7ULXy7l9bQ tyObject_Table_e2Ciu0s1q49aVQ7ULXy7l9bQ;
typedef struct tySequence_kxu4GK0onha2t9bo86mdVAg tySequence_kxu4GK0onha2t9bo86mdVAg;
typedef struct tySequence_48JTohSgTy339bRxHzUD8KA tySequence_48JTohSgTy339bRxHzUD8KA;
typedef struct tySequence_bWZXqEvLFwhLvAqSRoFNgQ tySequence_bWZXqEvLFwhLvAqSRoFNgQ;
typedef struct tyObject_IncrementalCtx_sdH7TnbKACuAzE7DBabnCA tyObject_IncrementalCtx_sdH7TnbKACuAzE7DBabnCA;
typedef struct tyObject_Table_IioUJGdqPI6xC7S7QF8MBw tyObject_Table_IioUJGdqPI6xC7S7QF8MBw;
typedef struct tySequence_Qr6E8eH7btq79cFKGaJfGLw tySequence_Qr6E8eH7btq79cFKGaJfGLw;
typedef struct tyObject_Table_G1v8c16HePOldLeucwe05Q tyObject_Table_G1v8c16HePOldLeucwe05Q;
typedef struct tySequence_fIB1rTQ55aFonoft9a9bmljQ tySequence_fIB1rTQ55aFonoft9a9bmljQ;
typedef struct tyObject_Table_0Y2brGGKD9bV6GJLXT9aUDgA tyObject_Table_0Y2brGGKD9bV6GJLXT9aUDgA;
typedef struct tySequence_23SMqauuRsbDANhthj9bWlA tySequence_23SMqauuRsbDANhthj9bWlA;
typedef struct tyObject_Table_NttoEzoiq5CiphZe81oadg tyObject_Table_NttoEzoiq5CiphZe81oadg;
typedef struct tySequence_squ9b9bUH4OLHf6cEMrt6hVA tySequence_squ9b9bUH4OLHf6cEMrt6hVA;
typedef struct tyObject_Table_nagDFX4QHx0s6Fvma9blmSg tyObject_Table_nagDFX4QHx0s6Fvma9blmSg;
typedef struct tySequence_pHNq3oXj9av2sEUdqaqeZjw tySequence_pHNq3oXj9av2sEUdqaqeZjw;
typedef struct tySequence_PzqTLBFNawCGiqTk0UORYw tySequence_PzqTLBFNawCGiqTk0UORYw;
typedef struct tySequence_MvZmat48bhe9b6x9aUD58D5Q tySequence_MvZmat48bhe9b6x9aUD58D5Q;
typedef struct tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack_7fytPA5bBsob6See21YMRA tyObject_GcStack_7fytPA5bBsob6See21YMRA;
typedef struct tyObject_MemRegion_x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion_x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk_tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk_tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk_Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk_Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk_XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk_XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet_EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet_EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk_W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk_W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple_ujsjpB2O9cjj3uDHsXbnSzg tyTuple_ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat_0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat_0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_CellSet_jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet_jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc_fublkgIY4LG3mT51LU2WHg tyObject_PageDesc_fublkgIY4LG3mT51LU2WHg;
typedef struct tyTuple_zwpS6d6iewrdlBSTNFoyVA tyTuple_zwpS6d6iewrdlBSTNFoyVA;
typedef struct tyTuple_kN8up2W6YKc5YA9avn5mV5w tyTuple_kN8up2W6YKc5YA9avn5mV5w;
typedef struct tyObject_Target_9abOl5DLX8suLujOaHSvGzw tyObject_Target_9abOl5DLX8suLujOaHSvGzw;
typedef struct tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg;
typedef struct tyObject_MsgConfig_kV7r8HWT0SqOYW2k2ukC6A tyObject_MsgConfig_kV7r8HWT0SqOYW2k2ukC6A;
typedef struct tySequence_tNFrR3kRuS1FSwuiLGoSSA tySequence_tNFrR3kRuS1FSwuiLGoSSA;
typedef struct tyObject_Table_Ab4q9c36aMR4mtkEOIBzdzA tyObject_Table_Ab4q9c36aMR4mtkEOIBzdzA;
typedef struct tySequence_7lEisrXlQEzwtUKW5pzRCw tySequence_7lEisrXlQEzwtUKW5pzRCw;
typedef struct tySequence_Zi9cGbCWofbtABoHJ5RbLNQ tySequence_Zi9cGbCWofbtABoHJ5RbLNQ;
typedef struct tyObject_HashSet_CD8Dpv0WGmASelVaNSo6zg tyObject_HashSet_CD8Dpv0WGmASelVaNSo6zg;
typedef struct tySequence_4eRCaZmrYLLw2k30GPTiMw tySequence_4eRCaZmrYLLw2k30GPTiMw;
typedef struct tySequence_sM4lkSb7zS6F7OVMvW9cffQ tySequence_sM4lkSb7zS6F7OVMvW9cffQ;
typedef struct tySequence_pK3qSsBZwdXd6qyUMkd5Jw tySequence_pK3qSsBZwdXd6qyUMkd5Jw;
typedef struct tyObject_SuggestcolonObjectType__bkMuTTb2G70XfpzAiyNrnQ tyObject_SuggestcolonObjectType__bkMuTTb2G70XfpzAiyNrnQ;
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_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;
typedef struct tyTuple_z822nu9bFF1AlQnLrHjdwpA tyTuple_z822nu9bFF1AlQnLrHjdwpA;
typedef struct tyTuple_xYhUhS7X82rKTqbT9bRfCnw tyTuple_xYhUhS7X82rKTqbT9bRfCnw;
typedef struct tyObject_TFileInfo_GE3hAakXKOEpch4ap3zXAw tyObject_TFileInfo_GE3hAakXKOEpch4ap3zXAw;
typedef struct tyTuple_QeWl6B6ffS4pU6WWrtcrDw tyTuple_QeWl6B6ffS4pU6WWrtcrDw;
typedef struct tyObject_Cfile_i9cKq1ZGd1wgagjUEHLVFtg tyObject_Cfile_i9cKq1ZGd1wgagjUEHLVFtg;
struct tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q {
NI counter;
tySequence_Mh9agqM29bm9aP5AUL1x7dZGA* data;
};
struct tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA {
tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q topLayer;
tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* nextLayer;
};
typedef NU8 tyEnum_TNimKind_jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag_v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc_ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc_WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
tyEnum_TNimKind_jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag_v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc_ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc_WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q {
NU16 line;
NI16 col;
NI32 fileIndex;
};
struct tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg {
tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* c;
tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap;
tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q symMap;
tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q localCache;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
NIM_BOOL allowMetaTypes;
NIM_BOOL skipTypedesc;
NIM_BOOL isReturnType;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
NI recursionLimit;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w {
  RootObj Sup;
};
typedef NI tyArray_emiAJ8okywrJw7ZHLzlXbQ[34];
struct tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg {
NI elems;
NI counter;
NI max;
tyObject_Trunk_ul49aWfv9aes8cutmeltT3gQ* head;
tySequence_9brg1xNurxcus33lU4IE1Dw* data;
tyArray_emiAJ8okywrJw7ZHLzlXbQ a;
};
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_RcJNn9bSvWdJgUmA1O6sbHA) (tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
typedef NU32 tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ;
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_39auogS0nN05zO6JrT7za9cQ) (tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
typedef NU32 tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw;
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_qlV9aWvA5wrWVg9bI5PqwJyA) (tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw filter, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
typedef N_NIMCALL_PTR(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, tyProc_PiEiMdzXg9bcm3lEo4Q6iNw) (tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
typedef struct {
N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, ClP_0) (tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, void* ClE_0);
void* ClE_0;
} tyProc_icITxWxlFufT9aDDCEKD2VQ;
typedef struct {
N_NIMCALL_PTR(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, ClP_0) (tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, void* ClE_0);
void* ClE_0;
} tyProc_GeenfmDntvGEQoCko16JtA;
struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA {
NI counter;
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* data;
};
typedef NU8 tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg;
typedef N_NIMCALL_PTR(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, tyProc_9amcenQyXzP9cCQNnXZVgnYQ) (tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* dc, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg op, NI col);
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NU16 tySet_tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ;
struct tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug {
  tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w Sup;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* enforceVoidContext;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module;
tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* currentScope;
tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* importTable;
tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* topLevelScope;
tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ* p;
tyObject_TMatchedConcept_9blNHn9cqK8EfxnwsfjDnKvg* matchedConcept;
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* friendModules;
NI instCounter;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg ambiguousSymbols;
NI inGenericContext;
NI inStaticContext;
NI inUnrolledContext;
NI compilesContextId;
NI compilesContextIdGenerator;
NI inGenericInst;
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* converters;
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* patterns;
tySequence_oYkV9aFZe0MXcEAprJaOUsA* optionStack;
tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q symMapping;
tySequence_arD7Tw6eD6lvOczWZl9buNg* libs;
tyProc_RcJNn9bSvWdJgUmA1O6sbHA semConstExpr;
tyProc_39auogS0nN05zO6JrT7za9cQ semExpr;
tyProc_39auogS0nN05zO6JrT7za9cQ semTryExpr;
tyProc_RcJNn9bSvWdJgUmA1O6sbHA semTryConstExpr;
tyProc_39auogS0nN05zO6JrT7za9cQ semOperand;
tyProc_RcJNn9bSvWdJgUmA1O6sbHA semConstBoolExpr;
tyProc_qlV9aWvA5wrWVg9bI5PqwJyA semOverloadedCall;
tyProc_PiEiMdzXg9bcm3lEo4Q6iNw semTypeNode;
tyProc_icITxWxlFufT9aDDCEKD2VQ semInferredLambda;
tyProc_GeenfmDntvGEQoCko16JtA semGenerateInstance;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg includedFiles;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA pureEnumFields;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA userPragmas;
tyObject_TCtx_S3Av1Ng7MBWGEZZBhfDYCw* evalContext;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg unknownIdents;
tySequence_jWKvSdankQPoT5bw9cBU9aiw* generics;
NI topStmts;
NI lastGenericIdx;
NI hloLoopDetector;
NI inParallelStmt;
tyProc_9amcenQyXzP9cCQNnXZVgnYQ instTypeBoundOp;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* selfName;
tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache;
tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA signatures;
NimStringDesc* recursiveDep;
NIM_BOOL suggestionsMade;
tySet_tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ features;
NI inTypeContext;
tySequence_YceFcaugL2PWNtVbyffD9bQ* typesWithOps;
};
struct tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA {
  RootObj Sup;
NI id;
};
typedef NU8 tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw;
typedef NU16 tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg;
typedef NU64 tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw;
typedef NU32 tySet_tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg;
typedef NU8 tyEnum_TLocKind_O7PRFZKuiBBWbku09cayVBg;
typedef NU8 tyEnum_TStorageLoc_JK9cKMX3XnqHaUky9b6gkGEw;
typedef NU16 tySet_tyEnum_TLocFlag_o2bqJgR4ceIupnUSpxiudA;
struct tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA {
tyEnum_TLocKind_O7PRFZKuiBBWbku09cayVBg k;
tyEnum_TStorageLoc_JK9cKMX3XnqHaUky9b6gkGEw storage;
tySet_tyEnum_TLocFlag_o2bqJgR4ceIupnUSpxiudA flags;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* lode;
tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* r;
};
struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind;
union{
struct {tySequence_Ef05srmQTDulnBdXR4Ja6Q* typeInstCache;
};
struct {tySequence_DXS6mEo7PVUFJkirsQ9bNQA* procInstCache;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* gcUnsafetyReason;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* transformedBody;
};
struct {tySequence_DXS6mEo7PVUFJkirsQ9bNQA* usedGenerics;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tab;
};
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* guard;
NI bitsize;
};
};
tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg magic;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* name;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw flags;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ast;
tySet_tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg options;
NI position;
NI offset;
tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA* annex;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* constraint;
};
typedef NU32 tySet_tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg;
typedef NU8 tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw;
struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw {
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
tySet_tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg flags;
tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind;
union{
struct {NI64 intVal;
};
struct {NF floatVal;
};
struct {NimStringDesc* strVal;
};
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
};
struct {tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
};
struct {tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
};
};
NimStringDesc* comment;
};
struct tyObject_Table_fdKWDDO1P17zvuQPReVgRA {
tySequence_fdmz6VkIf1ewwrssKYqRFg* data;
NI counter;
};
struct tyObject_Table_e2Ciu0s1q49aVQ7ULXy7l9bQ {
tySequence_kxu4GK0onha2t9bo86mdVAg* data;
NI counter;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClP_0) (void* ClE_0);
void* ClE_0;
} tyProc_xdLb0cyzx3FuM6Q4NnRTpQ;
typedef tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tyArray_OLX364rHC66WkzRbMp49aQg[64];
typedef tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tyArray_6GDJmNRiFxkWAAdMgUie8g[70];
struct tyObject_IncrementalCtx_sdH7TnbKACuAzE7DBabnCA {
char dummy;
};
struct tyObject_Table_IioUJGdqPI6xC7S7QF8MBw {
tySequence_Qr6E8eH7btq79cFKGaJfGLw* data;
NI counter;
};
struct tyObject_Table_G1v8c16HePOldLeucwe05Q {
tySequence_fIB1rTQ55aFonoft9a9bmljQ* data;
NI counter;
};
typedef N_NIMCALL_PTR(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, tyProc_c6vdo1yHyj19b9bS17tijS2w) (tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m, NI32 fileIdx);
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_d5yEkT9aXkAtHvVerr7IeCQ) (tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m, NI32 fileIdx);
typedef N_NIMCALL_PTR(void, tyProc_sP1I7TbCn358eLy9bX4IphA) (tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
struct tyObject_Table_0Y2brGGKD9bV6GJLXT9aUDgA {
tySequence_23SMqauuRsbDANhthj9bWlA* data;
NI counter;
};
struct tyObject_Table_NttoEzoiq5CiphZe81oadg {
tySequence_squ9b9bUH4OLHf6cEMrt6hVA* data;
NI counter;
};
struct tyObject_Table_nagDFX4QHx0s6Fvma9blmSg {
tySequence_pHNq3oXj9av2sEUdqaqeZjw* data;
NI counter;
};
typedef N_NIMCALL_PTR(void, tyProc_R9aa9aO9cNhvWgTGK9bAAvuSRA) (tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
struct tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ {
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* modules;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA packageSyms;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg deps;
tyObject_Table_fdKWDDO1P17zvuQPReVgRA importDeps;
NIM_BOOL suggestMode;
NIM_BOOL invalidTransitiveClosure;
tyObject_Table_e2Ciu0s1q49aVQ7ULXy7l9bQ inclToMod;
tySequence_48JTohSgTy339bRxHzUD8KA* importStack;
RootObj* backend;
tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* config;
tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache;
RootObj* vm;
tyProc_xdLb0cyzx3FuM6Q4NnRTpQ doStopCompile;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* usageSym;
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* owners;
tySequence_bWZXqEvLFwhLvAqSRoFNgQ* methods;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* systemModule;
tyArray_OLX364rHC66WkzRbMp49aQg sysTypes;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA compilerprocs;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA exposed;
tyArray_6GDJmNRiFxkWAAdMgUie8g intTypeCache;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* opContains;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* opNot;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* emptyNode;
tyObject_IncrementalCtx_sdH7TnbKACuAzE7DBabnCA incr;
tyObject_Table_IioUJGdqPI6xC7S7QF8MBw canonTypes;
tyObject_Table_G1v8c16HePOldLeucwe05Q symBodyHashes;
tyProc_c6vdo1yHyj19b9bS17tijS2w importModuleCallback;
tyProc_d5yEkT9aXkAtHvVerr7IeCQ includeFileCallback;
tyProc_sP1I7TbCn358eLy9bX4IphA recordStmt;
tyObject_Table_0Y2brGGKD9bV6GJLXT9aUDgA cacheSeqs;
tyObject_Table_NttoEzoiq5CiphZe81oadg cacheCounters;
tyObject_Table_nagDFX4QHx0s6Fvma9blmSg cacheTables;
tySequence_PzqTLBFNawCGiqTk0UORYw* passes;
tyProc_R9aa9aO9cNhvWgTGK9bAAvuSRA onDefinition;
tyProc_R9aa9aO9cNhvWgTGK9bAAvuSRA onDefinitionResolveForward;
tyProc_R9aa9aO9cNhvWgTGK9bAAvuSRA onUsage;
tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* globalDestructors;
};
typedef NU8 tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA;
typedef NU64 tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
typedef tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* tyArray_PsPyPA45AAjHu4uDGHNjTg[4];
struct tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind;
tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA callConv;
tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw flags;
tySequence_Ef05srmQTDulnBdXR4Ja6Q* sons;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
tyArray_PsPyPA45AAjHu4uDGHNjTg attachedOps;
tySequence_MvZmat48bhe9b6x9aUD58D5Q* methods;
NI64 size;
NI16 align;
NI16 lockLevel;
tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeInst;
NI uniqueId;
};
typedef NU8 tyEnum_TDistinctCompare_9bNKHGs63atuMFXnAleTveg;
typedef NU8 tySet_tyEnum_TTypeCmpFlag_72pgRXSg7774cr9aCWVPORw;
typedef NU8 tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
typedef NU8 tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw;
struct tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack_7fytPA5bBsob6See21YMRA {
void* bottom;
};
struct tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w {
NI len;
NI cap;
tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef tyObject_SmallChunk_tXn60W2f8h3jgAYdEmy5NQ* tyArray_SiRwrEKZdLgxqz9a9aoVBglg[512];
typedef NU32 tyArray_BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk_Rv9c70Uhp2TytkX7eH78qEg* tyArray_N1u1nqOgmuJN9cSZrnMHgOQ[32];
typedef tyArray_N1u1nqOgmuJN9cSZrnMHgOQ tyArray_B6durA4ZCi1xjJvRtyYxMg[24];
typedef tyObject_Trunk_W0r8S0Y3UGke6T9bIUWnnuw* tyArray_lh2A89ahMmYg9bCmpVaplLbA[256];
struct tyObject_IntSet_EZObFrE3NC9bIb3YMkY9crZA {
tyArray_lh2A89ahMmYg9bCmpVaplLbA data;
};
typedef tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw* tyArray_0aOLqZchNi8nWtMTi8ND8w[2];
struct tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw {
tyArray_0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple_ujsjpB2O9cjj3uDHsXbnSzg {
tyObject_BigChunk_Rv9c70Uhp2TytkX7eH78qEg* Field0;
NI Field1;
};
typedef tyTuple_ujsjpB2O9cjj3uDHsXbnSzg tyArray_LzOv2eCDGiceMKQstCLmhw[30];
struct tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg {
NI len;
tyArray_LzOv2eCDGiceMKQstCLmhw chunks;
tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg* next;
};
struct tyObject_MemRegion_x81NhDv59b8ercDZ9bi85jyg {
NI minLargeObj;
NI maxLargeObj;
tyArray_SiRwrEKZdLgxqz9a9aoVBglg freeSmallChunks;
NU32 flBitmap;
tyArray_BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray_B6durA4ZCi1xjJvRtyYxMg matrix;
tyObject_LLChunk_XsENErzHIZV9bhvyJx56wGw* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet_EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw* root;
tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw* deleted;
tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw* last;
tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw bottomData;
tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
};
struct tyObject_GcStat_0RwLoVBHZPfUAcLczmfQAg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet_jG87P0AI9aZtss9ccTYBIISQ {
NI counter;
NI max;
tyObject_PageDesc_fublkgIY4LG3mT51LU2WHg* head;
tyObject_PageDesc_fublkgIY4LG3mT51LU2WHg** data;
};
struct tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack_7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w zct;
tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w decStack;
tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion_x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat_0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_CellSet_jG87P0AI9aZtss9ccTYBIISQ marked;
tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w additionalRoots;
NI gcThreadId;
};
typedef NU8 tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw;
typedef NU64 tySet_tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag;
struct tyTuple_zwpS6d6iewrdlBSTNFoyVA {
NI Field0;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* Field1;
};
typedef NU8 tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw[21];
struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
NimStringDesc* s;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* next;
NI h;
};
struct tyTuple_kN8up2W6YKc5YA9avn5mV5w {
NimStringDesc* Field0;
NI Field1;
NI Field2;
};
typedef NU8 tyEnum_TSystemCPU_XYDt7D1G3qcClFyZy1Ky9ag;
typedef NU8 tyEnum_TSystemOS_s7Mlr1t66SUqP6BKJMXLaQ;
struct tyObject_Target_9abOl5DLX8suLujOaHSvGzw {
tyEnum_TSystemCPU_XYDt7D1G3qcClFyZy1Ky9ag targetCPU;
tyEnum_TSystemCPU_XYDt7D1G3qcClFyZy1Ky9ag hostCPU;
tyEnum_TSystemOS_s7Mlr1t66SUqP6BKJMXLaQ targetOS;
tyEnum_TSystemOS_s7Mlr1t66SUqP6BKJMXLaQ hostOS;
NI intSize;
NI floatSize;
NI ptrSize;
NimStringDesc* tnl;
};
typedef NU64 tySet_tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw;
typedef NU8 tySet_tyEnum_TErrorOutput_fBf8Teueoz9aAkO5cXaxrpA;
struct tyObject_Table_Ab4q9c36aMR4mtkEOIBzdzA {
tySequence_7lEisrXlQEzwtUKW5pzRCw* data;
NI counter;
};
struct tyObject_MsgConfig_kV7r8HWT0SqOYW2k2ukC6A {
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q trackPos;
NIM_BOOL trackPosAttached;
tySet_tyEnum_TErrorOutput_fBf8Teueoz9aAkO5cXaxrpA errorOutputs;
tySequence_tNFrR3kRuS1FSwuiLGoSSA* msgContext;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q lastError;
tyObject_Table_Ab4q9c36aMR4mtkEOIBzdzA filenameToIndexTbl;
tySequence_Zi9cGbCWofbtABoHJ5RbLNQ* fileInfos;
NI32 systemFileIdx;
};
typedef NU8 tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw;
typedef NU8 tyEnum_TGCMode_tkz389aDYNd8ykeZszCuBSw;
typedef NU8 tyEnum_SymbolFilesOption_gBES9bqm1ru9ape8SeMRAFgQ;
struct tyObject_HashSet_CD8Dpv0WGmASelVaNSo6zg {
tySequence_4eRCaZmrYLLw2k30GPTiMw* data;
NI counter;
};
typedef NU8 tyEnum_IdeCmd_1Ced39bl5eePmZ1PKMPXigQ;
typedef NU8 tyEnum_TSystemCC_1eWBJUonHMOnlBwsOvpFmA;
typedef NU64 tySet_tyEnum_TMsgKind_Ns87ee9bXonvIM8SMewfbmA;
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (tyObject_SuggestcolonObjectType__bkMuTTb2G70XfpzAiyNrnQ* result, void* ClE_0);
void* ClE_0;
} tyProc_QYEVXrYc9beQ379crS3rzqRA;
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (NimStringDesc* output, void* ClE_0);
void* ClE_0;
} tyProc_Q1W5D85O9cNu3iq9cZ9alS9aWA;
typedef NU8 tyEnum_Severity_x5BWBPGAbIH9clm5pmNp5DA;
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* config, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* msg, tyEnum_Severity_x5BWBPGAbIH9clm5pmNp5DA severity, void* ClE_0);
void* ClE_0;
} tyProc_22mgIiTBBoqNe1T0FSw9ahQ;
struct tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw {
tyObject_Target_9abOl5DLX8suLujOaHSvGzw target;
NI linesCompiled;
tySet_tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg options;
tySet_tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw globalOptions;
tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg* macrosToExpand;
tyObject_MsgConfig_kV7r8HWT0SqOYW2k2ukC6A m;
NI evalTemplateCounter;
NI evalMacroCounter;
NI8 exitcode;
tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw cmd;
tyEnum_TGCMode_tkz389aDYNd8ykeZszCuBSw selectedGC;
NI verbosity;
NI numberOfProcessors;
NimStringDesc* evalExpr;
NF lastCmdTime;
tyEnum_SymbolFilesOption_gBES9bqm1ru9ape8SeMRAFgQ symbolFiles;
tyObject_HashSet_CD8Dpv0WGmASelVaNSo6zg cppDefines;
NimStringDesc* headerFile;
tySet_tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ features;
NimStringDesc* arguments;
tyEnum_IdeCmd_1Ced39bl5eePmZ1PKMPXigQ ideCmd;
NIM_BOOL oldNewlines;
tyEnum_TSystemCC_1eWBJUonHMOnlBwsOvpFmA cCompiler;
tySet_tyEnum_TMsgKind_Ns87ee9bXonvIM8SMewfbmA enableNotes;
tySet_tyEnum_TMsgKind_Ns87ee9bXonvIM8SMewfbmA disableNotes;
tySet_tyEnum_TMsgKind_Ns87ee9bXonvIM8SMewfbmA foreignPackageNotes;
tySet_tyEnum_TMsgKind_Ns87ee9bXonvIM8SMewfbmA notes;
tySet_tyEnum_TMsgKind_Ns87ee9bXonvIM8SMewfbmA mainPackageNotes;
NI mainPackageId;
NI errorCounter;
NI hintCounter;
NI warnCounter;
NI errorMax;
tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg* configVars;
tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg* symbols;
tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg* packageCache;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* searchPaths;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* lazyPaths;
NimStringDesc* outFile;
NimStringDesc* outDir;
NimStringDesc* prefixDir;
NimStringDesc* libpath;
NimStringDesc* nimcacheDir;
tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg* dllOverrides;
tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg* moduleOverrides;
NimStringDesc* projectName;
NimStringDesc* projectPath;
NimStringDesc* projectFull;
NIM_BOOL projectIsStdin;
NI32 projectMainIdx;
NimStringDesc* command;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* commandArgs;
NIM_BOOL keepComments;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* implicitImports;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* implicitIncludes;
NimStringDesc* docSeeSrcUrl;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* cIncludes;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* cLibs;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* cLinkedLibs;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* externalToLink;
NimStringDesc* linkOptionsCmd;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* compileOptionsCmd;
NimStringDesc* linkOptions;
NimStringDesc* compileOptions;
NimStringDesc* ccompilerpath;
tySequence_pK3qSsBZwdXd6qyUMkd5Jw* toCompile;
tyProc_QYEVXrYc9beQ379crS3rzqRA suggestionResultHook;
NI suggestVersion;
NI suggestMaxResults;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q lastLineInfo;
tyProc_Q1W5D85O9cNu3iq9cZ9alS9aWA writelnHook;
tyProc_22mgIiTBBoqNe1T0FSw9ahQ structuredErrorHook;
NimStringDesc* cppCustomNamespace;
};
typedef NU8 tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw;
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_1mtQ8sCEE7DbfIuQciv9b5Q {
NI Field0;
NI32 Field1;
tySequence_48JTohSgTy339bRxHzUD8KA* Field2;
};
struct tyTuple_xDU9bZmv1ZbZkJDaATBekIQ {
NI Field0;
NI32 Field1;
NI32 Field2;
};
struct tyTuple_quA39a2QdEQU9cSEIUSibApQ {
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* Field0;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* Field1;
};
typedef NU8 tyArray_qtqsWM5aXmcpMIVmvq3kAA[16];
struct tyTuple_EkGTYRWQ6y9cppXTlT8Xm5g {
NI Field0;
tyArray_qtqsWM5aXmcpMIVmvq3kAA Field1;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* Field2;
};
struct tyTuple_OJFzEczluV8Jmo9bRpBfkzw {
NI Field0;
NI Field1;
tyArray_qtqsWM5aXmcpMIVmvq3kAA Field2;
};
struct tyTuple_2SGm9aGCXuo7XSQ9bqD29axXw {
NI Field0;
NimStringDesc* Field1;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* Field2;
};
struct tyTuple_F3gkSrMB1qp2Tvf9bixVXwg {
NI Field0;
NimStringDesc* Field1;
NI64 Field2;
};
struct tyObject_BTree_VZdzO0Tlflp7WMN4gS8oPg {
tyObject_NodecolonObjectType__dNELmBSmY7nthjhZupWO6g* root;
NI entries;
};
struct tyTuple_wcNatyuf8WOqAhGLhSvgiw {
NI Field0;
NimStringDesc* Field1;
tyObject_BTree_VZdzO0Tlflp7WMN4gS8oPg Field2;
};
typedef N_NIMCALL_PTR(tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w*, tyProc_8ooe5vdoqmvpHnfXV29bP3w) (tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module);
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_A7Sdoem70tRxSEmKrf9cmyg) (tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* topLevelStmt);
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_EAEKmBUgKFg29agoUGtzDEQ) (tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
struct tyTuple_euPCXX9bc3XzndEhYlqNS7g {
tyProc_8ooe5vdoqmvpHnfXV29bP3w Field0;
tyProc_A7Sdoem70tRxSEmKrf9cmyg Field1;
tyProc_EAEKmBUgKFg29agoUGtzDEQ Field2;
NIM_BOOL Field3;
};
struct tyTuple_z822nu9bFF1AlQnLrHjdwpA {
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q Field0;
NimStringDesc* Field1;
};
struct tyTuple_xYhUhS7X82rKTqbT9bRfCnw {
NI Field0;
NimStringDesc* Field1;
NI32 Field2;
};
struct tyObject_TFileInfo_GE3hAakXKOEpch4ap3zXAw {
NimStringDesc* fullPath;
NimStringDesc* projPath;
NimStringDesc* shortName;
tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* quotedName;
tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* quotedFullName;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* lines;
NimStringDesc* dirtyfile;
NimStringDesc* hash;
NIM_BOOL dirty;
};
struct tyTuple_QeWl6B6ffS4pU6WWrtcrDw {
NI Field0;
NimStringDesc* Field1;
};
typedef NU8 tySet_tyEnum_CfileFlag_Vl9c9ayddDuXiWtnWTsEYGsA;
struct tyObject_Cfile_i9cKq1ZGd1wgagjUEHLVFtg {
NimStringDesc* nimname;
NimStringDesc* cname;
NimStringDesc* obj;
tySet_tyEnum_CfileFlag_Vl9c9ayddDuXiWtnWTsEYGsA flags;
};
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_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];
};
struct tySequence_tNFrR3kRuS1FSwuiLGoSSA {
  TGenericSeq Sup;
  tyTuple_z822nu9bFF1AlQnLrHjdwpA data[SEQ_DECL_SIZE];
};
struct tySequence_7lEisrXlQEzwtUKW5pzRCw {
  TGenericSeq Sup;
  tyTuple_xYhUhS7X82rKTqbT9bRfCnw data[SEQ_DECL_SIZE];
};
struct tySequence_Zi9cGbCWofbtABoHJ5RbLNQ {
  TGenericSeq Sup;
  tyObject_TFileInfo_GE3hAakXKOEpch4ap3zXAw data[SEQ_DECL_SIZE];
};
struct tySequence_4eRCaZmrYLLw2k30GPTiMw {
  TGenericSeq Sup;
  tyTuple_QeWl6B6ffS4pU6WWrtcrDw data[SEQ_DECL_SIZE];
};
struct tySequence_sM4lkSb7zS6F7OVMvW9cffQ {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct tySequence_pK3qSsBZwdXd6qyUMkd5Jw {
  TGenericSeq Sup;
  tyObject_Cfile_i9cKq1ZGd1wgagjUEHLVFtg data[SEQ_DECL_SIZE];
};
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, initLayeredTypeMap_CUPvqqdAvE7lW4r3YvsLsQ)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_LIB_PRIVATE N_NIMCALL(void, copyIdTable_kWmPoTDdSpeN1EEQ59bRmKA)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q* dest, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q src);
N_LIB_PRIVATE N_NIMCALL(void, initTypeVars_Xi1rcYNuDZinU29bL68QCog)(tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* Result);
N_LIB_PRIVATE N_NIMCALL(void, initIdTable_Z7fF0Wc4DSB4kCiKZ8rGfQ)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q* x);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NIMCALL(void, pushInfoContext_uDLK9aoAOWwwFTev4NOwF7Q)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* detail);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, replaceTypeVarsN_TMTYUYo5YIKojKgBmj9boOQ)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NI start);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, copyNode_Dsjo9bte8vGxzhtcSrsTyiQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* src);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, replaceTypeVarsTAux_cNsAY9aO2v1oTCPqZyHga1w_2)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lookup_bvHwbVO9aaeW8QVm81fQN3w)(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* key);
N_LIB_PRIVATE N_NIMCALL(RootObj*, idTableGet_K5M5T7J9c0H7M5ahfeRl8xw)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q t, tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* key);
N_NIMCALL(void, chckObj)(TNimType* obj, TNimType* subclass);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, handleGenericInvocation_cNsAY9aO2v1oTCPqZyHga1w_3)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
N_LIB_PRIVATE N_NIMCALL(void, internalError_yTu5SGHF0j0P9cQrqN7YylA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* errMsg);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, searchInstTypes_rG28W6V18KBAWJ6NSj4dKw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* key);
N_NOINLINE(void, raiseFieldError)(NimStringDesc* f);
static N_INLINE(NIM_BOOL, sameFlags_aVVjNzmtPf6fjiBzSvfSQgtypes)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, compareTypes_oyXq5u7iL4RjsT9bovvTE9cg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y, tyEnum_TDistinctCompare_9bNKHGs63atuMFXnAleTveg cmp, tySet_tyEnum_TTypeCmpFlag_72pgRXSg7774cr9aCWVPORw flags);
static N_INLINE(NI, addInt)(NI a, NI b);
N_NOINLINE(void, raiseOverflow)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(NI, sonsLen_eY4T6kWJb9a9aTWUufrTLjXg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lookupTypeVar_cNsAY9aO2v1oTCPqZyHga1w_4)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, localError_NF6kBGchnhQYPbCedyefVA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* arg);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copyMem_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_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, errorType_9aXTnVBVS5pbBC3zrwMhttg)(tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* c);
N_LIB_PRIVATE N_NIMCALL(void, idTablePut_anELyz7VLsjbCIoxLpxbfQ)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q* t, tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* key, RootObj* val);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, instCopyType_cNsAY9aO2v1oTCPqZyHga1w_5)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, copyType_4O4aYoscFPo2FRSh4rP9ayg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, NIM_BOOL keepId);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef_AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(void, decRef_AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, rtlAddZCT_AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT_Y66tOYFjgwJ0k4aLz4bc0Q)(tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(void, propagateToOwner_KHgxvzuOk6nXefcrhhP9cWw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* owner, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* elem);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newType_SNqpa06pdVCLFFBR28119aQ)(tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_LIB_PRIVATE N_NIMCALL(void, cacheTypeInst_6pvfoL9blFXnykuTkgrOX8g)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* inst);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lastSon_Bdq9aiV9buvJtPvmOc0OR5JQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
N_LIB_PRIVATE N_NIMCALL(void, newTypeMapLayer_orm7ghV3oRMOox3jC0ljsA)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* Result);
static N_INLINE(NI, subInt)(NI a, NI b);
N_LIB_PRIVATE N_NIMCALL(void, rawAddSon_9a8CdZqChTyqzq5bpSL3TzA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isGenericAlias_YPjOkGV9axAnGR3UfLeWZ1g)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipGenericAlias_PfgI9ap7WOnsRfFV4znQ27w_3)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, checkPartialConstructedType_TBCMogG4zgmSdneojQOMAg)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipTypes_zsqmUNR5OZrTUna0Y9bdu9bg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kinds);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, prepareNode_gKp9aBprbf0cqtXoSYBnCkw)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, replaceTypeVarsS_sLVA1gNd8WU8o9cEwKvBh9cA)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, copySym_lIu8wX6Beq6dBJgESOFFjg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
static N_INLINE(NI, safeLen_P89cqdlERShb9alU3iC0yj8w_2ast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NI, len_P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, add_P8dDSotTW25BkfbyspojGg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newTypeS_xb5E2cGIynZweqWlCP8Tig)(tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* c);
static N_INLINE(void, nimGCunrefRC1)(void* p);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
static N_INLINE(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipIntLit_PyQcLUUKkDYcpwke36Qpxgmagicsys)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, base_PfgI9ap7WOnsRfFV4znQ27w)(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(NIM_BOOL, containsGenericType_YPjOkGV9axAnGR3UfLeWZ1g_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, internalError_5hPl6LjCYJxMYxh9af9b9bXzw)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, NimStringDesc* errMsg);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar__r38WafKlW80RkvoZTcia4Q)(tyTuple_kN8up2W6YKc5YA9avn5mV5w x);
N_LIB_PRIVATE N_NIMCALL(void, propagateFieldFlags_Bjo9aRQCCUN0CrmERULS79bg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, eraseVoidParams_w2l6CVu9bYn8M06fJcMTkHw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
static N_INLINE(NI, chckRange)(NI i, NI a, NI b);
N_NOINLINE(void, raiseRangeError)(NI64 val);
N_NIMCALL(TGenericSeq*, setLengthSeqV2)(TGenericSeq* s, TNimType* typ, NI newLen);
N_LIB_PRIVATE N_NIMCALL(void, skipIntLiteralParams_w2l6CVu9bYn8M06fJcMTkHw_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, addSonSkipIntLit_2IwAMgUJgjdjR7Qyvt9bjCQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, replaceObjBranches_Io9bn1sBWaB9bMXajNZg3W5Q)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NI, sonsLen_zOB1gNtXypybIzLxxB9cyWQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(void, checkSonsLen_EezdXeDvu4rB7fR84AJZgw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NI length, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeI_vokyXY9cZDshCSxFKChhG9bg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNode_duw0Uu9cIFXmCAaunQWIP0g)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, reResolveCallsWithTypedescParams_gKp9aBprbf0cqtXoSYBnCkw_2)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTypeParam_9bQUIWM6kcjKJh9ayHoQtlkg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newSymNode_I2DV2TmmOysY1ZEGW19b9bRg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(void, newSons_Bu9cqnssJjx4jfWBeiR9albg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, NI length);
N_LIB_PRIVATE N_NIMCALL(void, popInfoContext_O9arH9bYenXLOr27ZSmcQnEw_3)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(NI64, computeSize_vCG1GF2Iu043oALVyuJfOw_3)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTupleRecursive_YPjOkGV9axAnGR3UfLeWZ1g_8)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
TNimType NTI_Dxk9cFa3Fer9bZpQ9b4aBAFkA_;
extern TNimType NTI_9aiv9bp2t5icFNINcg9c4xi1Q_;
TNimType NTI_AWHx031vx269auvjKCITW9cw_;
TNimType NTI_gMP9b9b8d4Uze3mE5G9aP9afmg_;
extern TNimType NTI_EjEifkTC8tg9afiUW4StSSA_;
extern TNimType NTI_WGx4rAexNXnczy1Avn646Q_;
extern TNimType NTI_VaVACK0bpYmqIQ0mKcHfQQ_;
extern TNimType NTI_K9bspPztfoWajecnwjyHuYQ_;
extern TNimType NTI_rR5Bzr1D5krxoo1NcNyeMA_;
extern TNimType NTI_v9ae2Dpu13OW2ZJ2U9bNMd9cQ_;
extern tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
extern TNimType NTI_Ef05srmQTDulnBdXR4Ja6Q_;
extern TNimType NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_;
extern TNimType NTI_PsPyPA45AAjHu4uDGHNjTg_;
extern TNimType NTI_YceFcaugL2PWNtVbyffD9bQ_;
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_4, "no generic body", 15);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_5, "typeInstCache", 13);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_8, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/lib/system/iterators.nim(190, 11) `len(a) ="
"= L` the length of the seq changed while iterating over it", 185);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_9, "cannot instantiate: \'", 21);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_10, "\'", 1);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_11, "substitution with generic parameter", 35);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_13, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/semtypinst.nim(356, 12) `x.kind !="
" tyGenericInvocation` ", 149);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_17, "type \'var var\' is not allowed", 29);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_18, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/semtypinst.nim(399, 16) `newbody.k"
"ind in {tyRef, tyPtr}` ", 150);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_20, "\'; Maybe generic arguments are missing\?", 39);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_21, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/semtypinst.nim(513, 12) `t.n.typ !"
"= t` ", 132);
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_mrkrD9c2e31kE4GdQtpMdaQ_22 = {
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_23, "sym", 3);
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_mrkrD9c2e31kE4GdQtpMdaQ_24 = {
0xEC, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_25, "sons", 4);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_30, "cannot instantiate \'", 20);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_31, "\' inside of type definition: \'", 30);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_34, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/semtypinst.nim", 107);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_mrkrD9c2e31kE4GdQtpMdaQ_33 = {((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_34),
((NI) 588),
((NI) 23)}
;
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_41, "ReplaceTypeVarsN: when condition not a bool", 43);
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_mrkrD9c2e31kE4GdQtpMdaQ_42 = {
0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_43, "intVal", 6);
STRING_LITERAL(TM_mrkrD9c2e31kE4GdQtpMdaQ_51, "illegal recursion in type \'", 27);

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, initLayeredTypeMap_CUPvqqdAvE7lW4r3YvsLsQ)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* Result) {
	chckNil((void*)Result);
	genericReset((void*)Result, (&NTI_Dxk9cFa3Fer9bZpQ9b4aBAFkA_));
	copyIdTable_kWmPoTDdSpeN1EEQ59bRmKA((&(*Result).topLayer), pt);
}

N_LIB_PRIVATE N_NIMCALL(void, initTypeVars_Xi1rcYNuDZinU29bL68QCog)(tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* Result) {
	chckNil((void*)Result);
	genericReset((void*)Result, (&NTI_gMP9b9b8d4Uze3mE5G9aP9afmg_));
	initIdTable_Z7fF0Wc4DSB4kCiKZ8rGfQ((&(*Result).symMap));
	initIdTable_Z7fF0Wc4DSB4kCiKZ8rGfQ((&(*Result).localCache));
	(*Result).typeMap = typeMap;
	(*Result).info = info;
	unsureAsgnRef((void**) (&(*Result).c), p);
	unsureAsgnRef((void**) (&(*Result).owner), owner);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lookup_bvHwbVO9aaeW8QVm81fQN3w)(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* key) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* tm;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	tm = typeMap;
	{
		while (1) {
			tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T3_;
			RootObj* T4_;
			if (!!((tm == NIM_NIL))) goto LA2;
			T3_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
			T3_ = &key->Sup;
			T4_ = (RootObj*)0;
			T4_ = idTableGet_K5M5T7J9c0H7M5ahfeRl8xw((*tm).topLayer, T3_);
			if (T4_) chckObj((*T4_).m_type, (&NTI_v9ae2Dpu13OW2ZJ2U9bNMd9cQ_));
			result = ((tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T4_));
			{
				if (!!((result == NIM_NIL))) goto LA7_;
				goto BeforeRet_;
			}
			LA7_: ;
			tm = (*tm).nextLayer;
		} LA2: ;
	}
	}BeforeRet_: ;
	return result;
}

static N_INLINE(NIM_BOOL, sameFlags_aVVjNzmtPf6fjiBzSvfSQgtypes)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((688128 & (*a).flags) == (688128 & (*b).flags));
	return result;
}

static N_INLINE(NI, addInt)(NI a, NI b) {
	NI result;
{	result = (NI)0;
	result = (NI)((NU64)(a) + (NU64)(b));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(result ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(result ^ b));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	raiseOverflow();
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, searchInstTypes_rG28W6V18KBAWJ6NSj4dKw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* key) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* genericTyp;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	if ((NU)(((NI) 0)) >= (NU)((*key).sons ? (*key).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*key).sons ? (*key).sons->Sup.len : 0)-1);
	genericTyp = (*key).sons->data[((NI) 0)];
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = ((*genericTyp).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10));
		if (!(T4_)) goto LA5_;
		if ((NU)(((NI) 0)) >= (NU)((*key).sons ? (*key).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*key).sons ? (*key).sons->Sup.len : 0)-1);
		T4_ = ((*key).sons->data[((NI) 0)] == genericTyp);
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T3_ = !(((*genericTyp).sym == NIM_NIL));
		LA6_: ;
		if (!!(T3_)) goto LA7_;
		goto BeforeRet_;
	}
	LA7_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* inst;
		tySequence_Ef05srmQTDulnBdXR4Ja6Q* colontmp_;
		NI i;
		NI L;
		NI T10_;
		inst = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		colontmp_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
		if (!(((144 &(1U<<((NU)((*(*genericTyp).sym).kind)&31U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_5));
		colontmp_ = (*(*genericTyp).sym).typeInstCache;
		i = ((NI) 0);
		T10_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T10_;
		{
			while (1) {
				NI TM_mrkrD9c2e31kE4GdQtpMdaQ_7;
				if (!(i < L)) goto LA12;
				if ((NU)(i) >= (NU)(colontmp_ ? colontmp_->Sup.len : 0)) raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1);
				inst = colontmp_->data[i];
				{
					{
						if (!((*inst).Sup.id == (*key).Sup.id)) goto LA16_;
						result = inst;
						goto BeforeRet_;
					}
					LA16_: ;
					{
						NI T20_;
						NI T21_;
						T20_ = ((*inst).sons ? (*inst).sons->Sup.len : 0);
						T21_ = ((*key).sons ? (*key).sons->Sup.len : 0);
						if (!(T20_ < T21_)) goto LA22_;
						goto BeforeRet_;
					}
					LA22_: ;
					{
						NIM_BOOL T26_;
						T26_ = (NIM_BOOL)0;
						T26_ = sameFlags_aVVjNzmtPf6fjiBzSvfSQgtypes(inst, key);
						if (!!(T26_)) goto LA27_;
						goto LA13;
					}
					LA27_: ;
					{
						{
							NI j;
							NI colontmp__2;
							NI T31_;
							NI res;
							j = (NI)0;
							colontmp__2 = (NI)0;
							T31_ = (((*key).sons ? (*key).sons->Sup.len : 0)-1);
							colontmp__2 = T31_;
							res = ((NI) 1);
							{
								while (1) {
									NI TM_mrkrD9c2e31kE4GdQtpMdaQ_6;
									if (!(res <= colontmp__2)) goto LA33;
									j = res;
									{
										NIM_BOOL T36_;
										if ((NU)(j) >= (NU)((*inst).sons ? (*inst).sons->Sup.len : 0)) raiseIndexError2(j,((*inst).sons ? (*inst).sons->Sup.len : 0)-1);
										if ((NU)(j) >= (NU)((*key).sons ? (*key).sons->Sup.len : 0)) raiseIndexError2(j,((*key).sons ? (*key).sons->Sup.len : 0)-1);
										T36_ = (NIM_BOOL)0;
										T36_ = compareTypes_oyXq5u7iL4RjsT9bovvTE9cg((*inst).sons->data[j], (*key).sons->data[j], ((tyEnum_TDistinctCompare_9bNKHGs63atuMFXnAleTveg) 0), 8);
										if (!!(T36_)) goto LA37_;
										goto LA29;
									}
									LA37_: ;
									TM_mrkrD9c2e31kE4GdQtpMdaQ_6 = addInt(res, ((NI) 1));
									res = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_6);
								} LA33: ;
							}
						}
						result = inst;
						goto BeforeRet_;
					} LA29: ;
				} LA13: ;
				TM_mrkrD9c2e31kE4GdQtpMdaQ_7 = addInt(i, ((NI) 1));
				i = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_7);
				{
					NI T41_;
					T41_ = (colontmp_ ? colontmp_->Sup.len : 0);
					if (!!((T41_ == L))) goto LA42_;
					failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_8));
				}
				LA42_: ;
			} LA12: ;
		}
	}
	}BeforeRet_: ;
	return result;
}

static N_INLINE(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 == 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_bvHwbVO9aaeW8QVm81fQN3w((*cl).typeMap, t);
	{
		NimStringDesc* T11_;
		NimStringDesc* T12_;
		tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T13_;
		RootObj* T14_;
		if (!(result == NIM_NIL)) goto LA3_;
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = (*cl).allowMetaTypes;
			if (T7_) goto LA8_;
			T7_ = (((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 11))&63U)))!=0);
			LA8_: ;
			if (!T7_) goto LA9_;
			goto BeforeRet_;
		}
		LA9_: ;
		T11_ = (NimStringDesc*)0;
		T12_ = (NimStringDesc*)0;
		T12_ = typeToString_QlvraUan7WbHowhAbvDvdA(t, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		T11_ = rawNewString((T12_ ? T12_->Sup.len : 0) + 22);
appendString(T11_, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_9));
appendString(T11_, T12_);
appendString(T11_, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_10));
		localError_NF6kBGchnhQYPbCedyefVA((*(*(*cl).c).graph).config, (*(*t).sym).info, T11_);
		result = errorType_9aXTnVBVS5pbBC3zrwMhttg((*cl).c);
		T13_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
		T13_ = &t->Sup;
		T14_ = (RootObj*)0;
		T14_ = &result->Sup.Sup;
		idTablePut_anELyz7VLsjbCIoxLpxbfQ((&(*(*cl).typeMap).topLayer), T13_, T14_);
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T16_;
		T16_ = (NIM_BOOL)0;
		T16_ = ((*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12));
		if (!(T16_)) goto LA17_;
		T16_ = !((*cl).allowMetaTypes);
		LA17_: ;
		if (!T16_) goto LA18_;
		internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*(*cl).c).graph).config, (*cl).info, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_11));
	}
	goto LA1_;
	LA18_: ;
	LA1_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, instCopyType_cNsAY9aO2v1oTCPqZyHga1w_5)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = copyType_4O4aYoscFPo2FRSh4rP9ayg(t, (*t).owner, (*cl).allowMetaTypes);
	{
		if (!(*cl).allowMetaTypes) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 8)) & 63);
	{
		NIM_BOOL T7_;
		NIM_BOOL T9_;
		T7_ = (NIM_BOOL)0;
		T7_ = ((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 == NIM_NIL);
		LA10_: ;
		T7_ = T9_;
		LA8_: ;
		if (!!(T7_)) goto LA11_;
		(*result).flags = ((*result).flags & ~ 1049088);
	}
	LA11_: ;
	}BeforeRet_: ;
	return result;
}

static N_INLINE(void, incRef_AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = (NI)((NU64)((*c).refcount) + (NU64)(((NI) 8)));
}

static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {
	tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* result;
	result = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	result = ((tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*) ((NI)((NU64)(((NI) (ptrdiff_t) (usr))) - (NU64)(((NI) 16)))));
	return result;
}

static N_INLINE(void, rtlAddZCT_AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c) {
	addZCT_Y66tOYFjgwJ0k4aLz4bc0Q((&gch_IcYaEuuWivYAS86vFMTS3Q.zct), c);
}

static N_INLINE(void, decRef_AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = (NI)((NU64)((*c).refcount) - (NU64)(((NI) 8)));
	{
		if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA3_;
		rtlAddZCT_AT1eRuflKWyTTBdLjEDZbg_2system(c);
	}
	LA3_: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem(src);
		incRef_AT1eRuflKWyTTBdLjEDZbg_3system(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem((*dest));
		decRef_AT1eRuflKWyTTBdLjEDZbgsystem(T10_);
	}
	LA8_: ;
	(*dest) = src;
}

N_LIB_PRIVATE N_NIMCALL(void, cacheTypeInst_6pvfoL9blFXnykuTkgrOX8g)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* inst) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* gt;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	NI T10_;
{	if ((NU)(((NI) 0)) >= (NU)((*inst).sons ? (*inst).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*inst).sons ? (*inst).sons->Sup.len : 0)-1);
	gt = (*inst).sons->data[((NI) 0)];
	{
		if (!((*gt).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10))) goto LA3_;
		t = lastSon_Bdq9aiV9buvJtPvmOc0OR5JQ(gt);
	}
	goto LA1_;
	LA3_: ;
	{
		t = gt;
	}
	LA1_: ;
	{
		if (!((IL64(2268688312287891456) &((NU64)1<<((NU)((*t).kind)&63U)))!=0)) goto LA8_;
		goto BeforeRet_;
	}
	LA8_: ;
	if (!(((144 &(1U<<((NU)((*(*gt).sym).kind)&31U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_5));
	asgnRef((void**) (&(*(*gt).sym).typeInstCache), (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) incrSeqV3((TGenericSeq*)((*(*gt).sym).typeInstCache), (&NTI_Ef05srmQTDulnBdXR4Ja6Q_)));
	T10_ = (*(*gt).sym).typeInstCache->Sup.len++;
	asgnRef((void**) (&(*(*gt).sym).typeInstCache->data[T10_]), inst);
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, newTypeMapLayer_orm7ghV3oRMOox3jC0ljsA)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* Result) {
	chckNil((void*)Result);
	genericReset((void*)Result, (&NTI_Dxk9cFa3Fer9bZpQ9b4aBAFkA_));
	(*Result).nextLayer = (*cl).typeMap;
	initIdTable_Z7fF0Wc4DSB4kCiKZ8rGfQ((&(*Result).topLayer));
}

static N_INLINE(NI, subInt)(NI a, NI b) {
	NI result;
{	result = (NI)0;
	result = (NI)((NU64)(a) - (NU64)(b));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(result ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(result ^ (NI)((NU64) ~(b))));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	raiseOverflow();
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, checkPartialConstructedType_TBCMogG4zgmSdneojQOMAg)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((IL64(140737496743936) &((NU64)1<<((NU)((*t).kind)&63U)))!=0);
		if (!(T3_)) goto LA4_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T3_ = ((IL64(140737496743936) &((NU64)1<<((NU)((*(*t).sons->data[((NI) 0)]).kind)&63U)))!=0);
		LA4_: ;
		if (!T3_) goto LA5_;
		localError_NF6kBGchnhQYPbCedyefVA(conf, info, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_17));
	}
	LA5_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, handleGenericInvocation_cNsAY9aO2v1oTCPqZyHga1w_3)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* body;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* header;
	tySequence_Ef05srmQTDulnBdXR4Ja6Q* T45_;
	NIM_BOOL oldSkipTypedesc;
	tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA typeMapLayer;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* bbody;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* newbody;
	NIM_BOOL bodyIsNew;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* dc;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
	body = (*t).sons->data[((NI) 0)];
	{
		if (!!(((*body).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10)))) goto LA3_;
		internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*(*cl).c).graph).config, (*cl).info, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_4));
	}
	LA3_: ;
	header = t;
	{
		tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T9_;
		RootObj* T10_;
		if (!(*cl).allowMetaTypes) goto LA7_;
		T9_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
		T9_ = &t->Sup;
		T10_ = (RootObj*)0;
		T10_ = idTableGet_K5M5T7J9c0H7M5ahfeRl8xw((*cl).localCache, T9_);
		if (T10_) chckObj((*T10_).m_type, (&NTI_v9ae2Dpu13OW2ZJ2U9bNMd9cQ_));
		result = ((tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T10_));
	}
	goto LA5_;
	LA7_: ;
	{
		result = searchInstTypes_rG28W6V18KBAWJ6NSj4dKw(t);
	}
	LA5_: ;
	{
		NIM_BOOL T14_;
		T14_ = (NIM_BOOL)0;
		T14_ = !((result == NIM_NIL));
		if (!(T14_)) goto LA15_;
		T14_ = sameFlags_aVVjNzmtPf6fjiBzSvfSQgtypes(result, t);
		LA15_: ;
		if (!T14_) goto LA16_;
		goto BeforeRet_;
	}
	LA16_: ;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = sonsLen_eY4T6kWJb9a9aTWUufrTLjXg(t);
		i_2 = ((NI) 1);
		{
			while (1) {
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x;
				NI TM_mrkrD9c2e31kE4GdQtpMdaQ_12;
				if (!(i_2 < colontmp_)) goto LA20;
				i = i_2;
				if ((NU)(i) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(i,((*t).sons ? (*t).sons->Sup.len : 0)-1);
				x = (*t).sons->data[i];
				{
					if (!((4096 &((NU64)1<<((NU)((*x).kind)&63U)))!=0)) goto LA23_;
					x = lookupTypeVar_cNsAY9aO2v1oTCPqZyHga1w_4(cl, x);
					{
						if (!!((x == NIM_NIL))) goto LA27_;
						{
							if (!(header == t)) goto LA31_;
							header = instCopyType_cNsAY9aO2v1oTCPqZyHga1w_5(cl, t);
						}
						LA31_: ;
						if ((NU)(i) >= (NU)((*header).sons ? (*header).sons->Sup.len : 0)) raiseIndexError2(i,((*header).sons ? (*header).sons->Sup.len : 0)-1);
						asgnRef((void**) (&(*header).sons->data[i]), x);
						propagateToOwner_KHgxvzuOk6nXefcrhhP9cWw(header, x);
					}
					LA27_: ;
				}
				goto LA21_;
				LA23_: ;
				{
					propagateToOwner_KHgxvzuOk6nXefcrhhP9cWw(header, x);
				}
				LA21_: ;
				TM_mrkrD9c2e31kE4GdQtpMdaQ_12 = addInt(i_2, ((NI) 1));
				i_2 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_12);
			} LA20: ;
		}
	}
	{
		if (!!((header == t))) goto LA36_;
		result = searchInstTypes_rG28W6V18KBAWJ6NSj4dKw(header);
		{
			NIM_BOOL T40_;
			T40_ = (NIM_BOOL)0;
			T40_ = !((result == NIM_NIL));
			if (!(T40_)) goto LA41_;
			T40_ = sameFlags_aVVjNzmtPf6fjiBzSvfSQgtypes(result, t);
			LA41_: ;
			if (!T40_) goto LA42_;
			goto BeforeRet_;
		}
		LA42_: ;
	}
	goto LA34_;
	LA36_: ;
	{
		header = instCopyType_cNsAY9aO2v1oTCPqZyHga1w_5(cl, t);
	}
	LA34_: ;
	if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
	result = newType_SNqpa06pdVCLFFBR28119aQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11), (*(*t).sons->data[((NI) 0)]).owner);
	(*result).flags = (*header).flags;
	T45_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
	T45_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
	if ((NU)(((NI) 0)) >= (NU)((*header).sons ? (*header).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*header).sons ? (*header).sons->Sup.len : 0)-1);
	asgnRef((void**) (&T45_->data[0]), (*header).sons->data[((NI) 0)]);
	asgnRef((void**) (&(*result).sons), T45_);
	{
		if (!!((*cl).allowMetaTypes)) goto LA48_;
		cacheTypeInst_6pvfoL9blFXnykuTkgrOX8g(result);
	}
	goto LA46_;
	LA48_: ;
	{
		tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T51_;
		RootObj* T52_;
		T51_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
		T51_ = &t->Sup;
		T52_ = (RootObj*)0;
		T52_ = &result->Sup.Sup;
		idTablePut_anELyz7VLsjbCIoxLpxbfQ((&(*cl).localCache), T51_, T52_);
	}
	LA46_: ;
	oldSkipTypedesc = (*cl).skipTypedesc;
	(*cl).skipTypedesc = NIM_TRUE;
	nimZeroMem((void*)(&typeMapLayer), sizeof(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA));
	newTypeMapLayer_orm7ghV3oRMOox3jC0ljsA(cl, (&typeMapLayer));
	(*cl).typeMap = (&typeMapLayer);
	{
		NI i_3;
		NI colontmp__2;
		NI i_4;
		i_3 = (NI)0;
		colontmp__2 = (NI)0;
		colontmp__2 = sonsLen_eY4T6kWJb9a9aTWUufrTLjXg(t);
		i_4 = ((NI) 1);
		{
			while (1) {
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x_2;
				NI TM_mrkrD9c2e31kE4GdQtpMdaQ_14;
				tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T60_;
				RootObj* T61_;
				NI TM_mrkrD9c2e31kE4GdQtpMdaQ_15;
				if (!(i_4 < colontmp__2)) goto LA55;
				i_3 = i_4;
				if ((NU)(i_3) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(i_3,((*t).sons ? (*t).sons->Sup.len : 0)-1);
				x_2 = replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w(cl, (*t).sons->data[i_3]);
				{
					if (!!(!(((*x_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9))))) goto LA58_;
					failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_13));
				}
				LA58_: ;
				if ((NU)(i_3) >= (NU)((*header).sons ? (*header).sons->Sup.len : 0)) raiseIndexError2(i_3,((*header).sons ? (*header).sons->Sup.len : 0)-1);
				asgnRef((void**) (&(*header).sons->data[i_3]), x_2);
				propagateToOwner_KHgxvzuOk6nXefcrhhP9cWw(header, x_2);
				TM_mrkrD9c2e31kE4GdQtpMdaQ_14 = subInt(i_3, ((NI) 1));
				if ((NU)((NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_14)) >= (NU)((*body).sons ? (*body).sons->Sup.len : 0)) raiseIndexError2((NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_14),((*body).sons ? (*body).sons->Sup.len : 0)-1);
				T60_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
				T60_ = &(*body).sons->data[(NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_14)]->Sup;
				T61_ = (RootObj*)0;
				T61_ = &x_2->Sup.Sup;
				idTablePut_anELyz7VLsjbCIoxLpxbfQ((&(*(*cl).typeMap).topLayer), T60_, T61_);
				TM_mrkrD9c2e31kE4GdQtpMdaQ_15 = addInt(i_4, ((NI) 1));
				i_4 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_15);
			} LA55: ;
		}
	}
	{
		NI i_5;
		NI colontmp__3;
		NI i_6;
		i_5 = (NI)0;
		colontmp__3 = (NI)0;
		colontmp__3 = sonsLen_eY4T6kWJb9a9aTWUufrTLjXg(t);
		i_6 = ((NI) 1);
		{
			while (1) {
				NI TM_mrkrD9c2e31kE4GdQtpMdaQ_16;
				if (!(i_6 < colontmp__3)) goto LA64;
				i_5 = i_6;
				if ((NU)(i_5) >= (NU)((*header).sons ? (*header).sons->Sup.len : 0)) raiseIndexError2(i_5,((*header).sons ? (*header).sons->Sup.len : 0)-1);
				rawAddSon_9a8CdZqChTyqzq5bpSL3TzA(result, (*header).sons->data[i_5]);
				TM_mrkrD9c2e31kE4GdQtpMdaQ_16 = addInt(i_6, ((NI) 1));
				i_6 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_16);
			} LA64: ;
		}
	}
	{
		if (!((*body).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50))) goto LA67_;
		goto BeforeRet_;
	}
	LA67_: ;
	bbody = lastSon_Bdq9aiV9buvJtPvmOc0OR5JQ(body);
	newbody = replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w(cl, bbody);
	bodyIsNew = !((newbody == bbody));
	(*cl).skipTypedesc = oldSkipTypedesc;
	(*newbody).flags = ((*newbody).flags | (((*t).flags | (*body).flags) & ~ 1049088));
	(*result).flags = (((*result).flags | (*newbody).flags) & ~ 1049088);
	(*cl).typeMap = (*(*cl).typeMap).nextLayer;
	{
		NIM_BOOL T71_;
		T71_ = (NIM_BOOL)0;
		T71_ = isGenericAlias_YPjOkGV9axAnGR3UfLeWZ1g(newbody);
		if (!T71_) goto LA72_;
		newbody = skipGenericAlias_PfgI9ap7WOnsRfFV4znQ27w_3(newbody);
	}
	LA72_: ;
	rawAddSon_9a8CdZqChTyqzq5bpSL3TzA(result, newbody);
	checkPartialConstructedType_TBCMogG4zgmSdneojQOMAg((*(*(*cl).c).graph).config, (*cl).info, newbody);
	dc = (*newbody).attachedOps[(((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 3))- 0];
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* mm;
		if (!!((*cl).allowMetaTypes)) goto LA76_;
		{
			NIM_BOOL T80_;
			T80_ = (NIM_BOOL)0;
			T80_ = !((dc == NIM_NIL));
			if (!(T80_)) goto LA81_;
			T80_ = !((((*(*newbody).attachedOps[(((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 3))- 0]).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0));
			LA81_: ;
			if (!T80_) goto LA82_;
			asgnRef((void**) (&(*newbody).attachedOps[(((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 3))- 0]), (*(*cl).c).instTypeBoundOp((*cl).c, dc, result, (*cl).info, ((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 3), ((NI) 1)));
		}
		LA82_: ;
		{
			NIM_BOOL T86_;
			T86_ = (NIM_BOOL)0;
			T86_ = bodyIsNew;
			if (!(T86_)) goto LA87_;
			T86_ = ((*newbody).typeInst == NIM_NIL);
			LA87_: ;
			if (!T86_) goto LA88_;
			asgnRef((void**) (&(*newbody).typeInst), result);
			{
				NIM_BOOL T92_;
				T92_ = (NIM_BOOL)0;
				T92_ = (((*newbody).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 33))&63U)))!=0);
				if (!(T92_)) goto LA93_;
				T92_ = !(((*newbody).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11)));
				LA93_: ;
				if (!T92_) goto LA94_;
				{
					if (!!(((6291456 &((NU64)1<<((NU)((*newbody).kind)&63U)))!=0))) goto LA98_;
					failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_18));
				}
				LA98_: ;
				{
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T102_;
					T102_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T102_ = lastSon_Bdq9aiV9buvJtPvmOc0OR5JQ(newbody);
					if (!!(((*T102_).typeInst == NIM_NIL))) goto LA103_;
				}
				goto LA100_;
				LA103_: ;
				{
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T106_;
					T106_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T106_ = lastSon_Bdq9aiV9buvJtPvmOc0OR5JQ(newbody);
					asgnRef((void**) (&(*T106_).typeInst), result);
				}
				LA100_: ;
			}
			LA94_: ;
		}
		LA88_: ;
		mm = skipTypes_zsqmUNR5OZrTUna0Y9bdu9bg(bbody, IL64(36275087638309136));
		{
			tySequence_MvZmat48bhe9b6x9aUD58D5Q* methods;
			if (!!((((*mm).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 8))&63U)))!=0))) goto LA109_;
			(*mm).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 8)) & 63);
			methods = (*mm).methods;
			{
				NI col;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* meth;
				NI i_7;
				NI L;
				NI T112_;
				col = (NI)0;
				meth = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
				i_7 = ((NI) 0);
				T112_ = (methods ? methods->Sup.len : 0);
				L = T112_;
				{
					while (1) {
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T115_;
						NI TM_mrkrD9c2e31kE4GdQtpMdaQ_19;
						if (!(i_7 < L)) goto LA114;
						if ((NU)(i_7) >= (NU)(methods ? methods->Sup.len : 0)) raiseIndexError2(i_7,(methods ? methods->Sup.len : 0)-1);
						col = methods->data[i_7].Field0;
						if ((NU)(i_7) >= (NU)(methods ? methods->Sup.len : 0)) raiseIndexError2(i_7,(methods ? methods->Sup.len : 0)-1);
						meth = methods->data[i_7].Field1;
						T115_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
						T115_ = (*(*cl).c).instTypeBoundOp((*cl).c, meth, result, (*cl).info, ((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 1), col);
						(void)(T115_);
						TM_mrkrD9c2e31kE4GdQtpMdaQ_19 = addInt(i_7, ((NI) 1));
						i_7 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_19);
						{
							NI T118_;
							T118_ = (methods ? methods->Sup.len : 0);
							if (!!((T118_ == L))) goto LA119_;
							failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_8));
						}
						LA119_: ;
					} LA114: ;
				}
			}
			(*mm).flags &= ~(((NU64)1) << ((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 8)) & 63));
		}
		LA109_: ;
	}
	LA76_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, replaceTypeVarsS_sLVA1gNd8WU8o9cEwKvBh9cA)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
{	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		if (!(s == NIM_NIL)) goto LA3_;
		result = NIM_NIL;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = !(((*cl).owner == NIM_NIL));
		if (!(T7_)) goto LA8_;
		T7_ = !(((*s).owner == (*cl).owner));
		LA8_: ;
		if (!T7_) goto LA9_;
		result = s;
		goto BeforeRet_;
	}
	LA9_: ;
	{
		NIM_BOOL T13_;
		T13_ = (NIM_BOOL)0;
		T13_ = ((521984 &(1U<<((NU)((*s).kind)&31U)))!=0);
		if (T13_) goto LA14_;
		T13_ = !(((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0)));
		LA14_: ;
		if (!T13_) goto LA15_;
		result = s;
		goto BeforeRet_;
	}
	LA15_: ;
	result = copySym_lIu8wX6Beq6dBJgESOFFjg(s);
	(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 2)) & 63);
	asgnRef((void**) (&(*result).owner), (*s).owner);
	asgnRef((void**) (&(*result).typ), replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w(cl, (*s).typ));
	asgnRef((void**) (&(*result).ast), replaceTypeVarsN_TMTYUYo5YIKojKgBmj9boOQ(cl, (*s).ast, ((NI) 0)));
	}BeforeRet_: ;
	return result;
}

static N_INLINE(NI, len_P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	NI T1_;
	result = (NI)0;
	if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
	T1_ = ((*n).sons ? (*n).sons->Sup.len : 0);
	result = T1_;
	return result;
}

static N_INLINE(NI, safeLen_P89cqdlERShb9alU3iC0yj8w_2ast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	result = (NI)0;
	{
		if (!((*n).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 0) && (*n).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23))) goto LA3_;
		result = ((NI) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		result = len_P89cqdlERShb9alU3iC0yj8wast(n);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, prepareNode_gKp9aBprbf0cqtXoSYBnCkw)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	NIM_BOOL isCall;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	t = replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w(cl, (*n).typ);
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = !((t == NIM_NIL));
		if (!(T4_)) goto LA5_;
		T4_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60));
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T3_ = !(((*t).n == NIM_NIL));
		LA6_: ;
		if (!T3_) goto LA7_;
		{
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0)) goto LA11_;
			result = prepareNode_gKp9aBprbf0cqtXoSYBnCkw(cl, (*t).n);
		}
		goto LA9_;
		LA11_: ;
		{
			result = (*t).n;
		}
		LA9_: ;
		goto BeforeRet_;
	}
	LA7_: ;
	result = copyNode_Dsjo9bte8vGxzhtcSrsTyiQ(n);
	asgnRef((void**) (&(*result).typ), t);
	{
		if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA16_;
		if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
		if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
		asgnRef((void**) (&(*result).sym), replaceTypeVarsS_sLVA1gNd8WU8o9cEwKvBh9cA(cl, (*n).sym));
	}
	LA16_: ;
	isCall = ((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32));
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = safeLen_P89cqdlERShb9alU3iC0yj8w_2ast(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				NI TM_mrkrD9c2e31kE4GdQtpMdaQ_26;
				if (!(i_2 < colontmp_)) goto LA20;
				i = i_2;
				{
					NIM_BOOL T23_;
					T23_ = (NIM_BOOL)0;
					T23_ = isCall;
					if (!(T23_)) goto LA24_;
					T23_ = (i == ((NI) 0));
					LA24_: ;
					if (!T23_) goto LA25_;
					if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					add_P8dDSotTW25BkfbyspojGg(result, (*n).sons->data[i]);
				}
				goto LA21_;
				LA25_: ;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T28_;
					if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					T28_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T28_ = prepareNode_gKp9aBprbf0cqtXoSYBnCkw(cl, (*n).sons->data[i]);
					add_P8dDSotTW25BkfbyspojGg(result, T28_);
				}
				LA21_: ;
				TM_mrkrD9c2e31kE4GdQtpMdaQ_26 = addInt(i_2, ((NI) 1));
				i_2 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_26);
			} LA20: ;
		}
	}
	}BeforeRet_: ;
	return result;
}

static N_INLINE(void, nimGCunrefRC1)(void* p) {
	tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* T1_;
	T1_ = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem(p);
	decRef_AT1eRuflKWyTTBdLjEDZbgsystem(T1_);
}

static N_INLINE(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipIntLit_PyQcLUUKkDYcpwke36Qpxgmagicsys)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*t).n == NIM_NIL));
		if (!(T3_)) goto LA4_;
		T3_ = ((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), NIM_NIL);
	}
	goto LA1_;
	LA5_: ;
	{
		result = t;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, propagateFieldFlags_Bjo9aRQCCUN0CrmERULS79bg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
{	{
		if (!(n == 0)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
		propagateToOwner_KHgxvzuOk6nXefcrhhP9cWw(t, (*(*n).sym).typ);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 139):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* son;
			son = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = safeLen_P89cqdlERShb9alU3iC0yj8w_2ast(n);
				i_2 = ((NI) 0);
				{
					while (1) {
						NI TM_mrkrD9c2e31kE4GdQtpMdaQ_35;
						if (!(i_2 < colontmp_)) goto LA10;
						i = i_2;
						if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
						son = (*n).sons->data[i];
						propagateFieldFlags_Bjo9aRQCCUN0CrmERULS79bg(t, son);
						TM_mrkrD9c2e31kE4GdQtpMdaQ_35 = addInt(i_2, ((NI) 1));
						i_2 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_35);
					} LA10: ;
				}
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
}

static N_INLINE(NI, chckRange)(NI i, NI a, NI b) {
	NI result;
{	result = (NI)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (a <= i);
		if (!(T3_)) goto LA4_;
		T3_ = (i <= b);
		LA4_: ;
		if (!T3_) goto LA5_;
		result = i;
		goto BeforeRet_;
	}
	goto LA1_;
	LA5_: ;
	{
		raiseRangeError(((NI64) (i)));
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, eraseVoidParams_w2l6CVu9bYn8M06fJcMTkHw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T3_ = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
		if (!(T3_)) goto LA4_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T3_ = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63));
		LA4_: ;
		if (!T3_) goto LA5_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		asgnRef((void**) (&(*t).sons->data[((NI) 0)]), NIM_NIL);
	}
	LA5_: ;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = sonsLen_eY4T6kWJb9a9aTWUufrTLjXg(t);
		i_2 = ((NI) 1);
		{
			while (1) {
				NI TM_mrkrD9c2e31kE4GdQtpMdaQ_39;
				if (!(i_2 < colontmp_)) goto LA9;
				i = i_2;
				{
					NI pos;
					if ((NU)(i) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(i,((*t).sons ? (*t).sons->Sup.len : 0)-1);
					if (!((*(*t).sons->data[i]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63))) goto LA12_;
					pos = i;
					{
						NI j;
						NI colontmp__2;
						NI colontmp__3;
						NI TM_mrkrD9c2e31kE4GdQtpMdaQ_36;
						NI i_3;
						j = (NI)0;
						colontmp__2 = (NI)0;
						colontmp__3 = (NI)0;
						TM_mrkrD9c2e31kE4GdQtpMdaQ_36 = addInt(i, ((NI) 1));
						colontmp__2 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_36);
						colontmp__3 = sonsLen_eY4T6kWJb9a9aTWUufrTLjXg(t);
						i_3 = colontmp__2;
						{
							while (1) {
								NI TM_mrkrD9c2e31kE4GdQtpMdaQ_38;
								if (!(i_3 < colontmp__3)) goto LA16;
								j = i_3;
								{
									NI TM_mrkrD9c2e31kE4GdQtpMdaQ_37;
									if ((NU)(j) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(j,((*t).sons ? (*t).sons->Sup.len : 0)-1);
									if (!!(((*(*t).sons->data[j]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63)))) goto LA19_;
									if ((NU)(pos) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(pos,((*t).sons ? (*t).sons->Sup.len : 0)-1);
									if ((NU)(j) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(j,((*t).sons ? (*t).sons->Sup.len : 0)-1);
									asgnRef((void**) (&(*t).sons->data[pos]), (*t).sons->data[j]);
									if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*(*t).n).kind)>>3] &(1U<<((NU)((*(*t).n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
									if ((NU)(pos) >= (NU)((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)) raiseIndexError2(pos,((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)-1);
									if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*(*t).n).kind)>>3] &(1U<<((NU)((*(*t).n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
									if ((NU)(j) >= (NU)((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)) raiseIndexError2(j,((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)-1);
									asgnRef((void**) (&(*(*t).n).sons->data[pos]), (*(*t).n).sons->data[j]);
									TM_mrkrD9c2e31kE4GdQtpMdaQ_37 = addInt(pos, ((NI) 1));
									pos = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_37);
								}
								LA19_: ;
								TM_mrkrD9c2e31kE4GdQtpMdaQ_38 = addInt(i_3, ((NI) 1));
								i_3 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_38);
							} LA16: ;
						}
					}
					asgnRef((void**) (&(*t).sons), (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) setLengthSeqV2(&((*t).sons)->Sup, (&NTI_Ef05srmQTDulnBdXR4Ja6Q_), ((NI)chckRange(pos, ((NI) 0), ((NI) IL64(9223372036854775807))))));
					if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*(*t).n).kind)>>3] &(1U<<((NU)((*(*t).n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
					asgnRef((void**) (&(*(*t).n).sons), (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) setLengthSeqV2(&((*(*t).n).sons)->Sup, (&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_), ((NI)chckRange(pos, ((NI) 0), ((NI) IL64(9223372036854775807))))));
					goto LA7;
				}
				LA12_: ;
				TM_mrkrD9c2e31kE4GdQtpMdaQ_39 = addInt(i_2, ((NI) 1));
				i_2 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_39);
			} LA9: ;
		}
	} LA7: ;
}

N_LIB_PRIVATE N_NIMCALL(void, skipIntLiteralParams_w2l6CVu9bYn8M06fJcMTkHw_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = sonsLen_eY4T6kWJb9a9aTWUufrTLjXg(t);
		i_2 = ((NI) 0);
		{
			while (1) {
				NI TM_mrkrD9c2e31kE4GdQtpMdaQ_40;
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				{
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* p;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* skipped;
					if ((NU)(i) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(i,((*t).sons ? (*t).sons->Sup.len : 0)-1);
					p = (*t).sons->data[i];
					{
						if (!(p == NIM_NIL)) goto LA7_;
						goto LA4;
					}
					LA7_: ;
					skipped = skipIntLit_PyQcLUUKkDYcpwke36Qpxgmagicsys(p);
					{
						if (!!((skipped == p))) goto LA11_;
						if ((NU)(i) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(i,((*t).sons ? (*t).sons->Sup.len : 0)-1);
						asgnRef((void**) (&(*t).sons->data[i]), skipped);
						{
							if (!(((NI) 0) < i)) goto LA15_;
							if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*(*t).n).kind)>>3] &(1U<<((NU)((*(*t).n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
							if ((NU)(i) >= (NU)((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)) raiseIndexError2(i,((*(*t).n).sons ? (*(*t).n).sons->Sup.len : 0)-1);
							if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*(*(*t).n).sons->data[i]).kind)>>3] &(1U<<((NU)((*(*(*t).n).sons->data[i]).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
							asgnRef((void**) (&(*(*(*(*t).n).sons->data[i]).sym).typ), skipped);
						}
						LA15_: ;
					}
					LA11_: ;
				} LA4: ;
				TM_mrkrD9c2e31kE4GdQtpMdaQ_40 = addInt(i_2, ((NI) 1));
				i_2 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_40);
			} LA3: ;
		}
	}
	{
		NIM_BOOL T19_;
		T19_ = (NIM_BOOL)0;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T19_ = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
		if (!(T19_)) goto LA20_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T19_ = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60));
		LA20_: ;
		if (!T19_) goto LA21_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		asgnRef((void**) (&(*t).sons->data[((NI) 0)]), base_PfgI9ap7WOnsRfFV4znQ27w((*t).sons->data[((NI) 0)]));
	}
	LA21_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, replaceObjBranches_Io9bn1sBWaB9bMXajNZg3W5Q)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 0) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 140):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch;
		branch = NIM_NIL;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = sonsLen_zOB1gNtXypybIzLxxB9cyWQ(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
					NI TM_mrkrD9c2e31kE4GdQtpMdaQ_44;
					if (!(i_2 < colontmp_)) goto LA5;
					i = i_2;
					if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					it = (*n).sons->data[i];
					{
						if (!(it == NIM_NIL)) goto LA8_;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*cl).c).graph).config);
					}
					LA8_: ;
					switch ((*it).kind) {
					case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86):
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* cond;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e;
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(it, ((NI) 2), (*(*(*cl).c).graph).config);
						if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(((NI) 0)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*it).sons ? (*it).sons->Sup.len : 0)-1);
						cond = (*it).sons->data[((NI) 0)];
						e = (*(*cl).c).semConstExpr((*cl).c, cond);
						{
							if (!!(((*e).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6)))) goto LA13_;
							internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*(*cl).c).graph).config, (*e).info, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_41));
						}
						LA13_: ;
						{
							NIM_BOOL T17_;
							T17_ = (NIM_BOOL)0;
							if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_42[(NU)((*e).kind)>>3] &(1U<<((NU)((*e).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_43));
							T17_ = !(((*e).intVal == IL64(0)));
							if (!(T17_)) goto LA18_;
							T17_ = (branch == NIM_NIL);
							LA18_: ;
							if (!T17_) goto LA19_;
							if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
							if ((NU)(((NI) 1)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*it).sons ? (*it).sons->Sup.len : 0)-1);
							branch = (*it).sons->data[((NI) 1)];
						}
						LA19_: ;
					}
					break;
					case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
					{
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(it, ((NI) 1), (*(*(*cl).c).graph).config);
						{
							if (!(branch == NIM_NIL)) goto LA24_;
							if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
							if ((NU)(((NI) 0)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*it).sons ? (*it).sons->Sup.len : 0)-1);
							branch = (*it).sons->data[((NI) 0)];
						}
						LA24_: ;
					}
					break;
					default:
					{
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*cl).c).graph).config);
					}
					break;
					}
					TM_mrkrD9c2e31kE4GdQtpMdaQ_44 = addInt(i_2, ((NI) 1));
					i_2 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_44);
				} LA5: ;
			}
		}
		{
			if (!!((branch == NIM_NIL))) goto LA29_;
			result = replaceObjBranches_Io9bn1sBWaB9bMXajNZg3W5Q(cl, branch);
		}
		goto LA27_;
		LA29_: ;
		{
			result = newNodeI_vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info);
		}
		LA27_: ;
	}
	break;
	default:
	{
		{
			NI i_3;
			NI colontmp__2;
			NI i_4;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = sonsLen_zOB1gNtXypybIzLxxB9cyWQ(n);
			i_4 = ((NI) 0);
			{
				while (1) {
					NI TM_mrkrD9c2e31kE4GdQtpMdaQ_45;
					if (!(i_4 < colontmp__2)) goto LA35;
					i_3 = i_4;
					if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i_3) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i_3,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i_3) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i_3,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					asgnRef((void**) (&(*n).sons->data[i_3]), replaceObjBranches_Io9bn1sBWaB9bMXajNZg3W5Q(cl, (*n).sons->data[i_3]));
					TM_mrkrD9c2e31kE4GdQtpMdaQ_45 = addInt(i_4, ((NI) 1));
					i_4 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_45);
				} LA35: ;
			}
		}
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, replaceTypeVarsTAux_cNsAY9aO2v1oTCPqZyHga1w_2)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = t;
	{
		if (!(t == NIM_NIL)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lookup;
		if (!((IL64(2267562412381048832) &((NU64)1<<((NU)((*t).kind)&63U)))!=0)) goto LA7_;
		lookup = lookup_bvHwbVO9aaeW8QVm81fQN3w((*cl).typeMap, t);
		{
			if (!!((lookup == NIM_NIL))) goto LA11_;
			result = lookup;
			goto BeforeRet_;
		}
		LA11_: ;
	}
	LA7_: ;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9):
	{
		result = handleGenericInvocation_cNsAY9aO2v1oTCPqZyHga1w_3(cl, t);
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T16_;
			T16_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T16_ = lastSon_Bdq9aiV9buvJtPvmOc0OR5JQ(result);
			if (!((*T16_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52))) goto LA17_;
			(*result).kind = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53);
		}
		LA17_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10):
	{
		NimStringDesc* T20_;
		NimStringDesc* T21_;
		T20_ = (NimStringDesc*)0;
		T21_ = (NimStringDesc*)0;
		T21_ = typeToString_QlvraUan7WbHowhAbvDvdA(t, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 1));
		T20_ = rawNewString((T21_ ? T21_->Sup.len : 0) + 60);
appendString(T20_, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_9));
appendString(T20_, T21_);
appendString(T20_, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_20));
		localError_NF6kBGchnhQYPbCedyefVA((*(*(*cl).c).graph).config, (*cl).info, T20_);
		result = errorType_9aXTnVBVS5pbBC3zrwMhttg((*cl).c);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
		{
			if (!(*cl).allowMetaTypes) goto LA25_;
			goto BeforeRet_;
		}
		LA25_: ;
		{
			if (!!(!(((*(*t).n).typ == t)))) goto LA29_;
			failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_21));
		}
		LA29_: ;
		n = prepareNode_gKp9aBprbf0cqtXoSYBnCkw(cl, (*t).n);
		{
			if (!!(((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA33_;
			n = (*(*cl).c).semConstExpr((*cl).c, n);
		}
		LA33_: ;
		{
			if (!((*(*n).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA37_;
			result = skipTypes_zsqmUNR5OZrTUna0Y9bdu9bg((*n).typ, 256);
		}
		goto LA35_;
		LA37_: ;
		{
			{
				if (!!(((*(*n).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60)))) goto LA42_;
				result = newTypeS_xb5E2cGIynZweqWlCP8Tig(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60), (*cl).c);
				if ((*result).sons) { nimGCunrefRC1((*result).sons); (*result).sons = NIM_NIL; }
				(*result).sons = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeqRC1((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
				asgnRef((void**) (&(*result).sons->data[0]), (*n).typ);
				asgnRef((void**) (&(*result).n), n);
			}
			goto LA40_;
			LA42_: ;
			{
				result = (*n).typ;
			}
			LA40_: ;
		}
		LA35_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 36):
	{
		result = skipIntLit_PyQcLUUKkDYcpwke36Qpxgmagicsys(t);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lookup_2;
		lookup_2 = lookup_bvHwbVO9aaeW8QVm81fQN3w((*cl).typeMap, t);
		{
			if (!!((lookup_2 == NIM_NIL))) goto LA49_;
			result = lookup_2;
			{
				NIM_BOOL T53_;
				T53_ = (NIM_BOOL)0;
				T53_ = (((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0);
				if (T53_) goto LA54_;
				T53_ = (*cl).skipTypedesc;
				LA54_: ;
				if (!T53_) goto LA55_;
				result = base_PfgI9ap7WOnsRfFV4znQ27w(result);
			}
			LA55_: ;
		}
		goto LA47_;
		LA49_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T60_;
			if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
			if (!!(((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0)))) goto LA58_;
			if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
			T60_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T60_ = replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w(cl, (*t).sons->data[((NI) 0)]);
			result = makeTypeDesc_BhLel1oiCddEysrc3uc6iQ((*cl).c, T60_);
		}
		goto LA47_;
		LA58_: ;
		LA47_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60):
	{
		result = t;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53):
	{
		NI TM_mrkrD9c2e31kE4GdQtpMdaQ_27;
		tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T73_;
		RootObj* T74_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T78_;
		{
			tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T67_;
			RootObj* T68_;
			if (!(((NI) 100) < (*cl).recursionLimit)) goto LA65_;
			T67_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
			T67_ = &t->Sup;
			T68_ = (RootObj*)0;
			T68_ = idTableGet_K5M5T7J9c0H7M5ahfeRl8xw((*cl).localCache, T67_);
			if (T68_) chckObj((*T68_).m_type, (&NTI_v9ae2Dpu13OW2ZJ2U9bNMd9cQ_));
			result = ((tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T68_));
			{
				if (!!((result == NIM_NIL))) goto LA71_;
				goto BeforeRet_;
			}
			LA71_: ;
		}
		LA65_: ;
		TM_mrkrD9c2e31kE4GdQtpMdaQ_27 = addInt((*cl).recursionLimit, ((NI) 1));
		(*cl).recursionLimit = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_27);
		result = instCopyType_cNsAY9aO2v1oTCPqZyHga1w_5(cl, t);
		T73_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
		T73_ = &t->Sup;
		T74_ = (RootObj*)0;
		T74_ = &result->Sup.Sup;
		idTablePut_anELyz7VLsjbCIoxLpxbfQ((&(*cl).localCache), T73_, T74_);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = sonsLen_eY4T6kWJb9a9aTWUufrTLjXg(result);
			i_2 = ((NI) 1);
			{
				while (1) {
					NI TM_mrkrD9c2e31kE4GdQtpMdaQ_28;
					if (!(i_2 < colontmp_)) goto LA77;
					i = i_2;
					if ((NU)(i) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i,((*result).sons ? (*result).sons->Sup.len : 0)-1);
					if ((NU)(i) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i,((*result).sons ? (*result).sons->Sup.len : 0)-1);
					asgnRef((void**) (&(*result).sons->data[i]), replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w(cl, (*result).sons->data[i]));
					TM_mrkrD9c2e31kE4GdQtpMdaQ_28 = addInt(i_2, ((NI) 1));
					i_2 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_28);
				} LA77: ;
			}
		}
		T78_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T78_ = lastSon_Bdq9aiV9buvJtPvmOc0OR5JQ(result);
		propagateToOwner_KHgxvzuOk6nXefcrhhP9cWw(result, T78_);
	}
	break;
	default:
	{
		{
			NIM_BOOL T82_;
			NI TM_mrkrD9c2e31kE4GdQtpMdaQ_29;
			tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T95_;
			RootObj* T96_;
			T82_ = (NIM_BOOL)0;
			T82_ = containsGenericType_YPjOkGV9axAnGR3UfLeWZ1g_2(t);
			if (!T82_) goto LA83_;
			{
				tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T89_;
				RootObj* T90_;
				if (!(((NI) 100) < (*cl).recursionLimit)) goto LA87_;
				T89_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
				T89_ = &t->Sup;
				T90_ = (RootObj*)0;
				T90_ = idTableGet_K5M5T7J9c0H7M5ahfeRl8xw((*cl).localCache, T89_);
				if (T90_) chckObj((*T90_).m_type, (&NTI_v9ae2Dpu13OW2ZJ2U9bNMd9cQ_));
				result = ((tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T90_));
				{
					if (!!((result == NIM_NIL))) goto LA93_;
					goto BeforeRet_;
				}
				LA93_: ;
			}
			LA87_: ;
			TM_mrkrD9c2e31kE4GdQtpMdaQ_29 = addInt((*cl).recursionLimit, ((NI) 1));
			(*cl).recursionLimit = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_29);
			result = instCopyType_cNsAY9aO2v1oTCPqZyHga1w_5(cl, t);
			(*result).size = IL64(-1);
			T95_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
			T95_ = &t->Sup;
			T96_ = (RootObj*)0;
			T96_ = &result->Sup.Sup;
			idTablePut_anELyz7VLsjbCIoxLpxbfQ((&(*cl).localCache), T95_, T96_);
			{
				NI i_3;
				NI colontmp__2;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = sonsLen_eY4T6kWJb9a9aTWUufrTLjXg(result);
				i_4 = ((NI) 0);
				{
					while (1) {
						NI TM_mrkrD9c2e31kE4GdQtpMdaQ_32;
						if (!(i_4 < colontmp__2)) goto LA99;
						i_3 = i_4;
						{
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* r;
							if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
							if (!!(((*result).sons->data[i_3] == NIM_NIL))) goto LA102_;
							{
								NimStringDesc* T108_;
								NimStringDesc* T109_;
								if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
								if (!((*(*result).sons->data[i_3]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10))) goto LA106_;
								T108_ = (NimStringDesc*)0;
								if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
								T109_ = (NimStringDesc*)0;
								T109_ = typeToString_QlvraUan7WbHowhAbvDvdA((*result).sons->data[i_3], ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 1));
								T108_ = rawNewString((T109_ ? T109_->Sup.len : 0) + ((*(*(*t).owner).name).s ? (*(*(*t).owner).name).s->Sup.len : 0) + 89);
appendString(T108_, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_30));
appendString(T108_, T109_);
appendString(T108_, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_31));
appendString(T108_, (*(*(*t).owner).name).s);
appendString(T108_, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_20));
								localError_NF6kBGchnhQYPbCedyefVA((*(*(*cl).c).graph).config, (*(*t).sym).info, T108_);
							}
							LA106_: ;
							if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
							r = replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w(cl, (*result).sons->data[i_3]);
							{
								tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* r2;
								if (!((*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA112_;
								r2 = skipTypes_zsqmUNR5OZrTUna0Y9bdu9bg(r, IL64(105553116266512));
								{
									if (!((6291456 &((NU64)1<<((NU)((*r2).kind)&63U)))!=0)) goto LA116_;
									r = skipTypes_zsqmUNR5OZrTUna0Y9bdu9bg(r2, 6291456);
								}
								LA116_: ;
							}
							LA112_: ;
							if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
							asgnRef((void**) (&(*result).sons->data[i_3]), r);
							{
								NIM_BOOL T120_;
								T120_ = (NIM_BOOL)0;
								T120_ = !(((*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16)));
								if (T120_) goto LA121_;
								T120_ = !((i_3 == ((NI) 0)));
								LA121_: ;
								if (!T120_) goto LA122_;
								propagateToOwner_KHgxvzuOk6nXefcrhhP9cWw(result, r);
							}
							LA122_: ;
						}
						LA102_: ;
						TM_mrkrD9c2e31kE4GdQtpMdaQ_32 = addInt(i_4, ((NI) 1));
						i_4 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_32);
					} LA99: ;
				}
			}
			asgnRef((void**) (&(*result).n), replaceTypeVarsN_TMTYUYo5YIKojKgBmj9boOQ(cl, (*result).n, ((*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25))));
			switch ((*result).kind) {
			case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16):
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* idx;
				if ((NU)(((NI) 0)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*result).sons ? (*result).sons->Sup.len : 0)-1);
				idx = (*result).sons->data[((NI) 0)];
				{
					NimStringDesc* T129_;
					if (!!(!(((*idx).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))))) goto LA127_;
					T129_ = (NimStringDesc*)0;
					T129_ = dollar__r38WafKlW80RkvoZTcia4Q(TM_mrkrD9c2e31kE4GdQtpMdaQ_33);
					internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*(*cl).c).graph).config, T129_);
				}
				LA127_: ;
			}
			break;
			case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17):
			case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18):
			{
				propagateFieldFlags_Bjo9aRQCCUN0CrmERULS79bg(result, (*result).n);
			}
			break;
			case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25):
			{
				eraseVoidParams_w2l6CVu9bYn8M06fJcMTkHw(result);
				skipIntLiteralParams_w2l6CVu9bYn8M06fJcMTkHw_2(result);
			}
			break;
			case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24):
			{
				{
					NIM_BOOL T135_;
					NIM_BOOL T136_;
					NIM_BOOL T137_;
					NIM_BOOL T138_;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* s;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* old;
					tyTuple_KlSLWBROOViO04uLQHu7ig T145_;
					NI T146_;
					T135_ = (NIM_BOOL)0;
					T136_ = (NIM_BOOL)0;
					T137_ = (NIM_BOOL)0;
					T138_ = (NIM_BOOL)0;
					T138_ = (*cl).isReturnType;
					if (!(T138_)) goto LA139_;
					T138_ = ((*(*(*(*cl).c).graph).config).selectedGC == ((tyEnum_TGCMode_tkz389aDYNd8ykeZszCuBSw) 4));
					LA139_: ;
					T137_ = T138_;
					if (!(T137_)) goto LA140_;
					T137_ = ((*result).attachedOps[(((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 0))- 0] == 0);
					LA140_: ;
					T136_ = T137_;
					if (!(T136_)) goto LA141_;
					if ((NU)(((NI) 0)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*result).sons ? (*result).sons->Sup.len : 0)-1);
					T136_ = !(((*(*result).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 3)));
					LA141_: ;
					T135_ = T136_;
					if (!(T135_)) goto LA142_;
					T135_ = !((((*(*(*(*cl).c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 40))&63U)))!=0));
					LA142_: ;
					if (!T135_) goto LA143_;
					s = (*(*(*cl).c).graph).sysTypes[(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24))- 0];
					old = copyType_4O4aYoscFPo2FRSh4rP9ayg(s, (*s).owner, NIM_FALSE);
					asgnRef((void**) (&(*old).sons), (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) setLengthSeqV2(&((*old).sons)->Sup, (&NTI_Ef05srmQTDulnBdXR4Ja6Q_), ((NI) 0)));
					asgnRef((void**) (&(*old).n), NIM_NIL);
					(*old).flags = 1073741824;
					if ((NU)(((NI) 0)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*result).sons ? (*result).sons->Sup.len : 0)-1);
					addSonSkipIntLit_2IwAMgUJgjdjR7Qyvt9bjCQ(old, (*result).sons->data[((NI) 0)]);
					genericAssign((void*)(*result).attachedOps, (void*)(*old).attachedOps, (&NTI_PsPyPA45AAjHu4uDGHNjTg_));
					nimZeroMem((void*)(&T145_), sizeof(tyTuple_KlSLWBROOViO04uLQHu7ig));
					T145_.Field0 = result;
					T145_.Field1 = old;
					asgnRef((void**) (&(*(*cl).c).typesWithOps), (tySequence_YceFcaugL2PWNtVbyffD9bQ*) incrSeqV3((TGenericSeq*)((*(*cl).c).typesWithOps), (&NTI_YceFcaugL2PWNtVbyffD9bQ_)));
					T146_ = (*(*cl).c).typesWithOps->Sup.len++;
					asgnRef((void**) (&(*(*cl).c).typesWithOps->data[T146_].Field0), T145_.Field0);
					asgnRef((void**) (&(*(*cl).c).typesWithOps->data[T146_].Field1), T145_.Field1);
				}
				LA143_: ;
			}
			break;
			default:
			{
			}
			break;
			}
		}
		goto LA80_;
		LA83_: ;
		{
			result = t;
			{
				NIM_BOOL T151_;
				T151_ = (NIM_BOOL)0;
				T151_ = !(((*result).n == NIM_NIL));
				if (!(T151_)) goto LA152_;
				T151_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17));
				LA152_: ;
				if (!T151_) goto LA153_;
				(*result).size = IL64(-1);
				asgnRef((void**) (&(*result).n), replaceObjBranches_Io9bn1sBWaB9bMXajNZg3W5Q((&(*cl)), (*result).n));
			}
			LA153_: ;
		}
		LA80_: ;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = replaceTypeVarsTAux_cNsAY9aO2v1oTCPqZyHga1w_2(cl, t);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTypeParam_9bQUIWM6kcjKJh9ayHoQtlkg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T3_;
	NIM_BOOL T5_;
{	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
	if (!(T1_)) goto LA2_;
	T3_ = (NIM_BOOL)0;
	if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
	T3_ = ((*(*n).sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 4));
	if (T3_) goto LA4_;
	T5_ = (NIM_BOOL)0;
	if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
	T5_ = ((*(*n).sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7));
	if (!(T5_)) goto LA6_;
	if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
	T5_ = (((*(*n).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0);
	LA6_: ;
	T3_ = T5_;
	LA4_: ;
	T1_ = T3_;
	LA2_: ;
	result = T1_;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, reResolveCallsWithTypedescParams_gKp9aBprbf0cqtXoSYBnCkw_2)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NIM_BOOL needsFixing;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32));
		if (!(T3_)) goto LA4_;
		if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
		if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*(*n).sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*n).sons->data[((NI) 0)]).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
		T3_ = (((*(*(*n).sons->data[((NI) 0)]).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0);
		LA4_: ;
		if (!T3_) goto LA5_;
		needsFixing = NIM_FALSE;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen_P89cqdlERShb9alU3iC0yj8w_2ast(n);
			i_2 = ((NI) 1);
			{
				while (1) {
					NI TM_mrkrD9c2e31kE4GdQtpMdaQ_47;
					if (!(i_2 < colontmp_)) goto LA9;
					i = i_2;
					{
						NIM_BOOL T12_;
						if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
						T12_ = (NIM_BOOL)0;
						T12_ = isTypeParam_9bQUIWM6kcjKJh9ayHoQtlkg((*n).sons->data[i]);
						if (!T12_) goto LA13_;
						needsFixing = NIM_TRUE;
					}
					LA13_: ;
					TM_mrkrD9c2e31kE4GdQtpMdaQ_47 = addInt(i_2, ((NI) 1));
					i_2 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_47);
				} LA9: ;
			}
		}
		{
			if (!needsFixing) goto LA17_;
			if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
			if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
			if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
			if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
			if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*(*n).sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*n).sons->data[((NI) 0)]).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
			asgnRef((void**) (&(*n).sons->data[((NI) 0)]), newSymNode_I2DV2TmmOysY1ZEGW19b9bRg((*(*(*n).sons->data[((NI) 0)]).sym).owner));
			result = (*(*cl).c).semOverloadedCall((*cl).c, n, n, 12288, 0);
			goto BeforeRet_;
		}
		LA17_: ;
	}
	LA5_: ;
	{
		NI i_3;
		NI colontmp__2;
		NI i_4;
		i_3 = (NI)0;
		colontmp__2 = (NI)0;
		colontmp__2 = safeLen_P89cqdlERShb9alU3iC0yj8w_2ast(n);
		i_4 = ((NI) 0);
		{
			while (1) {
				NI TM_mrkrD9c2e31kE4GdQtpMdaQ_48;
				if (!(i_4 < colontmp__2)) goto LA21;
				i_3 = i_4;
				if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
				if ((NU)(i_3) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i_3,((*n).sons ? (*n).sons->Sup.len : 0)-1);
				if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
				if ((NU)(i_3) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i_3,((*n).sons ? (*n).sons->Sup.len : 0)-1);
				asgnRef((void**) (&(*n).sons->data[i_3]), reResolveCallsWithTypedescParams_gKp9aBprbf0cqtXoSYBnCkw_2(cl, (*n).sons->data[i_3]));
				TM_mrkrD9c2e31kE4GdQtpMdaQ_48 = addInt(i_4, ((NI) 1));
				i_4 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_48);
			} LA21: ;
		}
	}
	result = n;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, replaceTypeVarsN_TMTYUYo5YIKojKgBmj9boOQ)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NI start) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!(n == NIM_NIL)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	result = copyNode_Dsjo9bte8vGxzhtcSrsTyiQ(n);
	{
		if (!!(((*n).typ == NIM_NIL))) goto LA7_;
		asgnRef((void**) (&(*result).typ), replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w(cl, (*n).typ));
	}
	LA7_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 0) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 57):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56):
	{
		result = n;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
		if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
		asgnRef((void**) (&(*result).sym), replaceTypeVarsS_sLVA1gNd8WU8o9cEwKvBh9cA(cl, (*n).sym));
		{
			tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* T16_;
			if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_22[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_23));
			if (!((*(*(*result).sym).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63))) goto LA14_;
			T16_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
			T16_ = NIM_NIL;
			result = newNode_duw0Uu9cIFXmCAaunQWIP0g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info, T16_, NIM_NIL);
		}
		LA14_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 140):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch;
		branch = NIM_NIL;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = sonsLen_zOB1gNtXypybIzLxxB9cyWQ(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
					NI TM_mrkrD9c2e31kE4GdQtpMdaQ_46;
					if (!(i_2 < colontmp_)) goto LA20;
					i = i_2;
					if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
					if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					it = (*n).sons->data[i];
					{
						if (!(it == NIM_NIL)) goto LA23_;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*cl).c).graph).config);
					}
					LA23_: ;
					switch ((*it).kind) {
					case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86):
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* cond;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e;
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(it, ((NI) 2), (*(*(*cl).c).graph).config);
						if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(((NI) 0)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*it).sons ? (*it).sons->Sup.len : 0)-1);
						cond = prepareNode_gKp9aBprbf0cqtXoSYBnCkw(cl, (*it).sons->data[((NI) 0)]);
						e = (*(*cl).c).semConstExpr((*cl).c, cond);
						{
							if (!!(((*e).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6)))) goto LA28_;
							internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*(*cl).c).graph).config, (*e).info, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_41));
						}
						LA28_: ;
						{
							NIM_BOOL T32_;
							T32_ = (NIM_BOOL)0;
							if (!(((TM_mrkrD9c2e31kE4GdQtpMdaQ_42[(NU)((*e).kind)>>3] &(1U<<((NU)((*e).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_43));
							T32_ = !(((*e).intVal == IL64(0)));
							if (!(T32_)) goto LA33_;
							T32_ = (branch == NIM_NIL);
							LA33_: ;
							if (!T32_) goto LA34_;
							if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
							if ((NU)(((NI) 1)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*it).sons ? (*it).sons->Sup.len : 0)-1);
							branch = (*it).sons->data[((NI) 1)];
						}
						LA34_: ;
					}
					break;
					case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
					{
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(it, ((NI) 1), (*(*(*cl).c).graph).config);
						{
							if (!(branch == NIM_NIL)) goto LA39_;
							if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
							if ((NU)(((NI) 0)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*it).sons ? (*it).sons->Sup.len : 0)-1);
							branch = (*it).sons->data[((NI) 0)];
						}
						LA39_: ;
					}
					break;
					default:
					{
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*cl).c).graph).config);
					}
					break;
					}
					TM_mrkrD9c2e31kE4GdQtpMdaQ_46 = addInt(i_2, ((NI) 1));
					i_2 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_46);
				} LA20: ;
			}
		}
		{
			if (!!((branch == NIM_NIL))) goto LA44_;
			result = replaceTypeVarsN_TMTYUYo5YIKojKgBmj9boOQ(cl, branch, ((NI) 0));
		}
		goto LA42_;
		LA44_: ;
		{
			result = newNodeI_vokyXY9cZDshCSxFKChhG9bg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info);
		}
		LA42_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 62):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
		n_2 = prepareNode_gKp9aBprbf0cqtXoSYBnCkw(cl, n);
		n_2 = reResolveCallsWithTypedescParams_gKp9aBprbf0cqtXoSYBnCkw_2(cl, n_2);
		{
			if (!(*cl).allowMetaTypes) goto LA50_;
			result = n_2;
		}
		goto LA48_;
		LA50_: ;
		{
			result = (*(*cl).c).semExpr((*cl).c, n_2, 0);
		}
		LA48_: ;
	}
	break;
	default:
	{
		NI length;
		length = sonsLen_zOB1gNtXypybIzLxxB9cyWQ(n);
		{
			if (!(((NI) 0) < length)) goto LA56_;
			newSons_Bu9cqnssJjx4jfWBeiR9albg(result, length);
			{
				if (!(((NI) 0) < start)) goto LA60_;
				if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
				if ((NU)(((NI) 0)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*result).sons ? (*result).sons->Sup.len : 0)-1);
				if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
				if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
				asgnRef((void**) (&(*result).sons->data[((NI) 0)]), (*n).sons->data[((NI) 0)]);
			}
			LA60_: ;
			{
				NI i_3;
				NI i_4;
				i_3 = (NI)0;
				i_4 = start;
				{
					while (1) {
						NI TM_mrkrD9c2e31kE4GdQtpMdaQ_49;
						if (!(i_4 < length)) goto LA64;
						i_3 = i_4;
						if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(i_3) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(i_3,((*result).sons ? (*result).sons->Sup.len : 0)-1);
						if (((TM_mrkrD9c2e31kE4GdQtpMdaQ_24[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_25));
						if ((NU)(i_3) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i_3,((*n).sons ? (*n).sons->Sup.len : 0)-1);
						asgnRef((void**) (&(*result).sons->data[i_3]), replaceTypeVarsN_TMTYUYo5YIKojKgBmj9boOQ(cl, (*n).sons->data[i_3], ((NI) 0)));
						TM_mrkrD9c2e31kE4GdQtpMdaQ_49 = addInt(i_4, ((NI) 1));
						i_4 = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_49);
					} LA64: ;
				}
			}
		}
		LA56_: ;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, replaceTypesInBody_JQMwbj1fgdFwBCg7mhUBRQ)(tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, NIM_BOOL allowMetaTypes) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA typeMap;
	tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg cl;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&typeMap), sizeof(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA));
	initLayeredTypeMap_CUPvqqdAvE7lW4r3YvsLsQ(pt, (&typeMap));
	nimZeroMem((void*)(&cl), sizeof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg));
	initTypeVars_Xi1rcYNuDZinU29bL68QCog(p, (&typeMap), (*n).info, owner, (&cl));
	cl.allowMetaTypes = allowMetaTypes;
	pushInfoContext_uDLK9aoAOWwwFTev4NOwF7Q((*(*p).graph).config, (*n).info, ((NimStringDesc*) NIM_NIL));
	result = replaceTypeVarsN_TMTYUYo5YIKojKgBmj9boOQ((&cl), n, ((NI) 0));
	popInfoContext_O9arH9bYenXLOr27ZSmcQnEw_3((*(*p).graph).config);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, generateTypeInstance_ab5BITmU2P8zKztV9cfNtsg)(tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA typeMap;
	tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg cl;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	nimZeroMem((void*)(&typeMap), sizeof(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA));
	initLayeredTypeMap_CUPvqqdAvE7lW4r3YvsLsQ(pt, (&typeMap));
	nimZeroMem((void*)(&cl), sizeof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg));
	initTypeVars_Xi1rcYNuDZinU29bL68QCog(p, (&typeMap), info, NIM_NIL, (&cl));
	pushInfoContext_uDLK9aoAOWwwFTev4NOwF7Q((*(*p).graph).config, info, ((NimStringDesc*) NIM_NIL));
	result = replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w((&cl), t);
	popInfoContext_O9arH9bYenXLOr27ZSmcQnEw_3((*(*p).graph).config);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, prepareMetatypeForSigmatch_ab5BITmU2P8zKztV9cfNtsg_2)(tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* p, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA typeMap;
	tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg cl;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	nimZeroMem((void*)(&typeMap), sizeof(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA));
	initLayeredTypeMap_CUPvqqdAvE7lW4r3YvsLsQ(pt, (&typeMap));
	nimZeroMem((void*)(&cl), sizeof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg));
	initTypeVars_Xi1rcYNuDZinU29bL68QCog(p, (&typeMap), info, NIM_NIL, (&cl));
	cl.allowMetaTypes = NIM_TRUE;
	pushInfoContext_uDLK9aoAOWwwFTev4NOwF7Q((*(*p).graph).config, info, ((NimStringDesc*) NIM_NIL));
	result = replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w((&cl), t);
	popInfoContext_O9arH9bYenXLOr27ZSmcQnEw_3((*(*p).graph).config);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, instAllTypeBoundOp_Qpi3NgGJ9aSfcPm9cZqhFJUg)(tyObject_TContext_C9bB2okDBl3OKGUBiY5k5Ug* c, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	NI i;
	i = ((NI) 0);
	{
		while (1) {
			NI T3_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* newty;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* oldty;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* opr;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* opr_2;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* opr_3;
			NI TM_mrkrD9c2e31kE4GdQtpMdaQ_50;
			T3_ = ((*c).typesWithOps ? (*c).typesWithOps->Sup.len : 0);
			if (!(i < T3_)) goto LA2;
			if ((NU)(i) >= (NU)((*c).typesWithOps ? (*c).typesWithOps->Sup.len : 0)) raiseIndexError2(i,((*c).typesWithOps ? (*c).typesWithOps->Sup.len : 0)-1);
			newty = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			newty = (*c).typesWithOps->data[i].Field0;
			oldty = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			oldty = (*c).typesWithOps->data[i].Field1;
			opr = (*newty).attachedOps[(((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 0))- 0];
			{
				NIM_BOOL T6_;
				T6_ = (NIM_BOOL)0;
				T6_ = !((opr == NIM_NIL));
				if (!(T6_)) goto LA7_;
				T6_ = !((((*opr).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, opr, oldty, info, ((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 1), ((NI) 1)));
			}
			LA8_: ;
			opr_2 = (*newty).attachedOps[(((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 2))- 0];
			{
				NIM_BOOL T12_;
				T12_ = (NIM_BOOL)0;
				T12_ = !((opr_2 == NIM_NIL));
				if (!(T12_)) goto LA13_;
				T12_ = !((((*opr_2).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, opr_2, oldty, info, ((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 1), ((NI) 1)));
			}
			LA14_: ;
			opr_3 = (*newty).attachedOps[(((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 1))- 0];
			{
				NIM_BOOL T18_;
				T18_ = (NIM_BOOL)0;
				T18_ = !((opr_3 == NIM_NIL));
				if (!(T18_)) goto LA19_;
				T18_ = !((((*opr_3).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, opr_3, oldty, info, ((tyEnum_TTypeAttachedOp_Rp5P9bWYldQTLkZ7DytmxOg) 1), ((NI) 1)));
			}
			LA20_: ;
			TM_mrkrD9c2e31kE4GdQtpMdaQ_50 = addInt(i, ((NI) 1));
			i = (NI)(TM_mrkrD9c2e31kE4GdQtpMdaQ_50);
		} 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_;
		if ((NU)(((NI) 0)) >= (NU)((*t).sons ? (*t).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*t).sons ? (*t).sons->Sup.len : 0)-1);
		T6_ = ((IL64(140737496743936) &((NU64)1<<((NU)((*(*t).sons->data[((NI) 0)]).kind)&63U)))!=0);
		LA7_: ;
		if (!T6_) goto LA8_;
		localError_NF6kBGchnhQYPbCedyefVA(conf, info, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_17));
	}
	goto LA1_;
	LA8_: ;
	{
		NIM_BOOL T11_;
		NI64 T12_;
		NimStringDesc* T16_;
		NimStringDesc* T17_;
		T11_ = (NIM_BOOL)0;
		T12_ = (NI64)0;
		T12_ = computeSize_vCG1GF2Iu043oALVyuJfOw_3(conf, t);
		T11_ = (T12_ == IL64(-2));
		if (T11_) goto LA13_;
		T11_ = isTupleRecursive_YPjOkGV9axAnGR3UfLeWZ1g_8(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_51));
appendString(T16_, T17_);
appendString(T16_, ((NimStringDesc*) &TM_mrkrD9c2e31kE4GdQtpMdaQ_10));
		localError_NF6kBGchnhQYPbCedyefVA(conf, info, T16_);
	}
	goto LA1_;
	LA14_: ;
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_semtypinstDatInit000)(void) {
static TNimNode* TM_mrkrD9c2e31kE4GdQtpMdaQ_2_2[2];
static TNimNode* TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[10];
static TNimNode TM_mrkrD9c2e31kE4GdQtpMdaQ_0[14];
NTI_Dxk9cFa3Fer9bZpQ9b4aBAFkA_.size = sizeof(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA);
NTI_Dxk9cFa3Fer9bZpQ9b4aBAFkA_.kind = 18;
NTI_Dxk9cFa3Fer9bZpQ9b4aBAFkA_.base = 0;
TM_mrkrD9c2e31kE4GdQtpMdaQ_2_2[0] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[1];
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[1].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[1].offset = offsetof(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA, topLayer);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[1].typ = (&NTI_9aiv9bp2t5icFNINcg9c4xi1Q_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[1].name = "topLayer";
TM_mrkrD9c2e31kE4GdQtpMdaQ_2_2[1] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[2];
NTI_AWHx031vx269auvjKCITW9cw_.size = sizeof(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA*);
NTI_AWHx031vx269auvjKCITW9cw_.kind = 21;
NTI_AWHx031vx269auvjKCITW9cw_.base = (&NTI_Dxk9cFa3Fer9bZpQ9b4aBAFkA_);
NTI_AWHx031vx269auvjKCITW9cw_.flags = 3;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[2].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[2].offset = offsetof(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA, nextLayer);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[2].typ = (&NTI_AWHx031vx269auvjKCITW9cw_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[2].name = "nextLayer";
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[0].len = 2; TM_mrkrD9c2e31kE4GdQtpMdaQ_0[0].kind = 2; TM_mrkrD9c2e31kE4GdQtpMdaQ_0[0].sons = &TM_mrkrD9c2e31kE4GdQtpMdaQ_2_2[0];
NTI_Dxk9cFa3Fer9bZpQ9b4aBAFkA_.node = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[0];
NTI_gMP9b9b8d4Uze3mE5G9aP9afmg_.size = sizeof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg);
NTI_gMP9b9b8d4Uze3mE5G9aP9afmg_.kind = 18;
NTI_gMP9b9b8d4Uze3mE5G9aP9afmg_.base = 0;
TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[0] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[4];
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[4].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[4].offset = offsetof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg, c);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[4].typ = (&NTI_EjEifkTC8tg9afiUW4StSSA_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[4].name = "c";
TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[1] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[5];
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[5].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[5].offset = offsetof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg, typeMap);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[5].typ = (&NTI_AWHx031vx269auvjKCITW9cw_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[5].name = "typeMap";
TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[2] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[6];
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[6].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[6].offset = offsetof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg, symMap);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[6].typ = (&NTI_9aiv9bp2t5icFNINcg9c4xi1Q_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[6].name = "symMap";
TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[3] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[7];
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[7].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[7].offset = offsetof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg, localCache);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[7].typ = (&NTI_9aiv9bp2t5icFNINcg9c4xi1Q_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[7].name = "localCache";
TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[4] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[8];
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[8].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[8].offset = offsetof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg, info);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[8].typ = (&NTI_WGx4rAexNXnczy1Avn646Q_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[8].name = "info";
TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[5] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[9];
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[9].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[9].offset = offsetof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg, allowMetaTypes);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[9].typ = (&NTI_VaVACK0bpYmqIQ0mKcHfQQ_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[9].name = "allowMetaTypes";
TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[6] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[10];
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[10].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[10].offset = offsetof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg, skipTypedesc);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[10].typ = (&NTI_VaVACK0bpYmqIQ0mKcHfQQ_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[10].name = "skipTypedesc";
TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[7] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[11];
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[11].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[11].offset = offsetof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg, isReturnType);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[11].typ = (&NTI_VaVACK0bpYmqIQ0mKcHfQQ_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[11].name = "isReturnType";
TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[8] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[12];
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[12].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[12].offset = offsetof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg, owner);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[12].typ = (&NTI_K9bspPztfoWajecnwjyHuYQ_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[12].name = "owner";
TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[9] = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[13];
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[13].kind = 1;
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[13].offset = offsetof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg, recursionLimit);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[13].typ = (&NTI_rR5Bzr1D5krxoo1NcNyeMA_);
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[13].name = "recursionLimit";
TM_mrkrD9c2e31kE4GdQtpMdaQ_0[3].len = 10; TM_mrkrD9c2e31kE4GdQtpMdaQ_0[3].kind = 2; TM_mrkrD9c2e31kE4GdQtpMdaQ_0[3].sons = &TM_mrkrD9c2e31kE4GdQtpMdaQ_3_10[0];
NTI_gMP9b9b8d4Uze3mE5G9aP9afmg_.node = &TM_mrkrD9c2e31kE4GdQtpMdaQ_0[3];
}

