/* Generated by Nim Compiler v0.19.0 */
/*   (c) 2018 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_NEW_MANGLING_RULES
#define NIM_INTBITS 32

#include "nimbase.h"
#include <string.h>
#include <setjmp.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
typedef struct tyObject_TPassContext_ZmGcnZ1NlGbjfV1h4uuYdw tyObject_TPassContext_ZmGcnZ1NlGbjfV1h4uuYdw;
typedef struct tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ;
typedef struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w;
typedef struct tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
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 tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q;
typedef struct tySequence_Mh9agqM29bm9aP5AUL1x7dZGA tySequence_Mh9agqM29bm9aP5AUL1x7dZGA;
typedef struct tySequence_arD7Tw6eD6lvOczWZl9buNg tySequence_arD7Tw6eD6lvOczWZl9buNg;
typedef struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw;
typedef struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q;
typedef struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA;
typedef struct tyObject_TCtx_kjKhKVgNzXX9aw59cmt1hHYg tyObject_TCtx_kjKhKVgNzXX9aw59cmt1hHYg;
typedef struct tySequence_jWKvSdankQPoT5bw9cBU9aiw tySequence_jWKvSdankQPoT5bw9cBU9aiw;
typedef struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA;
typedef struct tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tySequence_YceFcaugL2PWNtVbyffD9bQ tySequence_YceFcaugL2PWNtVbyffD9bQ;
typedef struct tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw;
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_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 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_Target_9abOl5DLX8suLujOaHSvGzw tyObject_Target_9abOl5DLX8suLujOaHSvGzw;
typedef struct tyObject_MsgConfig_kV7r8HWT0SqOYW2k2ukC6A tyObject_MsgConfig_kV7r8HWT0SqOYW2k2ukC6A;
typedef struct tySequence_PJMRIt5QxCm6bRaVyQ5CGA tySequence_PJMRIt5QxCm6bRaVyQ5CGA;
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 tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg;
typedef struct tySequence_sM4lkSb7zS6F7OVMvW9cffQ tySequence_sM4lkSb7zS6F7OVMvW9cffQ;
typedef struct tySequence_pK3qSsBZwdXd6qyUMkd5Jw tySequence_pK3qSsBZwdXd6qyUMkd5Jw;
typedef struct tyObject_SuggestcolonObjectType__bkMuTTb2G70XfpzAiyNrnQ tyObject_SuggestcolonObjectType__bkMuTTb2G70XfpzAiyNrnQ;
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 tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ;
typedef struct tyObject_TIdentIter_Oi4goG2ACEsy9cyTe6OCPrA tyObject_TIdentIter_Oi4goG2ACEsy9cyTe6OCPrA;
typedef struct tyObject_HSlice_HjDAjiFsTWGmlZ9cd8nEusA tyObject_HSlice_HjDAjiFsTWGmlZ9cd8nEusA;
typedef struct tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA;
typedef struct tyTuple_kN8up2W6YKc5YA9avn5mV5w tyTuple_kN8up2W6YKc5YA9avn5mV5w;
typedef struct tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA;
typedef struct tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA;
typedef struct tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg;
typedef struct tyObject_TInstantiationPair_HkXM4cJmOpk8zFcmq9c9c3gQ tyObject_TInstantiationPair_HkXM4cJmOpk8zFcmq9c9c3gQ;
typedef struct tySequence_0dpGN6F4ocevqUQGsaf41w tySequence_0dpGN6F4ocevqUQGsaf41w;
typedef struct tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ;
typedef struct tySequence_P9bWebqKHkrGHwy9aZW9bw0TA tySequence_P9bWebqKHkrGHwy9aZW9bw0TA;
typedef struct tyTuple_K9bYwLtGKmFQYg8TwmqoG3Q tyTuple_K9bYwLtGKmFQYg8TwmqoG3Q;
typedef struct tyObject_TOptionEntry_H9ac5KbrDJVwT1zH5O83r7w tyObject_TOptionEntry_H9ac5KbrDJVwT1zH5O83r7w;
typedef struct tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w;
typedef struct tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw;
typedef struct tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw;
typedef struct tyTuple_zwpS6d6iewrdlBSTNFoyVA tyTuple_zwpS6d6iewrdlBSTNFoyVA;
typedef struct tyTuple_ZtAk5YtH0VW1iPowvxePrg tyTuple_ZtAk5YtH0VW1iPowvxePrg;
typedef struct tyObject_TFileInfo_GE3hAakXKOEpch4ap3zXAw tyObject_TFileInfo_GE3hAakXKOEpch4ap3zXAw;
typedef struct tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g;
typedef struct tyObject_VmArgs_0UUl6e5CNNQfMon2xW2bVA tyObject_VmArgs_0UUl6e5CNNQfMon2xW2bVA;
typedef struct tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ;
typedef struct tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA;
typedef struct Exception Exception;
typedef struct tySequence_uB9b75OUPRENsBAu4AnoePA tySequence_uB9b75OUPRENsBAu4AnoePA;
typedef struct TSafePoint TSafePoint;
typedef struct tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A;
typedef struct tyObject_TFieldInstCtx_GtjfcSJJiOiQ0USEydDBBA tyObject_TFieldInstCtx_GtjfcSJJiOiQ0USEydDBBA;
typedef struct tyObject_TFieldsCtx_Oumniq9anVI0B7eyXhL1U9cw tyObject_TFieldsCtx_Oumniq9anVI0B7eyXhL1U9cw;
typedef struct tyObject_TTabIter_VYF5VQsIYEVaBL0fKZJkbg tyObject_TTabIter_VYF5VQsIYEVaBL0fKZJkbg;
typedef struct tyObject_TIdPair_AdFnD2YdADPeuJbG2YJ4vg tyObject_TIdPair_AdFnD2YdADPeuJbG2YJ4vg;
typedef struct tyTuple_KlSLWBROOViO04uLQHu7ig tyTuple_KlSLWBROOViO04uLQHu7ig;
typedef struct tyTuple_xDU9bZmv1ZbZkJDaATBekIQ tyTuple_xDU9bZmv1ZbZkJDaATBekIQ;
typedef struct tyTuple_quA39a2QdEQU9cSEIUSibApQ tyTuple_quA39a2QdEQU9cSEIUSibApQ;
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_xYhUhS7X82rKTqbT9bRfCnw tyTuple_xYhUhS7X82rKTqbT9bRfCnw;
typedef struct tyTuple_QeWl6B6ffS4pU6WWrtcrDw tyTuple_QeWl6B6ffS4pU6WWrtcrDw;
typedef struct tyObject_Cfile_i9cKq1ZGd1wgagjUEHLVFtg tyObject_Cfile_i9cKq1ZGd1wgagjUEHLVFtg;
typedef struct tyObject_StackTraceEntry_oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry_oLyohQ7O2XOvGnflOss8EA;
typedef NU8 tyEnum_TNimKind_jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag_v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc_ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc_WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
tyEnum_TNimKind_jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag_v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc_ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc_WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_TPassContext_ZmGcnZ1NlGbjfV1h4uuYdw {
  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;
};
struct tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q {
NI counter;
tySequence_Mh9agqM29bm9aP5AUL1x7dZGA* data;
};
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_MqeJmGcq433YA5MeaSjdjg) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
typedef NU32 tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ;
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_gGVj2XU4byrHu6wLri3ExA) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
typedef NU32 tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw;
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_0fqG5A4ZWR5zNYQ6ndnFcA) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* 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_onLglM433uk9cCFfxT62Tfg) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
typedef struct {
N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, ClP_0) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, void* ClE_0);
void* ClE_0;
} tyProc_VLr034hEi5eNsjZoyvf2Xg;
typedef struct {
N_NIMCALL_PTR(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, ClP_0) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, void* ClE_0);
void* ClE_0;
} tyProc_IkMmlSMKq2j1qu5KCaRjEg;
struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA {
NI counter;
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* data;
};
typedef NU8 tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ;
typedef N_NIMCALL_PTR(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, tyProc_ieUYnzWnOiW2loCFIFhD9bA) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* dc, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ 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_vTgAc1OsYaFyeD40uCdaWA {
  tyObject_TPassContext_ZmGcnZ1NlGbjfV1h4uuYdw 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_MqeJmGcq433YA5MeaSjdjg semConstExpr;
tyProc_gGVj2XU4byrHu6wLri3ExA semExpr;
tyProc_gGVj2XU4byrHu6wLri3ExA semTryExpr;
tyProc_MqeJmGcq433YA5MeaSjdjg semTryConstExpr;
tyProc_gGVj2XU4byrHu6wLri3ExA semOperand;
tyProc_MqeJmGcq433YA5MeaSjdjg semConstBoolExpr;
tyProc_0fqG5A4ZWR5zNYQ6ndnFcA semOverloadedCall;
tyProc_onLglM433uk9cCFfxT62Tfg semTypeNode;
tyProc_VLr034hEi5eNsjZoyvf2Xg semInferredLambda;
tyProc_IkMmlSMKq2j1qu5KCaRjEg semGenerateInstance;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg includedFiles;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA pureEnumFields;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA userPragmas;
tyObject_TCtx_kjKhKVgNzXX9aw59cmt1hHYg* evalContext;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg unknownIdents;
tySequence_jWKvSdankQPoT5bw9cBU9aiw* generics;
NI topStmts;
NI lastGenericIdx;
NI hloLoopDetector;
NI inParallelStmt;
tyProc_ieUYnzWnOiW2loCFIFhD9bA 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_TLineInfo_WGx4rAexNXnczy1Avn646Q {
NU16 line;
NI16 col;
NI32 fileIndex;
};
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;
};
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;
};
struct tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ {
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* modules;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA packageSyms;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg deps;
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;
tyProc_c6vdo1yHyj19b9bS17tijS2w importModuleCallback;
tyProc_d5yEkT9aXkAtHvVerr7IeCQ includeFileCallback;
tyProc_sP1I7TbCn358eLy9bX4IphA recordStmt;
tyObject_Table_0Y2brGGKD9bV6GJLXT9aUDgA cacheSeqs;
tyObject_Table_NttoEzoiq5CiphZe81oadg cacheCounters;
tyObject_Table_nagDFX4QHx0s6Fvma9blmSg cacheTables;
};
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;
tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* dup;
};
struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind;
union{
struct {tySequence_Ef05srmQTDulnBdXR4Ja6Q* typeInstCache;
} S1;
struct {tySequence_DXS6mEo7PVUFJkirsQ9bNQA* procInstCache;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* gcUnsafetyReason;
} S2;
struct {tySequence_DXS6mEo7PVUFJkirsQ9bNQA* usedGenerics;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tab;
} S3;
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* guard;
NI bitsize;
} S4;
} _Ukind;
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;
} S1;
struct {NF floatVal;
} S2;
struct {NimStringDesc* strVal;
} S3;
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
} S4;
struct {tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
} S5;
struct {tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
} S6;
} _Ukind;
NimStringDesc* comment;
};
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_PJMRIt5QxCm6bRaVyQ5CGA* 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_ZQWti4neSCb9bXB2tK1JcKg;
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_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;
NIM_BOOL helpWritten;
tyEnum_IdeCmd_1Ced39bl5eePmZ1PKMPXigQ ideCmd;
NIM_BOOL oldNewlines;
tyEnum_TSystemCC_1eWBJUonHMOnlBwsOvpFmA cCompiler;
tySet_tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg enableNotes;
tySet_tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg disableNotes;
tySet_tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg foreignPackageNotes;
tySet_tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg notes;
tySet_tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg 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* 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_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg;
typedef NU8 tySet_tyEnum_TLookupFlag_ObWMY5GMSl1GiMcrKaAhKQ;
typedef NU8 tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ;
struct tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ {
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* resultSym;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* selfSym;
NI nestedLoopCounter;
NI nestedBlockCounter;
NI inTryStmt;
tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ* next;
NIM_BOOL wasForwarded;
NIM_BOOL mappingExists;
tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q mapping;
};
typedef NU64 tySet_tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA;
typedef NU64 tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
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;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* destructor;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* deepCopy;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* assignment;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sink;
tySequence_MvZmat48bhe9b6x9aUD58D5Q* methods;
NI64 size;
NI16 align;
NI16 lockLevel;
tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeInst;
};
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;
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_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA;
struct tyObject_TIdentIter_Oi4goG2ACEsy9cyTe6OCPrA {
NI h;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* name;
};
typedef NU8 tyEnum_TOverloadIterMode_xCku9a0wtzKQQBbzX1t6btg;
struct tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ {
tyObject_TIdentIter_Oi4goG2ACEsy9cyTe6OCPrA it;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m;
tyEnum_TOverloadIterMode_xCku9a0wtzKQQBbzX1t6btg mode;
NI symChoiceIndex;
tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* scope;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg inSymChoice;
};
typedef NU8 tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw;
struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
NimStringDesc* s;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* next;
NI h;
};
typedef NU8 tySet_tyEnum_TRenderFlag_wrPgUo1ExBlHvFnXN2nSHw;
typedef NU8 tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef NU8 tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg;
typedef NU8 tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw[21];
typedef NU8 tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
typedef tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tyArray_AB6yfoUgfWM2NtGe9bzkCmw[2];
typedef tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tyArray_E1tCxfqiw3fNnaaIR5Kn2A[2];
typedef NU8 tySet_tyEnum_TTypeCmpFlag_72pgRXSg7774cr9aCWVPORw;
struct tyObject_HSlice_HjDAjiFsTWGmlZ9cd8nEusA {
tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag a;
tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag b;
};
typedef NU8 tyEnum_TImplication_t4F29a8ejY1DFQTYTML9c9byA;
typedef NU8 tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w;
typedef NU8 tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ;
typedef NimStringDesc* tyArray_HtfYcqfMcR0nZCYmG4O6LQ[2];
typedef NU8 tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg;
struct tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA {
tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c;
NI exactMatches;
NI genericMatches;
NI subtypeMatches;
NI intConvMatches;
NI convMatches;
tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg state;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* callee;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* calleeSym;
NI calleeScope;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call;
tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q bindings;
tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg magic;
NIM_BOOL baseTypeMatch;
tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag fauxMatch;
NIM_BOOL genericConverter;
NIM_BOOL coerceDistincts;
NIM_BOOL typedescMatched;
NIM_BOOL isNoCall;
NU8 mutabilityProblem;
tySequence_Ef05srmQTDulnBdXR4Ja6Q* inferredTypes;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* diagnostics;
NI inheritancePenalty;
NI firstMismatch;
NIM_BOOL diagnosticsEnabled;
};
struct tyTuple_kN8up2W6YKc5YA9avn5mV5w {
NimStringDesc* Field0;
NI Field1;
NI Field2;
};
struct tyObject_TMatchedConcept_9blNHn9cqK8EfxnwsfjDnKvg {
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* candidateType;
tyObject_TMatchedConcept_9blNHn9cqK8EfxnwsfjDnKvg* prev;
NI depth;
};
struct tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw {
NI depthLevel;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA symbols;
tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* parent;
};
struct tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA {
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
tySequence_Ef05srmQTDulnBdXR4Ja6Q* concreteTypes;
NI compilesId;
};
struct tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA {
tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q topLayer;
tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* nextLayer;
};
struct tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg {
tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c;
tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap;
tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q symMap;
tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q localCache;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
NIM_BOOL allowMetaTypes;
NIM_BOOL skipTypedesc;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
NI recursionLimit;
};
typedef NU8 tyEnum_TDistinctCompare_9bNKHGs63atuMFXnAleTveg;
struct tyObject_TInstantiationPair_HkXM4cJmOpk8zFcmq9c9c3gQ {
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* genericSym;
tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA* inst;
};
typedef NU8 tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw[34];
typedef NU8 tyEnum_SemAsgnMode_e9aTobe3zFbbfTs9bHC7XMIQ;
struct tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ {
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
NI unmatchedVarParam;
NI firstMismatch;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* diagnostics;
NIM_BOOL enabled;
};
struct tyTuple_K9bYwLtGKmFQYg8TwmqoG3Q {
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* Field0;
NI Field1;
};
typedef NU8 tyEnum_TProcCompilationSteps_2LY1MARGn5z4Y5kU8eJFMg;
typedef tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* tyArray_o8KQyTFgNQGvsJZYtdEsgA[8192];
struct tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw {
tyArray_o8KQyTFgNQGvsJZYtdEsgA buckets;
NI wordCounter;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* idAnon;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* idDelegator;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* emptyIdent;
};
typedef NU8 tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw;
struct tyObject_TOptionEntry_H9ac5KbrDJVwT1zH5O83r7w {
tySet_tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg options;
tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA defaultCC;
tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA* dynlib;
tySet_tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg notes;
tySet_tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ features;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* otherPragmas;
};
struct tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w {
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg toMixin;
NIM_BOOL cursorInBody;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* bracketExpr;
};
typedef NU8 tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA;
typedef NU8 tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA;
struct tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw {
  RootObj Sup;
NI colonstate_;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* genericParams1;
NimStringDesc* paramName2;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info3;
};
typedef struct {
N_NIMCALL_PTR(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, ClP_0) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeClass, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typId, void* ClE_0);
void* ClE_0;
} tyProc_deQGUDmtZfoSYMATIh4XqQ;
typedef N_CLOSURE_PTR(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, TM_rF9caJawfOjYTjsgLVUSGFA_68) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeClass, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typId);
typedef N_CLOSURE_PTR(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, TM_rF9caJawfOjYTjsgLVUSGFA_70) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeClass, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typId);
typedef N_CLOSURE_PTR(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, TM_rF9caJawfOjYTjsgLVUSGFA_72) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeClass, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typId);
typedef N_CLOSURE_PTR(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, TM_rF9caJawfOjYTjsgLVUSGFA_73) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeClass, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typId);
typedef N_CLOSURE_PTR(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, TM_rF9caJawfOjYTjsgLVUSGFA_75) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeClass, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typId);
typedef N_CLOSURE_PTR(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, TM_rF9caJawfOjYTjsgLVUSGFA_77) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeClass, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typId);
typedef N_CLOSURE_PTR(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, TM_rF9caJawfOjYTjsgLVUSGFA_78) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeClass, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typId);
typedef N_CLOSURE_PTR(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, TM_rF9caJawfOjYTjsgLVUSGFA_82) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeClass, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typId);
struct tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw {
tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg toBind;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg toMixin;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg toInject;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
NIM_BOOL cursorInBody;
NI scopeN;
};
typedef NimStringDesc* tyArray_24KAM9afIUgUaqBaEBB6r9bg[3];
typedef NU8 tyEnum_TCheckPointResult_mp7otVupbkudrLwM0IFcHg;
struct tyTuple_zwpS6d6iewrdlBSTNFoyVA {
NI Field0;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* Field1;
};
typedef NU8 tySet_tyEnum_TTypeAllowedFlag_wySCBkY0DFkxIXMhoVC4cw;
typedef NU8 tyEnum_TLocFlag_o2bqJgR4ceIupnUSpxiudA;
typedef NU8 tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg;
typedef NU8 tySet_tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg[36];
typedef NU8 tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag;
typedef NU8 tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ;
typedef NU8 tySet_tyEnum_TTypeRelFlag_oebzuK0gHqNtaStfyppjAg;
struct tyTuple_ZtAk5YtH0VW1iPowvxePrg {
tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw Field0;
NimStringDesc* Field1;
};
typedef NU8 tyEnum_TAnalysisResult_p9a9bcrXoRmLT4eUuwrDq9b4w;
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;
};
typedef NimStringDesc* tyArray_1gf0WJETmt11u6s4GjKzfw[2];
struct tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g {
  RootObj Sup;
NI colonstate_;
tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c1;
tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* scope2;
};
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (tyObject_VmArgs_0UUl6e5CNNQfMon2xW2bVA* args, void* ClE_0);
void* ClE_0;
} tyProc_S09bPfanQx9bEvdh4862x8zw;
struct tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ {
tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ kind;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* asgnForType;
NIM_BOOL recurse;
};
struct tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA {
NI a;
NI b;
};
typedef tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tyArray_T6RKPw8xfAeNaoei9aZGzXg[3];
typedef NimStringDesc* tyArray_Re75IspeoxXy2oCZHwcRrA[2];
struct tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA {
  RootObj Sup;
tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* left;
tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* right;
NI L;
NimStringDesc* data;
};
typedef NU16 tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw;
typedef NU8 tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw;
typedef NU8 tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ;
typedef NimStringDesc* tyArray_nHXaesL0DJZHyVS07ARPRA[1];
struct Exception {
  RootObj Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
tySequence_uB9b75OUPRENsBAu4AnoePA* trace;
NU raise_id;
Exception* up;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClP_0) (Exception* e, void* ClE_0);
void* ClE_0;
} tyProc_NT9bSe2DDkjdtx7j9aov2Z6g;
struct TSafePoint {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
tyProc_NT9bSe2DDkjdtx7j9aov2Z6g raiseAction;
};
typedef NU8 tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw;
typedef NU8 tyEnum_TSpawnResult_Dm2bUaaIicBfyW7KwReaLQ;
typedef N_CLOSURE_PTR(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, TM_rF9caJawfOjYTjsgLVUSGFA_322) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
typedef NU8 tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg;
struct tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A {
  RootObj Sup;
NI colonstate_;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* genericType1;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClP_0) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, void* ClE_0);
void* ClE_0;
} tyProc_eCtpGoGVTJwOjFybsf76cg;
typedef N_CLOSURE_PTR(NIM_BOOL, TM_rF9caJawfOjYTjsgLVUSGFA_361) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
typedef N_CLOSURE_PTR(NIM_BOOL, TM_rF9caJawfOjYTjsgLVUSGFA_362) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
typedef N_CLOSURE_PTR(NIM_BOOL, TM_rF9caJawfOjYTjsgLVUSGFA_363) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
typedef N_CLOSURE_PTR(NIM_BOOL, TM_rF9caJawfOjYTjsgLVUSGFA_365) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
typedef N_CLOSURE_PTR(NIM_BOOL, TM_rF9caJawfOjYTjsgLVUSGFA_370) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
typedef N_CLOSURE_PTR(NIM_BOOL, TM_rF9caJawfOjYTjsgLVUSGFA_373) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
typedef N_CLOSURE_PTR(NIM_BOOL, TM_rF9caJawfOjYTjsgLVUSGFA_374) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
typedef N_CLOSURE_PTR(NIM_BOOL, TM_rF9caJawfOjYTjsgLVUSGFA_375) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
typedef N_CLOSURE_PTR(NIM_BOOL, TM_rF9caJawfOjYTjsgLVUSGFA_378) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
struct tyObject_TFieldInstCtx_GtjfcSJJiOiQ0USEydDBBA {
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tupleType;
NI tupleIndex;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field;
NIM_BOOL replaceByFieldName;
tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c;
};
struct tyObject_TFieldsCtx_Oumniq9anVI0B7eyXhL1U9cw {
tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c;
tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m;
};
struct tyObject_TTabIter_VYF5VQsIYEVaBL0fKZJkbg {
NI h;
};
typedef N_CLOSURE_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, TM_rF9caJawfOjYTjsgLVUSGFA_433) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, void* ClE_0);
typedef N_CLOSURE_PTR(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, TM_rF9caJawfOjYTjsgLVUSGFA_434) (tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, void* ClE_0);
struct tyObject_TIdPair_AdFnD2YdADPeuJbG2YJ4vg {
tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* key;
RootObj* val;
};
struct tyTuple_KlSLWBROOViO04uLQHu7ig {
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* Field0;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* Field1;
};
struct tyTuple_xDU9bZmv1ZbZkJDaATBekIQ {
NI Field0;
NI32 Field1;
NI32 Field2;
};
struct tyTuple_quA39a2QdEQU9cSEIUSibApQ {
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* Field0;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* Field1;
};
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;
};
struct tyTuple_xYhUhS7X82rKTqbT9bRfCnw {
NI Field0;
NimStringDesc* Field1;
NI32 Field2;
};
struct tyTuple_QeWl6B6ffS4pU6WWrtcrDw {
NI Field0;
NimStringDesc* Field1;
};
typedef NU8 tySet_tyEnum_CfileFlag_Vl9c9ayddDuXiWtnWTsEYGsA;
struct tyObject_Cfile_i9cKq1ZGd1wgagjUEHLVFtg {
NimStringDesc* cname;
NimStringDesc* obj;
tySet_tyEnum_CfileFlag_Vl9c9ayddDuXiWtnWTsEYGsA flags;
};
struct tyObject_VmArgs_0UUl6e5CNNQfMon2xW2bVA {
NI ra;
NI rb;
NI rc;
void* slots;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* currentException;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q currentLineInfo;
};
struct tyObject_StackTraceEntry_oLyohQ7O2XOvGnflOss8EA {
NCSTRING procname;
NI line;
NCSTRING filename;
};
struct tySequence_DfgJFJEYoj4YBAHLZPl5lQ {
  TGenericSeq Sup;
  tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* data[SEQ_DECL_SIZE];
};
struct tySequence_Ef05srmQTDulnBdXR4Ja6Q {
  TGenericSeq Sup;
  tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* data[SEQ_DECL_SIZE];
};
struct tySequence_DXS6mEo7PVUFJkirsQ9bNQA {
  TGenericSeq Sup;
  tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA* data[SEQ_DECL_SIZE];
};
struct tySequence_jWKvSdankQPoT5bw9cBU9aiw {
  TGenericSeq Sup;
  tyObject_TInstantiationPair_HkXM4cJmOpk8zFcmq9c9c3gQ data[SEQ_DECL_SIZE];
};
struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ {
  TGenericSeq Sup;
  tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
};
struct tySequence_0dpGN6F4ocevqUQGsaf41w {
  TGenericSeq Sup;
  tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ data[SEQ_DECL_SIZE];
};
struct tySequence_P9bWebqKHkrGHwy9aZW9bw0TA {
  TGenericSeq Sup;
  tyTuple_K9bYwLtGKmFQYg8TwmqoG3Q data[SEQ_DECL_SIZE];
};
struct tySequence_sM4lkSb7zS6F7OVMvW9cffQ {
  TGenericSeq Sup;
  NimStringDesc* 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_Mh9agqM29bm9aP5AUL1x7dZGA {
  TGenericSeq Sup;
  tyObject_TIdPair_AdFnD2YdADPeuJbG2YJ4vg data[SEQ_DECL_SIZE];
};
struct tySequence_arD7Tw6eD6lvOczWZl9buNg {
  TGenericSeq Sup;
  tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA* data[SEQ_DECL_SIZE];
};
struct tySequence_YceFcaugL2PWNtVbyffD9bQ {
  TGenericSeq Sup;
  tyTuple_KlSLWBROOViO04uLQHu7ig data[SEQ_DECL_SIZE];
};
struct tySequence_kxu4GK0onha2t9bo86mdVAg {
  TGenericSeq Sup;
  tyTuple_xDU9bZmv1ZbZkJDaATBekIQ data[SEQ_DECL_SIZE];
};
struct tySequence_48JTohSgTy339bRxHzUD8KA {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct tySequence_bWZXqEvLFwhLvAqSRoFNgQ {
  TGenericSeq Sup;
  tyTuple_quA39a2QdEQU9cSEIUSibApQ 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_PJMRIt5QxCm6bRaVyQ5CGA {
  TGenericSeq Sup;
  tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q 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_pK3qSsBZwdXd6qyUMkd5Jw {
  TGenericSeq Sup;
  tyObject_Cfile_i9cKq1ZGd1wgagjUEHLVFtg data[SEQ_DECL_SIZE];
};
struct tySequence_MvZmat48bhe9b6x9aUD58D5Q {
  TGenericSeq Sup;
  tyTuple_zwpS6d6iewrdlBSTNFoyVA data[SEQ_DECL_SIZE];
};
struct tySequence_uB9b75OUPRENsBAu4AnoePA {
  TGenericSeq Sup;
  tyObject_StackTraceEntry_oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA*, newContext_0BKaTX1MtNRievQXkE1rGQ)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module);
N_LIB_PRIVATE N_NIMCALL(void, internalError_yTu5SGHF0j0P9cQrqN7YylA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* errMsg);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConstExpr_U3qPBy54f1PkCP8vmFMCRA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(void, suggestExpr_utpC2gr4BrwN59bDcE4of4w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TLookupFlag_ObWMY5GMSl1GiMcrKaAhKQ flags);
N_LIB_PRIVATE N_NIMCALL(void, semCaptureSym_gjv8Bt4Od6mrP2aUY07hoA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semSym_XS6IXZ9bx3UuasCvJk5VxKA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getGenSym_9cHGgeaz0zI8z6eWnyHP7Bg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(void, markUsed_6hg0JhEmQNoQRUGJJom2vw)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w** usageSym);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kinds);
static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, inlineConst_9bymE7d1QP8cYGIeo3NFMKAsem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* src);
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_fPlwH3r9agN9aEHB6yCPMh0wsystem)(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_TNode_bROa11lyF5vxEN9aYNbHmhw*, newSymNode_UWZXukHA5As9aCftRHbafBg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr);
static N_INLINE(void, rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_2system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT_fCDI7oO1NNVXXURtxSzsRw)(tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
static N_INLINE(NI, len_CdME9baJhvveuPEDZE9bXoxAsigmatch)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NI, requiredParams_6Hq5d57iO68Jzq8gsWL25A)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, symChoice_e9ckn59a48lY35fHaH19c0xsw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA r);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem_2Mfumf6CnyNlShDWdIgobwsystem)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, initOverloadIter_5E8M4x8tMAW3KCmti57FUA)(tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ* o, tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2)(tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ* o, tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ)(tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(void, addSon_gCCf68XrWL79bKes6htzFjQ_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semMacroExpr_9bmxDHTa4eojLns652LIkJw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(void, pushInfoContext_jVPMMc4H29cyI52qg0Kp9aUg)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(void, globalError_NF6kBGchnhQYPbCedyefVA_2)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* arg);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
static N_INLINE(NI, safeLen_CdME9baJhvveuPEDZE9bXoxArenderer)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TRenderFlag_wrPgUo1ExBlHvFnXN2nSHw renderFlags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalMacroCall_wCEfcY0TEZRJihtTHLABDg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module, tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAfterMacroCall_XlzLDLqIEXrxOyQPBIKHYg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* macroResult, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getModule_43y2sdiIt63745LnAZPmZQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprNoType_U3qPBy54f1PkCP8vmFMCRA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, discardCheck_1gYGSG6NjOPkINqwm7joJg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, implicitlyDiscardable_J6cfuIanCXYEsLNE8M8o9cQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, lastSon_esDJA7239bJDiq4UrX9aHCjg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isCallExpr_63pt39coF5C8JoG0utNnwWg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeI_lJ75Ni9cLabI0ssrSNczTxg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NI children);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar__qX5C9b0n9bOP7jk69amC8dA7A)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar__tduYJIZOMabvcOCb9bVwWCA_2)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_LIB_PRIVATE N_NIMCALL(void, popInfoContext_HFVjkUQz7LMV9aOS6uKLckQ)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semTypeNode_VyBZhWPO9cyRyURhXkNKu7w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(void, checkSonsLen_EezdXeDvu4rB7fR84AJZgw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NI length, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semTypeof_VyBZhWPO9cyRyURhXkNKu7w_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*, openScope_I8L4Lnrah88WDc4sPJzbjQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(void, closeScope_q62Ixzqzx2R5yeGMamw81g)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(void, fixupTypeOf_kpOFzKOiLqZnXNQ9aEb30pg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* typExpr);
N_LIB_PRIVATE N_NIMCALL(void, rawAddSon_uZzh0IWnWErsZbQ8YFaRRA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son);
N_LIB_PRIVATE N_NIMCALL(void, assignType_z2malisaD2RKFo0cGpXWvQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* dest, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* src);
N_LIB_PRIVATE N_NIMCALL(NI, sonsLen_qPWPHw7WgJeEVYUdcaRIig)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semAnonTuple_VyBZhWPO9cyRyURhXkNKu7w_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newOrPrevType_y4ESw6ErNhPuQy82cNWFmw)(tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev, tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(void, addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(NIM_BOOL, equalMem_DCrUjdaMvFDHaR1hs7sQGwropes)(void* a, void* b, NI size);
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeI_I7fH85CUcZMasoPRKxPsPg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(void, add_gCCf68XrWL79bKes6htzFjQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semRangeAux_VyBZhWPO9cyRyURhXkNKu7w_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, errorType_5olHzpuoNS9asyp0iz7j62Q)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
static N_INLINE(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipIntLit_7SeREq19a8pkSCOuiHcpHnwsigmatch)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, copyType_UkDKseEIJgQZ1cGmoQSskA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, NIM_BOOL keepId);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameType_3isNyHKb0U1OCnClmflXSg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tySet_tyEnum_TTypeCmpFlag_72pgRXSg7774cr9aCWVPORw flags);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isOrdinalType_tcejMcLGk6ut4jAKBig68w)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, NIM_BOOL allowEnumWithHoles);
static N_INLINE(NIM_BOOL, contains_Q79akNsDbJpCYo4tQzRSE2Qsem)(tyObject_HSlice_HjDAjiFsTWGmlZ9cd8nEusA s, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag value);
static N_INLINE(tyObject_HSlice_HjDAjiFsTWGmlZ9cd8nEusA, dotdot__2BOQQTJSgRdTj69bMDpS1Zwsem)(tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag a, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, enumHasHoles_oBaRrNx0TwrublbZIUKenA_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasUnresolvedArgs_LeFS3Ufk6SguFjd3eMJWeg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isUnresolvedSym_cO2rS0JIm8g9cbNlNyVnwhg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*, considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* origin);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, searchInScopes_xnVjAYTNrHOYQvPVqwg14w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, makeStaticExpr_9bxkVMWst1k8EaGgcgRhHwA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication_t4F29a8ejY1DFQTYTML9c9byA, weakLeValue_ZgzWfhdUsbwPI0319a0Xjbg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b);
static N_INLINE(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, freshType_qZDdYKlnG87DemGcaKuMLwsem)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* res, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(void, localError_mMj7lrOf3zBP9bl69amiKu5g_3)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w msg, NimStringDesc* arg);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semTypeExpr_VyBZhWPO9cyRyURhXkNKu7w_5)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, base_BFFuB9cFDZ89c6QWZqEFAtdA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, maybeAliasType_L9clWyMIvLOOZ9cbCUsKxaCQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeExpr, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, makeAndType_dzmTDcEU4T1CMf8RPHFyIg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t1, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t2);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, makeOrType_dzmTDcEU4T1CMf8RPHFyIg_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t1, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t2);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, makeNotType_7dJh5LJZc6UpAu4Si6BKOg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t1);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semAnyRef_Qz0jS9bzELc1ZEW1Xl29cGVg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newConstraint_3OZ81tHhhvQxNS5O7XIa9aQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag k);
N_LIB_PRIVATE N_NIMCALL(void, checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NI length, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(void, message_mMj7lrOf3zBP9bl69amiKu5g)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w msg, NimStringDesc* arg);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lastSon_ab52xel9cFebv9am0xV04xXA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semWhen_9cFxfe3QuUjcGT0YjtIGZ4g)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL semCheck);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, lookUp_2lqvMm9cf9bZrSA2I9a9cHb8ag_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, commonType_hfwrZ5ThSx8sbABQFEwdHg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y);
N_LIB_PRIVATE N_NIMCALL(NI, len_SWFNCiWYB89bTUPh5KptkvA_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newType_dQhKkL6uAkw83dy6l4d7iQ)(tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isEmptyContainer_oBaRrNx0TwrublbZIUKenA_3)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, commonSuperclass_CFsXKWHnV1O9asJrtw08whA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, forceBool_U3qPBy54f1PkCP8vmFMCRA_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, indexTypesMatch_nqUTi2CjNXm3wHwX3FP3iA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* f, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg);
N_LIB_PRIVATE N_NIMCALL(void, initCandidate_al6D1MtFq9bIwSvVxpct8pw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* ctx, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* callee);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, paramTypesMatch_MkZIYaWSL2Febv66liB9aIA)(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* m, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* f, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* argOrig);
N_LIB_PRIVATE N_NIMCALL(void, instGenericConvertersArg_6yHi72tjFidHu2E3fNZkJA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* x);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, generateInstance_g9b7H3AgWQ9ciaW2dF0vQm9ag)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(void, internalError_5hPl6LjCYJxMYxh9af9b9bXzw)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, NimStringDesc* errMsg);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar__E5ya0OOlyISUCw4ENFn9bLA)(tyTuple_kN8up2W6YKc5YA9avn5mV5w x);
static N_INLINE(NIM_BOOL, isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef_9cAA5YuQAAC3MVbnGeV86swsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, decRef_MV4BBk6J1qu70IbBxwEn4wsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, copySym_hicZXrzB9bwpjzwTWf8NTog)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, NIM_BOOL keepId);
N_LIB_PRIVATE N_NIMCALL(void, pushOwner_Wu2m3sh279aYfWNXavlKecA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA*, new_WXvut0jf9avLrZqje29bbhTQ)(void);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newSym_ZQfOwiQo63qLga19cuF5r9cQ)(tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw symKind, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* name, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tySet_tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg options);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(RootObj*, idTableGet_6XGoeu1puMq6qoi2OW419bA)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q t, tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* key);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, generateTypeInstance_hh5ZlzAUaBgsyjiF5uPRIQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* p, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, addDecl_iUv8DpVEGQp9aUuNG4lxujA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(void, rawPushProcCon_rlp4YNQ9cuQQzIjJRzZxqsA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(void, instantiateProcType_MuX09aHBkOq8swzh84Bygqw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* prc, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(void, initLayeredTypeMap_yTc1S4IWeD7MQCgbin2Tpg)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* Result);
N_LIB_PRIVATE N_NIMCALL(void, initTypeVars_8ULSOV8GOoI4Rn9cxu4ffow)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* p, tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA* typeMap, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* Result);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, instCopyType_2We2UBtd5z2KSfXRsPWlUQ)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, shallowCopy_lz8T1F9c0YwEOpUnrAUYgjg_3)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* src);
N_LIB_PRIVATE N_NIMCALL(void, resetIdTable_9cUS2oaKn1IFXKjLdglPZHQ_2)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q* x);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w)(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg* cl, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
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(NIM_BOOL, referencesAnotherParam_VlKnd4KgnJiU0i03xXnQyw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, errorNode_9bxkVMWst1k8EaGgcgRhHwA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, fitNodePostMatch_dy7KC0VI4p5JxVZFyTe7fw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipConv_6rsSLwtlU9c53a6w69be5JlQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, changeType_lfrCL9bscHIcnkZmm1gdmUg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* newType, NIM_BOOL check);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, elemType_BFFuB9cFDZ89c6QWZqEFAtdA_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getSymFromList_PV7rrwD4V8upTT57FCLRoQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* list, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident, NI start);
N_LIB_PRIVATE N_NIMCALL(NI64, firstOrd_4cSIntenL9aBXY6LAFsvXdQ)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NI64, lastOrd_PcKlk9cRVtdVcuEFs9bZTdAQ)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, NIM_BOOL fixedUnsigned);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipHiddenSubConv_uuBrjinRrhSs9bvaSDP4XtQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, propagateToOwner_Zokyl22yTzwcKmRycgQbKg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* owner, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* elem);
N_LIB_PRIVATE N_NIMCALL(void, eraseVoidParams_SMFMWVGsCG21VhwFnWblRg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, skipIntLiteralParams_Bq8s6GYU4y5c8o6Mprs6mw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, genericCacheGet_yrVWUjVCLM4qNMOOOoQryQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* genericSym, tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA entry, NI id);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameInstantiation_bGmhq9bb8pFOkYidfiwlp5w)(tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA a, tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, compareTypes_oyXq5u7iL4RjsT9bovvTE9cg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y, tyEnum_TDistinctCompare_9bNKHGs63atuMFXnAleTveg cmp, tySet_tyEnum_TTypeCmpFlag_72pgRXSg7774cr9aCWVPORw flags);
N_LIB_PRIVATE N_NIMCALL(void, rawHandleSelf_rlp4YNQ9cuQQzIjJRzZxqsA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(void, addObjFieldsToLocalScope_9aKmRFIRmowmJXCJbF9aObuQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, fieldVisible_FeY58g4QgBCvGhzCZ7tjxAsigmatch)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* f);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, strTableIncl_S7UP2gjoSg4O9bJhVmIWbPw)(tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA* t, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* n, NIM_BOOL onConflictKeepOld);
N_LIB_PRIVATE N_NIMCALL(void, safeAdd_159bXvKbDCwtLAAM9au9cb2iw)(tySequence_DXS6mEo7PVUFJkirsQ9bNQA** x, tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA* y);
N_LIB_PRIVATE N_NIMCALL(void, makeInstPair_Bur9cvlxIwJjniXLtddeKWQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA* inst, tyObject_TInstantiationPair_HkXM4cJmOpk8zFcmq9c9c3gQ* Result);
N_LIB_PRIVATE N_NIMCALL(void, pragma_av9bQYmoLtJKLA6ueIgHxoA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw validPragmas);
N_LIB_PRIVATE N_NIMCALL(void, instantiateBody_6RB9cSw8gDnp85iQpBn9a1Bg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* orig);
N_LIB_PRIVATE N_NIMCALL(void, maybeAddResult_llOVo9c3s0bb48y1MlbyvAw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, addResult_VjjspC9bBTueJBUiTQeKIpQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw owner);
N_LIB_PRIVATE N_NIMCALL(tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*, getIdent_uDz5mcDPddYz1vXwkXTNiQ)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* ic, NimStringDesc* identifier);
N_LIB_PRIVATE N_NIMCALL(void, addParamOrResult_D6rqUgJ2oXnnFxSawNzxCA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, findEnforcedStaticType_NQ09c28WWCqg4mh6W9aaQ4KQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getSysSym_9bvw79ck1FDiWpnBYh88rEfw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* name);
N_LIB_PRIVATE N_NIMCALL(void, addResultNode_9aKmRFIRmowmJXCJbF9aObuQ_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, initIdTable_9cUS2oaKn1IFXKjLdglPZHQ)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q* x);
N_LIB_PRIVATE N_NIMCALL(void, idTablePut_Xhv7unnxpOqdw7OJsXRnRg)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q* t, tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* key, RootObj* val);
N_LIB_PRIVATE N_NIMCALL(void, freshGenSyms_HQLWTiTxA5Nl9ciT1Sx7Dfg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* orig, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q* symMap);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semProcBody_U3qPBy54f1PkCP8vmFMCRA_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, fixNilType_wkwHEj6zZnYo2DMZys6jnA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, isAtom_NyXYMHACmbtWJZnWqE9cJCAparampatterns)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAsgn_mYOjn9apkbeBan9ajgaE2iOg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_SemAsgnMode_e9aTobe3zFbbfTs9bHC7XMIQ mode);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, builtinFieldAccess_k2Lin9a76VyrWz9b8OoRC9apg_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTypeExpr_J6cfuIanCXYEsLNE8M8o9cQ_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, lookupInRecord_UKAypME5AMFgsArDll8WMg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* field);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, readTypeParameter_Sz9aXVAPpoci70Ha7oJ9a9cqQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* paramName, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, linkTo_4qP0auPrvljCknknx42YWA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipGenericAlias_BFFuB9cFDZ89c6QWZqEFAtdA_3)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, lookupInRecordAndBuildCheck_3pOAAA43UjbX8Yi0x0mECQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* r, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* field, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** check);
N_LIB_PRIVATE N_NIMCALL(void, illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, createSetType_N6ldecgr6dVSnwp0xFJ2bg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* baseType);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, makeDeref_nRsa9acFWDI6GmzVZLXX3CQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, propertyWriteAccess_17hF5LAthFRvex8pEvpNKg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIdentNode_mj7QetSP2JbYkbT6xy0EJA)(tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNode_sa9bwmR1oPRYm27rlMD66CQ)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semOverloadedCallAnalyseEffects_tlHRnlepD3lWks2ZTgSoRg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semOverloadedCall_z9bsZfns7wNaCTMF0VgboGQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw filter, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(void, resolveOverloads_B3gtjSNpYjtA6RUxTTCoJA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig, tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw filter, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags, tySequence_0dpGN6F4ocevqUQGsaf41w** errors, NIM_BOOL errorsEnabled, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* Result);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_LIB_PRIVATE N_NIMCALL(void, semOpAux_wkwHEj6zZnYo2DMZys6jnA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, pickBestCandidate_UDLdJj9bbqqsA0eEwYbtKsA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* headSymbol, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initialBinding, tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw filter, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* best, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* alt, tySequence_0dpGN6F4ocevqUQGsaf41w** errors, NIM_BOOL diagnosticsFlag, NIM_BOOL errorsEnabled);
N_LIB_PRIVATE N_NIMCALL(NI, lastOverloadScope_BsRyCn9bd9cpY9adFkr4n1inQ)(tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ* o);
N_LIB_PRIVATE N_NIMCALL(void, initCandidate_QuqWjdtdULLI4ODFpVkK0Q)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* ctx, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* callee, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* binding, NI calleeScope, NIM_BOOL diagnosticsEnabled);
N_LIB_PRIVATE N_NIMCALL(void, determineType_79a2N3yeoK32VpcXiRGgdSg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semProcAux_HYGotOQX5pnodBI9cpMJqTw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw validPragmas, tyEnum_TProcCompilationSteps_2LY1MARGn5z4Y5kU8eJFMg phase);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semProcAnnotation_HKvmn9cXyuMLnGdyw4BNd9cw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* prc, tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw validPragmas);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, lookupMacro_0bGgbY2vzd9cI8DrFDXzH9aA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, searchInScopes_tBNUxh8HVPOg9c8tn3WqF9bA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* s, tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw filter);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, copyExcept_snlvQwXgyq2kcUxt2HHdjw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NI i);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, copyNode_lz8T1F9c0YwEOpUnrAUYgjg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* src);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, semIdentDef_xo9cgbfYKVVrrYTXCTptvbQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, semIdentWithPragma_w0c4409bd9b4T2DSbUAAqpNA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw allowed);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, semIdentVis_w0c4409bd9b4T2DSbUAAqpNA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw allowed);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newSymG_sxL9bg3I9cVytmWlUkzsHDaA)(tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar__jjfNrJtm9cAyhDM03lwdhoA)(tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nsuToLowerAsciiStr)(NimStringDesc* s);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, substr_9bUFQ4OV1temcDF0GZp317g)(NimStringDesc* s, NI first);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e, TNimType* typ);
N_LIB_PRIVATE N_NIMCALL(void, put_H1d3uunQKzmD6ilt8PinVw)(tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ* p, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* key, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* val);
N_LIB_PRIVATE N_NIMCALL(void, nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw k);
static N_INLINE(void, suggestSym_nUjK9c6nUBlRnsyc9a0Rm4jQsem)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w** usageSym, NIM_BOOL isDecl);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, setGenericParamsMisc_U3qPBy54f1PkCP8vmFMCRA_5)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semGenericParamList_JC2xPAEU5XROw7xR66txZg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newTypeWithSons_9aJU4B1fwkaTke7gv1KDkuQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tySequence_Ef05srmQTDulnBdXR4Ja6Q* sons);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semGenericConstraints_XLr6jPp9b9b6c6pn9c9bfix9cdg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsGenericType_YPjOkGV9axAnGR3UfLeWZ1g)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newTree_4bkTFXme4frVOAuq2YEc4g)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** children, NI childrenLen_0);
N_LIB_PRIVATE N_NIMCALL(void, semParamList_1K4lBiaKx6f704AxKCVBWw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* genericParams, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semProcTypeNode_Wwai8c2OJJtA0TZ9bSUtsXQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* genericParams, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, NIM_BOOL isType);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newProcType_xLsbVleCb74T7Vl9aPE528w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TOptionEntry_H9ac5KbrDJVwT1zH5O83r7w*, lastOptionEntry_8p6fqPdj1LEFydikuHxfXw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(void, initIntSet_a9a80eJplB17xrdZJ41Baww)(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* Result);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semParamType_FHAQ9aLj19b2cX1BhYcNj4dQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** constraint);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semNodeKindConstraints_1m6lSTM7X9c1raCMjgBm5Vg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* p, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semGenericStmt_U3qPBy54f1PkCP8vmFMCRA_6)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA flags, tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w* ctx);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, lookup_KTgYfJqnXmLWnl7vvw9c2lA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA flags, tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w* ctx);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, skipAlias_5qYRPQsu9attXO2xg5lnFVQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, strTableGet_0xgFDJUQtGGr2e0Sq9aLIhA)(tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA t, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* name);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains_sYBLNwnPJlAFi0nfWU79awg)(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* s, NI key);
N_LIB_PRIVATE N_NIMCALL(void, errorUndeclaredIdentifier_PLFSD1YzsA1kjG9bgxNK1WA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* name);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semGenericStmtSymbol_VDpzAtTAKzR09bJ1VerB9bfQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w* ctx, tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA flags, NIM_BOOL fromDotExpr);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalTemplate_pIDsfEQB8b89bGXTMDcsA0g)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* tmpl, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* genSymOwner, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, NIM_BOOL fromHlo);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newSymNodeTypeDesc_LBSKfJWN58S5YV9bDMBn6bQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, fuzzyLookup_Q9cQn1LH6wCwMsLUUKGnnjQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA flags, tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w* ctx, NIM_BOOL* isMacro);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newDot_podnxPJ03c9c6ZNI9b2Xkrqw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semMixinStmt_Xu89a7SlP4MtnEygilKypgQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* toMixin);
N_LIB_PRIVATE N_NIMCALL(void, incl_iUpE9bYmIR0fROyJskQwN8g)(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* s, NI key);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semGenericStmtScope_KTgYfJqnXmLWnl7vvw9c2lA_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA flags, tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w* ctx);
N_LIB_PRIVATE N_NIMCALL(void, addTempDecl_ZGxWSZNSlj0lQFGwU8y5Eg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newSymS_sxL9bg3I9cVytmWlUkzsHDaA_2)(tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, addPrelimDecl_uYeViz1Olm4OBLjqZ4nggg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isInfixAs_63pt39coF5C8JoG0utNnwWg_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw procKind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* genericParams, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* paramType, NimStringDesc* paramName, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NIM_BOOL anon);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, Marker_tyRef_paG7yT9agkyGNp6RxMDoUcA)(void* p, NI op);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_LIB_PRIVATE N_CLOSURE(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, addImplicitGenericImpl_JrXpyd9ar3u9cWwYh004SRbA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeClass, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typId, void* ClE_0);
N_LIB_PRIVATE N_NIMCALL(NI, sonsLen_SWFNCiWYB89bTUPh5KptkvA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, exactReplica_zecSxwTB9b7tzlmEEfD4RCQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, instGenericContainer_pqNRK9bvN0hfgmWeHuyytbQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* header, NIM_BOOL allowMetaTypes);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg)(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* s, NI key);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semPattern_U3qPBy54f1PkCP8vmFMCRA_8)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, flattenStmts_kDuk7Mp6Hb4CD2EwZbGQ3g)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semPatternBody_DuioLh4uofptxEKissr2sw)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, handleSym_bk0oScE0sXzp15PuTrbg3w)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newParam_bLdAkZWfIxJbJiSqlPkE9aw)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semBindStmt_7Gad7eXdiknA9a8oMyCe5VQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* toBind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, expectParam_DuioLh4uofptxEKissr2sw_2)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, stupidStmtListExpr_J6cfuIanCXYEsLNE8M8o9cQ_3)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, searchForProc_uVWu21csPbNmiy7yDLzlNA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* scope, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn);
N_LIB_PRIVATE N_NIMCALL(void, addInterfaceOverloadableSymAt_AlLnlK2NPVlmdvcGAsINdQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* scope, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(void, addInterfaceDeclAt_AlLnlK2NPVlmdvcGAsINdQ_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* scope, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(void, implicitPragmas_av9bQYmoLtJKLA6ueIgHxoA_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw validPragmas);
N_LIB_PRIVATE N_NIMCALL(void, wrongRedefinition_5xD0f9cR8frDSNZXLBtBo7A)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* s, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q conflictsWith);
N_LIB_PRIVATE N_NIMCALL(void, addGenericParamListToScope_wkwHEj6zZnYo2DMZys6jnA_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, addParams_ZGxWSZNSlj0lQFGwU8y5Eg_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind);
static N_INLINE(NIM_BOOL, importantComments_6aU0ZBrns2mWNHTDUbDERQsem)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(void, popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(void, semOverride_llOVo9c3s0bb48y1MlbyvAw_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
static N_INLINE(NIM_BOOL, contains_jPdUhZfr9a8sH2V3ZBDljzwparseopt)(NimStringDesc** a, NI aLen_0, NimStringDesc* item);
static N_INLINE(NI, find_9basNl9bVqn7SOf9bgUeI8TEQparseopt)(NimStringDesc** a, NI aLen_0, NimStringDesc* item);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, cursorInProc_43tL9cYyE1TPnGK9bR9akYRmQ)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, cursorInProcAux_43tL9cYyE1TPnGK9bR9akYRmQ_2)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TCheckPointResult_mp7otVupbkudrLwM0IFcHg, inCheckpoint_QibUUerXwpAtrft6bOBLKw)(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q current, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q trackPos);
N_LIB_PRIVATE N_NIMCALL(void, semMethodPrototype_llOVo9c3s0bb48y1MlbyvAw_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isGenericRoutine_fqH89bI309asBDvp00Y3VVQA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(void, safeAdd_TWFnHoF9cUXsejH5sIoriow)(tySequence_MvZmat48bhe9b6x9aUD58D5Q** x, tyTuple_zwpS6d6iewrdlBSTNFoyVA y);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasObjParam_cO2rS0JIm8g9cbNlNyVnwhg_2)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(void, methodDef_NKjYu87vB0uQmGRMfpDEBQ)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, NIM_BOOL fromCache);
N_LIB_PRIVATE N_NIMCALL(void, pushProcCon_rlp4YNQ9cuQQzIjJRzZxqsA_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
static N_INLINE(void, paramsTypeCheck_x9cTuhi0AX52YZsSO1Yzt6Asem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(void, typeAllowedCheck_OJXIxi4fH0HgKVBUkO49a7w)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tySet_tyEnum_TTypeAllowedFlag_wySCBkY0DFkxIXMhoVC4cw flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, typeAllowed_l66YrquEyj20orz2a4YbTw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tySet_tyEnum_TTypeAllowedFlag_wySCBkY0DFkxIXMhoVC4cw flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, hloBody_U3qPBy54f1PkCP8vmFMCRA_9)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, hlo_U3qPBy54f1PkCP8vmFMCRA_10)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, applyPatterns_U3qPBy54f1PkCP8vmFMCRA_11)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, applyRule_CznRIfbV1P9bsQhIYnRp0Qg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalPattern_dwfhsn9abqwoD6b9aTbAh52g)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, afterCallActions_GgyyrWN39a1O9c0p79aeR9aJkw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(void, semFinishOperands_b9a16o9ajKKf77bS9bhmwr4LA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, activate_9aKmRFIRmowmJXCJbF9aObuQ_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, fixAbstractType_wkwHEj6zZnYo2DMZys6jnA_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, isArrayConstr_kR3j4BVoX6LmX0p7IycneQsem)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, analyseIfAddressTakenInCall_wkwHEj6zZnYo2DMZys6jnA_5)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag, isAssignable_f9aTpaZXhdy71jBjQl9b59bxA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL isUnsafeAddr);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag, isAssignable_H8ClJSBthN45fIRKmjWHMQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL isUnsafeAddr);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, analyseIfAddressTaken_U3qPBy54f1PkCP8vmFMCRA_12)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newHiddenAddrTaken_U3qPBy54f1PkCP8vmFMCRA_13)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, makeVarType_IekWGhQ3TRvziI363UmYLQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* baseType, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, renderNotLValue_vfKkxNGxagsG9czCdz2IAEQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, magicsAfterOverloadResolution_k2Lin9a76VyrWz9b8OoRC9apg_6)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAddr_9a0tqA9cvykbsNlTYkUMQoBw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL isUnsafeAddr);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, makePtrType_l9aklUqVeTt1VTZeAvy7NSg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* baseType);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTypeOf_U3qPBy54f1PkCP8vmFMCRA_14)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semArrGet_k2Lin9a76VyrWz9b8OoRC9apg_7)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semSubscript_k2Lin9a76VyrWz9b8OoRC9apg_8)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semDeref_U3qPBy54f1PkCP8vmFMCRA_15)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semStaticType_wMW8LHacN21DLh2SAZzgTw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* childNode, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(NI64, getOrdValue_k4X4XP9cdVXYioHD9akA9bVbQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semSymGenericInstantiation_xZiYClCxIP6FwnrTC88utQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, explicitGenericInstantiation_xZiYClCxIP6FwnrTC88utQ_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, explicitGenericSym_xZiYClCxIP6FwnrTC88utQ_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ, typeRelImpl_3a3tkQB9aY8V2J9acM5cZ6nA)(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* f, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* aOrig, tySet_tyEnum_TTypeRelFlag_oebzuK0gHqNtaStfyppjAg flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, explicitGenericInstError_U3qPBy54f1PkCP8vmFMCRA_16)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, symNodeFromType_EqKA9bzupHdasVP0eorisDQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, symFromType_iNWu8slD9btMQQMjClRjrSQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(void, bracketNotFoundError_wkwHEj6zZnYo2DMZys6jnA_6)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_LIB_PRIVATE N_NIMCALL(void, notFoundError_OeLjQPoXFC2vFeDs66H0uQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySequence_0dpGN6F4ocevqUQGsaf41w* errors);
N_LIB_PRIVATE N_NIMCALL(void, presentFailedCandidates_lit4HV39axNlXtmRW3QNvtA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySequence_0dpGN6F4ocevqUQGsaf41w* errors, tyTuple_ZtAk5YtH0VW1iPowvxePrg* Result);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, describeArgs_ecpCiCj0vYckEVlm9brabQQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NI startIdx, tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw prefer);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, getProcHeader_7eB0wVYzPcmlKQ3zrnnOsA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym, tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw prefer);
N_LIB_PRIVATE N_NIMCALL(void, effectProblem_sKErKWQPrnyCjBRG4muZzw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* f, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, NimStringDesc** result);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semArrPut_k2Lin9a76VyrWz9b8OoRC9apg_9)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipAddr_8hC5GzyZwRmEI0dwiPCejwsem)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAsgnOpr_U3qPBy54f1PkCP8vmFMCRA_17)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semIsPartOf_k2Lin9a76VyrWz9b8OoRC9apg_10)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TAnalysisResult_p9a9bcrXoRmLT4eUuwrDq9b4w, isPartOf_1otDDZAmvFsmbqPyFytXFg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIntNodeT_9cyUT9bfUrNoEvba2MBHfEuw)(NI64 intVal, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTypeTraits_U3qPBy54f1PkCP8vmFMCRA_18)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalTypeTrait_Rc4oN69c49c9bOhdIdiNAQ61A)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* traitCall, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* operand, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* context);
N_NIMCALL(NI, hashString)(NimStringDesc* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, toNode_wZjMTbS7mTh7jlNYlUTARA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q i);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newTypeWithSons_9bMWuh2Si4sNtAnCubzpXcA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tySequence_Ef05srmQTDulnBdXR4Ja6Q* sons);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newStrNode_8GaTnuPqpzGLNcerzDOURQ)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NimStringDesc* strVal);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIntNode_v2VGJAZNfKPVngZCqEXQtA)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NI64 intVal);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, uninstantiate_NQ09c28WWCqg4mh6W9aaQ4KQ_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsGarbageCollectedRef_IVXYI9cxSeivThgKCncHRnA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newStrNodeT_WT9aAnGjbhNgDuVvAUcXPaA)(NimStringDesc* strVal, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semInstantiationInfo_U3qPBy54f1PkCP8vmFMCRA_19)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NI, expectIntLit_QxG3G3wb9aBNUPC2axaY2ig)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q, getInfoContext_GGzPJJDWwqGxjES7LRmsUw)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, NI index);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, toFullPath_tdNdBP9cVqODPZCeXYb1GvA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, NI32 fileIdx);
static N_INLINE(NI, toLinenumber_xCTdxEFc5VM0Lp6fDoJKSwastalgo)(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
static N_INLINE(NI, toColumn_xCTdxEFc5VM0Lp6fDoJKSw_2astalgo)(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semOrd_U3qPBy54f1PkCP8vmFMCRA_20)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, makeRangeType_J365P9cgI1ESa4FCAHPtZbA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, NI64 first, NI64 last, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* intType);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semOf_U3qPBy54f1PkCP8vmFMCRA_21)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NI, inheritanceDiff_1dM2iQB5qStJfnn3684ijQ_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semLowHigh_EW5X9akTyzsjElSah59cM0MA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semShallowCopy_k2Lin9a76VyrWz9b8OoRC9apg_11)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semBindSym_U3qPBy54f1PkCP8vmFMCRA_22)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, isCompileTimeProc_r9cAFhCIx1KQ7kiILYnBfeAsem)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semDynamicBindSym_U3qPBy54f1PkCP8vmFMCRA_23)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_NIMCALL(void, Marker_tyRef_SpPKZRnM6o0hUcC8D01PyQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void, setupGlobalCtx_Jryw7iJyk9cy0c6AkQG59cMg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module, tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph);
N_LIB_PRIVATE N_NIMCALL(NI, registerCallback_cgcfxU9adbDapJPQvvIUo1g)(tyObject_TCtx_kjKhKVgNzXX9aw59cmt1hHYg* c, NimStringDesc* name, tyProc_S09bPfanQx9bEvdh4862x8zw callback);
N_LIB_PRIVATE N_CLOSURE(void, bindSymWrapper_9aTogSUg9cTTyP1djTiPulQQ)(tyObject_VmArgs_0UUl6e5CNNQfMon2xW2bVA* a, void* ClE_0);
N_LIB_PRIVATE N_NIMCALL(void, setResult_lEw9cDANMCUBq5p0fwnGPOw)(tyObject_VmArgs_0UUl6e5CNNQfMon2xW2bVA* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, opBindSym_9cV0njKwEz9aqXFlWdVBZNkw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* scope, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NI isMixin, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getNode_9aYjhJ9b65wMCAGzy3cT3fNg)(tyObject_VmArgs_0UUl6e5CNNQfMon2xW2bVA* a, NI i);
N_LIB_PRIVATE N_NIMCALL(NI64, getInt_ZLWNgB9a9bBNn2K6uBUujX0Q)(tyObject_VmArgs_0UUl6e5CNNQfMon2xW2bVA* a, NI i);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIntTypeNode_IoblBePQdnK3IoXX7b1EDg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NI64 intVal, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(tyProc_MqeJmGcq433YA5MeaSjdjg, getPlugin_4do1HPA4n4pVVIXuu4gcjA)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* ic, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn);
N_LIB_PRIVATE N_NIMCALL(void, liftTypeBoundOps_loja41ceALuHLYIaYdWs2A)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, liftBody_q2JRlTNHywfIpAuDfnDihg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newProcType_folYoosh9csL06vxhe2kSLA)(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(void, addParam_fOgchBIS5li4btpxItPSYQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* procType, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param);
N_LIB_PRIVATE N_NIMCALL(void, liftBodyAux_1qKhZJAcRsaYyilT4S9bjzQ)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y);
N_LIB_PRIVATE N_NIMCALL(void, defaultOp_EqLvDCRsBHP8S88OSL5lEg)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newAsgnStmt_xZKC0wGy2jBnytvrjhvjwg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* le, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ri);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, declareCounter_nJ7Gsh0pZucXzWHqJotPDQ)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, NI64 first);
N_LIB_PRIVATE N_NIMCALL(void, addVar_uUhXmzovFMFlt08IBvmvJQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* value);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIntLit_TuFlkTIoJNHT6fCcycYtSw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NI64 value);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, genWhileLoop_4KADwrzdXdnyOKZgTaLMng)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* i, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* dest);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, genBuiltin_3ruLKRtg9cUn7GtT9cll9ajPA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg magic, NimStringDesc* name, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* i);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, createMagic_wGa7y1oybLUFG1rIAeCr1A)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, NimStringDesc* name, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, genHigh_MV2CjVA8K8K4UngVlqWOhQ)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, at_JNplCAKg2O4f9c5UqWAh3CA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* i, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* elemType);
N_LIB_PRIVATE N_NIMCALL(void, addIncStmt_IRp226yA0x9bJeuOTyvNYaA)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* i);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, considerOverloadedOp_b79bpThV5jugZdp8EayObVw)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, destructorCall_5G551YLUwYFkrK7bdAONRg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, genAddr_I7Wwi9c0vii4YENbX59bFsPQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, considerAsgnOrSink_wthYP6wjQuyR9aGNTa4041g)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newAsgnCall_gv8ja9bt5MX9aMwxceO6YB9aQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newDeepCopyCall_RtzgKUBFn8d3cqCopPBSiQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newOpCall_4cEr3tEyQ29a2O9ch73sFWfg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newSeqCall_Rf570gXLqmmOisdPN2bfbQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y);
N_LIB_PRIVATE N_NIMCALL(void, liftBodyObj_O7HP9aYIB72nY7iHgjC0YSg)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, dotField_3JUGGguyrkqXPkPD3E3nUA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* f);
N_LIB_PRIVATE N_NIMCALL(void, illFormedAstLocal_aOnJJ9cXkOooTyUuLmnc09bw_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(void, liftBodyTup_1qKhZJAcRsaYyilT4S9bjzQ_2)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y);
static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newDeref_HtAG89bn1UDHEhRcS27NOXQlocals)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalAtCompileTime_U3qPBy54f1PkCP8vmFMCRA_24)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getConstExpr_A7gcXCy5E3uGBy5F37NoHA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalStaticExpr_ajRaPV9aInq6ZNnUYn0DaVw)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module, tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* prc);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, fixupTypeAfterEval_dGBK19cpTWH2Y7y5AybM0IA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* evaluated, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* eOrig);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasCycle_J6cfuIanCXYEsLNE8M8o9cQ_4)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, annotateType_zBoL79cc9cORdBkTIEpbntbg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalConstExpr_P8uF2QSxl7YdNpBnl0Ybqg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module, tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, commonOptimizations_0A2Fu3iOZ9aCzHX2sVSYlhg)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformBody_80mJDJ8hRZ7Zm2rfDijiOQ)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* prc);
N_LIB_PRIVATE N_NIMCALL(void, fixupInstantiatedSymbols_79a2N3yeoK32VpcXiRGgdSg_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
static N_INLINE(void, popProcCon_SSNSh333Y0csrmTQnH74tQsem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(void, semBorrow_oBalgLazmUb2OV8fMqOnBQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, searchForBorrowProc_CajxMS2havTbmCMNkAzU8w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* startScope, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, baseOfDistinct_wDvPudHayM9arXOf7L9a4WIQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, sideEffectsCheck_grUXOQ5yIYTIh9cBH5o3wgA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(void, matches_PbP19b36C8eDxA2wQt6exGQ_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* m);
N_LIB_PRIVATE N_NIMCALL(NI, cmpCandidates_y6m9bhhlwHAuzsfu0xg0hDQ)(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* a, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* b);
N_LIB_PRIVATE N_NIMCALL(void, safeAdd_TLXpby9abwZs6Huf5RGwBbQ)(tySequence_0dpGN6F4ocevqUQGsaf41w** x, tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ y);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src, TNimType* mt);
N_LIB_PRIVATE N_NIMCALL(tySequence_P9bWebqKHkrGHwy9aZW9bw0TA*, initCandidateSymbols_ljUfAVhs9a2P8OoOfJTl5Dw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* headSymbol, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initialBinding, tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw filter, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* best, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* alt, tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ* o, NIM_BOOL diagnostics);
static N_NIMCALL(void, Marker_tySequence_P9bWebqKHkrGHwy9aZW9bw0TA)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void, insert_sdPxAA6tJBXORWiLIJmHnQ)(tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ** x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* item, NI i);
N_LIB_PRIVATE N_NIMCALL(void, delete_CLZdKKlcUPYhcUpOnWP7ag)(tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ** x, NI i);
N_LIB_PRIVATE N_NIMCALL(void, X5BX5Deq__qp0QnTj4n9bRuO69cX64g09bw)(tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ** s, tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** b, NI bLen_0);
static N_INLINE(tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA, dotdot__gZc19czncDHf5RCNZiquNrQnimblecmd)(NI a, NI b);
static N_INLINE(NimStringDesc*, X5BX5D__SeS5h9bMpIkS1zha7iXXRaAnimblecmd)(NimStringDesc* s, tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA x);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameMethodDispatcher_AbGRfvK0w0rm1Smw9caKnOQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* a, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* b);
N_LIB_PRIVATE N_NIMCALL(void, globalError_mMj7lrOf3zBP9bl69amiKu5g_2)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w msg, NimStringDesc* arg);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr, NimStringDesc** a, NI aLen_0);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semResolvedCall_iRpWWdN2e9bG9aWWSScrOemw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(void, instGenericConvertersSons_aGJ9cjJ0NUF4TmTcXr43xlw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* x);
N_LIB_PRIVATE N_NIMCALL(void, updateDefaultParams_2k3LJ9aeIb9cbqxq3ECHhyow)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call);
static N_INLINE(NIM_BOOL, canDeref_kR3j4BVoX6LmX0p7IycneQ_2sem)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tryDeref_nRsa9acFWDI6GmzVZLXX3CQ_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, errorSym_2lqvMm9cf9bZrSA2I9a9cHb8ag)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, dotTransformation_U3qPBy54f1PkCP8vmFMCRA_25)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, isSymChoice_kR3j4BVoX6LmX0p7IycneQ_3sem)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, buildOverloadedSubscripts_vzb67e0e3FoItZbupP4kXw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, lowerTupleUnpackingForAsgn_T5SG2LMxpDuzIR4uljA0pw_2)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ, cmpTypes_B4Ot9chnluDWHfLApyBRgYQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* f, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a);
N_LIB_PRIVATE N_NIMCALL(void, typeMismatch_1xxyFIws27lai2cG4n31Ow)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* actual);
static N_INLINE(void, asgnToResultVar_w3kobMcnwPIuhVr3BM8Uzgsem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* le, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ri);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, takeImplicitAddr_9bHhZwt4fwhJLlgtCh1ak2w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL isLent);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, exprRoot_xyjZDNYKDR5wgJws9bj171A)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, pop_iSW3NpdhhLmgN2JVyXuzcQtransf)(tySequence_DfgJFJEYoj4YBAHLZPl5lQ** s);
N_NIMCALL(TGenericSeq*, setLengthSeqV2)(TGenericSeq* s, TNimType* typ, NI newLen);
N_LIB_PRIVATE N_NIMCALL(void, finishMethod_79a2N3yeoK32VpcXiRGgdSg_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(void, idSynchronizationPoint_GU7xhi8Sthx1AieMTTUZqQ)(NI idRange);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, semTypeIdent_0bGgbY2vzd9cI8DrFDXzH9aA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, pickSym_2ZELfpJltTxjVuLyF6lJRQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kinds, tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, symFromExpectedTypeNode_0bGgbY2vzd9cI8DrFDXzH9aA_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semArray_VyBZhWPO9cyRyURhXkNKu7w_6)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semArrayIndex_dGBWDMhChCbFdqZsqOlYQA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, isRange_GZCDL1KLeVpc9b7cG4gxP7Asem)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, makeRangeWithStaticExpr_4aCCB7OpRYArRl1IRP6KOQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, rawAddSonNoPropagationOfTypeFlags_uZzh0IWnWErsZbQ8YFaRRA_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semContainer_c2ZxSNt5fpSIjL1iBbVIDA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, NimStringDesc* kindStr, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(void, semContainerArg_6WuDX6eZfO9aljUv9bdjHa8A)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NimStringDesc* kindStr, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semRange_VyBZhWPO9cyRyURhXkNKu7w_7)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semSet_VyBZhWPO9cyRyURhXkNKu7w_8)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(NI64, lengthOrd_4cSIntenL9aBXY6LAFsvXdQ_2)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semOrdinal_VyBZhWPO9cyRyURhXkNKu7w_9)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semVarargs_VyBZhWPO9cyRyURhXkNKu7w_10)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semTuple_VyBZhWPO9cyRyURhXkNKu7w_11)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semGeneric_p0lr3JXE4IdHVsfvGgDDIg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semGenericParamInInvocation_dGBWDMhChCbFdqZsqOlYQA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, newCandidate_9bunQe3vWF3D9cR5HrL718NQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* ctx, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* callee, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* Result);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipTypes_lCkL59aq3ht3am1vLQUjzPw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kinds, NI maxIters);
N_LIB_PRIVATE N_NIMCALL(void, semObjectTypeForInheritedGenericInst_hPOulSjdjhT7Htg9b0wXuDg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipTypesOrNil_7vZ9a9bub9bucX5E73hsr9cjvg_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kinds);
static N_INLINE(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipGenericInvocation_hkZ6Hsm3Bu1SSKpvfSugGgsem)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, addInheritedFields_7Ogd7OW2nM9axopp0e6LaMw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* check, NI* pos, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj);
N_LIB_PRIVATE N_NIMCALL(void, addInheritedFieldsAux_WGkEcJpcdeTr9adNGygDWCg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* check, NI* pos, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, semRecordNodeAux_8W9bBv3X3MsW8TEC560FN4Q)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* check, NI* pos, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* rectype);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConstBoolExpr_U3qPBy54f1PkCP8vmFMCRA_26)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, assign_a2uuNOWD29cFDODAp4nip0A)(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* dest, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* src);
N_LIB_PRIVATE N_NIMCALL(void, semRecordCase_8W9bBv3X3MsW8TEC560FN4Q_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* check, NI* pos, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* rectype);
N_LIB_PRIVATE N_NIMCALL(void, semCaseBranch_qifAUGxpq0PltMRr0U3F5w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch, NI branchIndex, NI64* covered);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semCaseBranchRange_RDTieXCUQCagoHhpkNTH2w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b, NI64* covered);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semBranchRange_KUnffHj9akL1GhAPGbEA6HA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b, NI64* covered);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipConvTakeType_6rsSLwtlU9c53a6w69be5JlQ_3)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, emptyRange_GLYFox9ciWitxKuirhftGHg_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(void, delSon_9c9c9b4wX9aUbrl9bXf1tGC9acyw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, NI idx);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, deduplicate_npqksG7nXsyGRBfJK1db1g)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semCaseBranchSetElem_RDTieXCUQCagoHhpkNTH2w_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b, NI64* covered);
static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw**, X5BX5D__YLEY3nLpUU2onE02S2OSlgast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** s, NI sLen_0, NI i);
N_LIB_PRIVATE N_NIMCALL(void, checkForOverlap_0YalQdM3GQT9bIT0IUTSROw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t, NI currentEx, NI branchIndex);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, overlap_GLYFox9ciWitxKuirhftGHg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*, rope_yShmEg9cffWxI7s5XzEKBow)(NimStringDesc* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semObjectNode_VyBZhWPO9cyRyURhXkNKu7w_12)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semTypeClass_VyBZhWPO9cyRyURhXkNKu7w_13)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, makeTypeWithModifier_0HcxfShQg3TcTn6Hj8uKKg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag modifier, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* baseType);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConceptBody_U3qPBy54f1PkCP8vmFMCRA_27)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semVarType_VyBZhWPO9cyRyURhXkNKu7w_14)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semDistinct_VyBZhWPO9cyRyURhXkNKu7w_15)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semProcTypeWithScope_iRXxEADPfCxgmm2q7sy9b9bQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind);
N_LIB_PRIVATE N_NIMCALL(void, setEffectsForProcType_anXKpeIcfo8QOiHQxzurxw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasPragma_JViD3fSNjxPl61dYtezU6A)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw pragma);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semEnum_VyBZhWPO9cyRyURhXkNKu7w_16)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(void, initStrTable_dDG9ckEId9ai4WID9aLQcRYNg)(tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA* x);
N_LIB_PRIVATE N_NIMCALL(void, strTableAdd_bNTI8uh3GP35hzyXvGA8Xg)(tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA* t, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* n);
N_LIB_PRIVATE N_NIMCALL(void, importPureEnumField_XycMcmD5Ww9bvRloNQSVksA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, strTableInclReportConflict_ZoAkSuAU8XaRvefco9bS25Q)(tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA* t, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* n, NIM_BOOL onConflictKeepOld);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semStmtListType_VyBZhWPO9cyRyURhXkNKu7w_17)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semBlockType_VyBZhWPO9cyRyURhXkNKu7w_18)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev);
N_LIB_PRIVATE N_NIMCALL(void, instAllTypeBoundOp_QvnfHbdpOPBouSkW8SHxDQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(void, newIdTable_9aSEqMbyKKKJdiwaVLEvfQw)(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q* Result);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, wrapInComesFrom_N3MzXUBcBDWrgMcQMvXyxw)(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* res);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl_aDmpBTs9cPuXp0Mp9cfiNeyA)(NimStringDesc* msg);
static N_INLINE(void, markIndirect_Cfv6llbTDnhr49bNNRv9cmhgsem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(void, setIntLitType_JsZMQGDyZXnGr9cg0jxXW0w)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semFieldAccess_k2Lin9a76VyrWz9b8OoRC9apg_12)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConv_U3qPBy54f1PkCP8vmFMCRA_28)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semStaticExpr_U3qPBy54f1PkCP8vmFMCRA_29)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, findUnresolvedStatic_esDJA7239bJDiq4UrX9aHCjg_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, maybeLiftType_T3CMuM9cllXYTybk03hCyKA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ** t, tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, inferWithMetatype_Q9bYZoySevMBqJgfPwQRyew)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg, NIM_BOOL coerceDistincts);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw, checkConvertible_8XIqQeY3x4Ws1FyTXP2DwA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* castDest, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* src);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw, checkConversionBetweenObjects_IxznSNSPzSVAXeEIIkymSA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* castDest, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* src, NI pointers);
N_LIB_PRIVATE N_NIMCALL(void, errorUseQualifier_Rv9aK9aEqb7vd5si1J3UiI7A)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semObjConstr_k2Lin9a76VyrWz9b8OoRC9apg_13)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ, semConstructType_DUCJbMThkL5yV1A9aSqewkA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ, semConstructFields_Fd2g9bi409bTw59cMhOunuWYA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* recNode, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(void, mergeInitStatus_vweTYREIAWa53nOKdzM0qA)(tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ* existing, tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ newStatus);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, fieldsPresentInInitExpr_Itzn66C3O2qVlbXOhavwVw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fieldsRecList, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, locateFieldInInitExpr_A1jnc89cFTLh9bz8KfRFS7Dw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr);
N_LIB_PRIVATE N_NIMCALL(void, invalidObjConstr_wkwHEj6zZnYo2DMZys6jnA_7)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConstrField_qdVnDJLvcO2ffiH8DKImeg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprFlagDispatched_k2Lin9a76VyrWz9b8OoRC9apg_14)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tryConstExpr_U3qPBy54f1PkCP8vmFMCRA_30)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
static N_INLINE(void, popSafePoint)(void);
N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass);
static N_INLINE(Exception*, getCurrentException)(void);
static N_INLINE(void, popCurrentException)(void);
N_NIMCALL(void, reraiseException)(void);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipHidden_6rsSLwtlU9c53a6w69be5JlQ_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, caseBranchMatchesExpr_aV4lPADyuJD9boY9cxzVtVVA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* matched);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, exprStructuralEquivalent_XApnXRaD9btY9a4pkMO0ITTg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b, NIM_BOOL strictSymEquality);
N_LIB_PRIVATE N_NIMCALL(void, localError_J7zC9cOLuc4LIi9ckAAkcM8Q)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* format, NimStringDesc** params, NI paramsLen_0);
N_LIB_PRIVATE N_NIMCALL(void, checkForMissingFields_sGvfrG5MpJVJu6tOwt6g2Q)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* recList, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, missingMandatoryFields_Itzn66C3O2qVlbXOhavwVw_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fieldsRecList, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, pickCaseBranch_QHSyvh6Xa88rl9aAWP3nMRg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* caseExpr, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* matched);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semMagic_WEWIesXiEJLD5SbxNPgOfA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semDefined_Mr0uHCtBea07Z9bi1nS1OpQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL onlyCurrentScope);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isDefined_TeEHxEj0zXnJc9aUarshH9aA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, NimStringDesc* symbol);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, lookUpForDefined_yjrNXMmFJKKoCFs4JxJVGw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL onlyCurrentScope);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, lookUpForDefined_o9caJu5fKCWYveiCPs9aq1eA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* i, NIM_BOOL onlyCurrentScope);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, localSearchInScope_xnVjAYTNrHOYQvPVqwg14w_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, setMs_HxQrSJkCS7p8gVuHUd0Mfg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semCompiles_k2Lin9a76VyrWz9b8OoRC9apg_15)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tryExpr_k2Lin9a76VyrWz9b8OoRC9apg_16)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(NI, getInfoContextLen_i4TL6lhQkdfTCMQPkAA29bQ)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(void, setInfoContextLen_VesEIs1bHpks19b5m8CmDOw)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, NI L);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semSizeof_U3qPBy54f1PkCP8vmFMCRA_31)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semIs_k2Lin9a76VyrWz9b8OoRC9apg_17)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(void, fixupStaticType_VTnsivFjadOFCMuOynUlbw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, makeTypeSymNode_4Ic49c9aaGM26Rha89b6zEWGg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, isOpImpl_k2Lin9a76VyrWz9b8OoRC9apg_18)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExpandToAst_Y2UrrUliAmkw9c9cYffF3NkQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* magicSym, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExpandToAst_U3qPBy54f1PkCP8vmFMCRA_32)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, sysTypeFromName_tS9cwSHSUZLgy9baxOcGRlCQ)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* name);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semQuoteAst_U3qPBy54f1PkCP8vmFMCRA_33)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, expectString_elgQGRXRdZY9cugwHxJNdJA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*, newSeq_kRt1ZLhQ6puUVenSqCOflw)(NI len);
N_LIB_PRIVATE N_NIMCALL(void, processQuotations_pJS9b4mS9a8f5U2XwkAvXsRQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** n, NimStringDesc* op, tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ** quotes, tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ** ids);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s, NimStringDesc* prefix);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newProcNode_Z1yyaAwEC9b9b62F39alzYZFw)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* name, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pattern, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* genericParams, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pragmas, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* exceptions);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newAnonSym_Om9cr60hOT7Cr9a5PkQCTB9ag)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplateDef_U3qPBy54f1PkCP8vmFMCRA_34)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplBodyDirty_DuioLh4uofptxEKissr2sw_3)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplBody_DuioLh4uofptxEKissr2sw_4)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplSymbol_xZiYClCxIP6FwnrTC88utQ_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplBodySons_DuioLh4uofptxEKissr2sw_5)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, openScope_0Es23PZ9cl46kbzD1369aKcw)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c);
N_LIB_PRIVATE N_NIMCALL(void, closeScope_v8rOnBcZIF3O8b3uSd4HeA)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplBodyScope_DuioLh4uofptxEKissr2sw_6)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, addLocalDecl_w8tQ2g9cGJTRX1sc4tPkZhw)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw k);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw, symBinding_NA0Thw35VzKPau46ha9a0iA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw, whichKeyword_6Crk8YhMgh1FqDtsVJsurA)(tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* id);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, onlyReplaceParams_DuioLh4uofptxEKissr2sw_7)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getIdentNode_DuioLh4uofptxEKissr2sw_8)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, isTemplParam_hvqHvanyIpU9arLUwYZORaAsem)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, replaceIdentBySym_uF9b3XfWiPjk2FdRSI9bmPUg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newGenSym_pZY5bxiuLRGzLAtcZwPJyQ)(tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c);
N_LIB_PRIVATE N_NIMCALL(void, semTemplSomeDecl_7l8P1u9cbRbmxfIqmTswe6Q)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw symKind, NI start);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semRoutineInTemplBody_tZ0y3BLqy4d0VbZugMb29cw)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw k);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semRoutineInTemplName_DuioLh4uofptxEKissr2sw_9)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, symTabReplace_wGPXB9a8gjWCCq7YQ5Bgu6w)(tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA* t, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* prevSym, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* newSym);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TSpawnResult_Dm2bUaaIicBfyW7KwReaLQ, spawnResult_KL3DWxYISouH5DivR9clX7A)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, NIM_BOOL inParallel);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, createFlowVar_18LOqksd2EtrLOlAAuufRg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getCompilerProc_Z9bI8j6Vv57IyOO09a8fpp3g)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, NimStringDesc* name);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, instantiateCreateFlowVarCall_fJrrM8fh0M9ay1UihVTCWkg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semIndirectOp_k2Lin9a76VyrWz9b8OoRC9apg_19)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, bracketedMacro_9cp0DDH84sSKypsK7p9bXmBQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, setGenericParams_wkwHEj6zZnYo2DMZys6jnA_8)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, resolveIndirectCall_kcBwitGDLG5fs5xyZw0iJg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* Result);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, overloadedCallOpr_U3qPBy54f1PkCP8vmFMCRA_35)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, shouldBeBracketExpr_J6cfuIanCXYEsLNE8M8o9cQ_5)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semArrayAccess_k2Lin9a76VyrWz9b8OoRC9apg_20)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(void, invalidPragma_1WVlSs3wEY09cBA840p9cW9bw_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg, checkPar_DvJLKuffhnf89a8TOUWgNFw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTuplePositionsConstr_k2Lin9a76VyrWz9b8OoRC9apg_21)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTupleType_J6cfuIanCXYEsLNE8M8o9cQ_6)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTupleFieldsConstr_k2Lin9a76VyrWz9b8OoRC9apg_22)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semSetConstr_U3qPBy54f1PkCP8vmFMCRA_36)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semArrayConstr_k2Lin9a76VyrWz9b8OoRC9apg_23)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semLambda_k2Lin9a76VyrWz9b8OoRC9apg_24)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semCast_U3qPBy54f1PkCP8vmFMCRA_37)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isCastable_RrUSf4OJ4Rybj6aC0XqcHA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* dst, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* src);
N_LIB_PRIVATE N_NIMCALL(NI64, computeSize_vCG1GF2Iu043oALVyuJfOw_2)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semIf_k2Lin9a76VyrWz9b8OoRC9apg_25)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprBranch_k2Lin9a76VyrWz9b8OoRC9apg_26)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, commonType_wEK756YRi9c3lsyIxi9aFXSg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, endsInNoReturn_J6cfuIanCXYEsLNE8M8o9cQ_7)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprBranchScope_U3qPBy54f1PkCP8vmFMCRA_38)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, considerGenSyms_JMRw3CfqAItK89bIwCvG68w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTableConstr_U3qPBy54f1PkCP8vmFMCRA_39)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semBlock_k2Lin9a76VyrWz9b8OoRC9apg_27)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semStmtList_k2Lin9a76VyrWz9b8OoRC9apg_28)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isUnresolvedStatic_NWFc8X9b4Zx0NtXP3Cp2fnw_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, inferConceptStaticParam_ltNnA8OHGiJuU3z5jcilEw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* inferred, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semRaise_U3qPBy54f1PkCP8vmFMCRA_40)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isImportedException_ziFZ9chCaA06nUtpwM9aqMyQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isException_NWFc8X9b4Zx0NtXP3Cp2fnw_3)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semVarOrLet_I9cBPmta6MGSAD7D9bx6dHLA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw symkind);
N_LIB_PRIVATE N_NIMCALL(void, suggestStmt_utpC2gr4BrwN59bDcE4of4w_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasEmpty_z2e9adVXglgr6c9bZnL16WwQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(void, newSons_W9cZG9c5PyHYZPzxHXuunFyQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, NI length);
N_LIB_PRIVATE N_NIMCALL(void, addToVarSection_JtkcK7WZtMcCOyvaWsJaLg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* identDefs);
N_LIB_PRIVATE N_NIMCALL(void, fillPartialObject_4JRYkLnkU3NAqCoEhWZ9ajg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isDiscardUnderscore_yufYcNWVPQdYTTqovY22lA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v);
N_LIB_PRIVATE N_NIMCALL(void, addInterfaceDecl_iUv8DpVEGQp9aUuNG4lxujA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, findShadowedVar_W9ag6zFa44z9aMukiqTZ5T5Q)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, identWithin_8VRqkPf8FGAPxvuvnEZciA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* s);
N_LIB_PRIVATE N_NIMCALL(void, setVarType_TtC9aPrZPdZj6gfXYarxLaw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTypeOrNil_3isNyHKb0U1OCnClmflXSg_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tySet_tyEnum_TTypeCmpFlag_72pgRXSg7774cr9aCWVPORw flags);
N_LIB_PRIVATE N_NIMCALL(void, checkNilable_N5AsKc2p9cRacaeRZJlgnLw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v);
N_LIB_PRIVATE N_NIMCALL(void, setupCompileTimeVar_zQ7dn9aEDgIq1IbBIE9cxsxg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module, tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConst_U3qPBy54f1PkCP8vmFMCRA_41)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, fitRemoveHiddenConv_IThxSRXMvPsDgyzovn2CRQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newFloatNode_TjQAA1fOcrmI6Hb9bZNtixw)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NF floatVal);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTypeSection_U3qPBy54f1PkCP8vmFMCRA_42)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, typeSectionLeftSidePass_wkwHEj6zZnYo2DMZys6jnA_9)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, typeSectionRightSidePass_wkwHEj6zZnYo2DMZys6jnA_10)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, typeSectionTypeName_U3qPBy54f1PkCP8vmFMCRA_43)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, processMagicType_pBTGCEi9ayDcEjzg1wCHeEw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m);
N_LIB_PRIVATE N_NIMCALL(void, setMagicType_jT5AzlKBfQYbqUbGoALfbQ)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, NI size);
N_LIB_PRIVATE N_NIMCALL(void, checkCovariantParamsUsages_mA6iFcjdE0PjK2oVxtyD5g)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* genericType);
static N_NIMCALL(void, Marker_tyRef_liIRLuc03y8EzQLMfRQvEQ)(void* p, NI op);
N_LIB_PRIVATE N_CLOSURE(NIM_BOOL, traverseSubTypes_EEBJFz42NmnackczUIr3EA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, void* ClE_0);
N_LIB_PRIVATE N_NIMCALL(void, typeSectionFinalPass_wkwHEj6zZnYo2DMZys6jnA_11)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, checkConstructedType_09chTcGpP9cwUssGPOfkWIGw)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(void, checkForMetaFields_wkwHEj6zZnYo2DMZys6jnA_12)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semDiscard_U3qPBy54f1PkCP8vmFMCRA_44)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semWhile_k2Lin9a76VyrWz9b8OoRC9apg_29)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTry_k2Lin9a76VyrWz9b8OoRC9apg_30)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, toObject_Qb5tZSfa49cIgn8emzhkaBg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, toRef_8R9avjYyycssCC6XgFWpNDA_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semBreakOrContinue_U3qPBy54f1PkCP8vmFMCRA_45)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semFor_k2Lin9a76VyrWz9b8OoRC9apg_31)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, handleForLoopMacro_U3qPBy54f1PkCP8vmFMCRA_46)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, handleStmtMacro_gy2ufmOYPtqyp8I9aqr8KWw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* selector, NimStringDesc* magicType);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprNoDeref_k2Lin9a76VyrWz9b8OoRC9apg_32)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTrivalStmtExpr_J6cfuIanCXYEsLNE8M8o9cQ_8)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semForVars_k2Lin9a76VyrWz9b8OoRC9apg_33)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, symForVar_0bGgbY2vzd9cI8DrFDXzH9aA_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, addForVarDecl_N5AsKc2p9cRacaeRZJlgnLw_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semForFields_EW5X9akTyzsjElSah59cM0MA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, instFieldLoopBody_NWigU6dr5apz5g827GjO4w)(tyObject_TFieldInstCtx_GtjfcSJJiOiQ0USEydDBBA c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* forLoop);
N_LIB_PRIVATE N_NIMCALL(void, semForObjectFields_QePBJ9bHaUde9cnkvf6xqUYQ)(tyObject_TFieldsCtx_Oumniq9anVI0B7eyXhL1U9cw c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* typ, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* forLoop, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsNode_vtJbTerB9bjOPfqY2DqeCGA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kinds);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, implicitIterator_9a6gGkMjHF816m9bU2vs9cGiw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, NimStringDesc* it, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semCase_k2Lin9a76VyrWz9b8OoRC9apg_34)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, handleCaseStmtMacro_U3qPBy54f1PkCP8vmFMCRA_47)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NI64, toCover_7T009agak9aowf7iyCV6zRoQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semReturn_U3qPBy54f1PkCP8vmFMCRA_48)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semUsing_U3qPBy54f1PkCP8vmFMCRA_49)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAsm_U3qPBy54f1PkCP8vmFMCRA_50)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_CHAR, pragmaAsm_9aXIOq2nJv9anrHpPdCVumMQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAsmOrEmit_ipixv6uXJQPmGNI0vRitVg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* con, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_CHAR marker);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semYield_U3qPBy54f1PkCP8vmFMCRA_51)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, semYieldVarResult_VClwzeP3TbkDW2v2LBPE3Q)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* restype);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semIterator_U3qPBy54f1PkCP8vmFMCRA_52)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semProc_U3qPBy54f1PkCP8vmFMCRA_53)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semFunc_U3qPBy54f1PkCP8vmFMCRA_54)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semMethod_U3qPBy54f1PkCP8vmFMCRA_55)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getDispatcher_qMVVit6V09a5B5VK0hDzcWw)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConverterDef_U3qPBy54f1PkCP8vmFMCRA_56)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, addConverter_9csQR19b9chEi840Usa403azw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* conv);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semMacroDef_U3qPBy54f1PkCP8vmFMCRA_57)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalImport_gCYkvDaBlfo0ipHm82bnAQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalImportExcept_gCYkvDaBlfo0ipHm82bnAQ_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalFrom_gCYkvDaBlfo0ipHm82bnAQ_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalInclude_U3qPBy54f1PkCP8vmFMCRA_58)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NI32, checkModuleName_fDy39b69bb9cFVEyPkMJp3GTg)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL doLocalError);
N_LIB_PRIVATE N_NIMCALL(void, excl_iUpE9bYmIR0fROyJskQwN8g_2)(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* s, NI key);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExport_U3qPBy54f1PkCP8vmFMCRA_59)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, initTabIter_MivcR840C8HhD7BQHi3G6A)(tyObject_TTabIter_VYF5VQsIYEVaBL0fKZJkbg* ti, tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tab);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, nextIter_MivcR840C8HhD7BQHi3G6A_2)(tyObject_TTabIter_VYF5VQsIYEVaBL0fKZJkbg* ti, tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tab);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExportExcept_U3qPBy54f1PkCP8vmFMCRA_60)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, readExceptSet_sl9cge6T9ap5614SUVXe4Fkw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* Result);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semPragmaBlock_U3qPBy54f1PkCP8vmFMCRA_61)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw, whichPragma_tadMdqrtQd2cek9aFwyE1XQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, setLine_XN1vDJ2wOXm9aCmlvtNKsEQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semStaticStmt_U3qPBy54f1PkCP8vmFMCRA_62)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, evalStaticStmt_4ISne8kQ4QKaNjEY5dqxUg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module, tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* prc);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq__5bLVfxs9cYu4c49a4GRwvdfw)(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q a, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semOperand_k2Lin9a76VyrWz9b8OoRC9apg_35)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semInferredLambda_nUolYikDV8g9cImNPfBH3AA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, replaceTypesInBody_i1ETEr6qoyCka9bRoDtUctw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* p, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, NIM_BOOL allowMetaTypes);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, instTypeBoundOp_XFpODcQSqsrMUhuPBJxxXg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* dc, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ op, NI col);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semStmtAndGenerateGenerics_U3qPBy54f1PkCP8vmFMCRA_63)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isImportSystemStmt_Py1GUj7PccyIa3ac40A6MA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isEmptyTree_J6cfuIanCXYEsLNE8M8o9cQ_9)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, importAllSymbols_LCU9aV1qYx9bH8WRDNIJSaMg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fromMod);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAllTypeSections_U3qPBy54f1PkCP8vmFMCRA_64)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, gatherStmts_SHFfWfNEv12ytYRlK6uj3g)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, hloStmt_U3qPBy54f1PkCP8vmFMCRA_65)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, buildEchoStmt_U3qPBy54f1PkCP8vmFMCRA_66)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, appendToModule_ZO6kFegrIXe9bUOHAHOb9cIA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformStmt_o9bTtoSsaDmuiyVzV15dOyg_2)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, recoverContext_DVXG9boTvSy4MO1ucqcedLA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
static N_INLINE(NIM_BOOL, isObjWithCache)(TNimType* obj, TNimType* subclass, TNimType** cache);
N_LIB_PRIVATE N_NOINLINE(NIM_BOOL, isObjSlowPath_yEa9cUwzxhGRtg9cspcfCIHg)(TNimType* obj, TNimType* subclass, TNimType** cache);
N_LIB_PRIVATE N_NIMCALL(void, suggestSentinel_k8Vr9aa6E5xocVhLYhaVkBw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(void, rawCloseScope_lTVzF2iZqK9cC9b7k8wNYjzQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNode_IgnRxkID5wXTWvTZf9ct0rA)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind);
N_LIB_PRIVATE N_NIMCALL(void, addCodeForGenerics_wkwHEj6zZnYo2DMZys6jnA_13)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
extern tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
extern TNimType NTI_DfgJFJEYoj4YBAHLZPl5lQ_;
extern TNimType NTI_AgIT5feFR9a9aoVjv9cx2rOtg_;
extern TNimType NTI_v9ae2Dpu13OW2ZJ2U9bNMd9cQ_;
extern TNimType NTI_Ef05srmQTDulnBdXR4Ja6Q_;
extern TNimType NTI_GJ8qR6LTU9bYLzfOArsHTSg_;
extern TNimType NTI_jWKvSdankQPoT5bw9cBU9aiw_;
extern TNimType NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_;
extern TNimType NTI_0dpGN6F4ocevqUQGsaf41w_;
extern TNimType NTI_B8Gf2sSWgQ79bLZ9bYWrLHaA_;
extern TNimType NTI_cNCW9acsSznmEccl1fgQwkw_;
extern TNimType NTI_ytyiCJqK439aF9cIibuRVpAg_;
TNimType NTI_2W3DPUTABI9bVr5s0HjtwQw_;
extern TNimType NTI_xHTZrq9aYs6boc9bCba0JbpQ_;
extern TNimType NTI_fKfcLzXYiz5jNu3NH3Tv8Q_;
extern TNimType NTI_77mFvmsOLKik79ci2hXkHEg_;
extern TNimType NTI_WGx4rAexNXnczy1Avn646Q_;
TNimType NTI_paG7yT9agkyGNp6RxMDoUcA_;
extern TNimType NTI_sM4lkSb7zS6F7OVMvW9cffQ_;
extern TNimType NTI_5fLnqPfj0Ty9cmak1Q1pBFQ_;
TNimType NTI_ZyVpd6P9cpAD0YrlDyaAD6g_;
extern TNimType NTI_8E0VZEdYwanSe69bkIyzbDQ_;
extern TNimType NTI_N89ckikRqMir57209a3tEeqw_;
TNimType NTI_SpPKZRnM6o0hUcC8D01PyQ_;
TNimType NTI_K9bYwLtGKmFQYg8TwmqoG3Q_;
extern TNimType NTI_K9bspPztfoWajecnwjyHuYQ_;
extern TNimType NTI_rR5Bzr1D5krxoo1NcNyeMA_;
TNimType NTI_P9bWebqKHkrGHwy9aZW9bw0TA_;
extern TNimType NTI_bROa11lyF5vxEN9aYNbHmhw_;
extern TSafePoint* excHandler_rqLlY5bs9atDw2OXYqJEn5g;
extern TNimType NTI_AQaBoN9cWXPQJGaPX5hY5PQ_;
extern Exception* currException_9bVPeDJlYTi9bQApZpfH8wjg;
extern TNimType NTI_9a3YiReNVD0IJHWFKgXRe9ag_;
TNimType NTI_9aPUbdmiIQPbS6xJxlnbe3A_;
TNimType NTI_liIRLuc03y8EzQLMfRQvEQ_;
extern TNimType NTI_TdMiV9cwBMgh9a9czKts6Kujw_;
static TNimType* Nim_OfCheck_CACHE440[2];
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_2, "sem.myOpen", 10);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_3, "constant of type \'", 18);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_4, "\' has no value", 14);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_5, "recursive dependency: \'$1\'", 26);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_6, "\'$1\' has unspecified generic parameters", 39);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_7, "template instantiation too nested", 33);
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_rF9caJawfOjYTjsgLVUSGFA_8 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04,
0x02, 0x00, 0xE0, 0x11, 0x02, 0x0C, 0x01, 0xC0,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_9, "expression \'", 12);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_10, "\' is of type \'", 14);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_11, "\' and has to be discarded", 25);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_12, "; start of expression here: ", 28);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_13, "; for a function call use ()", 28);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_14, "type expected", 13);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_15, "[]", 2);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_16, "range is empty", 14);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_17, "type mismatch", 13);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_18, "ordinal or float type expected", 30);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_19, "enum \'$1\' has holes", 19);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_20, "invalid type", 12);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_21, "expected type, but got: ", 24);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_22, "|", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_23, "enable the \'not nil\' annotation with {.experimental: \"notnil\".}", 63);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_24, "type \'$1 void\' is not allowed", 29);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_25, "ptr", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_26, "ref", 3);
NIM_CONST tyArray_HtfYcqfMcR0nZCYmG4O6LQ kindToStr_hsMIOVdCUYpaVdz9bF7Vowg = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_25),
((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_26)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_27, "region needs to be an object type", 33);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_28, "region for pointer types", 24);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_29, "expression has no type: ", 24);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_31, "seminst.nim", 11);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_30 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_31),
((NI) 327),
((NI) 17)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_32, "generic instantiation too nested", 32);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_33 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_31),
((NI) 349),
((NI) 17)}
;
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_34 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_31),
((NI) 61),
((NI) 17)}
;
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_35 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_31),
((NI) 63),
((NI) 19)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_36, "cannot instantiate: \'$1\'", 24);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_37 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_31),
((NI) 272),
((NI) 19)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_38, "no tuple type for constructor", 29);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_39, "invalid tuple constructor", 25);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_40, "unknown identifier: ", 20);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_41, "cannot convert ", 15);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_42, " to ", 4);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_43 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0C, 0xD0, 0x3F, 0xFA, 0xFD, 0x02, 0x8C,
0xF1, 0x3F, 0x00, 0x40, 0x08, 0x98, 0x01, 0x30,
0x24, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_44, "result", 6);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_45, "NimNode", 7);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_46, "value of type \'$1\' has to be discarded", 38);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_47, "()", 2);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_48, "only a call operator can be a delegator", 39);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_49, "cannot use symbol of kind \'", 27);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_50, "\' as a \'", 8);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_51, "\'", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_52, "\'$1\' is only allowed at top level", 33);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_53, "export", 6);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_54, "invalid visibility: \'$1\'", 24);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_55 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1B, 0x00, 0x80, 0x02, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x08}
;
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_56 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x04, 0x00, 0x3B, 0x12, 0x9C, 0x02, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x30,
0xB1, 0x00, 0x80, 0x08, 0x20, 0x00, 0x00, 0x01,
0x00, 0x00}
;
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_57 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x04, 0x03, 0x3B, 0x12, 0x98, 0x02, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_58, "in", 2);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_59, "the \'$1\' modifier can be used only with imported types", 54);
extern NIM_CONST tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw OverloadableSyms_yJfP9bpZPSQn9bPO6KCo08fQ;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_60, "^", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_61, "{}", 2);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_62, "{}=", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_63, "[]=", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_64, "\':\' expected", 12);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_65, "typeless parameters are obsolete", 32);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_67, ":type", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_69, "the macro body cannot be compiled, because the parameter \'$1\' h"
"as a generic type", 80);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_71, "typedesc", 8);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_74, "illegal recursion in type \'$1\'", 30);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_76 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_31),
((NI) 179),
((NI) 17)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_80, "semtypes.nim", 12);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_79 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_80),
((NI) 961),
((NI) 22)}
;
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_81 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_80),
((NI) 966),
((NI) 12)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_83, "attempt to redefine: \'", 22);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_84, "invalid return type: \'stmt\'", 27);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_85, "invalid expression", 18);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_86, "*", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_87, "**", 2);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_88, "~", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_89, "a pattern cannot be empty", 25);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_90, "pragmas are only allowed in the header of a proc; redefinition "
"of $1", 68);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_91, "\' from ", 7);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_92, "semProcAux", 10);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_93, "=destroy", 8);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_94, "deepcopy", 8);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_95, "=deepcopy", 9);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_96, "=", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_97, "=sink", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_98, "cannot bind another \'", 21);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_99, "\' to: ", 6);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_100, "signature for \'", 15);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_101, "\' must be proc[T: object](x: var T)", 35);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_102, "cannot bind another \'deepCopy\' to: ", 35);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_103, "cannot bind \'deepCopy\' to: ", 27);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_104, "signature for \'deepCopy\' must be proc[T: ptr|ref](x: T): T", 58);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_105, "\' must be proc[T: object](x: var T; y: T)", 41);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_106, "\'destroy\' or \'deepCopy\' expected for \'override\'", 47);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_108, ".", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_109, ".()", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_110, ".=", 2);
NIM_CONST tyArray_24KAM9afIUgUaqBaEBB6r9bg TM_rF9caJawfOjYTjsgLVUSGFA_107 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_108),
((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_109),
((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_110)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_111, "the overloaded ", 15);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_112, " operator has to be enabled with {.experimental: \"dotOperators\""
".}", 65);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_113, " operator has to be enabled with {.experimental: \"callOperator\""
".}", 65);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_114, "implementation of \'$1\' is not allowed", 37);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_115, "generic method not attachable to object type", 44);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_116, "\'method\' needs a parameter that has an object type", 50);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_117, "invalid type: \'", 15);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_118, "\' for ", 6);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_119, "\' in this context: \'", 20);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_121, "hlo.nim", 7);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_120 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_121),
((NI) 15),
((NI) 17)}
;
static NIM_CONST tySet_tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg TM_rF9caJawfOjYTjsgLVUSGFA_122 = {
0x00, 0x00, 0x08, 0xB0, 0x03, 0x06, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x38, 0x8C, 0x00, 0x02, 0x00, 0x00,
0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_123, "for a \'var\' type a variable needs to be passed; but \'$1\' is imm"
"utable", 69);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_124, "address of \'$1\' may not escape its stack frame", 46);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_125, "(", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_126, ")", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_127, "analyseIfAddressTaken", 21);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_128, "expression has no address; maybe use \'unsafeAddr\'", 49);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_129, "unsafeAddr", 10);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_130, "invalid index value for tuple subscript", 39);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_131, "cannot instantiate: \'", 21);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_132, "\'; got ", 7);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_133, " type(s) but expected ", 22);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_134, "AnonType", 8);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_135, "could not resolve: ", 19);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_136, "expression \'$1\' cannot be called", 32);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_137, ", ", 2);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_138, "\012", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_139, "  first type mismatch at position: ", 35);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_140, "\012  required type: ", 18);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_141, "\012  unknown named parameter: ", 28);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_142, "none", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_143, "\012  but expression \'", 19);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_144, "\' is of type: ", 14);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_145, "\012  This expression is not GC-safe. Annotate the proc with {.gcs"
"afe.} to get extended error information.", 103);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_146, "\012  This expression can have side effects. Annotate the proc wit"
"h {.noSideEffect.} to get extended error information.", 116);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_147, "  for a \'var\' type a variable needs to be passed, but \'", 55);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_148, "\' is immutable\012", 15);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_149, "type mismatch: got <", 20);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_150, "\012but expected one of: \012", 23);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_151, "\012expression: ", 13);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_153, "semmagic.nim", 12);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_152 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_153),
((NI) 162),
((NI) 17)}
;
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_154 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_153),
((NI) 116),
((NI) 17)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_155, "or", 2);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_156, "and", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_157, "not", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_158, "name", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_159, "arity", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_160, "genericHead", 11);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_161, "stripGenericParams", 18);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_162, "supportsCopyMem", 15);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_163, "genericHead expects a generic type. The given type was ", 55);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_164, "unknown trait", 13);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_165, "integer literal expected", 24);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_166, "\?\?\?", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_167, "ordinal type expected", 21);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_168, "\'of\' takes object types", 23);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_169, "\'$1\' cannot be of this subtype", 30);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_170, "\'of\' takes 2 arguments", 22);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_171, "\'$1\' expects a type or value", 28);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_172, "low", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_173, "high", 4);
NIM_CONST tyArray_1gf0WJETmt11u6s4GjKzfw opToStr_x47hvY2ezR4p9cvQjupSCVQ = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_172),
((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_173)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_174, "invalid argument for: ", 22);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_175, "string literal expected", 23);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_176, "constant expression expected", 28);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_178, "bindSymImpl", 11);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_179, "string or ident node expected", 29);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_180, "builtin roof operator is not supported anymore", 46);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_181, "cannot find plugin ", 19);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_182, "dest", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_183, "src", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_184, ":tmp", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_185, "<=", 2);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_186, "inc", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_187, "usage of \'$1\' is a user-defined error", 37);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_188, "newSeq", 6);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_189, "len", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_190, "cannot lift assignment operator to \'case\' object", 48);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_191, "deepCopy", 8);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_192, "cannot copy openArray", 21);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_193, "assignment requested for type: ", 31);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_194, "liftBodyAux", 11);
static NIM_CONST tySet_tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg TM_rF9caJawfOjYTjsgLVUSGFA_195 = {
0x71, 0x00, 0x00, 0x78, 0xF8, 0x9F, 0xFF, 0xEF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x3F, 0xF8, 0x01, 0x0C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_196, "cannot evaluate \'$1\'", 20);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_197, "the resulting AST is cyclic and cannot be processed further", 59);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_198, " --> \'", 6);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_199, "implementation of \'$1\' expected", 31);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_200, "no symbol to borrow from found", 30);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_201, "\'.closure\' calling convention for top level routines is invalid", 63);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_202 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_205, "semcall.nim", 11);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_204 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_205),
((NI) 305),
((NI) 21)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_206, "undeclared field: \'$1\'", 22);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_207, "attempting to call undeclared routine: \'$1\'", 43);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_208 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_205),
((NI) 350),
((NI) 19)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_209, "ambiguous call", 14);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_210, "ambiguous call; both $1 and $2 match for: $3", 44);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_211, "Non-matching candidates for ", 28);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_212 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_205),
((NI) 455),
((NI) 25)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_213, "semOverloadedCallAnalyseEffects", 31);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_214, "\'$1\' cannot be assigned to", 26);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_216, "semexprs.nim", 12);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_215 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_216),
((NI) 1562),
((NI) 25)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_217, "\'$1\' escapes its stack frame; context: \'$2\'; see $3/var_t_retur"
"n.html", 69);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_218, "https://nim-lang.org/docs/manual", 32);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_219, "\'$1\' is not the first parameter; context: \'$2\'; see $3/var_t_re"
"turn.html", 72);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_220, "cannot infer the return type of the proc", 40);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_221, "identifier expected", 19);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_222, "Array length can\'t be negative, but was ", 40);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_223, "array expects two type parameters", 33);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_224, "\'$1\' is not a concrete type", 27);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_225, "\'$1\' expects one type parameter", 31);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_226, "openarray", 9);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_227, "..<", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_228, "range types need to be constructed with \'..\', \'..<\' is not supp"
"orted", 68);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_229, "expected range", 14);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_230, "range", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_231, "set is too large", 16);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_232, "set", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_233, "ordinal", 7);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_234, "seq", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_235, "opt", 3);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_236, "varargs", 7);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_237, "type \'var var\' is not allowed", 29);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_238, "initialization not allowed here", 31);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_239, "cannot instantiate the \'$1\' $2", 30);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_240 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_80),
((NI) 1222),
((NI) 21)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_241, "no generic parameters allowed for $1", 36);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_242, "cannot instantiate ", 19);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_243, "\012got: <", 7);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_244, ">\012but expected: <", 17);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_245, ">", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_246, "invalid recursion in type \'$1\'", 30);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_247, "object", 6);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_248, "addInheritedFieldsAux", 21);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_249, "addInheritedFieldsAux(record case branch)", 41);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_250, "addInheritedFieldsAux()", 23);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_251, "inheritance only works with non-final objects", 45);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_252, "semRecordNodeAux", 16);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_253, "semRecordCase: discriminant is no symbol", 40);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_254, "selector must be of an ordinal type", 35);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_255, "low(", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_256, ") must be 0 for discriminant", 28);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_257, "len($1) must be less than 32768", 31);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_258, "duplicate case label", 20);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_259, "not all cases are covered", 25);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_260, "object constructor needs an object type; for named arguments us"
"e \'=\' instead of \':\'", 83);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_261 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_80),
((NI) 1589),
((NI) 21)}
;
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_262 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_80),
((NI) 1612),
((NI) 25)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_263, "cannot inherit from a type that is not an object type", 53);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_264, "inheritance only works with non-final objects; to enable inheri"
"tance write \'", 76);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_265, " of RootObj\'", 12);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_266, "semObjectNode", 13);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_267, "dummy", 5);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_268 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x14, 0x00, 0xFB, 0x56, 0x98, 0x02, 0x80,
0x00, 0x00, 0x00, 0x00, 0x42, 0x80, 0x30, 0xB0,
0x40, 0x06, 0x80, 0x00, 0x00, 0x00, 0x18, 0x00,
0x00, 0x03}
;
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_269 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_80),
((NI) 1357),
((NI) 19)}
;
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_270 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
0xF1, 0x3F, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_271, "inheritance only works with an enum", 35);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_272, "wrong number of variables", 25);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_273, "invalid order in enum \'$1\'", 26);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_274 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_216),
((NI) 1095),
((NI) 23)}
;
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_275 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_216),
((NI) 1100),
((NI) 23)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_276, "illegal context for \'nimvm\' magic", 33);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_277, "/Users/andreasrumpf-mac/projects/build_nim_xz/build/Nim/compile"
"r/semexprs.nim(1146, 22) `f == s` ", 97);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_278, "bind", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_279, "a type conversion takes exactly one argument", 44);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_280 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_216),
((NI) 198),
((NI) 19)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_281, ":anon", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_282, "object contruction uses \':\', not \'=\'", 36);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_283, "illegal conversion from \'$1\' to \'$2\'", 36);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_284, "object constructor needs an object type", 39);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_286, "semobjconstr.nim", 16);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_285 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_286),
((NI) 156),
((NI) 19)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_287, "incorrect object construction syntax; use a space after the col"
"on", 65);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_288, "incorrect object construction syntax", 36);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_289, "/Users/andreasrumpf-mac/projects/build_nim_xz/build/Nim/compile"
"r/semobjconstr.nim(104, 14) `recList.kind == nkRecList` ", 119);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_290, "The fields \'$1\' and \'$2\' cannot be initialized together, becaus"
"e they are from conflicting branches in the case object.", 119);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_291, "the field \'$1\' is not accessible.", 33);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_293, "you must provide a compile-time value for the discriminator \'$1"
"\' in order to prove that it\'s safe to initialize $2.", 115);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_294, "a case selecting discriminator \'$1\' with value \'$2\' appears in "
"the object construction, but the field(s) $3 are in conflict wit"
"h this value.", 140);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_295, "fields not initialized: $1.", 27);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_296 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_286),
((NI) 242),
((NI) 19)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_297, "field initialized twice: \'$1\'", 29);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_298, "defined", 7);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_299, "identifier expected, but got: ", 30);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_301, "sizeof", 6);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_302, "\'is\' operator takes 2 arguments", 31);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_303 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_216),
((NI) 336),
((NI) 17)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_304, "closure", 7);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_305, "iterator", 8);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_306, "expected a template that takes ", 31);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_307, " arguments", 10);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_308, "ambiguous symbol in \'getAst\' context: ", 38);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_309, "getAst takes a call, but got ", 29);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_310 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_216),
((NI) 1792),
((NI) 17)}
;
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_311 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_216),
((NI) 1830),
((NI) 17)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_312, "``", 2);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_313, "block", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_314, "typed", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_315, "untyped", 7);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_316 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x48, 0x20, 0x00, 0x80, 0x02, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x70,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_317, "getAst", 6);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_318, "use the {.experimental.} pragma to enable \'parallel\'", 52);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_319, "FlowVar", 7);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_320, "nimCreateFlowVar", 16);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_321, "system needs: nimCreateFlowVar", 30);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_323, ">\012but expected one of: \012", 24);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_324, "named expression expected", 25);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_325, "named expression not allowed here", 33);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_326, "invalid order in array constructor", 34);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_327 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x08, 0x00, 0x1B, 0xFA, 0x04, 0x00, 0x80,
0xF0, 0x3F, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00,
0x24, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_328, "A nested proc can have generic parameters only when it is used "
"as an operand to another routine and the types of the generic pa"
"ramers can be inferred from the expected signature.", 178);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_329, "cannot cast to a non concrete type: \'$1\'", 40);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_330, "expression cannot be cast to ", 29);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_331, "==", 2);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_332, "cannot infer the concept parameter \'%s\', due to a type mismatch"
". attempt to equate \'%s\' and \'%s\'.", 97);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_333, "concept predicate failed", 24);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_334, "unreachable statement after \'return\'", 36);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_335, "only a \'ref object\' can be raised", 33);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_336, "raised object of type $1 does not inherit from Exception", 56);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_337, "\'typedesc\' metatype is not valid here; typed \'=\' instead of \':\'"
"\?", 64);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_338, "cannot infer the type of the $1", 31);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_339, "\'$1\' doesn\'t have a concrete type, due to unspecified generic p"
"arameters.", 73);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_340, "\'let\' symbol requires an initialization", 39);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_341, "tuple", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_342, "implicit object field construction requires a .partial object, "
"but got ", 71);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_343, "nkDotNode requires 2 children", 29);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_344, "_", 1);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_345, "a thread var cannot be initialized explicitly; this would only "
"run for the main thread", 86);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_346, "inconsistent typing for reintroduced symbol \'", 45);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_347, "\': previous type was: ", 22);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_348, "; new type is: ", 15);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_349, "invalid type for const: ", 24);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_350, "unknown package name: ", 22);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_351, " is not a type that can be forwarded", 36);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_352, "only top level types in a package can be \'package\'", 50);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_353, "cannot complete type \'", 22);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_354, "\' twice; previous type completion was here: ", 44);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_355, "auto", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_356, "expr", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_357, "stmt", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_358, "lent", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_359, "sink", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_364, "non-invariant type param used in a proc type: ", 46);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_366, "covariant param \'", 17);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_367, "\' used in a non-covariant position", 34);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_368, "contravariant param \'", 21);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_369, "\' used in a non-contravariant position", 38);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_371, "non-invariant type parameters cannot be used with types such \'", 62);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_372, "non-invariant type parameters are not supported in concepts", 59);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_377, "semstmts.nim", 12);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_376 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_377),
((NI) 957),
((NI) 21)}
;
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_379 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_377),
((NI) 1040),
((NI) 21)}
;
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_380 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_377),
((NI) 1041),
((NI) 21)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_381, ":ObjectType", 11);
NIM_CONST tyTuple_kN8up2W6YKc5YA9avn5mV5w TM_rF9caJawfOjYTjsgLVUSGFA_382 = {((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_377),
((NI) 1071),
((NI) 19)}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_383, "statement returns no value that can be discarded", 48);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_384, "exception already handled", 25);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_385, "Mix of imported and native exception types is not allowed in on"
"e except branch", 78);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_386, "invalid control flow: $1", 24);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_387, "\'continue\' cannot have a label", 30);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_388, "ForLoopStmt", 11);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_389, "expression \'$1\' has no type (or is ambiguous)", 45);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_390 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_391, "true", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_392, "system needs: \'true\'", 20);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_393, "no object or tuple type", 23);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_394, "Field", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_395, "\'continue\' not supported in a \'fields\' loop", 43);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_396, "parallel \'fields\' iterator does not work for \'case\' objects", 59);
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_rF9caJawfOjYTjsgLVUSGFA_397 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_398, "items", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_399, "pairs", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_400, "iterator within for loop context expected", 41);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_401, "match", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_402, "selector must be of an ordinal type, float or string", 52);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_403, "no return type declared", 23);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_404, "\'return\' not allowed here", 25);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_405, "using", 5);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_406, "\'using\' section must have a type", 32);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_407, "\'using\' sections cannot contain assignments", 43);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_408, "\'yield\' only allowed in an iterator", 35);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_409, "semYield", 8);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_410, "tuple constructor", 17);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_411, "current routine cannot return an expression", 43);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_412, "yield statement must yield a value", 34);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_413 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00, 0x04, 0x00, 0xEF, 0xFF,
0x04, 0x00, 0xFF, 0x3F, 0x94, 0x65, 0xC6, 0x07,
0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
0x00, 0x00}
;
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_414 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x04, 0x00, 0x3B, 0x6A, 0x80, 0x02, 0x80,
0xF0, 0x3F, 0x00, 0x40, 0x08, 0x80, 0x01, 0x30,
0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_415, "iterator needs a return type", 28);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_416, "inline iterators are not first-class / cannot be assigned to va"
"riables", 70);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_417 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0C, 0xD0, 0x3F, 0xFA, 0xBD, 0x02, 0x8C,
0xF1, 0x3F, 0x00, 0x40, 0x08, 0x98, 0x01, 0x30,
0x24, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_418, "method", 6);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_419 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0C, 0xD0, 0x3E, 0xFA, 0xFD, 0x02, 0x8C,
0xF1, 0x3F, 0x00, 0x40, 0x08, 0x98, 0x01, 0x30,
0x24, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_420, "converter", 9);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_421, "$1 needs a return type", 22);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_422, "a converter takes exactly one argument", 38);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_423 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x04, 0x48, 0x3B, 0x22, 0x98, 0x02, 0x80,
0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30,
0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_424, "macro needs a return type", 25);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_425, "import", 6);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_426, "from", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_427, "cannot export: ", 15);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_428, "The export/except syntax expects a module name", 46);
static NIM_CONST tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw TM_rF9caJawfOjYTjsgLVUSGFA_429 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_430, "\'defer\' takes a \'void\' expression", 33);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_431, "invalid expression: ", 20);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_432, "cannot infer type of parameter: ", 32);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_435, "defer statement not supported at top level", 42);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_436, "echo", 4);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_437, "system needs: echo", 18);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_440, "n is not nil", 12);
STRING_LITERAL(TM_rF9caJawfOjYTjsgLVUSGFA_441, "no code for ", 12);

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_fPlwH3r9agN9aEHB6yCPMh0wsystem)(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_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) ((&(*dest).data[((*dest).Sup.len)- 0]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		(*dest).Sup.len += (*src).Sup.len;
	}
	LA3_: ;
}

static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr) {
	tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* result;
	result = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	result = ((tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*) ((NI)((NU32)(((NI) (ptrdiff_t) (usr))) - (NU32)(((NI)sizeof(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g))))));
	return result;
}

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

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c;
		if (!!((src == NIM_NIL))) goto LA3_;
		c = usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem(src);
		(*c).refcount += ((NI) 8);
	}
	LA3_: ;
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c_2;
		if (!!(((*dest) == NIM_NIL))) goto LA7_;
		c_2 = usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem((*dest));
		{
			(*c_2).refcount -= ((NI) 8);
			if (!((NU32)((*c_2).refcount) < (NU32)(((NI) 8)))) goto LA11_;
			rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_2system(c_2);
		}
		LA11_: ;
	}
	LA7_: ;
	(*dest) = src;
}

static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, inlineConst_9bymE7d1QP8cYGIeo3NFMKAsem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*s).ast);
	{
		NimStringDesc* T5_;
		NimStringDesc* T6_;
		if (!(result == 0)) goto LA3_;
		T5_ = (NimStringDesc*)0;
		T6_ = (NimStringDesc*)0;
		T6_ = typeToString_QlvraUan7WbHowhAbvDvdA((*s).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		T5_ = rawNewString((T6_ ? T6_->Sup.len : 0) + 32);
appendString(T5_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_3));
appendString(T5_, T6_);
appendString(T5_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_4));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T5_);
		result = newSymNode_UWZXukHA5As9aCftRHbafBg(s);
	}
	goto LA1_;
	LA3_: ;
	{
		asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
		(*result).info = (*n).info;
	}
	LA1_: ;
	return result;
}

static N_INLINE(NI, len_CdME9baJhvveuPEDZE9bXoxAsigmatch)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	NI T1_;
	result = (NI)0;
	T1_ = ((*n)._Ukind.S6.sons ? (*n)._Ukind.S6.sons->Sup.len : 0);
	result = T1_;
	return result;
}

static N_INLINE(void, nimSetMem_2Mfumf6CnyNlShDWdIgobwsystem)(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_2Mfumf6CnyNlShDWdIgobwsystem(p, ((int) 0), size);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, symChoice_e9ckn59a48lY35fHaH19c0xsw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA r) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* a;
	tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ o;
	NI i;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	a = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	nimZeroMem((void*)(&o), sizeof(tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ));
	i = ((NI) 0);
	a = initOverloadIter_5E8M4x8tMAW3KCmti57FUA((&o), c, n);
	{
		while (1) {
			if (!!((a == NIM_NIL))) goto LA2;
			{
				if (!!(((*a).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6)))) goto LA5_;
				i += ((NI) 1);
				{
					if (!(((NI) 1) < i)) goto LA9_;
					goto LA1;
				}
				LA9_: ;
			}
			LA5_: ;
			a = nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2((&o), c, n);
		} LA2: ;
	} LA1: ;
	{
		NIM_BOOL T13_;
		T13_ = (NIM_BOOL)0;
		T13_ = (i <= ((NI) 1));
		if (!(T13_)) goto LA14_;
		T13_ = !((r == ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 2)));
		LA14_: ;
		if (!T13_) goto LA15_;
		result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
		markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, s, &(*(*c).graph).usageSym);
	}
	goto LA11_;
	LA15_: ;
	{
		tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T25_;
		{
			NIM_BOOL T20_;
			T20_ = (NIM_BOOL)0;
			T20_ = (r == ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
			if (T20_) goto LA21_;
			T20_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45));
			LA21_: ;
			if (!T20_) goto LA22_;
			kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56);
		}
		goto LA18_;
		LA22_: ;
		{
			kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 57);
		}
		LA18_: ;
		T25_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T25_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0), c);
		result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(kind, (*n).info, T25_);
		a = initOverloadIter_5E8M4x8tMAW3KCmti57FUA((&o), c, n);
		{
			while (1) {
				if (!!((a == NIM_NIL))) goto LA27;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T32_;
					if (!!(((*a).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6)))) goto LA30_;
					(*a).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
					T32_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T32_ = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(a, (*n).info);
					addSon_gCCf68XrWL79bKes6htzFjQ_2(result, T32_);
				}
				LA30_: ;
				a = nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2((&o), c, n);
			} LA27: ;
		}
	}
	LA11_: ;
	return result;
}

static N_INLINE(NI, safeLen_CdME9baJhvveuPEDZE9bXoxArenderer)(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_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, implicitlyDiscardable_J6cfuIanCXYEsLNE8M8o9cQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
	NIM_BOOL T3_;
	NIM_BOOL T5_;
	NIM_BOOL T6_;
	result = (NIM_BOOL)0;
	n_2 = n;
	{
		while (1) {
			if (!((TM_rF9caJawfOjYTjsgLVUSGFA_8[(NU)((*n_2).kind)>>3] &(1U<<((NU)((*n_2).kind)&7U)))!=0)) goto LA2;
			n_2 = lastSon_esDJA7239bJDiq4UrX9aHCjg(n_2);
		} LA2: ;
	}
	T3_ = (NIM_BOOL)0;
	T3_ = ((*n_2).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 108));
	if (T3_) goto LA4_;
	T5_ = (NIM_BOOL)0;
	T6_ = (NIM_BOOL)0;
	T6_ = isCallExpr_63pt39coF5C8JoG0utNnwWg(n_2);
	if (!(T6_)) goto LA7_;
	T6_ = ((*(*n_2)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
	LA7_: ;
	T5_ = T6_;
	if (!(T5_)) goto LA8_;
	T5_ = (((*(*(*n_2)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 30))&63U)))!=0);
	LA8_: ;
	T3_ = T5_;
	LA4_: ;
	result = T3_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, discardCheck_1gYGSG6NjOPkINqwm7joJg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
{	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*c).matchedConcept == NIM_NIL));
		if (T3_) goto LA4_;
		T3_ = ((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 2))&31U)))!=0);
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	{
		NIM_BOOL T9_;
		T9_ = (NIM_BOOL)0;
		T9_ = !(((*result).typ == NIM_NIL));
		if (!(T9_)) goto LA10_;
		T9_ = !(((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7) || (*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63)));
		LA10_: ;
		if (!T9_) goto LA11_;
		{
			NIM_BOOL T15_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
			T15_ = (NIM_BOOL)0;
			T15_ = implicitlyDiscardable_J6cfuIanCXYEsLNE8M8o9cQ(result);
			if (!T15_) goto LA16_;
			n = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 114), (*result).info, ((NI) 1));
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), result);
		}
		goto LA13_;
		LA16_: ;
		{
			NIM_BOOL T19_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
			NimStringDesc* s;
			NimStringDesc* T25_;
			NimStringDesc* T26_;
			NimStringDesc* T27_;
			T19_ = (NIM_BOOL)0;
			T19_ = !(((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50)));
			if (!(T19_)) goto LA20_;
			T19_ = !(((*(*(*c).graph).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 18)));
			LA20_: ;
			if (!T19_) goto LA21_;
			n_2 = result;
			{
				while (1) {
					if (!((TM_rF9caJawfOjYTjsgLVUSGFA_8[(NU)((*n_2).kind)>>3] &(1U<<((NU)((*n_2).kind)&7U)))!=0)) goto LA24;
					n_2 = lastSon_esDJA7239bJDiq4UrX9aHCjg(n_2);
				} LA24: ;
			}
			T25_ = (NimStringDesc*)0;
			T26_ = (NimStringDesc*)0;
			T26_ = dollar__qX5C9b0n9bOP7jk69amC8dA7A(n_2);
			T27_ = (NimStringDesc*)0;
			T27_ = typeToString_QlvraUan7WbHowhAbvDvdA((*result).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T25_ = rawNewString((T26_ ? T26_->Sup.len : 0) + (T27_ ? T27_->Sup.len : 0) + 51);
appendString(T25_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_9));
appendString(T25_, T26_);
appendString(T25_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_10));
appendString(T25_, T27_);
appendString(T25_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_11));
			s = T25_;
			{
				NIM_BOOL T30_;
				NimStringDesc* T34_;
				NimStringDesc* T35_;
				T30_ = (NIM_BOOL)0;
				T30_ = !(((*result).info.line == (*n_2).info.line));
				if (T30_) goto LA31_;
				T30_ = !(((*result).info.fileIndex == (*n_2).info.fileIndex));
				LA31_: ;
				if (!T30_) goto LA32_;
				T34_ = (NimStringDesc*)0;
				T35_ = (NimStringDesc*)0;
				T35_ = dollar__tduYJIZOMabvcOCb9bVwWCA_2((*(*c).graph).config, (*result).info);
				T34_ = rawNewString((T35_ ? T35_->Sup.len : 0) + 28);
appendString(T34_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_12));
appendString(T34_, T35_);
				s = resizeString(s, (T34_ ? T34_->Sup.len : 0) + 0);
appendString(s, T34_);
			}
			LA32_: ;
			{
				if (!((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25))) goto LA38_;
				s = resizeString(s, 28);
appendString(s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_13));
			}
			LA38_: ;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n_2).info, s);
		}
		goto LA13_;
		LA21_: ;
		LA13_: ;
	}
	LA11_: ;
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprNoType_U3qPBy54f1PkCP8vmFMCRA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NIM_BOOL isPush;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	isPush = (((*(*(*c).graph).config).notes &((NU64)1<<((NU)((((tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg) 69)- 11))&63U)))!=0);
	{
		if (!isPush) goto LA3_;
		pushInfoContext_jVPMMc4H29cyI52qg0Kp9aUg((*(*c).graph).config, (*n).info);
	}
	LA3_: ;
	result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, n, 64);
	discardCheck_1gYGSG6NjOPkINqwm7joJg(c, result, 0);
	{
		if (!isPush) goto LA7_;
		popInfoContext_HFVjkUQz7LMV9aOS6uKLckQ((*(*c).graph).config);
	}
	LA7_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!!(((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 2))&31U)))!=0))) goto LA3_;
		result = semExprNoType_U3qPBy54f1PkCP8vmFMCRA_2(c, n);
	}
	goto LA1_;
	LA3_: ;
	{
		result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, n, flags);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, fixupTypeOf_kpOFzKOiLqZnXNQ9aEb30pg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* typExpr) {
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
		if (!!((prev == NIM_NIL))) goto LA3_;
		result = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4), c);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, (*typExpr).typ);
		asgnRefNoCycle((void**) (&(*result).sym), (*prev).sym);
		assignType_z2malisaD2RKFo0cGpXWvQ(prev, result);
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semTypeof_VyBZhWPO9cyRyURhXkNKu7w_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	t = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, n, 4);
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	fixupTypeOf_kpOFzKOiLqZnXNQ9aEb30pg(c, prev, t);
	result = (*t).typ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newOrPrevType_y4ESw6ErNhPuQy82cNWFmw)(tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev, tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		if (!(prev == NIM_NIL)) goto LA3_;
		result = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(kind, c);
	}
	goto LA1_;
	LA3_: ;
	{
		result = prev;
		{
			if (!((*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 30))) goto LA8_;
			(*result).kind = kind;
		}
		LA8_: ;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semAnonTuple_VyBZhWPO9cyRyURhXkNKu7w_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 0))) goto LA4_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
	}
	LA4_: ;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18), prev, c);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
		it = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T10_;
					if (!(i_2 < colontmp_)) goto LA9;
					i = i_2;
					it = (*n)._Ukind.S6.sons->data[i];
					T10_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T10_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, it, NIM_NIL);
					addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, T10_);
					i_2 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	return result;
}

static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size) {
	int result;
	result = (int)0;
	result = memcmp(a, b, ((size_t) (size)));
	return result;
}

static N_INLINE(NIM_BOOL, equalMem_DCrUjdaMvFDHaR1hs7sQGwropes)(void* a, void* b, NI size) {
	NIM_BOOL result;
	int T1_;
	result = (NIM_BOOL)0;
	T1_ = (int)0;
	T1_ = nimCmpMem(a, b, size);
	result = (T1_ == ((NI32) 0));
	return result;
}

static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
	NIM_BOOL result;
	NI alen;
	NI blen;
{	result = (NIM_BOOL)0;
	alen = (a ? a->Sup.len : 0);
	blen = (b ? b->Sup.len : 0);
	{
		if (!(alen == blen)) goto LA3_;
		{
			if (!(alen == ((NI) 0))) goto LA7_;
			result = NIM_TRUE;
			goto BeforeRet_;
		}
		LA7_: ;
		result = equalMem_DCrUjdaMvFDHaR1hs7sQGwropes(((void*) ((&a->data[((NI) 0)]))), ((void*) ((&b->data[((NI) 0)]))), ((NI) (alen)));
		goto BeforeRet_;
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}

static N_INLINE(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipIntLit_7SeREq19a8pkSCOuiHcpHnwsigmatch)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*t).n == NIM_NIL));
		if (!(T3_)) goto LA4_;
		T3_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) || (*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 36));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = copyType_UkDKseEIJgQZ1cGmoQSskA(t, (*t).owner, NIM_FALSE);
		asgnRefNoCycle((void**) (&(*result).n), NIM_NIL);
	}
	goto LA1_;
	LA5_: ;
	{
		result = t;
	}
	LA1_: ;
	return result;
}

static N_INLINE(NIM_BOOL, contains_Q79akNsDbJpCYo4tQzRSE2Qsem)(tyObject_HSlice_HjDAjiFsTWGmlZ9cd8nEusA s, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag value) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = (s.a <= value);
	if (!(T1_)) goto LA2_;
	T1_ = (value <= s.b);
	LA2_: ;
	result = T1_;
	return result;
}

static N_INLINE(tyObject_HSlice_HjDAjiFsTWGmlZ9cd8nEusA, dotdot__2BOQQTJSgRdTj69bMDpS1Zwsem)(tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag a, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag b) {
	tyObject_HSlice_HjDAjiFsTWGmlZ9cd8nEusA result;
	nimZeroMem((void*)(&result), sizeof(tyObject_HSlice_HjDAjiFsTWGmlZ9cd8nEusA));
	result.a = a;
	result.b = b;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isUnresolvedSym_cO2rS0JIm8g9cbNlNyVnwhg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T2_;
	NIM_BOOL T3_;
	NIM_BOOL T6_;
	NIM_BOOL T9_;
{	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T2_ = (NIM_BOOL)0;
	T3_ = (NIM_BOOL)0;
	T3_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 4));
	if (T3_) goto LA4_;
	T3_ = (((*(*s).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 26))&63U)))!=0);
	LA4_: ;
	T2_ = T3_;
	if (T2_) goto LA5_;
	T6_ = (NIM_BOOL)0;
	T6_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
	if (!(T6_)) goto LA7_;
	T6_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw((*s).typ);
	LA7_: ;
	T2_ = T6_;
	LA5_: ;
	T1_ = T2_;
	if (T1_) goto LA8_;
	T9_ = (NIM_BOOL)0;
	T9_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7));
	if (!(T9_)) goto LA10_;
	T9_ = !((((*(*s).typ).flags & 50331648) == 0));
	LA10_: ;
	T1_ = T9_;
	LA8_: ;
	result = T1_;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasUnresolvedArgs_LeFS3Ufk6SguFjd3eMJWeg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		result = isUnresolvedSym_cO2rS0JIm8g9cbNlNyVnwhg((*n)._Ukind.S4.sym);
		goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
		ident = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, n, NIM_NIL);
		sym = searchInScopes_xnVjAYTNrHOYQvPVqwg14w(c, ident);
		{
			if (!!((sym == NIM_NIL))) goto LA5_;
			result = isUnresolvedSym_cO2rS0JIm8g9cbNlNyVnwhg(sym);
			goto BeforeRet_;
		}
		goto LA3_;
		LA5_: ;
		{
			result = NIM_FALSE;
			goto BeforeRet_;
		}
		LA3_: ;
	}
	break;
	default:
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA11;
					i = i_2;
					{
						NIM_BOOL T14_;
						T14_ = (NIM_BOOL)0;
						T14_ = hasUnresolvedArgs_LeFS3Ufk6SguFjd3eMJWeg(c, (*n)._Ukind.S6.sons->data[i]);
						if (!T14_) goto LA15_;
						result = NIM_TRUE;
						goto BeforeRet_;
					}
					LA15_: ;
					i_2 += ((NI) 1);
				} LA11: ;
			}
		}
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semRangeAux_VyBZhWPO9cyRyURhXkNKu7w_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw range;
	tyArray_E1tCxfqiw3fNnaaIR5Kn2A rangeT;
	NIM_BOOL hasUnknownTypes;
	NIM_BOOL T12_;
	NIM_BOOL T13_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 3), (*(*c).graph).config);
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 44), (*n).info));
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
	addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, T1_);
	{
		NIM_BOOL T4_;
		T4_ = (NIM_BOOL)0;
		T4_ = ((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
		if (T4_) goto LA5_;
		T4_ = ((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
		LA5_: ;
		if (!T4_) goto LA6_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_16));
	}
	LA6_: ;
	nimZeroMem((void*)range, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	range[(((NI) 0))- 0] = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 1)], 256);
	range[(((NI) 1))- 0] = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 2)], 256);
	nimZeroMem((void*)rangeT, sizeof(tyArray_E1tCxfqiw3fNnaaIR5Kn2A));
	{
		NI i;
		NI res;
		i = (NI)0;
		res = ((NI) 0);
		{
			while (1) {
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T11_;
				if (!(res <= ((NI) 1))) goto LA10;
				i = res;
				T11_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T11_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*range[(i)- 0]).typ, IL64(1152921504606846976));
				rangeT[(i)- 0] = skipIntLit_7SeREq19a8pkSCOuiHcpHnwsigmatch(T11_);
				res += ((NI) 1);
			} LA10: ;
		}
	}
	T12_ = (NIM_BOOL)0;
	T13_ = (NIM_BOOL)0;
	T13_ = (((NI) 0) < (*c).inGenericContext);
	if (!(T13_)) goto LA14_;
	T13_ = ((*rangeT[(((NI) 0))- 0]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61));
	LA14_: ;
	T12_ = T13_;
	if (T12_) goto LA15_;
	T12_ = ((*rangeT[(((NI) 1))- 0]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61));
	LA15_: ;
	hasUnknownTypes = T12_;
	{
		if (!!(hasUnknownTypes)) goto LA18_;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T22_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T23_;
			NIM_BOOL T24_;
			T22_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T22_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(rangeT[(((NI) 0))- 0], 1048576);
			T23_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T23_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(rangeT[(((NI) 1))- 0], 1048576);
			T24_ = (NIM_BOOL)0;
			T24_ = sameType_3isNyHKb0U1OCnClmflXSg(T22_, T23_, 0);
			if (!!(T24_)) goto LA25_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_17));
		}
		goto LA20_;
		LA25_: ;
		{
			NIM_BOOL T28_;
			NIM_BOOL T29_;
			tyObject_HSlice_HjDAjiFsTWGmlZ9cd8nEusA T31_;
			NIM_BOOL T32_;
			T28_ = (NIM_BOOL)0;
			T29_ = (NIM_BOOL)0;
			T29_ = isOrdinalType_tcejMcLGk6ut4jAKBig68w(rangeT[(((NI) 0))- 0], NIM_FALSE);
			T28_ = !(T29_);
			if (!(T28_)) goto LA30_;
			T31_ = dotdot__2BOQQTJSgRdTj69bMDpS1Zwsem(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 36), ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 39));
			T32_ = (NIM_BOOL)0;
			T32_ = contains_Q79akNsDbJpCYo4tQzRSE2Qsem(T31_, (*rangeT[(((NI) 0))- 0]).kind);
			T28_ = !(T32_);
			LA30_: ;
			if (!T28_) goto LA33_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_18));
		}
		goto LA20_;
		LA33_: ;
		{
			NIM_BOOL T36_;
			NimStringDesc* T39_;
			NimStringDesc* T40_;
			T36_ = (NIM_BOOL)0;
			T36_ = enumHasHoles_oBaRrNx0TwrublbZIUKenA_2(rangeT[(((NI) 0))- 0]);
			if (!T36_) goto LA37_;
			T39_ = (NimStringDesc*)0;
			T39_ = typeToString_QlvraUan7WbHowhAbvDvdA(rangeT[(((NI) 0))- 0], ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T40_ = (NimStringDesc*)0;
			T40_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_19), T39_);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T40_);
		}
		goto LA20_;
		LA37_: ;
		LA20_: ;
	}
	LA18_: ;
	{
		NI i_2;
		NI res_2;
		i_2 = (NI)0;
		res_2 = ((NI) 0);
		{
			while (1) {
				if (!(res_2 <= ((NI) 1))) goto LA43;
				i_2 = res_2;
				{
					NIM_BOOL T46_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T49_;
					T46_ = (NIM_BOOL)0;
					T46_ = hasUnresolvedArgs_LeFS3Ufk6SguFjd3eMJWeg(c, range[(i_2)- 0]);
					if (!T46_) goto LA47_;
					T49_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T49_ = makeStaticExpr_9bxkVMWst1k8EaGgcgRhHwA(c, range[(i_2)- 0]);
					addSon_gCCf68XrWL79bKes6htzFjQ_2((*result).n, T49_);
					(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))%(sizeof(NU64)*8));
				}
				goto LA44_;
				LA47_: ;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T51_;
					T51_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T51_ = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, range[(i_2)- 0]);
					addSon_gCCf68XrWL79bKes6htzFjQ_2((*result).n, T51_);
				}
				LA44_: ;
				res_2 += ((NI) 1);
			} LA43: ;
		}
	}
	{
		tyEnum_TImplication_t4F29a8ejY1DFQTYTML9c9byA T54_;
		T54_ = (tyEnum_TImplication_t4F29a8ejY1DFQTYTML9c9byA)0;
		T54_ = weakLeValue_ZgzWfhdUsbwPI0319a0Xjbg((*(*result).n)._Ukind.S6.sons->data[((NI) 0)], (*(*result).n)._Ukind.S6.sons->data[((NI) 1)]);
		if (!(T54_ == ((tyEnum_TImplication_t4F29a8ejY1DFQTYTML9c9byA) 1))) goto LA55_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_16));
	}
	LA55_: ;
	asgnRefNoCycle((void**) (&(*result).sons->data[((NI) 0)]), rangeT[(((NI) 0))- 0]);
	return result;
}

static N_INLINE(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, freshType_qZDdYKlnG87DemGcaKuMLwsem)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* res, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		if (!(prev == 0)) goto LA3_;
		result = copyType_UkDKseEIJgQZ1cGmoQSskA(res, (*res).owner, NIM_FALSE);
	}
	goto LA1_;
	LA3_: ;
	{
		result = res;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, maybeAliasType_L9clWyMIvLOOZ9cbCUsKxaCQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeExpr, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*typeExpr).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17) || (*typeExpr).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14) || (*typeExpr).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13));
		if (!(T3_)) goto LA4_;
		T3_ = !((prev == NIM_NIL));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4), c);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, typeExpr);
		asgnRefNoCycle((void**) (&(*result).sym), (*prev).sym);
		assignType_z2malisaD2RKFo0cGpXWvQ(prev, result);
	}
	LA5_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semTypeExpr_VyBZhWPO9cyRyURhXkNKu7w_5)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	n_2 = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, n, 256);
	{
		if (!((*(*n_2).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA3_;
		result = base_BFFuB9cFDZ89c6QWZqEFAtdA((*n_2).typ);
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = !((prev == NIM_NIL));
			if (!(T7_)) goto LA8_;
			T7_ = !(((*prev).sym == NIM_NIL));
			LA8_: ;
			if (!T7_) goto LA9_;
			{
				if (!((*result).sym == 0)) goto LA13_;
				asgnRefNoCycle((void**) (&(*result).sym), (*prev).sym);
				asgnRefNoCycle((void**) (&(*(*result).sym).typ), result);
			}
			goto LA11_;
			LA13_: ;
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* alias;
				alias = maybeAliasType_L9clWyMIvLOOZ9cbCUsKxaCQ(c, result, prev);
				{
					if (!!((alias == NIM_NIL))) goto LA18_;
					result = alias;
				}
				LA18_: ;
			}
			LA11_: ;
		}
		LA9_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		NimStringDesc* T21_;
		NimStringDesc* T22_;
		T21_ = (NimStringDesc*)0;
		T22_ = (NimStringDesc*)0;
		T22_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n_2, 0);
		T21_ = rawNewString((T22_ ? T22_->Sup.len : 0) + 24);
appendString(T21_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_21));
appendString(T21_, T22_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n_2).info, T21_);
		result = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newConstraint_3OZ81tHhhvQxNS5O7XIa9aQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag k) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 51), c);
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(k, c);
	addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, T1_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semAnyRef_Qz0jS9bzELc1ZEW1Xl29cGVg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		if (!(T3_ < ((NI) 1))) goto LA4_;
		result = newConstraint_3OZ81tHhhvQxNS5O7XIa9aQ(c, kind);
	}
	goto LA1_;
	LA4_: ;
	{
		NI isCall;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T12_;
		NIM_BOOL isNilable;
		isCall = ((*n).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) && (*n).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42));
		{
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41))) goto LA9_;
			n_2 = (*n)._Ukind.S6.sons->data[((NI) 0)];
		}
		goto LA7_;
		LA9_: ;
		{
			n_2 = n;
		}
		LA7_: ;
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n_2, ((NI) 1), (*(*c).graph).config);
		T12_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T12_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(n_2);
		t = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, T12_, NIM_NIL);
		{
			NIM_BOOL T15_;
			T15_ = (NIM_BOOL)0;
			T15_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
			if (!(T15_)) goto LA16_;
			T15_ = !((((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0));
			LA16_: ;
			if (!T15_) goto LA17_;
			t = base_BFFuB9cFDZ89c6QWZqEFAtdA(t);
		}
		LA17_: ;
		{
			NimStringDesc* T23_;
			if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63))) goto LA21_;
			T23_ = (NimStringDesc*)0;
			T23_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_24), kindToStr_hsMIOVdCUYpaVdz9bF7Vowg[(kind)- 21]);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n_2).info, T23_);
		}
		LA21_: ;
		result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(kind, prev, c);
		isNilable = NIM_FALSE;
		{
			NI i;
			NI colontmp_;
			NI T25_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T25_ = (NI)0;
			T25_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n_2);
			colontmp_ = (NI)(T25_ - ((NI) 2));
			res = isCall;
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ni;
					if (!(res <= colontmp_)) goto LA27;
					i = res;
					ni = (*n_2)._Ukind.S6.sons->data[i];
					{
						if (!((*ni).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23))) goto LA30_;
						isNilable = NIM_TRUE;
					}
					goto LA28_;
					LA30_: ;
					{
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* region;
						region = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, ni, NIM_NIL);
						{
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T35_;
							T35_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
							T35_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(region, IL64(70368744179728));
							if (!!(((*T35_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50) || (*T35_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17)))) goto LA36_;
							message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*(*n_2)._Ukind.S6.sons->data[i]).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_27));
						}
						goto LA33_;
						LA36_: ;
						{
							message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*n_2).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 15), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_28));
						}
						LA33_: ;
						addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, region);
					}
					LA28_: ;
					res += ((NI) 1);
				} LA27: ;
			}
		}
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, t);
		{
			if (!(((*result).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 16))&63U)))!=0)) goto LA41_;
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T45_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T48_;
				T45_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T45_ = lastSon_ab52xel9cFebv9am0xV04xXA(result);
				if (!((*T45_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA46_;
				T48_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T48_ = lastSon_ab52xel9cFebv9am0xV04xXA(result);
				(*T48_).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 16))%(sizeof(NU64)*8));
			}
			LA46_: ;
		}
		LA41_: ;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, commonType_hfwrZ5ThSx8sbABQFEwdHg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		if (!(x == NIM_NIL)) goto LA3_;
		result = x;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		if (!(y == NIM_NIL)) goto LA7_;
		result = y;
		goto BeforeRet_;
	}
	LA7_: ;
	a = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(x, IL64(70368744179728));
	b = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(y, IL64(70368744179728));
	result = x;
	{
		if (!((*a).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6) || (*a).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5))) goto LA11_;
		result = y;
	}
	goto LA9_;
	LA11_: ;
	{
		if (!((*b).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6) || (*b).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5))) goto LA14_;
		result = x;
	}
	goto LA9_;
	LA14_: ;
	{
		if (!((*a).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7))) goto LA17_;
		result = a;
	}
	goto LA9_;
	LA17_: ;
	{
		if (!((*b).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7))) goto LA20_;
		result = b;
	}
	goto LA9_;
	LA20_: ;
	{
		if (!((*a).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA23_;
		{
			NI T27_;
			T27_ = (NI)0;
			T27_ = len_SWFNCiWYB89bTUPh5KptkvA_2(a);
			if (!(T27_ == ((NI) 0))) goto LA28_;
			result = a;
		}
		goto LA25_;
		LA28_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T31_;
			result = newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8), (*a).owner);
			T31_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T31_ = newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0), (*a).owner);
			rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, T31_);
		}
		LA25_: ;
	}
	goto LA9_;
	LA23_: ;
	{
		NIM_BOOL T33_;
		NI idx;
		T33_ = (NIM_BOOL)0;
		T33_ = ((*b).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16) || (*b).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19) || (*b).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24));
		if (!(T33_)) goto LA34_;
		T33_ = ((*a).kind == (*b).kind);
		LA34_: ;
		if (!T33_) goto LA35_;
		idx = ((*b).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16));
		{
			if (!((*(*a).sons->data[idx]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 3))) goto LA39_;
			result = y;
			goto BeforeRet_;
		}
		LA39_: ;
	}
	goto LA9_;
	LA35_: ;
	{
		NIM_BOOL T42_;
		NIM_BOOL T43_;
		NI T46_;
		NI T47_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* nt;
		T42_ = (NIM_BOOL)0;
		T43_ = (NIM_BOOL)0;
		T43_ = ((*a).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18));
		if (!(T43_)) goto LA44_;
		T43_ = ((*b).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18));
		LA44_: ;
		T42_ = T43_;
		if (!(T42_)) goto LA45_;
		T46_ = (NI)0;
		T46_ = len_SWFNCiWYB89bTUPh5KptkvA_2(a);
		T47_ = (NI)0;
		T47_ = len_SWFNCiWYB89bTUPh5KptkvA_2(b);
		T42_ = (T46_ == T47_);
		LA45_: ;
		if (!T42_) goto LA48_;
		nt = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_SWFNCiWYB89bTUPh5KptkvA_2(a);
			i_2 = ((NI) 0);
			{
				while (1) {
					NIM_BOOL aEmpty;
					NIM_BOOL bEmpty;
					if (!(i_2 < colontmp_)) goto LA52;
					i = i_2;
					aEmpty = isEmptyContainer_oBaRrNx0TwrublbZIUKenA_3((*a).sons->data[i]);
					bEmpty = isEmptyContainer_oBaRrNx0TwrublbZIUKenA_3((*b).sons->data[i]);
					{
						if (!!((aEmpty == bEmpty))) goto LA55_;
						{
							if (!(nt == 0)) goto LA59_;
							nt = copyType_UkDKseEIJgQZ1cGmoQSskA(a, (*a).owner, NIM_FALSE);
						}
						LA59_: ;
						{
							if (!aEmpty) goto LA63_;
							asgnRefNoCycle((void**) (&(*nt).sons->data[i]), (*b).sons->data[i]);
						}
						goto LA61_;
						LA63_: ;
						{
							asgnRefNoCycle((void**) (&(*nt).sons->data[i]), (*a).sons->data[i]);
						}
						LA61_: ;
					}
					LA55_: ;
					i_2 += ((NI) 1);
				} LA52: ;
			}
		}
		{
			if (!!((nt == 0))) goto LA68_;
			result = nt;
		}
		LA68_: ;
	}
	goto LA9_;
	LA48_: ;
	{
		NIM_BOOL T71_;
		T71_ = (NIM_BOOL)0;
		T71_ = ((*a).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20));
		if (!(T71_)) goto LA72_;
		T71_ = ((*b).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20));
		LA72_: ;
		if (!T71_) goto LA73_;
		{
			NIM_BOOL T77_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T80_;
			T77_ = (NIM_BOOL)0;
			T77_ = sameType_3isNyHKb0U1OCnClmflXSg(a, b, 0);
			if (!!(T77_)) goto LA78_;
			T80_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T80_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(a, 1048576);
			result = skipIntLit_7SeREq19a8pkSCOuiHcpHnwsigmatch(T80_);
		}
		LA78_: ;
	}
	goto LA9_;
	LA73_: ;
	{
		tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag k;
		k = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0);
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T90_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T91_;
			if (!((*a).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22) || (*a).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21))) goto LA84_;
			k = (*a).kind;
			{
				if (!!(((*b).kind == (*a).kind))) goto LA88_;
				result = x;
				goto BeforeRet_;
			}
			LA88_: ;
			T90_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T90_ = lastSon_ab52xel9cFebv9am0xV04xXA(a);
			a = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(T90_, 2048);
			T91_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T91_ = lastSon_ab52xel9cFebv9am0xV04xXA(b);
			b = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(T91_, 2048);
		}
		LA84_: ;
		{
			NIM_BOOL T94_;
			T94_ = (NIM_BOOL)0;
			T94_ = ((*a).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17));
			if (!(T94_)) goto LA95_;
			T94_ = ((*b).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17));
			LA95_: ;
			if (!T94_) goto LA96_;
			result = commonSuperclass_CFsXKWHnV1O9asJrtw08whA(a, b);
			{
				NIM_BOOL T100_;
				T100_ = (NIM_BOOL)0;
				T100_ = (result == 0);
				if (T100_) goto LA101_;
				T100_ = (result == a);
				LA101_: ;
				if (!T100_) goto LA102_;
				result = x;
				goto BeforeRet_;
			}
			LA102_: ;
			{
				if (!(result == b)) goto LA106_;
				result = y;
				goto BeforeRet_;
			}
			LA106_: ;
			{
				NIM_BOOL T110_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* r;
				T110_ = (NIM_BOOL)0;
				T110_ = !((k == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0)));
				if (!(T110_)) goto LA111_;
				T110_ = !(((*x).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11)));
				LA111_: ;
				if (!T110_) goto LA112_;
				r = result;
				result = newType_dQhKkL6uAkw83dy6l4d7iQ(k, (*r).owner);
				addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, r);
			}
			LA112_: ;
		}
		LA96_: ;
	}
	LA9_: ;
	}BeforeRet_: ;
	return result;
}

static N_INLINE(NIM_BOOL, isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((*(*c).currentScope).depthLevel <= ((NI) 2));
	return result;
}

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

static N_INLINE(void, decRef_MV4BBk6J1qu70IbBxwEn4wsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3_;
		rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_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_yB9aH5WIlwd0xkYrcdPeXrQsystem(src);
		incRef_9cAA5YuQAAC3MVbnGeV86swsystem(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem((*dest));
		decRef_MV4BBk6J1qu70IbBxwEn4wsystem(T10_);
	}
	LA8_: ;
	(*dest) = src;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c;
	c = usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem(p);
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3_;
		rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_2system(c);
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, rawPushProcCon_rlp4YNQ9cuQQzIjJRzZxqsA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ* x;
	x = (tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ*)0;
	x = (tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ*) newObj((&NTI_GJ8qR6LTU9bYLzfOArsHTSg_), sizeof(tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ));
	asgnRefNoCycle((void**) (&(*x).owner), owner);
	asgnRef((void**) (&(*x).next), (*c).p);
	asgnRef((void**) (&(*c).p), x);
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, referencesAnotherParam_VlKnd4KgnJiU0i03xXnQyw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* p) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		NIM_BOOL T5_;
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA3_;
		T5_ = (NIM_BOOL)0;
		T5_ = ((*(*n)._Ukind.S4.sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
		if (!(T5_)) goto LA6_;
		T5_ = ((*(*n)._Ukind.S4.sym).owner == p);
		LA6_: ;
		result = T5_;
		goto BeforeRet_;
	}
	goto LA1_;
	LA3_: ;
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA10;
					i = i_2;
					{
						NIM_BOOL T13_;
						T13_ = (NIM_BOOL)0;
						T13_ = referencesAnotherParam_VlKnd4KgnJiU0i03xXnQyw((*n)._Ukind.S6.sons->data[i], p);
						if (!T13_) goto LA14_;
						result = NIM_TRUE;
						goto BeforeRet_;
					}
					LA14_: ;
					i_2 += ((NI) 1);
				} LA10: ;
			}
		}
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, changeType_lfrCL9bscHIcnkZmm1gdmUg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* newType, NIM_BOOL check) {
{	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 39):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41):
	{
		{
			NI i;
			NI colontmp_;
			NI T3_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T3_ = (NI)0;
			T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp_ = (NI)(T3_ - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T6_;
					if (!(res <= colontmp_)) goto LA5;
					i = res;
					T6_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T6_ = elemType_BFFuB9cFDZ89c6QWZqEFAtdA_2(newType);
					changeType_lfrCL9bscHIcnkZmm1gdmUg(c, (*n)._Ukind.S6.sons->data[i], T6_, check);
					res += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tup;
		tup = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(newType, IL64(70368744179728));
		{
			if (!!(((*tup).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18)))) goto LA10_;
			{
				if (!((*tup).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA14_;
				goto BeforeRet_;
			}
			LA14_: ;
			globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_38));
		}
		goto LA8_;
		LA10_: ;
		{
			NIM_BOOL T17_;
			NI T18_;
			T17_ = (NIM_BOOL)0;
			T18_ = (NI)0;
			T18_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			T17_ = (((NI) 0) < T18_);
			if (!(T17_)) goto LA19_;
			T17_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34));
			LA19_: ;
			if (!T17_) goto LA20_;
			{
				NI i_2;
				NI colontmp__2;
				NI T23_;
				NI res_2;
				i_2 = (NI)0;
				colontmp__2 = (NI)0;
				T23_ = (NI)0;
				T23_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
				colontmp__2 = (NI)(T23_ - ((NI) 1));
				res_2 = ((NI) 0);
				{
					while (1) {
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* m;
						if (!(res_2 <= colontmp__2)) goto LA25;
						i_2 = res_2;
						m = (*(*n)._Ukind.S6.sons->data[i_2])._Ukind.S6.sons->data[((NI) 0)];
						{
							if (!!(((*m).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA28_;
							globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, (*m).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_39));
							goto BeforeRet_;
						}
						LA28_: ;
						{
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* f;
							if (!!(((*tup).n == NIM_NIL))) goto LA32_;
							f = getSymFromList_PV7rrwD4V8upTT57FCLRoQ((*tup).n, (*(*m)._Ukind.S4.sym).name, ((NI) 0));
							{
								NimStringDesc* T38_;
								if (!(f == NIM_NIL)) goto LA36_;
								T38_ = (NimStringDesc*)0;
								T38_ = rawNewString(((*(*(*m)._Ukind.S4.sym).name).s ? (*(*(*m)._Ukind.S4.sym).name).s->Sup.len : 0) + 20);
appendString(T38_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_40));
appendString(T38_, (*(*(*m)._Ukind.S4.sym).name).s);
								globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, (*m).info, T38_);
								goto BeforeRet_;
							}
							LA36_: ;
							changeType_lfrCL9bscHIcnkZmm1gdmUg(c, (*(*n)._Ukind.S6.sons->data[i_2])._Ukind.S6.sons->data[((NI) 1)], (*f).typ, check);
						}
						goto LA30_;
						LA32_: ;
						{
							changeType_lfrCL9bscHIcnkZmm1gdmUg(c, (*(*n)._Ukind.S6.sons->data[i_2])._Ukind.S6.sons->data[((NI) 1)], (*tup).sons->data[i_2], check);
						}
						LA30_: ;
						res_2 += ((NI) 1);
					} LA25: ;
				}
			}
		}
		goto LA8_;
		LA20_: ;
		{
			{
				NI i_3;
				NI colontmp__3;
				NI T42_;
				NI res_3;
				i_3 = (NI)0;
				colontmp__3 = (NI)0;
				T42_ = (NI)0;
				T42_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
				colontmp__3 = (NI)(T42_ - ((NI) 1));
				res_3 = ((NI) 0);
				{
					while (1) {
						if (!(res_3 <= colontmp__3)) goto LA44;
						i_3 = res_3;
						changeType_lfrCL9bscHIcnkZmm1gdmUg(c, (*n)._Ukind.S6.sons->data[i_3], (*tup).sons->data[i_3], check);
						res_3 += ((NI) 1);
					} LA44: ;
				}
			}
		}
		LA8_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 5) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 15):
	{
		{
			NIM_BOOL T48_;
			NI64 value;
			T48_ = (NIM_BOOL)0;
			T48_ = check;
			if (!(T48_)) goto LA49_;
			T48_ = !(((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 15)));
			LA49_: ;
			if (!T48_) goto LA50_;
			value = (*n)._Ukind.S1.intVal;
			{
				NIM_BOOL T54_;
				NI64 T55_;
				NI64 T57_;
				NimStringDesc* T60_;
				NimStringDesc* T61_;
				NimStringDesc* T62_;
				T54_ = (NIM_BOOL)0;
				T55_ = (NI64)0;
				T55_ = firstOrd_4cSIntenL9aBXY6LAFsvXdQ((*(*c).graph).config, newType);
				T54_ = (value < T55_);
				if (T54_) goto LA56_;
				T57_ = (NI64)0;
				T57_ = lastOrd_PcKlk9cRVtdVcuEFs9bZTdAQ((*(*c).graph).config, newType, NIM_FALSE);
				T54_ = (T57_ < value);
				LA56_: ;
				if (!T54_) goto LA58_;
				T60_ = (NimStringDesc*)0;
				T61_ = (NimStringDesc*)0;
				T61_ = nimInt64ToStr(value);
				T62_ = (NimStringDesc*)0;
				T62_ = typeToString_QlvraUan7WbHowhAbvDvdA(newType, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
				T60_ = rawNewString((T61_ ? T61_->Sup.len : 0) + (T62_ ? T62_->Sup.len : 0) + 19);
appendString(T60_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_41));
appendString(T60_, T61_);
appendString(T60_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_42));
appendString(T60_, T62_);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T60_);
			}
			LA58_: ;
		}
		LA50_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).typ), newType);
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, fitNodePostMatch_dy7KC0VI4p5JxVZFyTe7fw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = arg;
	x = skipConv_6rsSLwtlU9c53a6w69be5JlQ(result);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37) || (*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160) || (*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 39));
		if (!(T3_)) goto LA4_;
		T3_ = !(((*formal).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6)));
		LA4_: ;
		if (!T3_) goto LA5_;
		changeType_lfrCL9bscHIcnkZmm1gdmUg(c, x, formal, NIM_TRUE);
	}
	goto LA1_;
	LA5_: ;
	{
		result = skipHiddenSubConv_uuBrjinRrhSs9bvaSDP4XtQ(result);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, instantiateProcType_MuX09aHBkOq8swzh84Bygqw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* prc, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA typeMap;
	tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg cl;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* originalParams;
	pushInfoContext_jVPMMc4H29cyI52qg0Kp9aUg((*(*c).graph).config, info);
	nimZeroMem((void*)(&typeMap), sizeof(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA));
	initLayeredTypeMap_yTc1S4IWeD7MQCgbin2Tpg(pt, (&typeMap));
	nimZeroMem((void*)(&cl), sizeof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg));
	initTypeVars_8ULSOV8GOoI4Rn9cxu4ffow(c, (&typeMap), info, NIM_NIL, (&cl));
	result = instCopyType_2We2UBtd5z2KSfXRsPWlUQ((&cl), (*prc).typ);
	originalParams = (*result).n;
	asgnRefNoCycle((void**) (&(*result).n), shallowCopy_lz8T1F9c0YwEOpUnrAUYgjg_3(originalParams));
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_SWFNCiWYB89bTUPh5KptkvA_2(result);
		i_2 = ((NI) 1);
		{
			while (1) {
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeToFit;
				NIM_BOOL needsStaticSkipping;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* oldParam;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param;
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				{
					if (!(((NI) 1) < i)) goto LA6_;
					resetIdTable_9cUS2oaKn1IFXKjLdglPZHQ_2((&cl.symMap));
					resetIdTable_9cUS2oaKn1IFXKjLdglPZHQ_2((&cl.localCache));
				}
				LA6_: ;
				typeToFit = (*result).sons->data[i];
				needsStaticSkipping = ((*(*result).sons->data[i]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61));
				asgnRefNoCycle((void**) (&(*result).sons->data[i]), replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w((&cl), (*result).sons->data[i]));
				{
					if (!needsStaticSkipping) goto LA10_;
					asgnRefNoCycle((void**) (&(*result).sons->data[i]), skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*result).sons->data[i], IL64(1152921504606846976)));
				}
				LA10_: ;
				{
					NIM_BOOL T14_;
					NIM_BOOL T15_;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T17_;
					T14_ = (NIM_BOOL)0;
					T15_ = (NIM_BOOL)0;
					T15_ = !(((*typeToFit).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8)));
					if (T15_) goto LA16_;
					T17_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T17_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(typeToFit);
					T15_ = !(((*T17_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0)));
					LA16_: ;
					T14_ = T15_;
					if (!(T14_)) goto LA18_;
					T14_ = !(((*typeToFit).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60)));
					LA18_: ;
					if (!T14_) goto LA19_;
					typeToFit = (*result).sons->data[i];
				}
				LA19_: ;
				{
					NimStringDesc* T25_;
					if (!!(((*(*originalParams)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA23_;
					T25_ = (NimStringDesc*)0;
					T25_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_37);
					internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T25_);
				}
				LA23_: ;
				oldParam = (*(*originalParams)._Ukind.S6.sons->data[i])._Ukind.S4.sym;
				param = copySym_hicZXrzB9bwpjzwTWf8NTog(oldParam, NIM_FALSE);
				asgnRefNoCycle((void**) (&(*param).owner), prc);
				asgnRefNoCycle((void**) (&(*param).typ), (*result).sons->data[i]);
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* def;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* converted;
					if (!!(((*oldParam).ast == NIM_NIL))) goto LA28_;
					def = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*oldParam).ast);
					{
						if (!((*def).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27))) goto LA32_;
						{
							NI i_3;
							NI colontmp__2;
							NI i_4;
							i_3 = (NI)0;
							colontmp__2 = (NI)0;
							colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(def);
							i_4 = ((NI) 1);
							{
								while (1) {
									if (!(i_4 < colontmp__2)) goto LA36;
									i_3 = i_4;
									asgnRefNoCycle((void**) (&(*def)._Ukind.S6.sons->data[i_3]), replaceTypeVarsN_TMTYUYo5YIKojKgBmj9boOQ((&cl), (*def)._Ukind.S6.sons->data[i_3], ((NI) 0)));
									i_4 += ((NI) 1);
								} LA36: ;
							}
						}
					}
					LA32_: ;
					def = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, def, 0);
					{
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T39_;
						NIM_BOOL T40_;
						T39_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
						T39_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
						T40_ = (NIM_BOOL)0;
						T40_ = referencesAnotherParam_VlKnd4KgnJiU0i03xXnQyw(def, T39_);
						if (!T40_) goto LA41_;
						(*def).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 18))%(sizeof(NU32)*8));
					}
					LA41_: ;
					converted = indexTypesMatch_nqUTi2CjNXm3wHwX3FP3iA(c, typeToFit, (*def).typ, def);
					{
						if (!(converted == NIM_NIL)) goto LA45_;
						asgnRefNoCycle((void**) (&(*param).ast), errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, def));
					}
					goto LA43_;
					LA45_: ;
					{
						asgnRefNoCycle((void**) (&(*param).ast), fitNodePostMatch_dy7KC0VI4p5JxVZFyTe7fw(c, typeToFit, converted));
					}
					LA43_: ;
					asgnRefNoCycle((void**) (&(*param).typ), (*result).sons->data[i]);
				}
				LA28_: ;
				asgnRefNoCycle((void**) (&(*(*result).n)._Ukind.S6.sons->data[i]), newSymNode_UWZXukHA5As9aCftRHbafBg(param));
				propagateToOwner_Zokyl22yTzwcKmRycgQbKg(result, (*result).sons->data[i]);
				addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, param);
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	resetIdTable_9cUS2oaKn1IFXKjLdglPZHQ_2((&cl.symMap));
	resetIdTable_9cUS2oaKn1IFXKjLdglPZHQ_2((&cl.localCache));
	asgnRefNoCycle((void**) (&(*result).sons->data[((NI) 0)]), replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w((&cl), (*result).sons->data[((NI) 0)]));
	asgnRefNoCycle((void**) (&(*(*result).n)._Ukind.S6.sons->data[((NI) 0)]), copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*originalParams)._Ukind.S6.sons->data[((NI) 0)]));
	{
		if (!!(((*result).sons->data[((NI) 0)] == NIM_NIL))) goto LA50_;
		propagateToOwner_Zokyl22yTzwcKmRycgQbKg(result, (*result).sons->data[((NI) 0)]);
	}
	LA50_: ;
	eraseVoidParams_SMFMWVGsCG21VhwFnWblRg(result);
	skipIntLiteralParams_Bq8s6GYU4y5c8o6Mprs6mw(result);
	asgnRefNoCycle((void**) (&(*prc).typ), result);
	popInfoContext_HFVjkUQz7LMV9aOS6uKLckQ((*(*c).graph).config);
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameInstantiation_bGmhq9bb8pFOkYidfiwlp5w)(tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA a, tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA b) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		NI T3_;
		NI T4_;
		T3_ = (a.concreteTypes ? a.concreteTypes->Sup.len : 0);
		T4_ = (b.concreteTypes ? b.concreteTypes->Sup.len : 0);
		if (!(T3_ == T4_)) goto LA5_;
		{
			NI i;
			NI colontmp_;
			NI T8_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T8_ = ((a.concreteTypes ? a.concreteTypes->Sup.len : 0)-1);
			colontmp_ = T8_;
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA10;
					i = res;
					{
						NIM_BOOL T13_;
						T13_ = (NIM_BOOL)0;
						T13_ = compareTypes_oyXq5u7iL4RjsT9bovvTE9cg(a.concreteTypes->data[i], b.concreteTypes->data[i], ((tyEnum_TDistinctCompare_9bNKHGs63atuMFXnAleTveg) 0), 36);
						if (!!(T13_)) goto LA14_;
						goto BeforeRet_;
					}
					LA14_: ;
					res += ((NI) 1);
				} LA10: ;
			}
		}
		result = NIM_TRUE;
	}
	LA5_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, genericCacheGet_yrVWUjVCLM4qNMOOOoQryQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* genericSym, tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA entry, NI id) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
{	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA* inst;
		tySequence_DXS6mEo7PVUFJkirsQ9bNQA* colontmp_;
		NI i;
		NI L;
		NI T2_;
		inst = (tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA*)0;
		colontmp_ = (tySequence_DXS6mEo7PVUFJkirsQ9bNQA*)0;
		colontmp_ = (*genericSym)._Ukind.S2.procInstCache;
		i = ((NI) 0);
		T2_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T2_;
		{
			while (1) {
				if (!(i < L)) goto LA4;
				inst = colontmp_->data[i];
				{
					NIM_BOOL T7_;
					T7_ = (NIM_BOOL)0;
					T7_ = ((*inst).compilesId == id);
					if (!(T7_)) goto LA8_;
					T7_ = sameInstantiation_bGmhq9bb8pFOkYidfiwlp5w(entry, (*inst));
					LA8_: ;
					if (!T7_) goto LA9_;
					result = (*inst).sym;
					goto BeforeRet_;
				}
				LA9_: ;
				i += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet_: ;
	return result;
}

static N_INLINE(NIM_BOOL, fieldVisible_FeY58g4QgBCvGhzCZ7tjxAsigmatch)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* f) {
	NIM_BOOL result;
	NI fmoduleId;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T1_;
	NIM_BOOL T2_;
	result = (NIM_BOOL)0;
	T1_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = getModule_43y2sdiIt63745LnAZPmZQ(f);
	fmoduleId = (*T1_).Sup.id;
	T2_ = (NIM_BOOL)0;
	T2_ = (((*f).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 1))&63U)))!=0);
	if (T2_) goto LA3_;
	T2_ = (fmoduleId == (*(*c).module).Sup.id);
	LA3_: ;
	result = T2_;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module;
		tySequence_DfgJFJEYoj4YBAHLZPl5lQ* colontmp_;
		NI i;
		NI L;
		NI T5_;
		module = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		colontmp_ = (tySequence_DfgJFJEYoj4YBAHLZPl5lQ*)0;
		colontmp_ = (*c).friendModules;
		i = ((NI) 0);
		T5_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T5_;
		{
			while (1) {
				if (!(i < L)) goto LA7;
				module = colontmp_->data[i];
				{
					if (!(fmoduleId == (*module).Sup.id)) goto LA10_;
					result = NIM_TRUE;
					goto LA4;
				}
				LA10_: ;
				i += ((NI) 1);
			} LA7: ;
		}
	} LA4: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addObjFieldsToLocalScope_9aKmRFIRmowmJXCJbF9aObuQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		{
			NI i;
			NI colontmp_;
			NI T3_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T3_ = (NI)0;
			T3_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			colontmp_ = (NI)(T3_ - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA5;
					i = res;
					addObjFieldsToLocalScope_9aKmRFIRmowmJXCJbF9aObuQ(c, (*n)._Ukind.S6.sons->data[i]);
					res += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		{
			NI T9_;
			T9_ = (NI)0;
			T9_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			if (!(((NI) 0) < T9_)) goto LA10_;
			addObjFieldsToLocalScope_9aKmRFIRmowmJXCJbF9aObuQ(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
		}
		LA10_: ;
		{
			NI i_2;
			NI colontmp__2;
			NI T13_;
			NI res_2;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			T13_ = (NI)0;
			T13_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			colontmp__2 = (NI)(T13_ - ((NI) 1));
			res_2 = ((NI) 1);
			{
				while (1) {
					if (!(res_2 <= colontmp__2)) goto LA15;
					i_2 = res_2;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T20_;
						if (!((*(*n)._Ukind.S6.sons->data[i_2]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85) || (*(*n)._Ukind.S6.sons->data[i_2]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88))) goto LA18_;
						T20_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T20_ = lastSon_esDJA7239bJDiq4UrX9aHCjg((*n)._Ukind.S6.sons->data[i_2]);
						addObjFieldsToLocalScope_9aKmRFIRmowmJXCJbF9aObuQ(c, T20_);
					}
					LA18_: ;
					res_2 += ((NI) 1);
				} LA15: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* f;
		f = (*n)._Ukind.S4.sym;
		{
			NIM_BOOL T24_;
			NIM_BOOL T28_;
			T24_ = (NIM_BOOL)0;
			T24_ = ((*f).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 19));
			if (!(T24_)) goto LA25_;
			T24_ = fieldVisible_FeY58g4QgBCvGhzCZ7tjxAsigmatch(c, f);
			LA25_: ;
			if (!T24_) goto LA26_;
			T28_ = (NIM_BOOL)0;
			T28_ = strTableIncl_S7UP2gjoSg4O9bJhVmIWbPw((&(*(*c).currentScope).symbols), f, NIM_TRUE);
			(*f).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
		}
		LA26_: ;
	}
	break;
	default:
	{
	}
	break;
	}
}

N_LIB_PRIVATE N_NIMCALL(void, rawHandleSelf_rlp4YNQ9cuQQzIjJRzZxqsA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = !(((*c).selfName == NIM_NIL));
		if (!(T4_)) goto LA5_;
		T4_ = ((258048 &(1U<<((NU)((*owner).kind)&31U)))!=0);
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T3_ = !(((*owner).typ == NIM_NIL));
		LA6_: ;
		if (!T3_) goto LA7_;
		params = (*(*owner).typ).n;
		{
			NI T11_;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* arg;
			T11_ = (NI)0;
			T11_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(params);
			if (!(((NI) 1) < T11_)) goto LA12_;
			arg = (*(*params)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S4.sym;
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
				if (!((*(*arg).name).Sup.id == (*(*c).selfName).Sup.id)) goto LA16_;
				asgnRefNoCycle((void**) (&(*(*c).p).selfSym), arg);
				(*arg).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 31))%(sizeof(NU64)*8));
				t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*(*c).p).selfSym).typ, IL64(36239903266220304));
				{
					while (1) {
						if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA19;
						addObjFieldsToLocalScope_9aKmRFIRmowmJXCJbF9aObuQ(c, (*t).n);
						{
							if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA22_;
							goto LA18;
						}
						LA22_: ;
						t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*t).sons->data[((NI) 0)], IL64(36239903266179344));
					} LA19: ;
				} LA18: ;
			}
			LA16_: ;
		}
		LA12_: ;
	}
	LA7_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, findEnforcedStaticType_NQ09c28WWCqg4mh6W9aaQ4KQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA3_;
		result = t;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 56))) goto LA7_;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* s;
			tySequence_Ef05srmQTDulnBdXR4Ja6Q* colontmp_;
			NI i;
			NI L;
			NI T10_;
			s = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			colontmp_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
			colontmp_ = (*t).sons;
			i = ((NI) 0);
			T10_ = (colontmp_ ? colontmp_->Sup.len : 0);
			L = T10_;
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t_2;
					if (!(i < L)) goto LA12;
					s = colontmp_->data[i];
					t_2 = findEnforcedStaticType_NQ09c28WWCqg4mh6W9aaQ4KQ(s);
					{
						if (!!((t_2 == NIM_NIL))) goto LA15_;
						result = t_2;
						goto BeforeRet_;
					}
					LA15_: ;
					i += ((NI) 1);
				} LA12: ;
			}
		}
	}
	LA7_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addParamOrResult_D6rqUgJ2oXnnFxSawNzxCA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind) {
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* staticType;
		if (!(kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17))) goto LA3_;
		staticType = findEnforcedStaticType_NQ09c28WWCqg4mh6W9aaQ4KQ((*param).typ);
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* a;
			if (!!((staticType == NIM_NIL))) goto LA7_;
			a = copySym_hicZXrzB9bwpjzwTWf8NTog(param, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*a).typ), base_BFFuB9cFDZ89c6QWZqEFAtdA(staticType));
			addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, a);
		}
		goto LA5_;
		LA7_: ;
		{
			if (!((*(*param).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA10_;
			addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, param);
		}
		goto LA5_;
		LA10_: ;
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* nn;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* a_2;
			nn = getSysSym_9bvw79ck1FDiWpnBYh88rEfw((*c).graph, (*param).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_45));
			a_2 = copySym_hicZXrzB9bwpjzwTWf8NTog(param, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*a_2).typ), (*nn).typ);
			addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, a_2);
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		{
			if (!!((((*param).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0))) goto LA16_;
			addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, param);
		}
		LA16_: ;
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, addResult_VjjspC9bBTueJBUiTQeKIpQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw owner) {
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T5_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T6_;
		if (!!((t == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T5_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_44));
		T6_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T6_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
		s = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 11), T5_, T6_, info, 0);
		asgnRefNoCycle((void**) (&(*s).typ), t);
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
		addParamOrResult_D6rqUgJ2oXnnFxSawNzxCA(c, s, owner);
		asgnRefNoCycle((void**) (&(*(*c).p).resultSym), s);
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, addResultNode_9aKmRFIRmowmJXCJbF9aObuQ_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
		if (!!(((*(*c).p).resultSym == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = newSymNode_UWZXukHA5As9aCftRHbafBg((*(*c).p).resultSym);
		addSon_gCCf68XrWL79bKes6htzFjQ_2(n, T5_);
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, maybeAddResult_llOVo9c3s0bb48y1MlbyvAw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NIM_BOOL T3_;
		NIM_BOOL T5_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL));
		if (!(T3_)) goto LA4_;
		T5_ = (NIM_BOOL)0;
		T5_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
		if (!(T5_)) goto LA6_;
		T5_ = !(((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8)));
		LA6_: ;
		T3_ = !(T5_);
		LA4_: ;
		if (!T3_) goto LA7_;
		addResult_VjjspC9bBTueJBUiTQeKIpQ(c, (*(*s).typ).sons->data[((NI) 0)], (*n).info, (*s).kind);
		addResultNode_9aKmRFIRmowmJXCJbF9aObuQ_2(c, n);
	}
	LA7_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, freshGenSyms_HQLWTiTxA5Nl9ciT1Sx7Dfg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* orig, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q* symMap) {
	{
		NIM_BOOL T3_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* x;
		tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T7_;
		RootObj* T8_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		if (!(T3_)) goto LA4_;
		T3_ = (((*(*n)._Ukind.S4.sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0);
		LA4_: ;
		if (!T3_) goto LA5_;
		s = (*n)._Ukind.S4.sym;
		T7_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
		T7_ = &s->Sup;
		T8_ = (RootObj*)0;
		T8_ = idTableGet_6XGoeu1puMq6qoi2OW419bA((*symMap), T7_);
		x = ((tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*) (T8_));
		{
			if (!!((x == NIM_NIL))) goto LA11_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S4.sym), x);
		}
		goto LA9_;
		LA11_: ;
		{
			tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T16_;
			RootObj* T17_;
			if (!((*(*s).owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 24))) goto LA14_;
			x = copySym_hicZXrzB9bwpjzwTWf8NTog(s, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*x).owner), owner);
			T16_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
			T16_ = &s->Sup;
			T17_ = (RootObj*)0;
			T17_ = &x->Sup.Sup;
			idTablePut_Xhv7unnxpOqdw7OJsXRnRg(symMap, T16_, T17_);
			asgnRefNoCycle((void**) (&(*n)._Ukind.S4.sym), x);
		}
		goto LA9_;
		LA14_: ;
		LA9_: ;
	}
	goto LA1_;
	LA5_: ;
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA21;
					i = i_2;
					freshGenSyms_HQLWTiTxA5Nl9ciT1Sx7Dfg((*n)._Ukind.S6.sons->data[i], owner, orig, symMap);
					i_2 += ((NI) 1);
				} LA21: ;
			}
		}
	}
	LA1_: ;
}

static N_INLINE(NIM_BOOL, isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = (t == NIM_NIL);
	if (T1_) goto LA2_;
	T1_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63) || (*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7));
	LA2_: ;
	result = T1_;
	return result;
}

static N_INLINE(NIM_BOOL, isAtom_NyXYMHACmbtWJZnWqE9cJCAparampatterns)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = (((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 0) <= (*n).kind);
	if (!(T1_)) goto LA2_;
	T1_ = ((*n).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23));
	LA2_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, fixNilType_wkwHEj6zZnYo2DMZys6jnA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isAtom_NyXYMHACmbtWJZnWqE9cJCAparampatterns(n);
		if (!T3_) goto LA4_;
		{
			NIM_BOOL T8_;
			NimStringDesc* T12_;
			NimStringDesc* T13_;
			T8_ = (NIM_BOOL)0;
			T8_ = !(((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23)));
			if (!(T8_)) goto LA9_;
			T8_ = !(((*n).typ == NIM_NIL));
			LA9_: ;
			if (!T8_) goto LA10_;
			T12_ = (NimStringDesc*)0;
			T12_ = typeToString_QlvraUan7WbHowhAbvDvdA((*n).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T13_ = (NimStringDesc*)0;
			T13_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_46), T12_);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T13_);
		}
		LA10_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA15_;
		(*n).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
			it = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
				i_2 = ((NI) 0);
				{
					while (1) {
						if (!(i_2 < colontmp_)) goto LA20;
						i = i_2;
						it = (*n)._Ukind.S6.sons->data[i];
						fixNilType_wkwHEj6zZnYo2DMZys6jnA(c, it);
						i_2 += ((NI) 1);
					} LA20: ;
				}
			}
		}
	}
	goto LA1_;
	LA15_: ;
	LA1_: ;
	asgnRefNoCycle((void**) (&(*n).typ), NIM_NIL);
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTypeExpr_J6cfuIanCXYEsLNE8M8o9cQ_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 132):
	{
		result = NIM_TRUE;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		result = ((*(*n)._Ukind.S4.sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7));
	}
	break;
	default:
	{
		result = NIM_FALSE;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, readTypeParameter_Sz9aXVAPpoci70Ha7oJ9a9cqQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* paramName, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52) || (*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53))) goto LA3_;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* statement;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* colontmp_;
			statement = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			colontmp_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			colontmp_ = (*typ).n;
			{
				NI i;
				NI colontmp__2;
				NI i_2;
				i = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(colontmp_);
				i_2 = ((NI) 0);
				{
					while (1) {
						if (!(i_2 < colontmp__2)) goto LA8;
						i = i_2;
						statement = (*colontmp_)._Ukind.S6.sons->data[i];
						switch ((*statement).kind) {
						case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
						{
							{
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* def;
								def = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								{
									NI i_3;
									NI colontmp__3;
									NI i_4;
									i_3 = (NI)0;
									colontmp__3 = (NI)0;
									colontmp__3 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(statement);
									i_4 = ((NI) 0);
									{
										while (1) {
											if (!(i_4 < colontmp__3)) goto LA13;
											i_3 = i_4;
											def = (*statement)._Ukind.S6.sons->data[i_3];
											{
												tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* foundType;
												tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T18_;
												tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T19_;
												if (!((*(*(*(*def)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).Sup.id == (*paramName).Sup.id)) goto LA16_;
												foundType = makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, (*(*def)._Ukind.S6.sons->data[((NI) 2)]).typ);
												T18_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
												T18_ = copySym_hicZXrzB9bwpjzwTWf8NTog((*(*def)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym, NIM_FALSE);
												T19_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
												T19_ = linkTo_4qP0auPrvljCknknx42YWA(T18_, foundType);
												result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(T19_, info);
												goto BeforeRet_;
											}
											LA16_: ;
											i_4 += ((NI) 1);
										} LA13: ;
									}
								}
							}
						}
						break;
						case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 101):
						{
							{
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* def_2;
								def_2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								{
									NI i_5;
									NI colontmp__4;
									NI i_6;
									i_5 = (NI)0;
									colontmp__4 = (NI)0;
									colontmp__4 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(statement);
									i_6 = ((NI) 0);
									{
										while (1) {
											if (!(i_6 < colontmp__4)) goto LA24;
											i_5 = i_6;
											def_2 = (*statement)._Ukind.S6.sons->data[i_5];
											{
												if (!((*(*(*(*def_2)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).Sup.id == (*paramName).Sup.id)) goto LA27_;
												result = (*def_2)._Ukind.S6.sons->data[((NI) 2)];
												goto BeforeRet_;
											}
											LA27_: ;
											i_6 += ((NI) 1);
										} LA24: ;
									}
								}
							}
						}
						break;
						default:
						{
						}
						break;
						}
						i_2 += ((NI) 1);
					} LA8: ;
				}
			}
		}
	}
	LA3_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* ty;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tbody;
		if (!!(((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52)))) goto LA32_;
		{
			if (!((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54))) goto LA36_;
			ty = skipGenericAlias_BFFuB9cFDZ89c6QWZqEFAtdA_3((*typ).sons->data[((NI) 1)]);
		}
		goto LA34_;
		LA36_: ;
		{
			ty = skipGenericAlias_BFFuB9cFDZ89c6QWZqEFAtdA_3(typ);
		}
		LA34_: ;
		tbody = (*ty).sons->data[((NI) 0)];
		{
			NI s;
			NI colontmp__5;
			NI T40_;
			NI res;
			s = (NI)0;
			colontmp__5 = (NI)0;
			T40_ = (NI)0;
			T40_ = len_SWFNCiWYB89bTUPh5KptkvA_2(tbody);
			colontmp__5 = (NI)(T40_ - ((NI) 2));
			res = ((NI) 0);
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tParam;
					if (!(res <= colontmp__5)) goto LA42;
					s = res;
					tParam = (*tbody).sons->data[s];
					{
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* rawTyp;
						if (!((*(*(*tParam).sym).name).Sup.id == (*paramName).Sup.id)) goto LA45_;
						rawTyp = (*ty).sons->data[(NI)(s + ((NI) 1))];
						{
							if (!((*rawTyp).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA49_;
							{
								if (!!(((*rawTyp).n == NIM_NIL))) goto LA53_;
								result = (*rawTyp).n;
								goto BeforeRet_;
							}
							goto LA51_;
							LA53_: ;
							{
								result = (*(*c).graph).emptyNode;
								goto BeforeRet_;
							}
							LA51_: ;
						}
						goto LA47_;
						LA49_: ;
						{
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* foundTyp;
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T57_;
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T58_;
							foundTyp = makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, rawTyp);
							T57_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
							T57_ = copySym_hicZXrzB9bwpjzwTWf8NTog((*tParam).sym, NIM_FALSE);
							T58_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
							T58_ = linkTo_4qP0auPrvljCknknx42YWA(T57_, foundTyp);
							result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(T58_, info);
							goto BeforeRet_;
						}
						LA47_: ;
					}
					LA45_: ;
					res += ((NI) 1);
				} LA42: ;
			}
		}
	}
	LA32_: ;
	result = NIM_NIL;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, createSetType_N6ldecgr6dVSnwp0xFJ2bg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* baseType) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19), c);
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, baseType);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, lookupInRecordAndBuildCheck_3pOAAA43UjbX8Yi0x0mECQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* r, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* field, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** check) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
{	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	result = NIM_NIL;
	switch ((*r).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		{
			NI i;
			NI colontmp_;
			NI T3_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T3_ = (NI)0;
			T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(r);
			colontmp_ = (NI)(T3_ - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA5;
					i = res;
					result = lookupInRecordAndBuildCheck_3pOAAA43UjbX8Yi0x0mECQ(c, n, (*r)._Ukind.S6.sons->data[i], field, check);
					{
						if (!!((result == NIM_NIL))) goto LA8_;
						goto BeforeRet_;
					}
					LA8_: ;
					res += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* setType;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s;
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(r, ((NI) 2), (*(*c).graph).config);
		{
			if (!!(((*(*r)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA13_;
			illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(r, (*(*c).graph).config);
		}
		LA13_: ;
		result = lookupInRecordAndBuildCheck_3pOAAA43UjbX8Yi0x0mECQ(c, n, (*r)._Ukind.S6.sons->data[((NI) 0)], field, check);
		{
			if (!!((result == NIM_NIL))) goto LA17_;
			goto BeforeRet_;
		}
		LA17_: ;
		setType = createSetType_N6ldecgr6dVSnwp0xFJ2bg(c, (*(*r)._Ukind.S6.sons->data[((NI) 0)]).typ);
		s = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 39), (*r).info, setType);
		{
			NI i_2;
			NI colontmp__2;
			NI T20_;
			NI res_2;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			T20_ = (NI)0;
			T20_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(r);
			colontmp__2 = (NI)(T20_ - ((NI) 1));
			res_2 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
					if (!(res_2 <= colontmp__2)) goto LA22;
					i_2 = res_2;
					it = (*r)._Ukind.S6.sons->data[i_2];
					switch ((*it).kind) {
					case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85):
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T24_;
						T24_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T24_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(it);
						result = lookupInRecordAndBuildCheck_3pOAAA43UjbX8Yi0x0mECQ(c, n, T24_, field, check);
						{
							if (!(result == NIM_NIL)) goto LA27_;
							{
								NI j;
								NI colontmp__3;
								NI T30_;
								NI res_3;
								j = (NI)0;
								colontmp__3 = (NI)0;
								T30_ = (NI)0;
								T30_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(it);
								colontmp__3 = (NI)(T30_ - ((NI) 2));
								res_3 = ((NI) 0);
								{
									while (1) {
										tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T33_;
										if (!(res_3 <= colontmp__3)) goto LA32;
										j = res_3;
										T33_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
										T33_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*it)._Ukind.S6.sons->data[j]);
										addSon_gCCf68XrWL79bKes6htzFjQ_2(s, T33_);
										res_3 += ((NI) 1);
									} LA32: ;
								}
							}
						}
						goto LA25_;
						LA27_: ;
						{
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* inExpr;
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T44_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T45_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T46_;
							{
								if (!((*check) == NIM_NIL)) goto LA37_;
								unsureAsgnRef((void**) (&(*check)), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 46), (*n).info));
								addSon_gCCf68XrWL79bKes6htzFjQ_2((*check), (*(*c).graph).emptyNode);
							}
							LA37_: ;
							s = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 39), (*n).info, setType);
							{
								NI j_2;
								NI colontmp__4;
								NI T40_;
								NI res_4;
								j_2 = (NI)0;
								colontmp__4 = (NI)0;
								T40_ = (NI)0;
								T40_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(it);
								colontmp__4 = (NI)(T40_ - ((NI) 2));
								res_4 = ((NI) 0);
								{
									while (1) {
										tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T43_;
										if (!(res_4 <= colontmp__4)) goto LA42;
										j_2 = res_4;
										T43_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
										T43_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*it)._Ukind.S6.sons->data[j_2]);
										addSon_gCCf68XrWL79bKes6htzFjQ_2(s, T43_);
										res_4 += ((NI) 1);
									} LA42: ;
								}
							}
							T44_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
							T44_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1));
							inExpr = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, T44_);
							T45_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T45_ = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ((*(*c).graph).opContains, (*n).info);
							addSon_gCCf68XrWL79bKes6htzFjQ_2(inExpr, T45_);
							addSon_gCCf68XrWL79bKes6htzFjQ_2(inExpr, s);
							T46_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T46_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*r)._Ukind.S6.sons->data[((NI) 0)]);
							addSon_gCCf68XrWL79bKes6htzFjQ_2(inExpr, T46_);
							addSon_gCCf68XrWL79bKes6htzFjQ_2((*check), inExpr);
							goto BeforeRet_;
						}
						LA25_: ;
					}
					break;
					case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T48_;
						T48_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T48_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(it);
						result = lookupInRecordAndBuildCheck_3pOAAA43UjbX8Yi0x0mECQ(c, n, T48_, field, check);
						{
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* inExpr_2;
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T57_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T58_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T59_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* notExpr;
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T60_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T61_;
							if (!!((result == NIM_NIL))) goto LA51_;
							{
								if (!((*check) == NIM_NIL)) goto LA55_;
								unsureAsgnRef((void**) (&(*check)), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 46), (*n).info));
								addSon_gCCf68XrWL79bKes6htzFjQ_2((*check), (*(*c).graph).emptyNode);
							}
							LA55_: ;
							T57_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
							T57_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1));
							inExpr_2 = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, T57_);
							T58_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T58_ = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ((*(*c).graph).opContains, (*n).info);
							addSon_gCCf68XrWL79bKes6htzFjQ_2(inExpr_2, T58_);
							addSon_gCCf68XrWL79bKes6htzFjQ_2(inExpr_2, s);
							T59_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T59_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*r)._Ukind.S6.sons->data[((NI) 0)]);
							addSon_gCCf68XrWL79bKes6htzFjQ_2(inExpr_2, T59_);
							T60_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
							T60_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1));
							notExpr = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, T60_);
							T61_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T61_ = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ((*(*c).graph).opNot, (*n).info);
							addSon_gCCf68XrWL79bKes6htzFjQ_2(notExpr, T61_);
							addSon_gCCf68XrWL79bKes6htzFjQ_2(notExpr, inExpr_2);
							addSon_gCCf68XrWL79bKes6htzFjQ_2((*check), notExpr);
							goto BeforeRet_;
						}
						LA51_: ;
					}
					break;
					default:
					{
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(it, (*(*c).graph).config);
					}
					break;
					}
					res_2 += ((NI) 1);
				} LA22: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		{
			if (!((*(*(*r)._Ukind.S4.sym).name).Sup.id == (*field).Sup.id)) goto LA66_;
			result = (*r)._Ukind.S4.sym;
		}
		LA66_: ;
	}
	break;
	default:
	{
		illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, makeDeref_nRsa9acFWDI6GmzVZLXX3CQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	t = (*n).typ;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52) || (*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53));
		if (!(T3_)) goto LA4_;
		T3_ = (((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0);
		LA4_: ;
		if (!T3_) goto LA5_;
		t = lastSon_ab52xel9cFebv9am0xV04xXA(t);
	}
	LA5_: ;
	t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(t, IL64(70368744179728));
	result = n;
	{
		if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47))) goto LA9_;
		result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65), (*n).info, (*t).sons->data[((NI) 0)]);
		addSon_gCCf68XrWL79bKes6htzFjQ_2(result, n);
		t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*t).sons->data[((NI) 0)], IL64(70368744179728));
	}
	LA9_: ;
	{
		while (1) {
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* baseTyp;
			if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21) || (*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22))) goto LA12;
			a = result;
			baseTyp = lastSon_ab52xel9cFebv9am0xV04xXA(t);
			result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65), (*n).info, baseTyp);
			addSon_gCCf68XrWL79bKes6htzFjQ_2(result, a);
			t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(baseTyp, IL64(70368744179728));
		} LA12: ;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, builtinFieldAccess_k2Lin9a76VyrWz9b8OoRC9apg_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* i;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* ty;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* f;
	NIM_BOOL argIsType;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* check;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
	s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA(c, n, 7);
	{
		if (!!((s == NIM_NIL))) goto LA3_;
		{
			if (!((520256 &(1U<<((NU)((*s).kind)&31U)))!=0)) goto LA7_;
			result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
			{
				if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA11_;
				result = semSym_XS6IXZ9bx3UuasCvJk5VxKA(c, n, s, flags);
			}
			LA11_: ;
		}
		goto LA5_;
		LA7_: ;
		{
			markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, s, &(*(*c).graph).usageSym);
			result = semSym_XS6IXZ9bx3UuasCvJk5VxKA(c, n, s, flags);
		}
		LA5_: ;
		goto BeforeRet_;
	}
	LA3_: ;
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], (flags | 256)));
	i = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], n);
	ty = (*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ;
	f = NIM_NIL;
	result = NIM_NIL;
	argIsType = NIM_FALSE;
	{
		if (!((*ty).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA16_;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T20_;
			T20_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T20_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(ty);
			if (!((*T20_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0))) goto LA21_;
			{
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T25_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T28_;
				T25_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
				T25_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
				if (!!(((*T25_).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17)))) goto LA26_;
				T28_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T28_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
				asgnRefNoCycle((void**) (&(*n).typ), makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ(c, T28_));
				result = n;
				goto BeforeRet_;
			}
			goto LA23_;
			LA26_: ;
			{
				result = NIM_NIL;
				goto BeforeRet_;
			}
			LA23_: ;
		}
		goto LA18_;
		LA21_: ;
		{
			ty = base_BFFuB9cFDZ89c6QWZqEFAtdA(ty);
			argIsType = NIM_TRUE;
		}
		LA18_: ;
	}
	goto LA14_;
	LA16_: ;
	{
		argIsType = isTypeExpr_J6cfuIanCXYEsLNE8M8o9cQ_2((*n)._Ukind.S6.sons->data[((NI) 0)]);
	}
	LA14_: ;
	{
		if (!argIsType) goto LA34_;
		ty = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(ty, IL64(211106247213072));
		switch ((*ty).kind) {
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14):
		{
			{
				while (1) {
					if (!!((ty == NIM_NIL))) goto LA38;
					f = getSymFromList_PV7rrwD4V8upTT57FCLRoQ((*ty).n, i, ((NI) 0));
					{
						if (!!((f == NIM_NIL))) goto LA41_;
						goto LA37;
					}
					LA41_: ;
					ty = (*ty).sons->data[((NI) 0)];
				} LA38: ;
			} LA37: ;
			{
				if (!!((f == NIM_NIL))) goto LA45_;
				result = newSymNode_UWZXukHA5As9aCftRHbafBg(f);
				(*result).info = (*n).info;
				asgnRefNoCycle((void**) (&(*result).typ), ty);
				markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, f, &(*(*c).graph).usageSym);
				goto BeforeRet_;
			}
			LA45_: ;
		}
		break;
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18):
		{
			{
				NIM_BOOL T50_;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field;
				T50_ = (NIM_BOOL)0;
				T50_ = !(((*ty).n == NIM_NIL));
				if (!(T50_)) goto LA51_;
				T50_ = ((*(*ty).n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138));
				LA51_: ;
				if (!T50_) goto LA52_;
				field = lookupInRecord_UKAypME5AMFgsArDll8WMg((*ty).n, i);
				{
					if (!!((field == NIM_NIL))) goto LA56_;
					asgnRefNoCycle((void**) (&(*n).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, (*field).typ));
					result = n;
					goto BeforeRet_;
				}
				LA56_: ;
			}
			LA52_: ;
		}
		break;
		default:
		{
			switch ((*ty).kind) {
			case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11):
			case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54):
			{
				result = readTypeParameter_Sz9aXVAPpoci70Ha7oJ9a9cqQ(c, ty, i, (*n).info);
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T64_;
					if (!(result == (*(*c).graph).emptyNode)) goto LA62_;
					result = n;
					T64_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T64_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
					asgnRefNoCycle((void**) (&(*n).typ), makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ(c, T64_));
				}
				LA62_: ;
				goto BeforeRet_;
			}
			break;
			case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53):
			{
				{
					if (!(((*ty).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0)) goto LA68_;
					result = readTypeParameter_Sz9aXVAPpoci70Ha7oJ9a9cqQ(c, ty, i, (*n).info);
					goto BeforeRet_;
				}
				goto LA66_;
				LA68_: ;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T71_;
					T71_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T71_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
					asgnRefNoCycle((void**) (&(*n).typ), makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ(c, T71_));
					result = n;
					goto BeforeRet_;
				}
				LA66_: ;
			}
			break;
			case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12):
			case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 59):
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T73_;
				T73_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T73_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
				asgnRefNoCycle((void**) (&(*n).typ), makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ(c, T73_));
				result = n;
				goto BeforeRet_;
			}
			break;
			default:
			{
			}
			break;
			}
			goto BeforeRet_;
		}
		break;
		}
		ty = (*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ;
		result = NIM_NIL;
		goto BeforeRet_;
	}
	LA34_: ;
	{
		NIM_BOOL T77_;
		T77_ = (NIM_BOOL)0;
		T77_ = ((*ty).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52) || (*ty).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53));
		if (!(T77_)) goto LA78_;
		T77_ = (((*ty).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0);
		LA78_: ;
		if (!T77_) goto LA79_;
		ty = lastSon_ab52xel9cFebv9am0xV04xXA(ty);
	}
	LA79_: ;
	ty = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(ty, IL64(211106247215120));
	{
		while (1) {
			if (!(((*ty).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 31))&63U)))!=0)) goto LA82;
			ty = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(ty, 8192);
		} LA82: ;
	}
	check = NIM_NIL;
	{
		if (!((*ty).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA85_;
		{
			while (1) {
				check = NIM_NIL;
				f = lookupInRecordAndBuildCheck_3pOAAA43UjbX8Yi0x0mECQ(c, n, (*ty).n, i, &check);
				{
					if (!!((f == NIM_NIL))) goto LA91_;
					goto LA87;
				}
				LA91_: ;
				{
					if (!((*ty).sons->data[((NI) 0)] == NIM_NIL)) goto LA95_;
					goto LA87;
				}
				LA95_: ;
				ty = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*ty).sons->data[((NI) 0)], IL64(36239903266179344));
			}
		} LA87: ;
		{
			if (!!((f == NIM_NIL))) goto LA99_;
			{
				NIM_BOOL T103_;
				T103_ = (NIM_BOOL)0;
				T103_ = fieldVisible_FeY58g4QgBCvGhzCZ7tjxAsigmatch(c, f);
				if (!T103_) goto LA104_;
				markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, f, &(*(*c).graph).usageSym);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), makeDeref_nRsa9acFWDI6GmzVZLXX3CQ((*n)._Ukind.S6.sons->data[((NI) 0)]));
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), newSymNode_UWZXukHA5As9aCftRHbafBg(f));
				asgnRefNoCycle((void**) (&(*n).typ), (*f).typ);
				{
					if (!(check == NIM_NIL)) goto LA108_;
					result = n;
				}
				goto LA106_;
				LA108_: ;
				{
					asgnRefNoCycle((void**) (&(*check)._Ukind.S6.sons->data[((NI) 0)]), n);
					asgnRefNoCycle((void**) (&(*check).typ), (*n).typ);
					result = check;
				}
				LA106_: ;
			}
			LA104_: ;
		}
		LA99_: ;
	}
	goto LA83_;
	LA85_: ;
	{
		NIM_BOOL T112_;
		T112_ = (NIM_BOOL)0;
		T112_ = ((*ty).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18));
		if (!(T112_)) goto LA113_;
		T112_ = !(((*ty).n == NIM_NIL));
		LA113_: ;
		if (!T112_) goto LA114_;
		f = getSymFromList_PV7rrwD4V8upTT57FCLRoQ((*ty).n, i, ((NI) 0));
		{
			if (!!((f == NIM_NIL))) goto LA118_;
			markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, f, &(*(*c).graph).usageSym);
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), makeDeref_nRsa9acFWDI6GmzVZLXX3CQ((*n)._Ukind.S6.sons->data[((NI) 0)]));
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), newSymNode_UWZXukHA5As9aCftRHbafBg(f));
			asgnRefNoCycle((void**) (&(*n).typ), (*f).typ);
			result = n;
		}
		LA118_: ;
	}
	goto LA83_;
	LA114_: ;
	LA83_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
		if (!(result == NIM_NIL)) goto LA122_;
		t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ, IL64(211106247213072));
		switch ((*t).kind) {
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54):
		{
			result = readTypeParameter_Sz9aXVAPpoci70Ha7oJ9a9cqQ(c, t, i, (*n).info);
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T129_;
				if (!(result == (*(*c).graph).emptyNode)) goto LA127_;
				result = n;
				T129_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T129_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
				asgnRefNoCycle((void**) (&(*n).typ), makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ(c, T129_));
			}
			LA127_: ;
			goto BeforeRet_;
		}
		break;
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53):
		{
			{
				if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0)) goto LA133_;
				result = readTypeParameter_Sz9aXVAPpoci70Ha7oJ9a9cqQ(c, t, i, (*n).info);
				goto BeforeRet_;
			}
			goto LA131_;
			LA133_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T136_;
				T136_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T136_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
				asgnRefNoCycle((void**) (&(*n).typ), makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ(c, T136_));
				result = n;
				goto BeforeRet_;
			}
			LA131_: ;
		}
		break;
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 59):
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T138_;
			T138_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T138_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
			asgnRefNoCycle((void**) (&(*n).typ), makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ(c, T138_));
			result = n;
			goto BeforeRet_;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA122_: ;
	}BeforeRet_: ;
	return result;
}

static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c) {
	(*dest).data[((*dest).Sup.len)- 0] = c;
	(*dest).data[((NI)((*dest).Sup.len + ((NI) 1)))- 0] = 0;
	(*dest).Sup.len += ((NI) 1);
}

N_LIB_PRIVATE N_NIMCALL(void, semOpAux_wkwHEj6zZnYo2DMZys6jnA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				a = (*n)._Ukind.S6.sons->data[i];
				{
					NIM_BOOL T7_;
					NI T9_;
					tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
					tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T12_;
					T7_ = (NIM_BOOL)0;
					T7_ = ((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 33));
					if (!(T7_)) goto LA8_;
					T9_ = (NI)0;
					T9_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a);
					T7_ = (T9_ == ((NI) 2));
					LA8_: ;
					if (!T7_) goto LA10_;
					info = (*(*a)._Ukind.S6.sons->data[((NI) 0)]).info;
					T12_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
					T12_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*a)._Ukind.S6.sons->data[((NI) 0)], a);
					asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[((NI) 0)]), newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T12_, info));
					asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[((NI) 1)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*a)._Ukind.S6.sons->data[((NI) 1)], 256));
					asgnRefNoCycle((void**) (&(*a).typ), (*(*a)._Ukind.S6.sons->data[((NI) 1)]).typ);
				}
				goto LA5_;
				LA10_: ;
				{
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, a, 256));
				}
				LA5_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, lookupMacro_0bGgbY2vzd9cI8DrFDXzH9aA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA3_;
		result = (*n)._Ukind.S4.sym;
		{
			if (!!(((393216 &(1U<<((NU)((*result).kind)&31U)))!=0))) goto LA7_;
			result = NIM_NIL;
		}
		LA7_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T10_;
		T10_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T10_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, n, NIM_NIL);
		result = searchInScopes_tBNUxh8HVPOg9c8tn3WqF9bA(c, T10_, 393216);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, copyExcept_snlvQwXgyq2kcUxt2HHdjw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NI i) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = copyNode_lz8T1F9c0YwEOpUnrAUYgjg(n);
	{
		NI j;
		NI colontmp_;
		NI i_2;
		j = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				j = i_2;
				{
					if (!!((j == i))) goto LA6_;
					add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[j]);
				}
				LA6_: ;
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semProcAnnotation_HKvmn9cXyuMLnGdyw4BNd9cw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* prc, tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw validPragmas) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	n = (*prc)._Ukind.S6.sons->data[((NI) 4)];
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (n == NIM_NIL);
		if (T3_) goto LA4_;
		T3_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	{
		NI i;
		NI colontmp_;
		NI T8_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T8_ = (NI)0;
		T8_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		colontmp_ = (NI)(T8_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA10;
				i = res;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* key;
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T39_;
					it = (*n)._Ukind.S6.sons->data[i];
					{
						NIM_BOOL T14_;
						NI T16_;
						T14_ = (NIM_BOOL)0;
						T14_ = ((*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34) || (*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28));
						if (!(T14_)) goto LA15_;
						T16_ = (NI)0;
						T16_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(it);
						T14_ = (((NI) 1) <= T16_);
						LA15_: ;
						if (!T14_) goto LA17_;
						key = (*it)._Ukind.S6.sons->data[((NI) 0)];
					}
					goto LA12_;
					LA17_: ;
					{
						key = it;
					}
					LA12_: ;
					m = lookupMacro_0bGgbY2vzd9cI8DrFDXzH9aA(c, key);
					{
						if (!(m == NIM_NIL)) goto LA22_;
						{
							NIM_BOOL T26_;
							T26_ = (NIM_BOOL)0;
							T26_ = ((*key).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2));
							if (!(T26_)) goto LA27_;
							T26_ = ((*(*key)._Ukind.S5.ident).Sup.id == ((NI) 86));
							LA27_: ;
							if (!T26_) goto LA28_;
							{
								tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T32_;
								T32_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
								T32_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*prc)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
								if (!eqStrings((*T32_).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_47))) goto LA33_;
								asgnRefNoCycle((void**) (&(*prc)._Ukind.S6.sons->data[((NI) 0)]), newIdentNode_mj7QetSP2JbYkbT6xy0EJA((*(*c).cache).idDelegator, (*prc).info));
								asgnRefNoCycle((void**) (&(*prc)._Ukind.S6.sons->data[((NI) 4)]), copyExcept_snlvQwXgyq2kcUxt2HHdjw(n, i));
							}
							goto LA30_;
							LA33_: ;
							{
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*prc).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_48));
							}
							LA30_: ;
						}
						LA28_: ;
						goto LA11;
					}
					goto LA20_;
					LA22_: ;
					{
						if (!(((*m).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 8))&63U)))!=0)) goto LA37_;
						goto LA11;
					}
					goto LA20_;
					LA37_: ;
					LA20_: ;
					x = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
					T39_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T39_ = newSymNode_UWZXukHA5As9aCftRHbafBg(m);
					add_gCCf68XrWL79bKes6htzFjQ(x, T39_);
					asgnRefNoCycle((void**) (&(*prc)._Ukind.S6.sons->data[((NI) 4)]), copyExcept_snlvQwXgyq2kcUxt2HHdjw(n, i));
					{
						NIM_BOOL T42_;
						NI T44_;
						T42_ = (NIM_BOOL)0;
						T42_ = !(((*(*prc)._Ukind.S6.sons->data[((NI) 4)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)));
						if (!(T42_)) goto LA43_;
						T44_ = (NI)0;
						T44_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*prc)._Ukind.S6.sons->data[((NI) 4)]);
						T42_ = (T44_ == ((NI) 0));
						LA43_: ;
						if (!T42_) goto LA45_;
						asgnRefNoCycle((void**) (&(*prc)._Ukind.S6.sons->data[((NI) 4)]), (*(*c).graph).emptyNode);
					}
					LA45_: ;
					{
						NIM_BOOL T49_;
						NI T51_;
						T49_ = (NIM_BOOL)0;
						T49_ = ((*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34) || (*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28));
						if (!(T49_)) goto LA50_;
						T51_ = (NI)0;
						T51_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(it);
						T49_ = (((NI) 1) < T51_);
						LA50_: ;
						if (!T49_) goto LA52_;
						{
							NI i_2;
							NI colontmp__2;
							NI i_3;
							i_2 = (NI)0;
							colontmp__2 = (NI)0;
							colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(it);
							i_3 = ((NI) 1);
							{
								while (1) {
									if (!(i_3 < colontmp__2)) goto LA56;
									i_2 = i_3;
									add_gCCf68XrWL79bKes6htzFjQ(x, (*it)._Ukind.S6.sons->data[i_2]);
									i_3 += ((NI) 1);
								} LA56: ;
							}
						}
					}
					LA52_: ;
					add_gCCf68XrWL79bKes6htzFjQ(x, prc);
					result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, x, 0);
					{
						NIM_BOOL T59_;
						NIM_BOOL T60_;
						T59_ = (NIM_BOOL)0;
						T60_ = (NIM_BOOL)0;
						T60_ = ((*result).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) && (*result).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52) || (*result).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79) && (*result).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159));
						if (!(T60_)) goto LA61_;
						T60_ = ((*(*result)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
						LA61_: ;
						T59_ = T60_;
						if (!(T59_)) goto LA62_;
						T59_ = !(((*(*result)._Ukind.S6.sons->data[((NI) 4)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)));
						LA62_: ;
						if (!T59_) goto LA63_;
						pragma_av9bQYmoLtJKLA6ueIgHxoA(c, (*(*result)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym, (*result)._Ukind.S6.sons->data[((NI) 4)], validPragmas);
					}
					LA63_: ;
					goto BeforeRet_;
				} LA11: ;
				res += ((NI) 1);
			} LA10: ;
		}
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar__jjfNrJtm9cAyhDM03lwdhoA)(tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind) {
	NimStringDesc* result;
	NimStringDesc* T1_;
	result = (NimStringDesc*)0;
	T1_ = (NimStringDesc*)0;
	T1_ = substr_9bUFQ4OV1temcDF0GZp317g(reprEnum((NI)kind, (&NTI_cNCW9acsSznmEccl1fgQwkw_)), ((NI) 2));
	result = nsuToLowerAsciiStr(T1_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newSymG_sxL9bg3I9cVytmWlUkzsHDaA)(tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA3_;
		result = (*n)._Ukind.S4.sym;
		{
			NimStringDesc* T9_;
			NimStringDesc* T10_;
			NimStringDesc* T11_;
			if (!!(((*result).kind == kind))) goto LA7_;
			T9_ = (NimStringDesc*)0;
			T10_ = (NimStringDesc*)0;
			T10_ = dollar__jjfNrJtm9cAyhDM03lwdhoA((*result).kind);
			T11_ = (NimStringDesc*)0;
			T11_ = dollar__jjfNrJtm9cAyhDM03lwdhoA(kind);
			T9_ = rawNewString((T10_ ? T10_->Sup.len : 0) + (T11_ ? T11_->Sup.len : 0) + 36);
appendString(T9_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_49));
appendString(T9_, T10_);
appendString(T9_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_50));
appendString(T9_, T11_);
appendString(T9_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T9_);
		}
		LA7_: ;
		{
			NIM_BOOL T14_;
			T14_ = (NIM_BOOL)0;
			T14_ = (((*result).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0);
			if (!(T14_)) goto LA15_;
			T14_ = !(((393224 &(1U<<((NU)((*result).kind)&31U)))!=0));
			LA15_: ;
			if (!T14_) goto LA16_;
			result = copySym_hicZXrzB9bwpjzwTWf8NTog(result, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*result).ast), (*(*n)._Ukind.S4.sym).ast);
			put_H1d3uunQKzmD6ilt8PinVw((*c).p, (*n)._Ukind.S4.sym, result);
		}
		LA16_: ;
		asgnRefNoCycle((void**) (&(*result).owner), getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c));
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T19_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T20_;
		T19_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T19_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, n, NIM_NIL);
		T20_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T20_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
		result = newSym_ZQfOwiQo63qLga19cuF5r9cQ(kind, T19_, T20_, (*n).info, 0);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, semIdentVis_w0c4409bd9b4T2DSbUAAqpNA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw allowed) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31))) goto LA3_;
		{
			NI T7_;
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* v;
			T7_ = (NI)0;
			T7_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			if (!(T7_ == ((NI) 2))) goto LA8_;
			result = newSymG_sxL9bg3I9cVytmWlUkzsHDaA(kind, (*n)._Ukind.S6.sons->data[((NI) 1)], c);
			v = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
			{
				NIM_BOOL T12_;
				T12_ = (NIM_BOOL)0;
				T12_ = ((allowed &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 1))&63U)))!=0);
				if (!(T12_)) goto LA13_;
				T12_ = ((*v).Sup.id == ((NI) 72));
				LA13_: ;
				if (!T12_) goto LA14_;
				(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 1))%(sizeof(NU64)*8));
			}
			goto LA10_;
			LA14_: ;
			{
				{
					NimStringDesc* T21_;
					if (!!(((allowed &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 1))&63U)))!=0))) goto LA19_;
					T21_ = (NimStringDesc*)0;
					T21_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_52), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_53));
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, T21_);
				}
				goto LA17_;
				LA19_: ;
				{
					NimStringDesc* T23_;
					NimStringDesc* T24_;
					T23_ = (NimStringDesc*)0;
					T23_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA((*n)._Ukind.S6.sons->data[((NI) 0)], 0);
					T24_ = (NimStringDesc*)0;
					T24_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_54), T23_);
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, T24_);
				}
				LA17_: ;
			}
			LA10_: ;
		}
		goto LA5_;
		LA8_: ;
		{
			illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		result = newSymG_sxL9bg3I9cVytmWlUkzsHDaA(kind, n, c);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, semIdentWithPragma_w0c4409bd9b4T2DSbUAAqpNA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw allowed) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43))) goto LA3_;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
		result = semIdentVis_w0c4409bd9b4T2DSbUAAqpNA_2(c, kind, (*n)._Ukind.S6.sons->data[((NI) 0)], allowed);
		switch (kind) {
		case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7):
		{
		}
		break;
		case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 19):
		{
			pragma_av9bQYmoLtJKLA6ueIgHxoA(c, result, (*n)._Ukind.S6.sons->data[((NI) 1)], TM_rF9caJawfOjYTjsgLVUSGFA_55);
		}
		break;
		case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 8):
		{
			pragma_av9bQYmoLtJKLA6ueIgHxoA(c, result, (*n)._Ukind.S6.sons->data[((NI) 1)], TM_rF9caJawfOjYTjsgLVUSGFA_56);
		}
		break;
		case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 9):
		{
			pragma_av9bQYmoLtJKLA6ueIgHxoA(c, result, (*n)._Ukind.S6.sons->data[((NI) 1)], TM_rF9caJawfOjYTjsgLVUSGFA_56);
		}
		break;
		case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 10):
		{
			pragma_av9bQYmoLtJKLA6ueIgHxoA(c, result, (*n)._Ukind.S6.sons->data[((NI) 1)], TM_rF9caJawfOjYTjsgLVUSGFA_57);
		}
		break;
		default:
		{
		}
		break;
		}
	}
	goto LA1_;
	LA3_: ;
	{
		result = semIdentVis_w0c4409bd9b4T2DSbUAAqpNA_2(c, kind, n, allowed);
	}
	LA1_: ;
	{
		if (!(((*(*(*c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA14_;
		nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*c).graph).config, (*n).info, result, (*result).kind);
	}
	LA14_: ;
	return result;
}

static N_INLINE(void, suggestSym_nUjK9c6nUBlRnsyc9a0Rm4jQsem)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w** usageSym, NIM_BOOL isDecl) {
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, semIdentDef_xo9cgbfYKVVrrYTXCTptvbQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
		if (!T3_) goto LA4_;
		result = semIdentWithPragma_w0c4409bd9b4T2DSbUAAqpNA(c, kind, n, 2);
		(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 3))%(sizeof(NU64)*8));
	}
	goto LA1_;
	LA4_: ;
	{
		result = semIdentWithPragma_w0c4409bd9b4T2DSbUAAqpNA(c, kind, n, 0);
		{
			if (!((*(*result).owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6))) goto LA9_;
			(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 3))%(sizeof(NU64)*8));
		}
		LA9_: ;
	}
	LA1_: ;
	suggestSym_nUjK9c6nUBlRnsyc9a0Rm4jQsem((*(*c).graph).config, (*n).info, result, &(*(*c).graph).usageSym, NIM_TRUE);
	{
		if (!(((*(*(*c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA13_;
		nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*c).graph).config, (*result).info, result, (*result).kind);
	}
	LA13_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semGenericConstraints_XLr6jPp9b9b6c6pn9c9bfix9cdg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tySequence_Ef05srmQTDulnBdXR4Ja6Q* T1_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
	T1_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
	asgnRefNoCycle((void**) (&T1_->data[0]), x);
	result = newTypeWithSons_9aJU4B1fwkaTke7gv1KDkuQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12), T1_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semGenericParamList_JC2xPAEU5XROw7xR66txZg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = copyNode_lz8T1F9c0YwEOpUnrAUYgjg(n);
	{
		if (!!(((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 75)))) goto LA3_;
		illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
		goto BeforeRet_;
	}
	LA3_: ;
	{
		NI i;
		NI colontmp_;
		NI T6_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T6_ = (NI)0;
		T6_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T6_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				NI L;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* def;
				NI T13_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* constraint;
				NI T14_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
				if (!(res <= colontmp_)) goto LA8;
				i = res;
				a = (*n)._Ukind.S6.sons->data[i];
				{
					if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35)))) goto LA11_;
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
				}
				LA11_: ;
				L = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
				T13_ = (NI)0;
				T13_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
				def = (*a)._Ukind.S6.sons->data[(NI)(T13_ - ((NI) 1))];
				T14_ = (NI)0;
				T14_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
				constraint = (*a)._Ukind.S6.sons->data[(NI)(T14_ - ((NI) 2))];
				typ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				{
					if (!!(((*constraint).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA17_;
					typ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, constraint, NIM_NIL);
					{
						NIM_BOOL T21_;
						NI T23_;
						T21_ = (NIM_BOOL)0;
						T21_ = !(((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60)));
						if (T21_) goto LA22_;
						T23_ = (NI)0;
						T23_ = len_SWFNCiWYB89bTUPh5KptkvA_2(typ);
						T21_ = (T23_ == ((NI) 0));
						LA22_: ;
						if (!T21_) goto LA24_;
						{
							if (!((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA28_;
							{
								tySequence_Ef05srmQTDulnBdXR4Ja6Q* T34_;
								if (!((*(*typ).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0))) goto LA32_;
								T34_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
								T34_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
								asgnRefNoCycle((void**) (&T34_->data[0]), newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0), c));
								typ = newTypeWithSons_9aJU4B1fwkaTke7gv1KDkuQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8), T34_);
							}
							LA32_: ;
						}
						goto LA26_;
						LA28_: ;
						{
							typ = semGenericConstraints_XLr6jPp9b9b6c6pn9c9bfix9cdg(c, typ);
						}
						LA26_: ;
					}
					LA24_: ;
				}
				LA17_: ;
				{
					if (!!(((*def).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA38_;
					def = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, def);
					{
						if (!(typ == NIM_NIL)) goto LA42_;
						{
							tySequence_Ef05srmQTDulnBdXR4Ja6Q* T48_;
							if (!!(((*(*def).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8)))) goto LA46_;
							T48_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
							T48_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
							asgnRefNoCycle((void**) (&T48_->data[0]), (*def).typ);
							typ = newTypeWithSons_9aJU4B1fwkaTke7gv1KDkuQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60), T48_);
						}
						LA46_: ;
					}
					goto LA40_;
					LA42_: ;
					{
						asgnRefNoCycle((void**) (&(*def).typ), skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*def).typ, 256));
						{
							NIM_BOOL T52_;
							T52_ = (NIM_BOOL)0;
							T52_ = containsGenericType_YPjOkGV9axAnGR3UfLeWZ1g((*def).typ);
							if (!!(T52_)) goto LA53_;
							def = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, def, (*def).info);
						}
						LA53_: ;
					}
					LA40_: ;
				}
				LA38_: ;
				{
					if (!(typ == NIM_NIL)) goto LA57_;
					typ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12), c);
					{
						if (!(father == NIM_NIL)) goto LA61_;
						(*typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 29))%(sizeof(NU64)*8));
					}
					LA61_: ;
				}
				LA57_: ;
				(*typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 24))%(sizeof(NU64)*8));
				{
					NI j;
					NI colontmp__2;
					NI res_2;
					j = (NI)0;
					colontmp__2 = (NI)0;
					colontmp__2 = (NI)(L - ((NI) 3));
					res_2 = ((NI) 0);
					{
						while (1) {
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* finalType;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* paramName;
							tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw covarianceFlag;
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T120_;
							if (!(res_2 <= colontmp__2)) goto LA65;
							j = res_2;
							{
								if (!(j == ((NI) 0))) goto LA68_;
								finalType = typ;
							}
							goto LA66_;
							LA68_: ;
							{
								finalType = copyType_UkDKseEIJgQZ1cGmoQSskA(typ, (*typ).owner, NIM_FALSE);
							}
							LA66_: ;
							paramName = (*a)._Ukind.S6.sons->data[j];
							covarianceFlag = ((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9);
							{
								NI T73_;
								T73_ = (NI)0;
								T73_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(paramName);
								if (!(T73_ == ((NI) 2))) goto LA74_;
								{
									NIM_BOOL T78_;
									T78_ = (NIM_BOOL)0;
									T78_ = NIM_TRUE;
									if (T78_) goto LA79_;
									T78_ = eqStrings((*(*(*paramName)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S5.ident).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_58));
									LA79_: ;
									if (!T78_) goto LA80_;
									{
										NIM_BOOL T84_;
										NimStringDesc* T88_;
										NimStringDesc* T89_;
										T84_ = (NIM_BOOL)0;
										T84_ = (father == NIM_NIL);
										if (T84_) goto LA85_;
										T84_ = !((((*(*father).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 5))&63U)))!=0));
										LA85_: ;
										if (!T84_) goto LA86_;
										T88_ = (NimStringDesc*)0;
										T88_ = dollar__qX5C9b0n9bOP7jk69amC8dA7A((*paramName)._Ukind.S6.sons->data[((NI) 0)]);
										T89_ = (NimStringDesc*)0;
										T89_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_59), T88_);
										localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*paramName).info, T89_);
									}
									LA86_: ;
								}
								LA80_: ;
								{
									if (!eqStrings((*(*(*paramName)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S5.ident).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_58))) goto LA92_;
									covarianceFlag = ((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 36);
								}
								goto LA90_;
								LA92_: ;
								{
									covarianceFlag = ((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 34);
								}
								LA90_: ;
								{
									if (!!((father == NIM_NIL))) goto LA97_;
									(*father).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 34))%(sizeof(NU64)*8));
								}
								LA97_: ;
								paramName = (*paramName)._Ukind.S6.sons->data[((NI) 1)];
							}
							LA74_: ;
							{
								NIM_BOOL T101_;
								tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T105_;
								T101_ = (NIM_BOOL)0;
								T101_ = ((*finalType).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60));
								if (T101_) goto LA102_;
								T101_ = (((*typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 29))&63U)))!=0);
								LA102_: ;
								if (!T101_) goto LA103_;
								T105_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
								T105_ = newSymG_sxL9bg3I9cVytmWlUkzsHDaA(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 4), paramName, c);
								s = linkTo_4qP0auPrvljCknknx42YWA(T105_, finalType);
							}
							goto LA99_;
							LA103_: ;
							{
								tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T107_;
								T107_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
								T107_ = newSymG_sxL9bg3I9cVytmWlUkzsHDaA(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7), paramName, c);
								s = linkTo_4qP0auPrvljCknknx42YWA(T107_, finalType);
							}
							LA99_: ;
							{
								if (!!((covarianceFlag == ((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9)))) goto LA110_;
								(*(*s).typ).flags |= ((NU64)1)<<((covarianceFlag)%(sizeof(NU64)*8));
							}
							LA110_: ;
							{
								if (!!(((*def).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA114_;
								asgnRefNoCycle((void**) (&(*s).ast), def);
							}
							LA114_: ;
							{
								if (!!((father == NIM_NIL))) goto LA118_;
								addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(father, (*s).typ);
							}
							LA118_: ;
							(*s).position = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
							T120_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T120_ = newSymNode_UWZXukHA5As9aCftRHbafBg(s);
							addSon_gCCf68XrWL79bKes6htzFjQ_2(result, T120_);
							{
								if (!!((((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0))) goto LA123_;
								addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, s);
							}
							LA123_: ;
							res_2 += ((NI) 1);
						} LA65: ;
					}
				}
				res += ((NI) 1);
			} LA8: ;
		}
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, setGenericParamsMisc_U3qPBy54f1PkCP8vmFMCRA_5)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	orig = (*n)._Ukind.S6.sons->data[((NI) 2)];
	result = semGenericParamList_JC2xPAEU5XROw7xR66txZg(c, orig, NIM_NIL);
	{
		tyArray_AB6yfoUgfWM2NtGe9bzkCmw T5_;
		if (!((*(*n)._Ukind.S6.sons->data[((NI) 5)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA3_;
		nimZeroMem((void*)T5_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
		T5_[0] = (*(*c).graph).emptyNode;
		T5_[1] = orig;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 5)]), newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41), T5_, 2));
	}
	goto LA1_;
	LA3_: ;
	{
		asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[((NI) 5)])._Ukind.S6.sons->data[((NI) 1)]), orig);
	}
	LA1_: ;
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 2)]), result);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newProcType_xLsbVleCb74T7Vl9aPE528w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TOptionEntry_H9ac5KbrDJVwT1zH5O83r7w* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25), prev, c);
	T1_ = (tyObject_TOptionEntry_H9ac5KbrDJVwT1zH5O83r7w*)0;
	T1_ = lastOptionEntry_8p6fqPdj1LEFydikuHxfXw(c);
	(*result).callConv = (*T1_).defaultCC;
	asgnRefNoCycle((void**) (&(*result).n), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 76), info));
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, NIM_NIL);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 152), info);
	addSon_gCCf68XrWL79bKes6htzFjQ_2((*result).n, T2_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semParamType_FHAQ9aLj19b2cX1BhYcNj4dQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** constraint) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 40))) goto LA3_;
		result = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
		unsureAsgnRef((void**) (&(*constraint)), semNodeKindConstraints_1m6lSTM7X9c1raCMjgBm5Vg(n, (*(*c).graph).config));
	}
	goto LA1_;
	LA3_: ;
	{
		result = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, n, NIM_NIL);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, s, &(*(*c).graph).usageSym);
	pushInfoContext_jVPMMc4H29cyI52qg0Kp9aUg((*(*c).graph).config, (*n).info);
	T1_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
	result = evalTemplate_pIDsfEQB8b89bGXTMDcsA0g(n, s, T1_, (*(*c).graph).config, ((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 16))&31U)))!=0));
	{
		if (!!(((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 13))&31U)))!=0))) goto LA4_;
		result = semAfterMacroCall_XlzLDLqIEXrxOyQPBIKHYg(c, n, result, s, flags);
	}
	LA4_: ;
	popInfoContext_HFVjkUQz7LMV9aOS6uKLckQ((*(*c).graph).config);
	(*result).info = (*n).info;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semGenericStmtSymbol_VDpzAtTAKzR09bJ1VerB9bfQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w* ctx, tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA flags, NIM_BOOL fromDotExpr) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
	switch ((*s).kind) {
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 0):
	{
		result = n;
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12):
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 13):
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14):
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15):
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 16):
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6):
	{
		result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 1));
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
	{
		{
			NIM_BOOL T6_;
			NIM_BOOL T7_;
			NIM_BOOL T8_;
			NI T11_;
			T6_ = (NIM_BOOL)0;
			T7_ = (NIM_BOOL)0;
			T8_ = (NIM_BOOL)0;
			T8_ = !((((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 8))&63U)))!=0));
			if (!(T8_)) goto LA9_;
			T8_ = ((393216 &(1U<<((NU)((*s).kind)&31U)))!=0);
			LA9_: ;
			T7_ = T8_;
			if (!(T7_)) goto LA10_;
			T11_ = (NI)0;
			T11_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*s).typ);
			T7_ = (T11_ == ((NI) 1));
			LA10_: ;
			T6_ = T7_;
			if (!(T6_)) goto LA12_;
			T6_ = !(fromDotExpr);
			LA12_: ;
			if (!T6_) goto LA13_;
			result = semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA(c, n, s, 8192);
			result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, result, 0, ctx);
		}
		goto LA4_;
		LA13_: ;
		{
			result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 1));
		}
		LA4_: ;
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17):
	{
		{
			NIM_BOOL T19_;
			NIM_BOOL T20_;
			NIM_BOOL T21_;
			NI T24_;
			T19_ = (NIM_BOOL)0;
			T20_ = (NIM_BOOL)0;
			T21_ = (NIM_BOOL)0;
			T21_ = !((((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 8))&63U)))!=0));
			if (!(T21_)) goto LA22_;
			T21_ = ((393216 &(1U<<((NU)((*s).kind)&31U)))!=0);
			LA22_: ;
			T20_ = T21_;
			if (!(T20_)) goto LA23_;
			T24_ = (NI)0;
			T24_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*s).typ);
			T20_ = (T24_ == ((NI) 1));
			LA23_: ;
			T19_ = T20_;
			if (!(T19_)) goto LA25_;
			T19_ = !(fromDotExpr);
			LA25_: ;
			if (!T19_) goto LA26_;
			result = semMacroExpr_9bmxDHTa4eojLns652LIkJw(c, n, n, s, 8192);
			result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, result, 0, ctx);
		}
		goto LA17_;
		LA26_: ;
		{
			result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 1));
		}
		LA17_: ;
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 4):
	{
		{
			NIM_BOOL T32_;
			T32_ = (NIM_BOOL)0;
			T32_ = !(((*s).typ == NIM_NIL));
			if (!(T32_)) goto LA33_;
			T32_ = ((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60));
			LA33_: ;
			if (!T32_) goto LA34_;
			{
				if (!!(((*(*s).typ).n == NIM_NIL))) goto LA38_;
				result = (*(*s).typ).n;
			}
			goto LA36_;
			LA38_: ;
			{
				result = n;
			}
			LA36_: ;
		}
		goto LA30_;
		LA34_: ;
		{
			result = newSymNodeTypeDesc_LBSKfJWN58S5YV9bDMBn6bQ(s, (*n).info);
		}
		LA30_: ;
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3):
	{
		result = n;
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7):
	{
		{
			NIM_BOOL T46_;
			T46_ = (NIM_BOOL)0;
			T46_ = !(((*s).typ == NIM_NIL));
			if (!(T46_)) goto LA47_;
			T46_ = (((*(*s).typ).flags & 50331648) == 0);
			LA47_: ;
			if (!T46_) goto LA48_;
			result = newSymNodeTypeDesc_LBSKfJWN58S5YV9bDMBn6bQ(s, (*n).info);
		}
		goto LA44_;
		LA48_: ;
		{
			result = n;
		}
		LA44_: ;
	}
	break;
	default:
	{
		result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, lookup_KTgYfJqnXmLWnl7vvw9c2lA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA flags, tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w* ctx) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	ident = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, n, NIM_NIL);
	T1_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = searchInScopes_xnVjAYTNrHOYQvPVqwg14w(c, ident);
	s = skipAlias_5qYRPQsu9attXO2xg5lnFVQ(T1_, n, (*(*c).graph).config);
	{
		if (!(s == NIM_NIL)) goto LA4_;
		s = strTableGet_0xgFDJUQtGGr2e0Sq9aLIhA((*c).pureEnumFields, ident);
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = !((s == NIM_NIL));
			if (!(T8_)) goto LA9_;
			T8_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).ambiguousSymbols), (*s).Sup.id);
			LA9_: ;
			if (!T8_) goto LA10_;
			s = NIM_NIL;
		}
		LA10_: ;
	}
	LA4_: ;
	{
		if (!(s == NIM_NIL)) goto LA14_;
		{
			NIM_BOOL T18_;
			NIM_BOOL T19_;
			T18_ = (NIM_BOOL)0;
			T19_ = (NIM_BOOL)0;
			T19_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*ctx).toMixin), (*ident).Sup.id);
			T18_ = !(T19_);
			if (!(T18_)) goto LA20_;
			T18_ = !(((flags &(1U<<((NU)(((tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA) 2))&7U)))!=0));
			LA20_: ;
			if (!T18_) goto LA21_;
			errorUndeclaredIdentifier_PLFSD1YzsA1kjG9bgxNK1WA(c, (*n).info, (*ident).s);
		}
		LA21_: ;
	}
	goto LA12_;
	LA14_: ;
	{
		{
			if (!((flags &(1U<<((NU)(((tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA) 0))&7U)))!=0)) goto LA26_;
			result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
		}
		goto LA24_;
		LA26_: ;
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_2;
			NIM_BOOL T29_;
			NIM_BOOL T31_;
			NIM_BOOL T32_;
			s_2 = s;
			T29_ = (NIM_BOOL)0;
			T29_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*ctx).toMixin), (*(*s_2).name).Sup.id);
			if (T29_) goto LA30_;
			T31_ = (NIM_BOOL)0;
			T32_ = (NIM_BOOL)0;
			T32_ = ((flags &(1U<<((NU)(((tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA) 3))&7U)))!=0);
			if (!(T32_)) goto LA33_;
			T32_ = ((*s_2).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0));
			LA33_: ;
			T31_ = T32_;
			if (!(T31_)) goto LA34_;
			T31_ = ((OverloadableSyms_yJfP9bpZPSQn9bPO6KCo08fQ &(1U<<((NU)((*s_2).kind)&31U)))!=0);
			LA34_: ;
			T29_ = T31_;
			LA30_: ;
			if (!T29_) goto LA35_;
			result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 2));
		}
		goto LA24_;
		LA35_: ;
		{
			result = semGenericStmtSymbol_VDpzAtTAKzR09bJ1VerB9bfQ(c, n, s, ctx, flags, NIM_FALSE);
		}
		LA24_: ;
	}
	LA12_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newDot_podnxPJ03c9c6ZNI9b2Xkrqw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45), (*n).info);
	add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[((NI) 0)]);
	add_gCCf68XrWL79bKes6htzFjQ(result, b);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, fuzzyLookup_Q9cQn1LH6wCwMsLUUKGnnjQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA flags, tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w* ctx, NIM_BOOL* isMacro) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tySet_tyEnum_TLookupFlag_ObWMY5GMSl1GiMcrKaAhKQ luf;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!!(((flags &(1U<<((NU)(((tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA) 2))&7U)))!=0))) goto LA3_;
		luf = 6;
	}
	goto LA1_;
	LA3_: ;
	{
		luf = 4;
	}
	LA1_: ;
	s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA(c, n, luf);
	{
		if (!!((s == NIM_NIL))) goto LA8_;
		result = semGenericStmtSymbol_VDpzAtTAKzR09bJ1VerB9bfQ(c, n, s, ctx, flags, NIM_FALSE);
	}
	goto LA6_;
	LA8_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_2;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T11_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[((NI) 0)], flags, ctx));
		result = n;
		n_2 = (*n)._Ukind.S6.sons->data[((NI) 1)];
		ident = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, n_2, NIM_NIL);
		T11_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T11_ = searchInScopes_xnVjAYTNrHOYQvPVqwg14w(c, ident);
		s_2 = skipAlias_5qYRPQsu9attXO2xg5lnFVQ(T11_, n_2, (*(*c).graph).config);
		{
			NIM_BOOL T14_;
			T14_ = (NIM_BOOL)0;
			T14_ = !((s_2 == NIM_NIL));
			if (!(T14_)) goto LA15_;
			T14_ = ((520192 &(1U<<((NU)((*s_2).kind)&31U)))!=0);
			LA15_: ;
			if (!T14_) goto LA16_;
			(*isMacro) = ((393216 &(1U<<((NU)((*s_2).kind)&31U)))!=0);
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T22_;
				if (!((flags &(1U<<((NU)(((tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA) 0))&7U)))!=0)) goto LA20_;
				T22_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T22_ = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n_2, s_2, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
				result = newDot_podnxPJ03c9c6ZNI9b2Xkrqw(result, T22_);
			}
			goto LA18_;
			LA20_: ;
			{
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_3;
				NIM_BOOL T24_;
				NIM_BOOL T26_;
				NIM_BOOL T27_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T32_;
				s_3 = s_2;
				T24_ = (NIM_BOOL)0;
				T24_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*ctx).toMixin), (*(*s_3).name).Sup.id);
				if (T24_) goto LA25_;
				T26_ = (NIM_BOOL)0;
				T27_ = (NIM_BOOL)0;
				T27_ = ((flags &(1U<<((NU)(((tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA) 3))&7U)))!=0);
				if (!(T27_)) goto LA28_;
				T27_ = ((*s_3).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0));
				LA28_: ;
				T26_ = T27_;
				if (!(T26_)) goto LA29_;
				T26_ = ((OverloadableSyms_yJfP9bpZPSQn9bPO6KCo08fQ &(1U<<((NU)((*s_3).kind)&31U)))!=0);
				LA29_: ;
				T24_ = T26_;
				LA25_: ;
				if (!T24_) goto LA30_;
				T32_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T32_ = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n_2, s_2, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 2));
				result = newDot_podnxPJ03c9c6ZNI9b2Xkrqw(result, T32_);
			}
			goto LA18_;
			LA30_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* syms;
				syms = semGenericStmtSymbol_VDpzAtTAKzR09bJ1VerB9bfQ(c, n_2, s_2, ctx, flags, NIM_TRUE);
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* choice;
					if (!((*syms).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA36_;
					choice = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n_2, s_2, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 2));
					(*choice).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56);
					result = newDot_podnxPJ03c9c6ZNI9b2Xkrqw(result, choice);
				}
				goto LA34_;
				LA36_: ;
				{
					result = newDot_podnxPJ03c9c6ZNI9b2Xkrqw(result, syms);
				}
				LA34_: ;
			}
			LA18_: ;
		}
		LA16_: ;
	}
	LA6_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semMixinStmt_Xu89a7SlP4MtnEygilKypgQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* toMixin) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T4_;
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				T4_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T4_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*n)._Ukind.S6.sons->data[i], NIM_NIL);
				incl_iUpE9bYmIR0fROyJskQwN8g(toMixin, (*T4_).Sup.id);
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (*n).info);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semGenericStmtScope_KTgYfJqnXmLWnl7vvw9c2lA_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA flags, tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w* ctx) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, n, flags, ctx);
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newSymS_sxL9bg3I9cVytmWlUkzsHDaA_2)(tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T2_;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, n, NIM_NIL);
	T2_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T2_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
	result = newSym_ZQfOwiQo63qLga19cuF5r9cQ(kind, T1_, T2_, (*n).info, 0);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31):
	{
		result = getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7(c, (*n)._Ukind.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43):
	{
		result = getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		result = n;
	}
	break;
	default:
	{
		illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
		result = n;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addTempDecl_ZGxWSZNSlj0lQFGwU8y5Eg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7(c, n);
	s = newSymS_sxL9bg3I9cVytmWlUkzsHDaA_2(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 0), T1_, c);
	addPrelimDecl_uYeViz1Olm4OBLjqZ4nggg(c, s);
	{
		if (!(((*(*(*c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA4_;
		nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*c).graph).config, (*n).info, s, kind);
	}
	LA4_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA flags, tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w* ctx) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
	{
		result = lookup_KTgYfJqnXmLWnl7vvw9c2lA_2(c, n, flags, ctx);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45):
	{
		NIM_BOOL dummy;
		dummy = (NIM_BOOL)0;
		result = fuzzyLookup_Q9cQn1LH6wCwMsLUUKGnnjQ(c, n, flags, ctx, (&dummy));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* a;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* b;
		a = (*n)._Ukind.S4.sym;
		b = getGenSym_9cHGgeaz0zI8z6eWnyHP7Bg(c, a);
		{
			if (!!((b == a))) goto LA6_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S4.sym), b);
		}
		LA6_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 24):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 55):
	{
		result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[((NI) 0)], (flags | 1), ctx);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 123):
	{
		result = semMixinStmt_Xu89a7SlP4MtnEygilKypgQ(c, n, (&(*ctx).toMixin));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fn;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		NI first;
		NIM_BOOL mixinContext;
		tySet_tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA flags_2;
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 1), (*(*c).graph).config);
		fn = (*n)._Ukind.S6.sons->data[((NI) 0)];
		s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA(c, fn, 0);
		{
			NIM_BOOL T14_;
			NIM_BOOL T15_;
			NIM_BOOL T16_;
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T20_;
			NIM_BOOL T21_;
			NimStringDesc* T24_;
			T14_ = (NIM_BOOL)0;
			T15_ = (NIM_BOOL)0;
			T16_ = (NIM_BOOL)0;
			T16_ = (s == NIM_NIL);
			if (!(T16_)) goto LA17_;
			T16_ = ((12 & flags) == 0);
			LA17_: ;
			T15_ = T16_;
			if (!(T15_)) goto LA18_;
			T15_ = ((*fn).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2) || (*fn).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53));
			LA18_: ;
			T14_ = T15_;
			if (!(T14_)) goto LA19_;
			T20_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T20_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, fn, NIM_NIL);
			T21_ = (NIM_BOOL)0;
			T21_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*ctx).toMixin), (*T20_).Sup.id);
			T14_ = !(T21_);
			LA19_: ;
			if (!T14_) goto LA22_;
			T24_ = (NimStringDesc*)0;
			T24_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(fn, 0);
			errorUndeclaredIdentifier_PLFSD1YzsA1kjG9bgxNK1WA(c, (*n).info, T24_);
		}
		LA22_: ;
		first = ((flags &(1U<<((NU)(((tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA) 3))&7U)))!=0);
		mixinContext = NIM_FALSE;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* sc;
			tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA T29_;
			if (!!((s == NIM_NIL))) goto LA27_;
			(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
			mixinContext = ((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 1) || (*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 2) || (*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 3) || (*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 283));
			T29_ = (tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA)0;
			{
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_2;
				NIM_BOOL T32_;
				NIM_BOOL T34_;
				NIM_BOOL T35_;
				s_2 = s;
				T32_ = (NIM_BOOL)0;
				T32_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*ctx).toMixin), (*(*s_2).name).Sup.id);
				if (T32_) goto LA33_;
				T34_ = (NIM_BOOL)0;
				T35_ = (NIM_BOOL)0;
				T35_ = ((flags &(1U<<((NU)(((tyEnum_TSemGenericFlag_awL4DUaf8OhTzyAenbxDoA) 3))&7U)))!=0);
				if (!(T35_)) goto LA36_;
				T35_ = ((*s_2).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0));
				LA36_: ;
				T34_ = T35_;
				if (!(T34_)) goto LA37_;
				T34_ = ((OverloadableSyms_yJfP9bpZPSQn9bPO6KCo08fQ &(1U<<((NU)((*s_2).kind)&31U)))!=0);
				LA37_: ;
				T32_ = T34_;
				LA33_: ;
				if (!T32_) goto LA38_;
				T29_ = ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 2);
			}
			goto LA30_;
			LA38_: ;
			{
				T29_ = ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 1);
			}
			LA30_: ;
			sc = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, fn, s, T29_);
			switch ((*s).kind) {
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17):
			{
				{
					NIM_BOOL T44_;
					NIM_BOOL T45_;
					NIM_BOOL T47_;
					NI T48_;
					NI T51_;
					T44_ = (NIM_BOOL)0;
					T45_ = (NIM_BOOL)0;
					T45_ = ((393216 &(1U<<((NU)((*s).kind)&31U)))!=0);
					if (!(T45_)) goto LA46_;
					T47_ = (NIM_BOOL)0;
					T48_ = (NI)0;
					T48_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*s).typ);
					T47_ = (T48_ == ((NI) 1));
					if (T47_) goto LA49_;
					T47_ = (((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 7))&63U)))!=0);
					LA49_: ;
					T45_ = T47_;
					LA46_: ;
					T44_ = T45_;
					if (!(T44_)) goto LA50_;
					T51_ = (NI)0;
					T51_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(sc);
					T44_ = (T51_ <= ((NI) 1));
					LA50_: ;
					if (!T44_) goto LA52_;
					result = semMacroExpr_9bmxDHTa4eojLns652LIkJw(c, n, n, s, 8192);
					result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, result, flags, ctx);
				}
				goto LA42_;
				LA52_: ;
				{
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), sc);
					result = n;
				}
				LA42_: ;
				mixinContext = NIM_TRUE;
			}
			break;
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
			{
				{
					NIM_BOOL T58_;
					NIM_BOOL T59_;
					NIM_BOOL T61_;
					NI T62_;
					NI T65_;
					T58_ = (NIM_BOOL)0;
					T59_ = (NIM_BOOL)0;
					T59_ = ((393216 &(1U<<((NU)((*s).kind)&31U)))!=0);
					if (!(T59_)) goto LA60_;
					T61_ = (NIM_BOOL)0;
					T62_ = (NI)0;
					T62_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*s).typ);
					T61_ = (T62_ == ((NI) 1));
					if (T61_) goto LA63_;
					T61_ = (((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 7))&63U)))!=0);
					LA63_: ;
					T59_ = T61_;
					LA60_: ;
					T58_ = T59_;
					if (!(T58_)) goto LA64_;
					T65_ = (NI)0;
					T65_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(sc);
					T58_ = (T65_ <= ((NI) 1));
					LA64_: ;
					if (!T58_) goto LA66_;
					result = semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA(c, n, s, 8192);
					result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, result, flags, ctx);
				}
				goto LA56_;
				LA66_: ;
				{
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), sc);
					result = n;
				}
				LA56_: ;
				mixinContext = NIM_TRUE;
			}
			break;
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 0):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3):
			{
			}
			break;
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 13):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 16):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6):
			{
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), sc);
				{
					NIM_BOOL T73_;
					NIM_BOOL T74_;
					NI T76_;
					T73_ = (NIM_BOOL)0;
					T74_ = (NIM_BOOL)0;
					T74_ = !(((*ctx).bracketExpr == NIM_NIL));
					if (!(T74_)) goto LA75_;
					T76_ = (NI)0;
					T76_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					T74_ = (T76_ == ((NI) 2));
					LA75_: ;
					T73_ = T74_;
					if (!(T73_)) goto LA77_;
					T73_ = eqStrings((*(*s).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_60));
					LA77_: ;
					if (!T73_) goto LA78_;
					add_gCCf68XrWL79bKes6htzFjQ(result, (*ctx).bracketExpr);
				}
				LA78_: ;
				first = ((NI) 1);
			}
			break;
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 4):
			{
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), newSymNodeTypeDesc_LBSKfJWN58S5YV9bDMBn6bQ(s, (*fn).info));
				first = ((NI) 1);
			}
			break;
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7):
			{
				{
					NIM_BOOL T84_;
					T84_ = (NIM_BOOL)0;
					T84_ = !(((*s).typ == NIM_NIL));
					if (!(T84_)) goto LA85_;
					T84_ = !(((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12)));
					LA85_: ;
					if (!T84_) goto LA86_;
					asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), newSymNodeTypeDesc_LBSKfJWN58S5YV9bDMBn6bQ(s, (*fn).info));
					first = ((NI) 1);
				}
				LA86_: ;
			}
			break;
			default:
			{
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*fn).info));
				first = ((NI) 1);
			}
			break;
			}
		}
		goto LA25_;
		LA27_: ;
		{
			if (!((*fn).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45))) goto LA90_;
			asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), fuzzyLookup_Q9cQn1LH6wCwMsLUUKGnnjQ(c, fn, flags, ctx, (&mixinContext)));
			first = ((NI) 1);
		}
		goto LA25_;
		LA90_: ;
		LA25_: ;
		{
			if (!mixinContext) goto LA94_;
			flags_2 = (flags | 4);
		}
		goto LA92_;
		LA94_: ;
		{
			flags_2 = flags;
		}
		LA92_: ;
		{
			NI i;
			NI colontmp_;
			NI T98_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T98_ = (NI)0;
			T98_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(result);
			colontmp_ = (NI)(T98_ - ((NI) 1));
			res = first;
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA100;
					i = res;
					asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*result)._Ukind.S6.sons->data[i], flags_2, ctx));
					res += ((NI) 1);
				} LA100: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 40):
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T102_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T103_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
		T102_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T102_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_61));
		T103_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T103_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T102_, (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(result, T103_);
		{
			NI i_2;
			NI colontmp__2;
			NI i_3;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_3 = ((NI) 0);
			{
				while (1) {
					if (!(i_3 < colontmp__2)) goto LA106;
					i_2 = i_3;
					add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[i_2]);
					i_3 += ((NI) 1);
				} LA106: ;
			}
		}
		result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, result, flags, ctx);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T108_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T109_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
		T108_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T108_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_15));
		T109_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T109_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T108_, (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(result, T109_);
		{
			NI i_4;
			NI colontmp__3;
			NI i_5;
			i_4 = (NI)0;
			colontmp__3 = (NI)0;
			colontmp__3 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_5 = ((NI) 0);
			{
				while (1) {
					if (!(i_5 < colontmp__3)) goto LA112;
					i_4 = i_5;
					add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[i_4]);
					i_5 += ((NI) 1);
				} LA112: ;
			}
		}
		result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, result, flags, ctx);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 74):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_2;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b_2;
		tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw k;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
		a_2 = (*n)._Ukind.S6.sons->data[((NI) 0)];
		b_2 = (*n)._Ukind.S6.sons->data[((NI) 1)];
		k = (*a_2).kind;
		switch (k) {
		case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 40):
		{
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T115_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T116_;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
			T115_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T115_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_62));
			T116_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T116_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T115_, (*n).info);
			add_gCCf68XrWL79bKes6htzFjQ(result, T116_);
			{
				NI i_6;
				NI colontmp__4;
				NI i_7;
				i_6 = (NI)0;
				colontmp__4 = (NI)0;
				colontmp__4 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a_2);
				i_7 = ((NI) 0);
				{
					while (1) {
						if (!(i_7 < colontmp__4)) goto LA119;
						i_6 = i_7;
						add_gCCf68XrWL79bKes6htzFjQ(result, (*a_2)._Ukind.S6.sons->data[i_6]);
						i_7 += ((NI) 1);
					} LA119: ;
				}
			}
			add_gCCf68XrWL79bKes6htzFjQ(result, b_2);
			result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, result, flags, ctx);
		}
		break;
		case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
		{
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T121_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T122_;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
			T121_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T121_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_63));
			T122_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T122_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T121_, (*n).info);
			add_gCCf68XrWL79bKes6htzFjQ(result, T122_);
			{
				NI i_8;
				NI colontmp__5;
				NI i_9;
				i_8 = (NI)0;
				colontmp__5 = (NI)0;
				colontmp__5 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a_2);
				i_9 = ((NI) 0);
				{
					while (1) {
						if (!(i_9 < colontmp__5)) goto LA125;
						i_8 = i_9;
						add_gCCf68XrWL79bKes6htzFjQ(result, (*a_2)._Ukind.S6.sons->data[i_8]);
						i_9 += ((NI) 1);
					} LA125: ;
				}
			}
			add_gCCf68XrWL79bKes6htzFjQ(result, b_2);
			result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, result, flags, ctx);
		}
		break;
		default:
		{
			{
				NI i_10;
				NI colontmp__6;
				NI T128_;
				NI res_2;
				i_10 = (NI)0;
				colontmp__6 = (NI)0;
				T128_ = (NI)0;
				T128_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
				colontmp__6 = (NI)(T128_ - ((NI) 1));
				res_2 = ((NI) 0);
				{
					while (1) {
						if (!(res_2 <= colontmp__6)) goto LA130;
						i_10 = res_2;
						asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i_10]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[i_10], flags, ctx));
						res_2 += ((NI) 1);
					} LA130: ;
				}
			}
		}
		break;
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92):
	{
		{
			NI i_11;
			NI colontmp__7;
			NI T133_;
			NI res_3;
			i_11 = (NI)0;
			colontmp__7 = (NI)0;
			T133_ = (NI)0;
			T133_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__7 = (NI)(T133_ - ((NI) 1));
			res_3 = ((NI) 0);
			{
				while (1) {
					if (!(res_3 <= colontmp__7)) goto LA135;
					i_11 = res_3;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_11]), semGenericStmtScope_KTgYfJqnXmLWnl7vvw9c2lA_3(c, (*n)._Ukind.S6.sons->data[i_11], flags, ctx));
					res_3 += ((NI) 1);
				} LA135: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 93):
	{
		{
			NI i_12;
			NI colontmp__8;
			NI T138_;
			NI res_4;
			i_12 = (NI)0;
			colontmp__8 = (NI)0;
			T138_ = (NI)0;
			T138_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__8 = (NI)(T138_ - ((NI) 1));
			res_4 = ((NI) 0);
			{
				while (1) {
					if (!(res_4 <= colontmp__8)) goto LA140;
					i_12 = res_4;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_12]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[i_12], (flags | 4), ctx));
					res_4 += ((NI) 1);
				} LA140: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96):
	{
		tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T142_;
		T142_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
		T142_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
		{
			NI i_13;
			NI colontmp__9;
			NI T144_;
			NI res_5;
			i_13 = (NI)0;
			colontmp__9 = (NI)0;
			T144_ = (NI)0;
			T144_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__9 = (NI)(T144_ - ((NI) 1));
			res_5 = ((NI) 0);
			{
				while (1) {
					if (!(res_5 <= colontmp__9)) goto LA146;
					i_13 = res_5;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_13]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[i_13], flags, ctx));
					res_5 += ((NI) 1);
				} LA146: ;
			}
		}
		closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 97):
	{
		tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T148_;
		T148_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
		T148_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[((NI) 0)], flags, ctx));
		{
			NI i_14;
			NI colontmp__10;
			NI T150_;
			NI res_6;
			i_14 = (NI)0;
			colontmp__10 = (NI)0;
			T150_ = (NI)0;
			T150_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__10 = (NI)(T150_ - ((NI) 1));
			res_6 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_3;
					NI L;
					if (!(res_6 <= colontmp__10)) goto LA152;
					i_14 = res_6;
					a_3 = (*n)._Ukind.S6.sons->data[i_14];
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a_3, ((NI) 1), (*(*c).graph).config);
					L = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a_3);
					{
						NI j;
						NI colontmp__11;
						NI res_7;
						j = (NI)0;
						colontmp__11 = (NI)0;
						colontmp__11 = (NI)(L - ((NI) 2));
						res_7 = ((NI) 0);
						{
							while (1) {
								if (!(res_7 <= colontmp__11)) goto LA155;
								j = res_7;
								asgnRefNoCycle((void**) (&(*a_3)._Ukind.S6.sons->data[j]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_3)._Ukind.S6.sons->data[j], flags, ctx));
								res_7 += ((NI) 1);
							} LA155: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a_3)._Ukind.S6.sons->data[(NI)(L - ((NI) 1))]), semGenericStmtScope_KTgYfJqnXmLWnl7vvw9c2lA_3(c, (*a_3)._Ukind.S6.sons->data[(NI)(L - ((NI) 1))], flags, ctx));
					res_6 += ((NI) 1);
				} LA152: ;
			}
		}
		closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 94):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 95):
	{
		NI L_2;
		tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T157_;
		tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T161_;
		L_2 = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		T157_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
		T157_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[(NI)(L_2 - ((NI) 2))]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[(NI)(L_2 - ((NI) 2))], flags, ctx));
		{
			NI i_15;
			NI colontmp__12;
			NI res_8;
			i_15 = (NI)0;
			colontmp__12 = (NI)0;
			colontmp__12 = (NI)(L_2 - ((NI) 3));
			res_8 = ((NI) 0);
			{
				while (1) {
					if (!(res_8 <= colontmp__12)) goto LA160;
					i_15 = res_8;
					addTempDecl_ZGxWSZNSlj0lQFGwU8y5Eg(c, (*n)._Ukind.S6.sons->data[i_15], ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 21));
					res_8 += ((NI) 1);
				} LA160: ;
			}
		}
		T161_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
		T161_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[(NI)(L_2 - ((NI) 1))]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[(NI)(L_2 - ((NI) 1))], flags, ctx));
		closeScope_q62Ixzqzx2R5yeGMamw81g(c);
		closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 127):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 129):
	{
		tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T163_;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
		T163_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
		T163_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA166_;
			addTempDecl_ZGxWSZNSlj0lQFGwU8y5Eg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 22));
		}
		LA166_: ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[((NI) 1)], flags, ctx));
		closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 106):
	{
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 2), (*(*c).graph).config);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semGenericStmtScope_KTgYfJqnXmLWnl7vvw9c2lA_3(c, (*n)._Ukind.S6.sons->data[((NI) 0)], flags, ctx));
		{
			NI i_16;
			NI colontmp__13;
			NI T170_;
			NI res_9;
			i_16 = (NI)0;
			colontmp__13 = (NI)0;
			T170_ = (NI)0;
			T170_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__13 = (NI)(T170_ - ((NI) 1));
			res_9 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_4;
					NI L_3;
					tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T173_;
					if (!(res_9 <= colontmp__13)) goto LA172;
					i_16 = res_9;
					a_4 = (*n)._Ukind.S6.sons->data[i_16];
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a_4, ((NI) 1), (*(*c).graph).config);
					L_3 = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a_4);
					T173_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
					T173_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
					{
						NI j_2;
						NI colontmp__14;
						NI res_10;
						j_2 = (NI)0;
						colontmp__14 = (NI)0;
						colontmp__14 = (NI)(L_3 - ((NI) 2));
						res_10 = ((NI) 0);
						{
							while (1) {
								if (!(res_10 <= colontmp__14)) goto LA176;
								j_2 = res_10;
								{
									NIM_BOOL T179_;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T182_;
									T179_ = (NIM_BOOL)0;
									T179_ = isInfixAs_63pt39coF5C8JoG0utNnwWg_2((*a_4)._Ukind.S6.sons->data[j_2]);
									if (!T179_) goto LA180_;
									T182_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
									T182_ = getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7(c, (*(*a_4)._Ukind.S6.sons->data[j_2])._Ukind.S6.sons->data[((NI) 2)]);
									addTempDecl_ZGxWSZNSlj0lQFGwU8y5Eg(c, T182_, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 9));
									asgnRefNoCycle((void**) (&(*(*a_4)._Ukind.S6.sons->data[j_2])._Ukind.S6.sons->data[((NI) 1)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*(*a_4)._Ukind.S6.sons->data[j_2])._Ukind.S6.sons->data[((NI) 1)], (flags | 2), ctx));
								}
								goto LA177_;
								LA180_: ;
								{
									asgnRefNoCycle((void**) (&(*a_4)._Ukind.S6.sons->data[j_2]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_4)._Ukind.S6.sons->data[j_2], (flags | 2), ctx));
								}
								LA177_: ;
								res_10 += ((NI) 1);
							} LA176: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a_4)._Ukind.S6.sons->data[(NI)(L_3 - ((NI) 1))]), semGenericStmtScope_KTgYfJqnXmLWnl7vvw9c2lA_3(c, (*a_4)._Ukind.S6.sons->data[(NI)(L_3 - ((NI) 1))], flags, ctx));
					closeScope_q62Ixzqzx2R5yeGMamw81g(c);
					res_9 += ((NI) 1);
				} LA172: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 100):
	{
		{
			NI i_17;
			NI colontmp__15;
			NI T186_;
			NI res_11;
			i_17 = (NI)0;
			colontmp__15 = (NI)0;
			T186_ = (NI)0;
			T186_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__15 = (NI)(T186_ - ((NI) 1));
			res_11 = ((NI) 0);
			{
				while (1) {
					if (!(res_11 <= colontmp__15)) goto LA188;
					i_17 = res_11;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_5;
						NI L_4;
						a_5 = (*n)._Ukind.S6.sons->data[i_17];
						{
							if (!((*a_5).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA192_;
							goto LA189;
						}
						LA192_: ;
						{
							NIM_BOOL T196_;
							T196_ = (NIM_BOOL)0;
							T196_ = !(((*a_5).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35)));
							if (!(T196_)) goto LA197_;
							T196_ = !(((*a_5).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36)));
							LA197_: ;
							if (!T196_) goto LA198_;
							illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a_5, (*(*c).graph).config);
						}
						LA198_: ;
						checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a_5, ((NI) 3), (*(*c).graph).config);
						L_4 = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a_5);
						asgnRefNoCycle((void**) (&(*a_5)._Ukind.S6.sons->data[(NI)(L_4 - ((NI) 2))]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_5)._Ukind.S6.sons->data[(NI)(L_4 - ((NI) 2))], (flags | 2), ctx));
						asgnRefNoCycle((void**) (&(*a_5)._Ukind.S6.sons->data[(NI)(L_4 - ((NI) 1))]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_5)._Ukind.S6.sons->data[(NI)(L_4 - ((NI) 1))], flags, ctx));
						{
							NI j_3;
							NI colontmp__16;
							NI res_12;
							j_3 = (NI)0;
							colontmp__16 = (NI)0;
							colontmp__16 = (NI)(L_4 - ((NI) 3));
							res_12 = ((NI) 0);
							{
								while (1) {
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T203_;
									if (!(res_12 <= colontmp__16)) goto LA202;
									j_3 = res_12;
									T203_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
									T203_ = getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7(c, (*a_5)._Ukind.S6.sons->data[j_3]);
									addTempDecl_ZGxWSZNSlj0lQFGwU8y5Eg(c, T203_, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 8));
									res_12 += ((NI) 1);
								} LA202: ;
							}
						}
					} LA189: ;
					res_11 += ((NI) 1);
				} LA188: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 75):
	{
		{
			NI i_18;
			NI colontmp__17;
			NI T206_;
			NI res_13;
			i_18 = (NI)0;
			colontmp__17 = (NI)0;
			T206_ = (NI)0;
			T206_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__17 = (NI)(T206_ - ((NI) 1));
			res_13 = ((NI) 0);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_6;
					NI L_5;
					if (!(res_13 <= colontmp__17)) goto LA208;
					i_18 = res_13;
					a_6 = (*n)._Ukind.S6.sons->data[i_18];
					{
						if (!!(((*a_6).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35)))) goto LA211_;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a_6, (*(*c).graph).config);
					}
					LA211_: ;
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a_6, ((NI) 3), (*(*c).graph).config);
					L_5 = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a_6);
					asgnRefNoCycle((void**) (&(*a_6)._Ukind.S6.sons->data[(NI)(L_5 - ((NI) 2))]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_6)._Ukind.S6.sons->data[(NI)(L_5 - ((NI) 2))], (flags | 2), ctx));
					{
						NI j_4;
						NI colontmp__18;
						NI res_14;
						j_4 = (NI)0;
						colontmp__18 = (NI)0;
						colontmp__18 = (NI)(L_5 - ((NI) 3));
						res_14 = ((NI) 0);
						{
							while (1) {
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T216_;
								if (!(res_14 <= colontmp__18)) goto LA215;
								j_4 = res_14;
								T216_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								T216_ = getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7(c, (*a_6)._Ukind.S6.sons->data[j_4]);
								addTempDecl_ZGxWSZNSlj0lQFGwU8y5Eg(c, T216_, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7));
								res_14 += ((NI) 1);
							} LA215: ;
						}
					}
					res_13 += ((NI) 1);
				} LA208: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 101):
	{
		{
			NI i_19;
			NI colontmp__19;
			NI T219_;
			NI res_15;
			i_19 = (NI)0;
			colontmp__19 = (NI)0;
			T219_ = (NI)0;
			T219_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__19 = (NI)(T219_ - ((NI) 1));
			res_15 = ((NI) 0);
			{
				while (1) {
					if (!(res_15 <= colontmp__19)) goto LA221;
					i_19 = res_15;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_7;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T231_;
						a_7 = (*n)._Ukind.S6.sons->data[i_19];
						{
							if (!((*a_7).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA225_;
							goto LA222;
						}
						LA225_: ;
						{
							if (!!(((*a_7).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 102)))) goto LA229_;
							illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a_7, (*(*c).graph).config);
						}
						LA229_: ;
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(a_7, ((NI) 3), (*(*c).graph).config);
						T231_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T231_ = getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7(c, (*a_7)._Ukind.S6.sons->data[((NI) 0)]);
						addTempDecl_ZGxWSZNSlj0lQFGwU8y5Eg(c, T231_, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 10));
						asgnRefNoCycle((void**) (&(*a_7)._Ukind.S6.sons->data[((NI) 1)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_7)._Ukind.S6.sons->data[((NI) 1)], (flags | 2), ctx));
						asgnRefNoCycle((void**) (&(*a_7)._Ukind.S6.sons->data[((NI) 2)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_7)._Ukind.S6.sons->data[((NI) 2)], flags, ctx));
					} LA222: ;
					res_15 += ((NI) 1);
				} LA221: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	{
		{
			NI i_20;
			NI colontmp__20;
			NI T234_;
			NI res_16;
			i_20 = (NI)0;
			colontmp__20 = (NI)0;
			T234_ = (NI)0;
			T234_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__20 = (NI)(T234_ - ((NI) 1));
			res_16 = ((NI) 0);
			{
				while (1) {
					if (!(res_16 <= colontmp__20)) goto LA236;
					i_20 = res_16;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_8;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T246_;
						a_8 = (*n)._Ukind.S6.sons->data[i_20];
						{
							if (!((*a_8).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA240_;
							goto LA237;
						}
						LA240_: ;
						{
							if (!!(((*a_8).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 103)))) goto LA244_;
							illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a_8, (*(*c).graph).config);
						}
						LA244_: ;
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(a_8, ((NI) 3), (*(*c).graph).config);
						T246_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T246_ = getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7(c, (*a_8)._Ukind.S6.sons->data[((NI) 0)]);
						addTempDecl_ZGxWSZNSlj0lQFGwU8y5Eg(c, T246_, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7));
					} LA237: ;
					res_16 += ((NI) 1);
				} LA236: ;
			}
		}
		{
			NI i_21;
			NI colontmp__21;
			NI T248_;
			NI res_17;
			i_21 = (NI)0;
			colontmp__21 = (NI)0;
			T248_ = (NI)0;
			T248_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__21 = (NI)(T248_ - ((NI) 1));
			res_17 = ((NI) 0);
			{
				while (1) {
					if (!(res_17 <= colontmp__21)) goto LA250;
					i_21 = res_17;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_9;
						a_9 = (*n)._Ukind.S6.sons->data[i_21];
						{
							if (!((*a_9).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA254_;
							goto LA251;
						}
						LA254_: ;
						{
							if (!!(((*a_9).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 103)))) goto LA258_;
							illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a_9, (*(*c).graph).config);
						}
						LA258_: ;
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(a_9, ((NI) 3), (*(*c).graph).config);
						{
							tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T264_;
							if (!!(((*(*a_9)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA262_;
							T264_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
							T264_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
							asgnRefNoCycle((void**) (&(*a_9)._Ukind.S6.sons->data[((NI) 1)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_9)._Ukind.S6.sons->data[((NI) 1)], flags, ctx));
							asgnRefNoCycle((void**) (&(*a_9)._Ukind.S6.sons->data[((NI) 2)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_9)._Ukind.S6.sons->data[((NI) 2)], (flags | 2), ctx));
							closeScope_q62Ixzqzx2R5yeGMamw81g(c);
						}
						goto LA260_;
						LA262_: ;
						{
							asgnRefNoCycle((void**) (&(*a_9)._Ukind.S6.sons->data[((NI) 2)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_9)._Ukind.S6.sons->data[((NI) 2)], (flags | 2), ctx));
						}
						LA260_: ;
					} LA251: ;
					res_17 += ((NI) 1);
				} LA250: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 150):
	{
		{
			NI T269_;
			T269_ = (NI)0;
			T269_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			if (!(((NI) 0) < T269_)) goto LA270_;
			{
				if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA274_;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[((NI) 0)], (flags | 2), ctx));
			}
			LA274_: ;
			{
				NI i_22;
				NI colontmp__22;
				NI T277_;
				NI res_18;
				i_22 = (NI)0;
				colontmp__22 = (NI)0;
				T277_ = (NI)0;
				T277_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
				colontmp__22 = (NI)(T277_ - ((NI) 1));
				res_18 = ((NI) 1);
				{
					while (1) {
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_10;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T283_;
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T284_;
						if (!(res_18 <= colontmp__22)) goto LA279;
						i_22 = res_18;
						a_10 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						switch ((*(*n)._Ukind.S6.sons->data[i_22]).kind) {
						case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 151):
						{
							a_10 = (*(*n)._Ukind.S6.sons->data[i_22])._Ukind.S6.sons->data[((NI) 0)];
						}
						break;
						case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
						{
							a_10 = (*n)._Ukind.S6.sons->data[i_22];
						}
						break;
						default:
						{
							illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
						}
						break;
						}
						T283_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T283_ = getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7(c, a_10);
						T284_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
						T284_ = newSymS_sxL9bg3I9cVytmWlUkzsHDaA_2(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 0), T283_, c);
						addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, T284_);
						res_18 += ((NI) 1);
					} LA279: ;
				}
			}
		}
		LA270_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 133):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 134):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 135):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 76):
	{
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 1), (*(*c).graph).config);
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA289_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[((NI) 0)], (flags | 2), ctx));
		}
		LA289_: ;
		{
			NI i_23;
			NI colontmp__23;
			NI T292_;
			NI res_19;
			i_23 = (NI)0;
			colontmp__23 = (NI)0;
			T292_ = (NI)0;
			T292_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__23 = (NI)(T292_ - ((NI) 1));
			res_19 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_11;
					NI L_6;
					if (!(res_19 <= colontmp__23)) goto LA294;
					i_23 = res_19;
					a_11 = (*n)._Ukind.S6.sons->data[i_23];
					{
						if (!!(((*a_11).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35)))) goto LA297_;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a_11, (*(*c).graph).config);
					}
					LA297_: ;
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a_11, ((NI) 3), (*(*c).graph).config);
					L_6 = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a_11);
					asgnRefNoCycle((void**) (&(*a_11)._Ukind.S6.sons->data[(NI)(L_6 - ((NI) 2))]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_11)._Ukind.S6.sons->data[(NI)(L_6 - ((NI) 2))], (flags | 2), ctx));
					asgnRefNoCycle((void**) (&(*a_11)._Ukind.S6.sons->data[(NI)(L_6 - ((NI) 1))]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*a_11)._Ukind.S6.sons->data[(NI)(L_6 - ((NI) 1))], flags, ctx));
					{
						NI j_5;
						NI colontmp__24;
						NI res_20;
						j_5 = (NI)0;
						colontmp__24 = (NI)0;
						colontmp__24 = (NI)(L_6 - ((NI) 3));
						res_20 = ((NI) 0);
						{
							while (1) {
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T302_;
								if (!(res_20 <= colontmp__24)) goto LA301;
								j_5 = res_20;
								T302_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								T302_ = getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7(c, (*a_11)._Ukind.S6.sons->data[j_5]);
								addTempDecl_ZGxWSZNSlj0lQFGwU8y5Eg(c, T302_, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
								res_20 += ((NI) 1);
							} LA301: ;
						}
					}
					res_19 += ((NI) 1);
				} LA294: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 80):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 82):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	{
		tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T309_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 7), (*(*c).graph).config);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T308_;
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA306_;
			T308_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T308_ = getIdentNode_U3qPBy54f1PkCP8vmFMCRA_7(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
			addTempDecl_ZGxWSZNSlj0lQFGwU8y5Eg(c, T308_, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12));
		}
		LA306_: ;
		T309_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
		T309_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 2)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[((NI) 2)], flags, ctx));
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 3)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA312_;
			{
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T318_;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T319_;
				if (!!(((*(*(*n)._Ukind.S6.sons->data[((NI) 3)])._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA316_;
				T318_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T318_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_44));
				T319_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
				T319_ = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 0), T318_, NIM_NIL, (*n).info, 0);
				addPrelimDecl_uYeViz1Olm4OBLjqZ4nggg(c, T319_);
			}
			LA316_: ;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 3)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[((NI) 3)], flags, ctx));
		}
		LA312_: ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 4)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[((NI) 4)], flags, ctx));
		body = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_3;
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA322_;
			s_3 = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
			{
				NIM_BOOL T326_;
				T326_ = (NIM_BOOL)0;
				T326_ = (((*s_3).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0);
				if (!(T326_)) goto LA327_;
				T326_ = ((*s_3).ast == NIM_NIL);
				LA327_: ;
				if (!T326_) goto LA328_;
				body = (*n)._Ukind.S6.sons->data[((NI) 6)];
			}
			goto LA324_;
			LA328_: ;
			{
				body = (*(*s_3).ast)._Ukind.S6.sons->data[((NI) 6)];
			}
			LA324_: ;
		}
		goto LA320_;
		LA322_: ;
		{
			body = (*n)._Ukind.S6.sons->data[((NI) 6)];
		}
		LA320_: ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), semGenericStmtScope_KTgYfJqnXmLWnl7vvw9c2lA_3(c, body, flags, ctx));
		closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 90):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 33):
	{
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 2), (*(*c).graph).config);
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[((NI) 1)], flags, ctx));
	}
	break;
	default:
	{
		{
			NI i_24;
			NI colontmp__25;
			NI T336_;
			NI res_21;
			i_24 = (NI)0;
			colontmp__25 = (NI)0;
			T336_ = (NI)0;
			T336_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__25 = (NI)(T336_ - ((NI) 1));
			res_21 = ((NI) 0);
			{
				while (1) {
					if (!(res_21 <= colontmp__25)) goto LA338;
					i_24 = res_21;
					asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i_24]), semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, (*n)._Ukind.S6.sons->data[i_24], flags, ctx));
					res_21 += ((NI) 1);
				} LA338: ;
			}
		}
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semGenericStmt_U3qPBy54f1PkCP8vmFMCRA_6)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w ctx;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&ctx), sizeof(tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&ctx.toMixin));
	result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, n, 0, (&ctx));
	return result;
}
static N_NIMCALL(void, Marker_tyRef_paG7yT9agkyGNp6RxMDoUcA)(void* p, NI op) {
	tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw* a;
	a = (tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw*)p;
	nimGCvisit((void*)(*a).genericParams1, op);
	nimGCvisit((void*)(*a).paramName2, op);
}

N_LIB_PRIVATE N_CLOSURE(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, addImplicitGenericImpl_JrXpyd9ar3u9cWwYh004SRbA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeClass, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typId, void* ClE_0) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw* colonenvP_;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* finalTypId;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T32_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T33_;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	colonenvP_ = (tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw*) ClE_0;
	{
		if (!((*colonenvP_).genericParams1 == NIM_NIL)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		if (!!((typId == NIM_NIL))) goto LA7_;
		finalTypId = typId;
	}
	goto LA5_;
	LA7_: ;
	{
		NimStringDesc* T10_;
		T10_ = (NimStringDesc*)0;
		T10_ = rawNewString(((*colonenvP_).paramName2 ? (*colonenvP_).paramName2->Sup.len : 0) + 5);
appendString(T10_, (*colonenvP_).paramName2);
appendString(T10_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_67));
		finalTypId = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, T10_);
	}
	LA5_: ;
	{
		NI i;
		NI colontmp_;
		NI T12_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T12_ = (NI)0;
		T12_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*colonenvP_).genericParams1);
		colontmp_ = (NI)(T12_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA14;
				i = res;
				{
					if (!((*(*(*(*(*colonenvP_).genericParams1)._Ukind.S6.sons->data[i])._Ukind.S4.sym).name).Sup.id == (*finalTypId).Sup.id)) goto LA17_;
					result = (*(*(*colonenvP_).genericParams1)._Ukind.S6.sons->data[i]).typ;
					goto BeforeRet_;
				}
				LA17_: ;
				res += ((NI) 1);
			} LA14: ;
		}
	}
	{
		if (!!(((*typeClass).sym == NIM_NIL))) goto LA21_;
		owner = (*typeClass).sym;
	}
	goto LA19_;
	LA21_: ;
	{
		owner = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
	}
	LA19_: ;
	s = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7), finalTypId, owner, (*colonenvP_).info3, 0);
	{
		if (!(((*owner).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 20))&63U)))!=0)) goto LA26_;
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 20))%(sizeof(NU64)*8));
	}
	LA26_: ;
	{
		if (!(typId == NIM_NIL)) goto LA30_;
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 30))%(sizeof(NU64)*8));
	}
	LA30_: ;
	T32_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T32_ = linkTo_4qP0auPrvljCknknx42YWA(s, typeClass);
	(*typeClass).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 25))%(sizeof(NU64)*8));
	(*s).position = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*colonenvP_).genericParams1);
	T33_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T33_ = newSymNode_UWZXukHA5As9aCftRHbafBg(s);
	addSon_gCCf68XrWL79bKes6htzFjQ_2((*colonenvP_).genericParams1, T33_);
	result = typeClass;
	addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, s);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, instGenericContainer_pqNRK9bvN0hfgmWeHuyytbQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* header, NIM_BOOL allowMetaTypes) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA typeMap;
	tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg cl;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T6_;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* genericTyp;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NimStringDesc* T5_;
		if (!!(((*header).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9)))) goto LA3_;
		T5_ = (NimStringDesc*)0;
		T5_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_76);
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T5_);
	}
	LA3_: ;
	nimZeroMem((void*)(&typeMap), sizeof(tyObject_LayeredIdTable_Dxk9cFa3Fer9bZpQ9b4aBAFkA));
	nimZeroMem((void*)(&cl), sizeof(tyObject_TReplTypeVars_gMP9b9b8d4Uze3mE5G9aP9afmg));
	initIdTable_9cUS2oaKn1IFXKjLdglPZHQ((&cl.symMap));
	initIdTable_9cUS2oaKn1IFXKjLdglPZHQ((&cl.localCache));
	initIdTable_9cUS2oaKn1IFXKjLdglPZHQ((&typeMap.topLayer));
	cl.typeMap = (&typeMap);
	cl.info = info;
	cl.c = c;
	cl.allowMetaTypes = allowMetaTypes;
	T6_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T6_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	genericTyp = base_BFFuB9cFDZ89c6QWZqEFAtdA(header);
	{
		NI i;
		NI colontmp_;
		NI T8_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T8_ = (NI)0;
		T8_ = len_SWFNCiWYB89bTUPh5KptkvA_2(genericTyp);
		colontmp_ = (NI)(T8_ - ((NI) 2));
		res = ((NI) 0);
		{
			while (1) {
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* genParam;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param;
				if (!(res <= colontmp_)) goto LA10;
				i = res;
				genParam = (*genericTyp).sons->data[i];
				param = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
				{
					if (!((*genParam).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA13_;
					param = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 10), (*(*genParam).sym).name, (*genericTyp).sym, (*(*genParam).sym).info, 0);
					asgnRefNoCycle((void**) (&(*param).ast), (*(*header).sons->data[(NI)(i + ((NI) 1))]).n);
					asgnRefNoCycle((void**) (&(*param).typ), (*header).sons->data[(NI)(i + ((NI) 1))]);
				}
				goto LA11_;
				LA13_: ;
				{
					param = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7), (*(*genParam).sym).name, (*genericTyp).sym, (*(*genParam).sym).info, 0);
					asgnRefNoCycle((void**) (&(*param).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, (*header).sons->data[(NI)(i + ((NI) 1))]));
				}
				LA11_: ;
				(*param).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
				addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, param);
				res += ((NI) 1);
			} LA10: ;
		}
	}
	result = replaceTypeVarsT_cNsAY9aO2v1oTCPqZyHga1w((&cl), header);
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw procKind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* genericParams, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* paramType, NimStringDesc* paramName, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NIM_BOOL anon) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw* colonenv_;
	NimStringDesc* T1_;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* paramTypId;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	colonenv_ = (tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw*)0;
	colonenv_ = (tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw*) newObj((&NTI_paG7yT9agkyGNp6RxMDoUcA_), sizeof(tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw));
	(*colonenv_).Sup.m_type = (&NTI_2W3DPUTABI9bVr5s0HjtwQw_);
	asgnRefNoCycle((void**) (&(*colonenv_).genericParams1), genericParams);
	T1_ = (NimStringDesc*)0;
	T1_ = (*colonenv_).paramName2; (*colonenv_).paramName2 = copyStringRC1(paramName);
	if (T1_) nimGCunrefNoCycle(T1_);
	(*colonenv_).info3 = info;
	{
		if (!(paramType == NIM_NIL)) goto LA4_;
		goto BeforeRet_;
	}
	LA4_: ;
	{
		NIM_BOOL T8_;
		T8_ = (NIM_BOOL)0;
		T8_ = !(anon);
		if (!(T8_)) goto LA9_;
		T8_ = !(((*paramType).sym == NIM_NIL));
		LA9_: ;
		if (!T8_) goto LA10_;
		paramTypId = (*(*paramType).sym).name;
	}
	goto LA6_;
	LA10_: ;
	{
		paramTypId = NIM_NIL;
	}
	LA6_: ;
	switch ((*paramType).kind) {
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 59):
	{
		tyProc_deQGUDmtZfoSYMATIh4XqQ T14_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T15_;
		nimZeroMem((void*)(&T14_), sizeof(tyProc_deQGUDmtZfoSYMATIh4XqQ));
		T14_.ClP_0 = addImplicitGenericImpl_JrXpyd9ar3u9cWwYh004SRbA; T14_.ClE_0 = colonenv_;
		T15_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T15_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12), c);
		result = T14_.ClE_0? T14_.ClP_0(c, T15_, NIM_NIL, T14_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_68)(T14_.ClP_0))(c, T15_, NIM_NIL);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lifted;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T28_;
		tyProc_deQGUDmtZfoSYMATIh4XqQ T41_;
		tySequence_Ef05srmQTDulnBdXR4Ja6Q* T42_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T43_;
		{
			NIM_BOOL T19_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T20_;
			T19_ = (NIM_BOOL)0;
			T20_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T20_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(paramType);
			T19_ = !(((*T20_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0)));
			if (!(T19_)) goto LA21_;
			T19_ = !(((*paramType).n == NIM_NIL));
			LA21_: ;
			if (!T19_) goto LA22_;
			goto BeforeRet_;
		}
		LA22_: ;
		{
			if (!(((*paramType).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0)) goto LA26_;
			goto BeforeRet_;
		}
		LA26_: ;
		T28_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T28_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(paramType);
		lifted = liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg(c, procKind, (*colonenv_).genericParams1, T28_, (*colonenv_).paramName2, (*colonenv_).info3, NIM_FALSE);
		{
			if (!!((lifted == NIM_NIL))) goto LA31_;
			base = lifted;
		}
		goto LA29_;
		LA31_: ;
		{
			base = base_BFFuB9cFDZ89c6QWZqEFAtdA(paramType);
		}
		LA29_: ;
		{
			NIM_BOOL T36_;
			NimStringDesc* T40_;
			T36_ = (NIM_BOOL)0;
			T36_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw(base);
			if (!(T36_)) goto LA37_;
			T36_ = (procKind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17));
			LA37_: ;
			if (!T36_) goto LA38_;
			T40_ = (NimStringDesc*)0;
			T40_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_69), (*colonenv_).paramName2);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*colonenv_).info3, T40_);
		}
		LA38_: ;
		nimZeroMem((void*)(&T41_), sizeof(tyProc_deQGUDmtZfoSYMATIh4XqQ));
		T41_.ClP_0 = addImplicitGenericImpl_JrXpyd9ar3u9cWwYh004SRbA; T41_.ClE_0 = colonenv_;
		T42_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
		T42_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
		asgnRefNoCycle((void**) (&T42_->data[0]), base);
		T43_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T43_ = newTypeWithSons_9aJU4B1fwkaTke7gv1KDkuQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60), T42_);
		result = T41_.ClE_0? T41_.ClP_0(c, T43_, paramTypId, T41_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_70)(T41_.ClP_0))(c, T43_, paramTypId);
		{
			if (!!((result == NIM_NIL))) goto LA46_;
			(*result).flags = ((*result).flags | 8389120);
		}
		LA46_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8):
	{
		{
			tyProc_deQGUDmtZfoSYMATIh4XqQ T63_;
			tySequence_Ef05srmQTDulnBdXR4Ja6Q* T64_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T65_;
			if (!!((((*paramType).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0))) goto LA51_;
			{
				NIM_BOOL T55_;
				NIM_BOOL T56_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T57_;
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T60_;
				T55_ = (NIM_BOOL)0;
				T56_ = (NIM_BOOL)0;
				T57_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T57_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(paramType);
				T56_ = ((*T57_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0));
				if (!(T56_)) goto LA58_;
				T56_ = !((paramTypId == NIM_NIL));
				LA58_: ;
				T55_ = T56_;
				if (!(T55_)) goto LA59_;
				T60_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T60_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_71));
				T55_ = ((*paramTypId).Sup.id == (*T60_).Sup.id);
				LA59_: ;
				if (!T55_) goto LA61_;
				paramTypId = NIM_NIL;
			}
			LA61_: ;
			nimZeroMem((void*)(&T63_), sizeof(tyProc_deQGUDmtZfoSYMATIh4XqQ));
			T63_.ClP_0 = addImplicitGenericImpl_JrXpyd9ar3u9cWwYh004SRbA; T63_.ClE_0 = colonenv_;
			T64_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
			T64_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
			asgnRefNoCycle((void**) (&T64_->data[0]), base_BFFuB9cFDZ89c6QWZqEFAtdA(paramType));
			T65_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T65_ = newTypeWithSons_9aJU4B1fwkaTke7gv1KDkuQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8), T64_);
			result = T63_.ClE_0? T63_.ClP_0(c, T65_, paramTypId, T63_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_72)(T63_.ClP_0))(c, T65_, paramTypId);
		}
		LA51_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13):
	{
		{
			NI T69_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T72_;
			T69_ = (NI)0;
			T69_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(paramType);
			if (!(T69_ == ((NI) 1))) goto LA70_;
			T72_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T72_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(paramType);
			result = liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg(c, procKind, (*colonenv_).genericParams1, T72_, (*colonenv_).paramName2, (*colonenv_).info3, NIM_TRUE);
		}
		LA70_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T74_;
		T74_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T74_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(paramType);
		result = liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg(c, procKind, (*colonenv_).genericParams1, T74_, (*colonenv_).paramName2, (*colonenv_).info3, NIM_FALSE);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25):
	{
		{
			NIM_BOOL T78_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T80_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
			tySequence_Ef05srmQTDulnBdXR4Ja6Q* T83_;
			tyProc_deQGUDmtZfoSYMATIh4XqQ T84_;
			T78_ = (NIM_BOOL)0;
			T78_ = ((*paramType).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24));
			if (!(T78_)) goto LA79_;
			T80_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T80_ = lastSon_ab52xel9cFebv9am0xV04xXA(paramType);
			T78_ = ((*T80_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0));
			LA79_: ;
			if (!T78_) goto LA81_;
			T83_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
			T83_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
			asgnRefNoCycle((void**) (&T83_->data[0]), newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ((*paramType).kind, c));
			typ = newTypeWithSons_9aJU4B1fwkaTke7gv1KDkuQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 51), T83_);
			nimZeroMem((void*)(&T84_), sizeof(tyProc_deQGUDmtZfoSYMATIh4XqQ));
			T84_.ClP_0 = addImplicitGenericImpl_JrXpyd9ar3u9cWwYh004SRbA; T84_.ClE_0 = colonenv_;
			result = T84_.ClE_0? T84_.ClP_0(c, typ, paramTypId, T84_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_73)(T84_.ClP_0))(c, typ, paramTypId);
		}
		goto LA76_;
		LA81_: ;
		{
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = len_SWFNCiWYB89bTUPh5KptkvA_2(paramType);
				i_2 = ((NI) 0);
				{
					while (1) {
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lifted_2;
						if (!(i_2 < colontmp_)) goto LA88;
						i = i_2;
						{
							NimStringDesc* T93_;
							NimStringDesc* T94_;
							if (!((*paramType).sons->data[i] == paramType)) goto LA91_;
							T93_ = (NimStringDesc*)0;
							T93_ = typeToString_QlvraUan7WbHowhAbvDvdA(paramType, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
							T94_ = (NimStringDesc*)0;
							T94_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_74), T93_);
							globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, (*colonenv_).info3, T94_);
						}
						LA91_: ;
						lifted_2 = liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg(c, procKind, (*colonenv_).genericParams1, (*paramType).sons->data[i], (*colonenv_).paramName2, (*colonenv_).info3, NIM_FALSE);
						{
							if (!!((lifted_2 == NIM_NIL))) goto LA97_;
							asgnRefNoCycle((void**) (&(*paramType).sons->data[i]), lifted_2);
							result = paramType;
						}
						LA97_: ;
						i_2 += ((NI) 1);
					} LA88: ;
				}
			}
		}
		LA76_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x;
		tySequence_Ef05srmQTDulnBdXR4Ja6Q* T117_;
		tyProc_deQGUDmtZfoSYMATIh4XqQ T118_;
		result = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9), c);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, paramType);
		{
			NI i_3;
			NI colontmp__2;
			NI T101_;
			NI res;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			T101_ = (NI)0;
			T101_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(paramType);
			colontmp__2 = (NI)(T101_ - ((NI) 2));
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp__2)) goto LA103;
					i_3 = res;
					{
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* staticCopy;
						if (!((*(*paramType).sons->data[i_3]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA106_;
						staticCopy = exactReplica_zecSxwTB9b7tzlmEEfD4RCQ((*paramType).sons->data[i_3]);
						(*staticCopy).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 26))%(sizeof(NU64)*8));
						rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, staticCopy);
					}
					goto LA104_;
					LA106_: ;
					{
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T109_;
						T109_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
						T109_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 59), c);
						rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, T109_);
					}
					LA104_: ;
					res += ((NI) 1);
				} LA103: ;
			}
		}
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T112_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T115_;
			tyProc_deQGUDmtZfoSYMATIh4XqQ T116_;
			T112_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T112_ = lastSon_ab52xel9cFebv9am0xV04xXA(paramType);
			if (!((*T112_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52))) goto LA113_;
			(*result).kind = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53);
			T115_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T115_ = lastSon_ab52xel9cFebv9am0xV04xXA(paramType);
			rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, T115_);
			nimZeroMem((void*)(&T116_), sizeof(tyProc_deQGUDmtZfoSYMATIh4XqQ));
			T116_.ClP_0 = addImplicitGenericImpl_JrXpyd9ar3u9cWwYh004SRbA; T116_.ClE_0 = colonenv_;
			result = T116_.ClE_0? T116_.ClP_0(c, result, paramTypId, T116_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_75)(T116_.ClP_0))(c, result, paramTypId);
			goto BeforeRet_;
		}
		LA113_: ;
		x = instGenericContainer_pqNRK9bvN0hfgmWeHuyytbQ(c, (*(*paramType).sym).info, result, NIM_TRUE);
		T117_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
		T117_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 2);
		asgnRefNoCycle((void**) (&T117_->data[0]), paramType);
		asgnRefNoCycle((void**) (&T117_->data[1]), x);
		result = newTypeWithSons_9aJU4B1fwkaTke7gv1KDkuQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54), T117_);
		nimZeroMem((void*)(&T118_), sizeof(tyProc_deQGUDmtZfoSYMATIh4XqQ));
		T118_.ClP_0 = addImplicitGenericImpl_JrXpyd9ar3u9cWwYh004SRbA; T118_.ClE_0 = colonenv_;
		result = T118_.ClE_0? T118_.ClP_0(c, result, paramTypId, T118_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_77)(T118_.ClP_0))(c, result, paramTypId);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* liftBody;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T141_;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T122_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* cp;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T125_;
			tyProc_deQGUDmtZfoSYMATIh4XqQ T126_;
			T122_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T122_ = lastSon_ab52xel9cFebv9am0xV04xXA(paramType);
			if (!((*T122_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52))) goto LA123_;
			T125_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
			T125_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
			cp = copyType_UkDKseEIJgQZ1cGmoQSskA(paramType, T125_, NIM_FALSE);
			(*cp).kind = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53);
			nimZeroMem((void*)(&T126_), sizeof(tyProc_deQGUDmtZfoSYMATIh4XqQ));
			T126_.ClP_0 = addImplicitGenericImpl_JrXpyd9ar3u9cWwYh004SRbA; T126_.ClE_0 = colonenv_;
			result = T126_.ClE_0? T126_.ClP_0(c, cp, paramTypId, T126_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_78)(T126_.ClP_0))(c, cp, paramTypId);
			goto BeforeRet_;
		}
		LA123_: ;
		{
			NI i_4;
			NI colontmp__3;
			NI T128_;
			NI res_2;
			i_4 = (NI)0;
			colontmp__3 = (NI)0;
			T128_ = (NI)0;
			T128_ = len_SWFNCiWYB89bTUPh5KptkvA_2(paramType);
			colontmp__3 = (NI)(T128_ - ((NI) 2));
			res_2 = ((NI) 1);
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lifted_3;
					if (!(res_2 <= colontmp__3)) goto LA130;
					i_4 = res_2;
					lifted_3 = liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg(c, procKind, (*colonenv_).genericParams1, (*paramType).sons->data[i_4], (*colonenv_).paramName2, (*colonenv_).info3, NIM_FALSE);
					{
						if (!!((lifted_3 == NIM_NIL))) goto LA133_;
						asgnRefNoCycle((void**) (&(*paramType).sons->data[i_4]), lifted_3);
						result = paramType;
						{
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T137_;
							NimStringDesc* T140_;
							T137_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
							T137_ = lastSon_ab52xel9cFebv9am0xV04xXA(result);
							if (!!((((*T137_).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 20))&63U)))!=0))) goto LA138_;
							T140_ = (NimStringDesc*)0;
							T140_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_79);
							internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T140_);
						}
						LA138_: ;
					}
					LA133_: ;
					res_2 += ((NI) 1);
				} LA130: ;
			}
		}
		T141_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T141_ = lastSon_ab52xel9cFebv9am0xV04xXA(paramType);
		liftBody = liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg(c, procKind, (*colonenv_).genericParams1, T141_, (*colonenv_).paramName2, (*colonenv_).info3, NIM_TRUE);
		{
			if (!!((liftBody == NIM_NIL))) goto LA144_;
			result = liftBody;
			{
				NimStringDesc* T150_;
				if (!!((((*result).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 20))&63U)))!=0))) goto LA148_;
				T150_ = (NimStringDesc*)0;
				T150_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_81);
				internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T150_);
			}
			LA148_: ;
		}
		LA144_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* body;
		{
			NI i_5;
			NI colontmp__4;
			NI i_6;
			i_5 = (NI)0;
			colontmp__4 = (NI)0;
			colontmp__4 = len_SWFNCiWYB89bTUPh5KptkvA_2(paramType);
			i_6 = ((NI) 1);
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lifted_4;
					if (!(i_6 < colontmp__4)) goto LA154;
					i_5 = i_6;
					lifted_4 = liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg(c, procKind, (*colonenv_).genericParams1, (*paramType).sons->data[i_5], (*colonenv_).paramName2, (*colonenv_).info3, NIM_FALSE);
					{
						if (!!((lifted_4 == NIM_NIL))) goto LA157_;
						asgnRefNoCycle((void**) (&(*paramType).sons->data[i_5]), lifted_4);
					}
					LA157_: ;
					i_6 += ((NI) 1);
				} LA154: ;
			}
		}
		body = base_BFFuB9cFDZ89c6QWZqEFAtdA(paramType);
		{
			if (!((*body).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 30))) goto LA161_;
			goto BeforeRet_;
		}
		LA161_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T165_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* expanded;
			T165_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T165_ = lastSon_ab52xel9cFebv9am0xV04xXA(body);
			if (!((*T165_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52))) goto LA166_;
			expanded = instGenericContainer_pqNRK9bvN0hfgmWeHuyytbQ(c, (*colonenv_).info3, paramType, NIM_TRUE);
			result = liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg(c, procKind, (*colonenv_).genericParams1, expanded, (*colonenv_).paramName2, (*colonenv_).info3, NIM_TRUE);
		}
		LA166_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 51):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 56):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 57):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 58):
	{
		tyProc_deQGUDmtZfoSYMATIh4XqQ T169_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T170_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T171_;
		nimZeroMem((void*)(&T169_), sizeof(tyProc_deQGUDmtZfoSYMATIh4XqQ));
		T169_.ClP_0 = addImplicitGenericImpl_JrXpyd9ar3u9cWwYh004SRbA; T169_.ClE_0 = colonenv_;
		T170_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T170_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
		T171_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T171_ = copyType_UkDKseEIJgQZ1cGmoQSskA(paramType, T170_, NIM_FALSE);
		result = T169_.ClE_0? T169_.ClP_0(c, T171_, paramTypId, T169_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_82)(T169_.ClP_0))(c, T171_, paramTypId);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12):
	{
		markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*colonenv_).info3, (*paramType).sym, &(*(*c).graph).usageSym);
		{
			if (!(((*paramType).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 29))&63U)))!=0)) goto LA175_;
			(*paramType).flags &= ~(((NU64)1) << ((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 29)) % (sizeof(NU64)*8)));
			(*(*paramType).sym).kind = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7);
		}
		LA175_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semProcTypeNode_Wwai8c2OJJtA0TZ9bSUtsXQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* genericParams, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, NIM_BOOL isType) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg check;
	NI counter;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* r;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 1), (*(*c).graph).config);
	result = newProcType_xLsbVleCb74T7Vl9aPE528w(c, (*n).info, prev);
	nimZeroMem((void*)(&check), sizeof(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&check));
	counter = ((NI) 0);
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* def;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* constraint;
					NI length;
					NIM_BOOL hasType;
					NIM_BOOL hasDefault;
					a = (*n)._Ukind.S6.sons->data[i];
					{
						if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35)))) goto LA8_;
						{
							NIM_BOOL T12_;
							T12_ = (NIM_BOOL)0;
							T12_ = ((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
							if (!(T12_)) goto LA13_;
							T12_ = (((*(*a)._Ukind.S4.sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0);
							LA13_: ;
							if (!T12_) goto LA14_;
							goto LA5;
						}
						LA14_: ;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a, (*(*c).graph).config);
					}
					LA8_: ;
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a, ((NI) 3), (*(*c).graph).config);
					typ = NIM_NIL;
					def = NIM_NIL;
					constraint = NIM_NIL;
					length = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a);
					hasType = !(((*(*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)));
					hasDefault = !(((*(*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)));
					{
						if (!hasType) goto LA18_;
						typ = semParamType_FHAQ9aLj19b2cX1BhYcNj4dQ(c, (*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))], &constraint);
					}
					LA18_: ;
					{
						NI T24_;
						if (!hasDefault) goto LA22_;
						T24_ = (NI)0;
						T24_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
						def = (*a)._Ukind.S6.sons->data[(NI)(T24_ - ((NI) 1))];
						{
							{
								NIM_BOOL T28_;
								NI T30_;
								T28_ = (NIM_BOOL)0;
								T28_ = !((genericParams == NIM_NIL));
								if (!(T28_)) goto LA29_;
								T30_ = (NI)0;
								T30_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(genericParams);
								T28_ = (((NI) 0) < T30_);
								LA29_: ;
								if (!T28_) goto LA31_;
								def = semGenericStmt_U3qPBy54f1PkCP8vmFMCRA_6(c, def);
								{
									NIM_BOOL T35_;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T38_;
									T35_ = (NIM_BOOL)0;
									T35_ = hasUnresolvedArgs_LeFS3Ufk6SguFjd3eMJWeg(c, def);
									if (!T35_) goto LA36_;
									T38_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
									T38_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(def);
									asgnRefNoCycle((void**) (&(*def).typ), makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ(c, T38_));
									goto LA25;
								}
								LA36_: ;
							}
							LA31_: ;
							def = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, def, 256);
							{
								tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T41_;
								NIM_BOOL T42_;
								T41_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
								T41_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
								T42_ = (NIM_BOOL)0;
								T42_ = referencesAnotherParam_VlKnd4KgnJiU0i03xXnQyw(def, T41_);
								if (!T42_) goto LA43_;
								(*def).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 18))%(sizeof(NU32)*8));
							}
							LA43_: ;
						} LA25: ;
						{
							if (!(typ == NIM_NIL)) goto LA47_;
							typ = (*def).typ;
							{
								tySequence_Ef05srmQTDulnBdXR4Ja6Q* T53_;
								if (!((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA51_;
								T53_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
								T53_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
								asgnRefNoCycle((void**) (&T53_->data[0]), newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0), c));
								typ = newTypeWithSons_9aJU4B1fwkaTke7gv1KDkuQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8), T53_);
							}
							LA51_: ;
						}
						goto LA45_;
						LA47_: ;
						{
							{
								NIM_BOOL T57_;
								T57_ = (NIM_BOOL)0;
								T57_ = containsGenericType_YPjOkGV9axAnGR3UfLeWZ1g(typ);
								if (!!(T57_)) goto LA58_;
								def = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, def, (*def).info);
							}
							goto LA55_;
							LA58_: ;
							{
								if (!((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA61_;
								def = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, def);
								def = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, def, (*def).info);
							}
							goto LA55_;
							LA61_: ;
							LA55_: ;
						}
						LA45_: ;
					}
					LA22_: ;
					{
						NIM_BOOL T65_;
						T65_ = (NIM_BOOL)0;
						T65_ = !(hasType);
						if (!(T65_)) goto LA66_;
						T65_ = !(hasDefault);
						LA66_: ;
						if (!T65_) goto LA67_;
						{
							if (!isType) goto LA71_;
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_64));
						}
						LA71_: ;
						{
							if (!((393216 &(1U<<((NU)(kind)&31U)))!=0)) goto LA75_;
							typ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6), c);
						}
						LA75_: ;
					}
					goto LA63_;
					LA67_: ;
					{
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T78_;
						T78_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
						T78_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(typ, IL64(70368744179728));
						if (!((*T78_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63))) goto LA79_;
						goto LA5;
					}
					goto LA63_;
					LA79_: ;
					LA63_: ;
					{
						NI j;
						NI colontmp__2;
						NI res_2;
						j = (NI)0;
						colontmp__2 = (NI)0;
						colontmp__2 = (NI)(length - ((NI) 3));
						res_2 = ((NI) 0);
						{
							while (1) {
								tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* arg;
								tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lifted;
								tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* finalType;
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T114_;
								if (!(res_2 <= colontmp__2)) goto LA83;
								j = res_2;
								arg = newSymG_sxL9bg3I9cVytmWlUkzsHDaA(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3), (*a)._Ukind.S6.sons->data[j], c);
								{
									NIM_BOOL T86_;
									NIM_BOOL T87_;
									tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param;
									T86_ = (NIM_BOOL)0;
									T87_ = (NIM_BOOL)0;
									T87_ = !(hasType);
									if (!(T87_)) goto LA88_;
									T87_ = !(hasDefault);
									LA88_: ;
									T86_ = T87_;
									if (!(T86_)) goto LA89_;
									T86_ = !(((393216 &(1U<<((NU)(kind)&31U)))!=0));
									LA89_: ;
									if (!T86_) goto LA90_;
									param = strTableGet_0xgFDJUQtGGr2e0Sq9aLIhA((*c).signatures, (*arg).name);
									{
										if (!!((param == NIM_NIL))) goto LA94_;
										typ = (*param).typ;
									}
									goto LA92_;
									LA94_: ;
									{
										localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_65));
										typ = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
									}
									LA92_: ;
								}
								LA90_: ;
								lifted = liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg(c, kind, genericParams, typ, (*(*arg).name).s, (*arg).info, NIM_FALSE);
								{
									if (!!((lifted == NIM_NIL))) goto LA99_;
									finalType = lifted;
								}
								goto LA97_;
								LA99_: ;
								{
									finalType = skipIntLit_7SeREq19a8pkSCOuiHcpHnwsigmatch(typ);
								}
								LA97_: ;
								asgnRefNoCycle((void**) (&(*arg).typ), finalType);
								(*arg).position = counter;
								asgnRefNoCycle((void**) (&(*arg).constraint), constraint);
								counter += ((NI) 1);
								{
									NIM_BOOL T104_;
									T104_ = (NIM_BOOL)0;
									T104_ = !((def == NIM_NIL));
									if (!(T104_)) goto LA105_;
									T104_ = !(((*def).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)));
									LA105_: ;
									if (!T104_) goto LA106_;
									asgnRefNoCycle((void**) (&(*arg).ast), copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(def));
								}
								LA106_: ;
								{
									NIM_BOOL T110_;
									NimStringDesc* T113_;
									T110_ = (NIM_BOOL)0;
									T110_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg((&check), (*(*arg).name).Sup.id);
									if (!T110_) goto LA111_;
									T113_ = (NimStringDesc*)0;
									T113_ = rawNewString(((*(*arg).name).s ? (*(*arg).name).s->Sup.len : 0) + 23);
appendString(T113_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_83));
appendString(T113_, (*(*arg).name).s);
appendString(T113_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
									localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*a)._Ukind.S6.sons->data[j]).info, T113_);
								}
								LA111_: ;
								T114_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								T114_ = newSymNode_UWZXukHA5As9aCftRHbafBg(arg);
								addSon_gCCf68XrWL79bKes6htzFjQ_2((*result).n, T114_);
								rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, finalType);
								addParamOrResult_D6rqUgJ2oXnnFxSawNzxCA(c, arg, kind);
								{
									if (!(((*(*(*c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA117_;
									nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*c).graph).config, (*(*a)._Ukind.S6.sons->data[j]).info, arg, (*arg).kind);
								}
								LA117_: ;
								res_2 += ((NI) 1);
							} LA83: ;
						}
					}
				} LA5: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	r = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA121_;
		r = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
	}
	LA121_: ;
	{
		if (!!((r == NIM_NIL))) goto LA125_;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T129_;
			tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw oldFlags;
			T129_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T129_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(r, IL64(70368744179728));
			if (!!(((*T129_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63)))) goto LA130_;
			{
				if (!((*r).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 59))) goto LA134_;
				r = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6), c);
			}
			goto LA132_;
			LA134_: ;
			{
				if (!!(((*r).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6)))) goto LA137_;
				{
					NIM_BOOL T141_;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lifted_2;
					T141_ = (NIM_BOOL)0;
					T141_ = ((*r).sym == NIM_NIL);
					if (T141_) goto LA142_;
					T141_ = !((((*(*r).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 30))&63U)))!=0));
					LA142_: ;
					if (!T141_) goto LA143_;
					lifted_2 = liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg(c, kind, genericParams, r, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_44), (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, NIM_FALSE);
					{
						if (!!((lifted_2 == NIM_NIL))) goto LA147_;
						r = lifted_2;
						(*r).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 11))%(sizeof(NU64)*8));
					}
					LA147_: ;
				}
				LA143_: ;
				r = skipIntLit_7SeREq19a8pkSCOuiHcpHnwsigmatch(r);
				{
					if (!(kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15))) goto LA151_;
					(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 15))%(sizeof(NU64)*8));
				}
				LA151_: ;
			}
			goto LA132_;
			LA137_: ;
			LA132_: ;
			asgnRefNoCycle((void**) (&(*result).sons->data[((NI) 0)]), r);
			oldFlags = (*result).flags;
			propagateToOwner_Zokyl22yTzwcKmRycgQbKg(result, r);
			{
				if (!!((oldFlags == (*result).flags))) goto LA155_;
				{
					if (!!(((oldFlags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 20))&63U)))!=0))) goto LA159_;
					(*result).flags &= ~(((NU64)1) << ((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 20)) % (sizeof(NU64)*8)));
				}
				LA159_: ;
			}
			LA155_: ;
			asgnRefNoCycle((void**) (&(*(*result).n).typ), r);
		}
		LA130_: ;
	}
	LA125_: ;
	{
		NIM_BOOL T163_;
		NI T165_;
		T163_ = (NIM_BOOL)0;
		T163_ = !((genericParams == NIM_NIL));
		if (!(T163_)) goto LA164_;
		T165_ = (NI)0;
		T165_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(genericParams);
		T163_ = (((NI) 0) < T165_);
		LA164_: ;
		if (!T163_) goto LA166_;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
			n_2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i_2;
				NI colontmp__3;
				NI i_3;
				i_2 = (NI)0;
				colontmp__3 = (NI)0;
				colontmp__3 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(genericParams);
				i_3 = ((NI) 0);
				{
					while (1) {
						if (!(i_3 < colontmp__3)) goto LA171;
						i_2 = i_3;
						n_2 = (*genericParams)._Ukind.S6.sons->data[i_2];
						{
							if (!((1073741825 & (*(*n_2)._Ukind.S4.sym).flags) == 0)) goto LA174_;
							(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))%(sizeof(NU64)*8));
						}
						LA174_: ;
						{
							if (!(((*(*(*n_2)._Ukind.S4.sym).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 29))&63U)))!=0)) goto LA178_;
							(*(*n_2)._Ukind.S4.sym).kind = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7);
							(*(*(*n_2)._Ukind.S4.sym).typ).flags &= ~(((NU64)1) << ((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 29)) % (sizeof(NU64)*8)));
						}
						LA178_: ;
						i_3 += ((NI) 1);
					} LA171: ;
				}
			}
		}
	}
	LA166_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, semParamList_1K4lBiaKx6f704AxKCVBWw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* genericParams, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	asgnRefNoCycle((void**) (&(*s).typ), semProcTypeNode_Wwai8c2OJJtA0TZ9bSUtsXQ(c, n, genericParams, NIM_NIL, (*s).kind, NIM_FALSE));
	{
		if (!!(((393216 &(1U<<((NU)((*s).kind)&31U)))!=0))) goto LA3_;
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = !(((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL));
			if (!(T7_)) goto LA8_;
			T7_ = ((*(*(*s).typ).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7));
			LA8_: ;
			if (!T7_) goto LA9_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_84));
		}
		LA9_: ;
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newParam_bLdAkZWfIxJbJiSqlPkE9aw)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* x;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
	x = (*(*(*(*(*c).owner).typ).n)._Ukind.S6.sons->data[(NI)((*s).position + ((NI) 1))])._Ukind.S4.sym;
	result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(x, (*n).info);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, handleSym_bk0oScE0sXzp15PuTrbg3w)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		if (!!((s == NIM_NIL))) goto LA3_;
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = ((*s).owner == (*c).owner);
			if (!(T7_)) goto LA8_;
			T7_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
			LA8_: ;
			if (!T7_) goto LA9_;
			result = newParam_bLdAkZWfIxJbJiSqlPkE9aw(c, n, s);
		}
		goto LA5_;
		LA9_: ;
		{
			NIM_BOOL T12_;
			T12_ = (NIM_BOOL)0;
			T12_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).toBind), (*s).Sup.id);
			if (!T12_) goto LA13_;
			result = symChoice_e9ckn59a48lY35fHaH19c0xsw((*c).c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
		}
		goto LA5_;
		LA13_: ;
		{
			NIM_BOOL T16_;
			NIM_BOOL T18_;
			NI T19_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T23_;
			T16_ = (NIM_BOOL)0;
			T16_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18));
			if (!(T16_)) goto LA17_;
			T18_ = (NIM_BOOL)0;
			T19_ = (NI)0;
			T19_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*s).typ);
			T18_ = (T19_ == ((NI) 1));
			if (T18_) goto LA20_;
			T18_ = (((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 7))&63U)))!=0);
			LA20_: ;
			T16_ = T18_;
			LA17_: ;
			if (!T16_) goto LA21_;
			T23_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T23_ = semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA((*c).c, n, s, 8192);
			result = semPatternBody_DuioLh4uofptxEKissr2sw(c, T23_);
		}
		goto LA5_;
		LA21_: ;
		{
		}
		LA5_: ;
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semBindStmt_7Gad7eXdiknA9a8oMyCe5VQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* toBind) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				a = (*n)._Ukind.S6.sons->data[i];
				s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA(c, a, 2);
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* sc;
					if (!!((s == NIM_NIL))) goto LA6_;
					sc = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
					{
						if (!((*sc).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA10_;
						incl_iUpE9bYmIR0fROyJskQwN8g(toBind, (*(*sc)._Ukind.S4.sym).Sup.id);
					}
					goto LA8_;
					LA10_: ;
					{
						{
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
							x = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							{
								NI i_3;
								NI colontmp__2;
								NI i_4;
								i_3 = (NI)0;
								colontmp__2 = (NI)0;
								colontmp__2 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(sc);
								i_4 = ((NI) 0);
								{
									while (1) {
										if (!(i_4 < colontmp__2)) goto LA16;
										i_3 = i_4;
										x = (*sc)._Ukind.S6.sons->data[i_3];
										incl_iUpE9bYmIR0fROyJskQwN8g(toBind, (*(*x)._Ukind.S4.sym).Sup.id);
										i_4 += ((NI) 1);
									} LA16: ;
								}
							}
						}
					}
					LA8_: ;
				}
				goto LA4_;
				LA6_: ;
				{
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a, (*(*c).graph).config);
				}
				LA4_: ;
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (*n).info);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, expectParam_DuioLh4uofptxEKissr2sw_2)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA((*c).c, n, 0);
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = !((s == NIM_NIL));
		if (!(T4_)) goto LA5_;
		T4_ = ((*s).owner == (*c).owner);
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T3_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
		LA6_: ;
		if (!T3_) goto LA7_;
		result = newParam_bLdAkZWfIxJbJiSqlPkE9aw(c, n, s);
	}
	goto LA1_;
	LA7_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*(*c).c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_85));
		result = n;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, stupidStmtListExpr_J6cfuIanCXYEsLNE8M8o9cQ_3)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		colontmp_ = (NI)(T2_ - ((NI) 2));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					if (!!(((*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) || (*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125)))) goto LA7_;
					result = NIM_FALSE;
					goto BeforeRet_;
				}
				LA7_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	result = NIM_TRUE;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semPatternBody_DuioLh4uofptxEKissr2sw)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA((*c).c, n, 0);
		result = handleSym_bk0oScE0sXzp15PuTrbg3w(c, n, s);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 122):
	{
		result = semBindStmt_7Gad7eXdiknA9a8oMyCe5VQ((*c).c, n, (&(*c).toBind));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 40):
	{
		{
			NI T7_;
			T7_ = (NI)0;
			T7_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			if (!!((T7_ == ((NI) 2)))) goto LA8_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*(*c).c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_85));
		}
		goto LA5_;
		LA8_: ;
		{
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA11_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semPatternBody_DuioLh4uofptxEKissr2sw(c, (*n)._Ukind.S6.sons->data[((NI) 0)]));
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), expectParam_DuioLh4uofptxEKissr2sw_2(c, (*n)._Ukind.S6.sons->data[((NI) 1)]));
		}
		goto LA5_;
		LA11_: ;
		{
			NIM_BOOL T14_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* opr;
			T14_ = (NIM_BOOL)0;
			T14_ = ((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30));
			if (!(T14_)) goto LA15_;
			T14_ = ((*(*(*n)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2));
			LA15_: ;
			if (!T14_) goto LA16_;
			opr = (*(*n)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S6.sons->data[((NI) 0)];
			{
				if (!eqStrings((*(*opr)._Ukind.S5.ident).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_22))) goto LA20_;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semPatternBody_DuioLh4uofptxEKissr2sw(c, (*n)._Ukind.S6.sons->data[((NI) 0)]));
				asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S6.sons->data[((NI) 1)]), expectParam_DuioLh4uofptxEKissr2sw_2(c, (*(*n)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S6.sons->data[((NI) 1)]));
			}
			goto LA18_;
			LA20_: ;
			{
				localError_NF6kBGchnhQYPbCedyefVA((*(*(*c).c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_85));
			}
			LA18_: ;
		}
		goto LA5_;
		LA16_: ;
		{
			localError_NF6kBGchnhQYPbCedyefVA((*(*(*c).c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_85));
		}
		LA5_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126):
	{
		{
			NIM_BOOL T27_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T30_;
			T27_ = (NIM_BOOL)0;
			T27_ = stupidStmtListExpr_J6cfuIanCXYEsLNE8M8o9cQ_3(n);
			if (!T27_) goto LA28_;
			T30_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T30_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(n);
			result = semPatternBody_DuioLh4uofptxEKissr2sw(c, T30_);
		}
		goto LA25_;
		LA28_: ;
		{
			{
				NI i;
				NI colontmp_;
				NI T33_;
				NI res;
				i = (NI)0;
				colontmp_ = (NI)0;
				T33_ = (NI)0;
				T33_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
				colontmp_ = (NI)(T33_ - ((NI) 1));
				res = ((NI) 0);
				{
					while (1) {
						if (!(res <= colontmp_)) goto LA35;
						i = res;
						asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i]), semPatternBody_DuioLh4uofptxEKissr2sw(c, (*n)._Ukind.S6.sons->data[i]));
						res += ((NI) 1);
					} LA35: ;
				}
			}
		}
		LA25_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_2;
		s_2 = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA((*c).c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0);
		{
			if (!!((s_2 == NIM_NIL))) goto LA39_;
			{
				NIM_BOOL T43_;
				T43_ = (NIM_BOOL)0;
				T43_ = ((*s_2).owner == (*c).owner);
				if (!(T43_)) goto LA44_;
				T43_ = ((*s_2).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
				LA44_: ;
				if (!T43_) goto LA45_;
			}
			goto LA41_;
			LA45_: ;
			{
				NIM_BOOL T48_;
				T48_ = (NIM_BOOL)0;
				T48_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).toBind), (*s_2).Sup.id);
				if (!T48_) goto LA49_;
			}
			goto LA41_;
			LA49_: ;
			{
				NIM_BOOL T52_;
				NIM_BOOL T54_;
				NI T55_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T59_;
				T52_ = (NIM_BOOL)0;
				T52_ = ((*s_2).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18));
				if (!(T52_)) goto LA53_;
				T54_ = (NIM_BOOL)0;
				T55_ = (NI)0;
				T55_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*s_2).typ);
				T54_ = (T55_ == ((NI) 1));
				if (T54_) goto LA56_;
				T54_ = (((*s_2).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 7))&63U)))!=0);
				LA56_: ;
				T52_ = T54_;
				LA53_: ;
				if (!T52_) goto LA57_;
				T59_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T59_ = semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA((*c).c, n, s_2, 8192);
				result = semPatternBody_DuioLh4uofptxEKissr2sw(c, T59_);
				goto BeforeRet_;
			}
			goto LA41_;
			LA57_: ;
			LA41_: ;
		}
		LA39_: ;
		{
			NIM_BOOL T62_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* opr_2;
			T62_ = (NIM_BOOL)0;
			T62_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29));
			if (!(T62_)) goto LA63_;
			T62_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2));
			LA63_: ;
			if (!T62_) goto LA64_;
			opr_2 = (*n)._Ukind.S6.sons->data[((NI) 0)];
			{
				NIM_BOOL T68_;
				NI T72_;
				T68_ = (NIM_BOOL)0;
				T68_ = eqStrings((*(*opr_2)._Ukind.S5.ident).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_86));
				if (T68_) goto LA69_;
				T68_ = eqStrings((*(*opr_2)._Ukind.S5.ident).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_87));
				LA69_: ;
				if (!T68_) goto LA70_;
				T72_ = (NI)0;
				T72_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
				result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 153), (*n).info, T72_);
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), opr_2);
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), semPatternBody_DuioLh4uofptxEKissr2sw(c, (*n)._Ukind.S6.sons->data[((NI) 1)]));
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 2)]), expectParam_DuioLh4uofptxEKissr2sw_2(c, (*n)._Ukind.S6.sons->data[((NI) 2)]));
				goto BeforeRet_;
			}
			goto LA66_;
			LA70_: ;
			{
				NI T76_;
				if (!eqStrings((*(*opr_2)._Ukind.S5.ident).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_22))) goto LA74_;
				T76_ = (NI)0;
				T76_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
				result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 153), (*n).info, T76_);
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), opr_2);
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), semPatternBody_DuioLh4uofptxEKissr2sw(c, (*n)._Ukind.S6.sons->data[((NI) 1)]));
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 2)]), semPatternBody_DuioLh4uofptxEKissr2sw(c, (*n)._Ukind.S6.sons->data[((NI) 2)]));
				goto BeforeRet_;
			}
			goto LA66_;
			LA74_: ;
			LA66_: ;
		}
		LA64_: ;
		{
			NIM_BOOL T79_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* opr_3;
			T79_ = (NIM_BOOL)0;
			T79_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30));
			if (!(T79_)) goto LA80_;
			T79_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2));
			LA80_: ;
			if (!T79_) goto LA81_;
			opr_3 = (*n)._Ukind.S6.sons->data[((NI) 0)];
			{
				NI T87_;
				if (!eqStrings((*(*opr_3)._Ukind.S5.ident).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_88))) goto LA85_;
				T87_ = (NI)0;
				T87_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
				result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 153), (*n).info, T87_);
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), opr_3);
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), semPatternBody_DuioLh4uofptxEKissr2sw(c, (*n)._Ukind.S6.sons->data[((NI) 1)]));
				goto BeforeRet_;
			}
			LA85_: ;
		}
		LA81_: ;
		{
			NI i_2;
			NI colontmp__2;
			NI T89_;
			NI res_2;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			T89_ = (NI)0;
			T89_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__2 = (NI)(T89_ - ((NI) 1));
			res_2 = ((NI) 0);
			{
				while (1) {
					if (!(res_2 <= colontmp__2)) goto LA91;
					i_2 = res_2;
					asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i_2]), semPatternBody_DuioLh4uofptxEKissr2sw(c, (*n)._Ukind.S6.sons->data[i_2]));
					res_2 += ((NI) 1);
				} LA91: ;
			}
		}
	}
	break;
	default:
	{
		switch ((*n).kind) {
		case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45):
		case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_3;
			s_3 = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA((*c).c, n, 0);
			{
				if (!!((s_3 == NIM_NIL))) goto LA96_;
				{
					NIM_BOOL T100_;
					T100_ = (NIM_BOOL)0;
					T100_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).toBind), (*s_3).Sup.id);
					if (!T100_) goto LA101_;
					result = symChoice_e9ckn59a48lY35fHaH19c0xsw((*c).c, n, s_3, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
					goto BeforeRet_;
				}
				goto LA98_;
				LA101_: ;
				{
					result = newIdentNode_mj7QetSP2JbYkbT6xy0EJA((*s_3).name, (*n).info);
					goto BeforeRet_;
				}
				LA98_: ;
			}
			LA96_: ;
		}
		break;
		case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37):
		{
			{
				NI T107_;
				T107_ = (NI)0;
				T107_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
				if (!(T107_ == ((NI) 1))) goto LA108_;
				result = semPatternBody_DuioLh4uofptxEKissr2sw(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
				goto BeforeRet_;
			}
			LA108_: ;
		}
		break;
		default:
		{
		}
		break;
		}
		{
			NI i_3;
			NI colontmp__3;
			NI T112_;
			NI res_3;
			i_3 = (NI)0;
			colontmp__3 = (NI)0;
			T112_ = (NI)0;
			T112_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__3 = (NI)(T112_ - ((NI) 1));
			res_3 = ((NI) 0);
			{
				while (1) {
					if (!(res_3 <= colontmp__3)) goto LA114;
					i_3 = res_3;
					asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i_3]), semPatternBody_DuioLh4uofptxEKissr2sw(c, (*n)._Ukind.S6.sons->data[i_3]));
					res_3 += ((NI) 1);
				} LA114: ;
			}
		}
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semPattern_U3qPBy54f1PkCP8vmFMCRA_8)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw ctx;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	nimZeroMem((void*)(&ctx), sizeof(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&ctx.toBind));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&ctx.toMixin));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&ctx.toInject));
	ctx.c = c;
	ctx.owner = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = semPatternBody_DuioLh4uofptxEKissr2sw((&ctx), n);
	result = flattenStmts_kDuk7Mp6Hb4CD2EwZbGQ3g(T2_);
	{
		if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA5_;
		{
			NI T9_;
			T9_ = (NI)0;
			T9_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
			if (!(T9_ == ((NI) 1))) goto LA10_;
			result = (*result)._Ukind.S6.sons->data[((NI) 0)];
		}
		goto LA7_;
		LA10_: ;
		{
			NI T13_;
			T13_ = (NI)0;
			T13_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
			if (!(T13_ == ((NI) 0))) goto LA14_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_89));
		}
		goto LA7_;
		LA14_: ;
		LA7_: ;
	}
	LA5_: ;
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addGenericParamListToScope_wkwHEj6zZnYo2DMZys6jnA_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		if (!!(((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 75)))) goto LA3_;
		illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
	}
	LA3_: ;
	{
		NI i;
		NI colontmp_;
		NI T6_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T6_ = (NI)0;
		T6_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T6_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				if (!(res <= colontmp_)) goto LA8;
				i = res;
				a = (*n)._Ukind.S6.sons->data[i];
				{
					if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA11_;
					addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, (*a)._Ukind.S4.sym);
				}
				goto LA9_;
				LA11_: ;
				{
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a, (*(*c).graph).config);
				}
				LA9_: ;
				res += ((NI) 1);
			} LA8: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(void, addParams_ZGxWSZNSlj0lQFGwU8y5Eg_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind) {
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					if (!((*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA7_;
					addParamOrResult_D6rqUgJ2oXnnFxSawNzxCA(c, (*(*n)._Ukind.S6.sons->data[i])._Ukind.S4.sym, kind);
				}
				goto LA5_;
				LA7_: ;
				{
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
				}
				LA5_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
}

static N_INLINE(NIM_BOOL, importantComments_6aU0ZBrns2mWNHTDUbDERQsem)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((16640 &(1U<<((NU)((*conf).cmd)&31U)))!=0);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, semOverride_llOVo9c3s0bb48y1MlbyvAw_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NimStringDesc* T1_;
{	T1_ = (NimStringDesc*)0;
	T1_ = nsuNormalize((*(*s).name).s);
	if (eqStrings(T1_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_93))) goto LA2_;
	if (eqStrings(T1_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_94))) goto LA3_;
	if (eqStrings(T1_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_95))) goto LA3_;
	if (eqStrings(T1_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_96))) goto LA4_;
	if (eqStrings(T1_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_97))) goto LA4_;
	goto LA5_;
	LA2_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
		NIM_BOOL noError;
		t = (*s).typ;
		noError = NIM_FALSE;
		{
			NIM_BOOL T10_;
			NIM_BOOL T11_;
			NI T12_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj;
			T10_ = (NIM_BOOL)0;
			T11_ = (NIM_BOOL)0;
			T12_ = (NI)0;
			T12_ = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
			T11_ = (T12_ == ((NI) 2));
			if (!(T11_)) goto LA13_;
			T11_ = ((*t).sons->data[((NI) 0)] == NIM_NIL);
			LA13_: ;
			T10_ = T11_;
			if (!(T10_)) goto LA14_;
			T10_ = ((*(*t).sons->data[((NI) 1)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23));
			LA14_: ;
			if (!T10_) goto LA15_;
			obj = (*(*t).sons->data[((NI) 1)]).sons->data[((NI) 0)];
			{
				while (1) {
					(*obj).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 30))%(sizeof(NU64)*8));
					{
						if (!((*obj).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10) || (*obj).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11))) goto LA21_;
						obj = lastSon_ab52xel9cFebv9am0xV04xXA(obj);
					}
					goto LA19_;
					LA21_: ;
					{
						if (!((*obj).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9))) goto LA24_;
						obj = (*obj).sons->data[((NI) 0)];
					}
					goto LA19_;
					LA24_: ;
					{
						goto LA17;
					}
					LA19_: ;
				}
			} LA17: ;
			{
				if (!((*obj).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17) || (*obj).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13) || (*obj).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24) || (*obj).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28))) goto LA29_;
				{
					if (!((*obj).destructor == 0)) goto LA33_;
					asgnRefNoCycle((void**) (&(*obj).destructor), s);
				}
				goto LA31_;
				LA33_: ;
				{
					NimStringDesc* T36_;
					NimStringDesc* T37_;
					T36_ = (NimStringDesc*)0;
					T37_ = (NimStringDesc*)0;
					T37_ = typeToString_QlvraUan7WbHowhAbvDvdA(obj, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
					T36_ = rawNewString(((*(*s).name).s ? (*(*s).name).s->Sup.len : 0) + (T37_ ? T37_->Sup.len : 0) + 27);
appendString(T36_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_98));
appendString(T36_, (*(*s).name).s);
appendString(T36_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_99));
appendString(T36_, T37_);
					localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), T36_);
				}
				LA31_: ;
				noError = NIM_TRUE;
			}
			LA29_: ;
		}
		LA15_: ;
		{
			NIM_BOOL T40_;
			NimStringDesc* T44_;
			T40_ = (NIM_BOOL)0;
			T40_ = !(noError);
			if (!(T40_)) goto LA41_;
			T40_ = !((((*(*s).owner).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 13))&63U)))!=0));
			LA41_: ;
			if (!T40_) goto LA42_;
			T44_ = (NimStringDesc*)0;
			T44_ = rawNewString(((*(*s).name).s ? (*(*s).name).s->Sup.len : 0) + 50);
appendString(T44_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_100));
appendString(T44_, (*(*s).name).s);
appendString(T44_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_101));
			localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), T44_);
		}
		LA42_: ;
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
	}
	goto LA6_;
	LA3_: ;
	{
		{
			NIM_BOOL T48_;
			NIM_BOOL T49_;
			NI T50_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T52_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t_2;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T56_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T57_;
			T48_ = (NIM_BOOL)0;
			T49_ = (NIM_BOOL)0;
			T50_ = (NI)0;
			T50_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*s).typ);
			T49_ = (T50_ == ((NI) 2));
			if (!(T49_)) goto LA51_;
			T52_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T52_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*s).typ).sons->data[((NI) 1)], IL64(36099165763184912));
			T49_ = ((*T52_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22) || (*T52_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21));
			LA51_: ;
			T48_ = T49_;
			if (!(T48_)) goto LA53_;
			T48_ = sameType_3isNyHKb0U1OCnClmflXSg((*(*s).typ).sons->data[((NI) 1)], (*(*s).typ).sons->data[((NI) 0)], 0);
			LA53_: ;
			if (!T48_) goto LA54_;
			T56_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T56_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*s).typ).sons->data[((NI) 1)], IL64(36099165763184912));
			T57_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T57_ = lastSon_ab52xel9cFebv9am0xV04xXA(T56_);
			t_2 = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(T57_, IL64(36099165763184912));
			{
				while (1) {
					{
						if (!((*t_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10))) goto LA62_;
						t_2 = lastSon_ab52xel9cFebv9am0xV04xXA(t_2);
					}
					goto LA60_;
					LA62_: ;
					{
						if (!((*t_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9))) goto LA65_;
						t_2 = (*t_2).sons->data[((NI) 0)];
					}
					goto LA60_;
					LA65_: ;
					{
						goto LA58;
					}
					LA60_: ;
				}
			} LA58: ;
			{
				if (!((*t_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17) || (*t_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13) || (*t_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14) || (*t_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24) || (*t_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28))) goto LA70_;
				{
					if (!((*t_2).deepCopy == 0)) goto LA74_;
					asgnRefNoCycle((void**) (&(*t_2).deepCopy), s);
				}
				goto LA72_;
				LA74_: ;
				{
					NimStringDesc* T77_;
					NimStringDesc* T78_;
					T77_ = (NimStringDesc*)0;
					T78_ = (NimStringDesc*)0;
					T78_ = typeToString_QlvraUan7WbHowhAbvDvdA(t_2, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
					T77_ = rawNewString((T78_ ? T78_->Sup.len : 0) + 35);
appendString(T77_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_102));
appendString(T77_, T78_);
					localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), T77_);
				}
				LA72_: ;
			}
			goto LA68_;
			LA70_: ;
			{
				NimStringDesc* T80_;
				NimStringDesc* T81_;
				T80_ = (NimStringDesc*)0;
				T81_ = (NimStringDesc*)0;
				T81_ = typeToString_QlvraUan7WbHowhAbvDvdA(t_2, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
				T80_ = rawNewString((T81_ ? T81_->Sup.len : 0) + 27);
appendString(T80_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_103));
appendString(T80_, T81_);
				localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), T80_);
			}
			LA68_: ;
		}
		goto LA46_;
		LA54_: ;
		{
			localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_104));
		}
		LA46_: ;
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
	}
	goto LA6_;
	LA4_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t_3;
		{
			if (!((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 6))) goto LA86_;
			goto BeforeRet_;
		}
		LA86_: ;
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
		t_3 = (*s).typ;
		{
			NIM_BOOL T90_;
			NIM_BOOL T91_;
			NI T92_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj_2;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* objB;
			T90_ = (NIM_BOOL)0;
			T91_ = (NIM_BOOL)0;
			T92_ = (NI)0;
			T92_ = len_SWFNCiWYB89bTUPh5KptkvA_2(t_3);
			T91_ = (T92_ == ((NI) 3));
			if (!(T91_)) goto LA93_;
			T91_ = ((*t_3).sons->data[((NI) 0)] == NIM_NIL);
			LA93_: ;
			T90_ = T91_;
			if (!(T90_)) goto LA94_;
			T90_ = ((*(*t_3).sons->data[((NI) 1)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23));
			LA94_: ;
			if (!T90_) goto LA95_;
			obj_2 = (*(*t_3).sons->data[((NI) 1)]).sons->data[((NI) 0)];
			{
				while (1) {
					(*obj_2).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 30))%(sizeof(NU64)*8));
					{
						if (!((*obj_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10))) goto LA101_;
						obj_2 = lastSon_ab52xel9cFebv9am0xV04xXA(obj_2);
					}
					goto LA99_;
					LA101_: ;
					{
						if (!((*obj_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9))) goto LA104_;
						obj_2 = (*obj_2).sons->data[((NI) 0)];
					}
					goto LA99_;
					LA104_: ;
					{
						goto LA97;
					}
					LA99_: ;
				}
			} LA97: ;
			objB = (*t_3).sons->data[((NI) 2)];
			{
				while (1) {
					{
						if (!((*objB).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10))) goto LA111_;
						objB = lastSon_ab52xel9cFebv9am0xV04xXA(objB);
					}
					goto LA109_;
					LA111_: ;
					{
						if (!((*objB).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9) || (*objB).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11))) goto LA114_;
						objB = (*objB).sons->data[((NI) 0)];
					}
					goto LA109_;
					LA114_: ;
					{
						goto LA107;
					}
					LA109_: ;
				}
			} LA107: ;
			{
				NIM_BOOL T119_;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w** opr;
				T119_ = (NIM_BOOL)0;
				T119_ = ((*obj_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17) || (*obj_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13) || (*obj_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24) || (*obj_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28));
				if (!(T119_)) goto LA120_;
				T119_ = sameType_3isNyHKb0U1OCnClmflXSg(obj_2, objB, 0);
				LA120_: ;
				if (!T119_) goto LA121_;
				{
					if (!eqStrings((*(*s).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_96))) goto LA125_;
					opr = &(*obj_2).assignment;
				}
				goto LA123_;
				LA125_: ;
				{
					opr = &(*obj_2).sink;
				}
				LA123_: ;
				{
					if (!((*opr) == 0)) goto LA130_;
					unsureAsgnRef((void**) (&(*opr)), s);
				}
				goto LA128_;
				LA130_: ;
				{
					NimStringDesc* T133_;
					NimStringDesc* T134_;
					T133_ = (NimStringDesc*)0;
					T134_ = (NimStringDesc*)0;
					T134_ = typeToString_QlvraUan7WbHowhAbvDvdA(obj_2, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
					T133_ = rawNewString(((*(*s).name).s ? (*(*s).name).s->Sup.len : 0) + (T134_ ? T134_->Sup.len : 0) + 27);
appendString(T133_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_98));
appendString(T133_, (*(*s).name).s);
appendString(T133_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_99));
appendString(T133_, T134_);
					localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), T133_);
				}
				LA128_: ;
				goto BeforeRet_;
			}
			LA121_: ;
		}
		LA95_: ;
		{
			NimStringDesc* T139_;
			if (!!((((*(*s).owner).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 13))&63U)))!=0))) goto LA137_;
			T139_ = (NimStringDesc*)0;
			T139_ = rawNewString(((*(*s).name).s ? (*(*s).name).s->Sup.len : 0) + 56);
appendString(T139_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_100));
appendString(T139_, (*(*s).name).s);
appendString(T139_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_105));
			localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), T139_);
		}
		LA137_: ;
	}
	goto LA6_;
	LA5_: ;
	{
		{
			if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 31))&63U)))!=0)) goto LA143_;
			localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_106));
		}
		LA143_: ;
	}
	LA6_: ;
	}BeforeRet_: ;
}

static N_INLINE(NI, find_9basNl9bVqn7SOf9bgUeI8TEQparseopt)(NimStringDesc** a, NI aLen_0, NimStringDesc* item) {
	NI result;
{	result = (NI)0;
	{
		NimStringDesc* i;
		NI i_2;
		i = (NimStringDesc*)0;
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < aLen_0)) goto LA3;
				i = a[i_2];
				{
					if (!eqStrings(i, item)) goto LA6_;
					goto BeforeRet_;
				}
				LA6_: ;
				result += ((NI) 1);
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	result = ((NI) -1);
	}BeforeRet_: ;
	return result;
}

static N_INLINE(NIM_BOOL, contains_jPdUhZfr9a8sH2V3ZBDljzwparseopt)(NimStringDesc** a, NI aLen_0, NimStringDesc* item) {
	NIM_BOOL result;
	NI T1_;
{	result = (NIM_BOOL)0;
	T1_ = (NI)0;
	T1_ = find_9basNl9bVqn7SOf9bgUeI8TEQparseopt(a, aLen_0, item);
	result = (((NI) 0) <= T1_);
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, cursorInProcAux_43tL9cYyE1TPnGK9bR9akYRmQ_2)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		tyEnum_TCheckPointResult_mp7otVupbkudrLwM0IFcHg T3_;
		T3_ = (tyEnum_TCheckPointResult_mp7otVupbkudrLwM0IFcHg)0;
		T3_ = inCheckpoint_QibUUerXwpAtrft6bOBLKw((*n).info, (*conf).m.trackPos);
		if (!!((T3_ == ((tyEnum_TCheckPointResult_mp7otVupbkudrLwM0IFcHg) 0)))) goto LA4_;
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA4_: ;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA8;
				i = i_2;
				{
					NIM_BOOL T11_;
					T11_ = (NIM_BOOL)0;
					T11_ = cursorInProcAux_43tL9cYyE1TPnGK9bR9akYRmQ_2(conf, (*n)._Ukind.S6.sons->data[i]);
					if (!T11_) goto LA12_;
					result = NIM_TRUE;
					goto BeforeRet_;
				}
				LA12_: ;
				i_2 += ((NI) 1);
			} LA8: ;
		}
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, cursorInProc_43tL9cYyE1TPnGK9bR9akYRmQ)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		if (!((*n).info.fileIndex == (*conf).m.trackPos.fileIndex)) goto LA3_;
		result = cursorInProcAux_43tL9cYyE1TPnGK9bR9akYRmQ_2(conf, n);
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasObjParam_cO2rS0JIm8g9cbNlNyVnwhg_2)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	NIM_BOOL result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
{	result = (NIM_BOOL)0;
	t = (*s).typ;
	{
		NI col;
		NI colontmp_;
		NI T2_;
		NI res;
		col = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(t);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				col = res;
				{
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T7_;
					T7_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T7_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*t).sons->data[col], IL64(36239903266179344));
					if (!((*T7_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA8_;
					result = NIM_TRUE;
					goto BeforeRet_;
				}
				LA8_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, semMethodPrototype_llOVo9c3s0bb48y1MlbyvAw_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NIM_BOOL T3_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tt;
		NIM_BOOL foundObj;
		T3_ = (NIM_BOOL)0;
		T3_ = isGenericRoutine_fqH89bI309asBDvp00Y3VVQA(s);
		if (!T3_) goto LA4_;
		tt = (*s).typ;
		foundObj = NIM_FALSE;
		{
			NI col;
			NI colontmp_;
			NI T7_;
			NI res;
			col = (NI)0;
			colontmp_ = (NI)0;
			T7_ = (NI)0;
			T7_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(tt);
			colontmp_ = (NI)(T7_ - ((NI) 1));
			res = ((NI) 1);
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
					if (!(res <= colontmp_)) goto LA9;
					col = res;
					t = (*tt).sons->data[col];
					{
						NIM_BOOL T12_;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x;
						T12_ = (NIM_BOOL)0;
						T12_ = !((t == NIM_NIL));
						if (!(T12_)) goto LA13_;
						T12_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9));
						LA13_: ;
						if (!T12_) goto LA14_;
						x = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*t).sons->data[((NI) 0)], IL64(211106247216656));
						{
							NIM_BOOL T18_;
							NI T20_;
							NI T21_;
							tyTuple_zwpS6d6iewrdlBSTNFoyVA T24_;
							T18_ = (NIM_BOOL)0;
							T18_ = ((*x).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17));
							if (!(T18_)) goto LA19_;
							T20_ = (NI)0;
							T20_ = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
							T21_ = (NI)0;
							T21_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*n)._Ukind.S6.sons->data[((NI) 2)]);
							T18_ = ((NI)(T20_ - ((NI) 1)) == T21_);
							LA19_: ;
							if (!T18_) goto LA22_;
							foundObj = NIM_TRUE;
							nimZeroMem((void*)(&T24_), sizeof(tyTuple_zwpS6d6iewrdlBSTNFoyVA));
							T24_.Field0 = col;
							T24_.Field1 = s;
							safeAdd_TWFnHoF9cUXsejH5sIoriow((&(*x).methods), T24_);
						}
						LA22_: ;
					}
					LA14_: ;
					res += ((NI) 1);
				} LA9: ;
			}
		}
		{
			if (!!(foundObj)) goto LA27_;
			message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 15), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_115));
		}
		LA27_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		{
			NIM_BOOL T32_;
			T32_ = (NIM_BOOL)0;
			T32_ = hasObjParam_cO2rS0JIm8g9cbNlNyVnwhg_2(s);
			if (!T32_) goto LA33_;
			methodDef_NKjYu87vB0uQmGRMfpDEBQ((*c).graph, s, NIM_FALSE);
		}
		goto LA30_;
		LA33_: ;
		{
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_116));
		}
		LA30_: ;
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, pushProcCon_rlp4YNQ9cuQQzIjJRzZxqsA_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	rawPushProcCon_rlp4YNQ9cuQQzIjJRzZxqsA(c, owner);
	rawHandleSelf_rlp4YNQ9cuQQzIjJRzZxqsA_2(c, owner);
}

N_LIB_PRIVATE N_NIMCALL(void, typeAllowedCheck_OJXIxi4fH0HgKVBUkO49a7w)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tySet_tyEnum_TTypeAllowedFlag_wySCBkY0DFkxIXMhoVC4cw flags) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	t = typeAllowed_l66YrquEyj20orz2a4YbTw(typ, kind, flags);
	{
		if (!!((t == NIM_NIL))) goto LA3_;
		{
			NimStringDesc* T9_;
			NimStringDesc* T10_;
			NimStringDesc* T11_;
			NimStringDesc* T12_;
			if (!(t == typ)) goto LA7_;
			T9_ = (NimStringDesc*)0;
			T10_ = (NimStringDesc*)0;
			T10_ = typeToString_QlvraUan7WbHowhAbvDvdA(typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T11_ = (NimStringDesc*)0;
			T11_ = substr_9bUFQ4OV1temcDF0GZp317g(reprEnum((NI)kind, (&NTI_cNCW9acsSznmEccl1fgQwkw_)), ((NI) 2));
			T12_ = (NimStringDesc*)0;
			T12_ = nsuToLowerAsciiStr(T11_);
			T9_ = rawNewString((T10_ ? T10_->Sup.len : 0) + (T12_ ? T12_->Sup.len : 0) + 21);
appendString(T9_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_117));
appendString(T9_, T10_);
appendString(T9_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_118));
appendString(T9_, T12_);
			localError_NF6kBGchnhQYPbCedyefVA(conf, info, T9_);
		}
		goto LA5_;
		LA7_: ;
		{
			NimStringDesc* T14_;
			NimStringDesc* T15_;
			NimStringDesc* T16_;
			NimStringDesc* T17_;
			NimStringDesc* T18_;
			T14_ = (NimStringDesc*)0;
			T15_ = (NimStringDesc*)0;
			T15_ = typeToString_QlvraUan7WbHowhAbvDvdA(t, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T16_ = (NimStringDesc*)0;
			T16_ = typeToString_QlvraUan7WbHowhAbvDvdA(typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T17_ = (NimStringDesc*)0;
			T17_ = substr_9bUFQ4OV1temcDF0GZp317g(reprEnum((NI)kind, (&NTI_cNCW9acsSznmEccl1fgQwkw_)), ((NI) 2));
			T18_ = (NimStringDesc*)0;
			T18_ = nsuToLowerAsciiStr(T17_);
			T14_ = rawNewString((T15_ ? T15_->Sup.len : 0) + (T16_ ? T16_->Sup.len : 0) + (T18_ ? T18_->Sup.len : 0) + 41);
appendString(T14_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_117));
appendString(T14_, T15_);
appendString(T14_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_119));
appendString(T14_, T16_);
appendString(T14_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_118));
appendString(T14_, T18_);
			localError_NF6kBGchnhQYPbCedyefVA(conf, info, T14_);
		}
		LA5_: ;
	}
	LA3_: ;
}

static N_INLINE(void, paramsTypeCheck_x9cTuhi0AX52YZsSO1Yzt6Asem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	typeAllowedCheck_OJXIxi4fH0HgKVBUkO49a7w((*(*c).graph).config, (*(*typ).n).info, typ, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12), 0);
}

N_LIB_PRIVATE N_NIMCALL(void, activate_9aKmRFIRmowmJXCJbF9aObuQ_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
}

static N_INLINE(NIM_BOOL, isArrayConstr_kR3j4BVoX6LmX0p7IycneQsem)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T3_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41));
	if (!(T1_)) goto LA2_;
	T3_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T3_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*n).typ, IL64(36099165763184912));
	T1_ = ((*T3_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16));
	LA2_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, fixAbstractType_wkwHEj6zZnYo2DMZys6jnA_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		i_2 = ((NI) 1);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				it = (*n)._Ukind.S6.sons->data[i];
				{
					NIM_BOOL T6_;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T8_;
					T6_ = (NIM_BOOL)0;
					T6_ = ((*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59));
					if (!(T6_)) goto LA7_;
					T8_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T8_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*it).typ, IL64(36239903259928848));
					T6_ = !(((*T8_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27) || (*T8_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 48)));
					LA7_: ;
					if (!T6_) goto LA9_;
					{
						NIM_BOOL T13_;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T14_;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* s;
						T13_ = (NIM_BOOL)0;
						T14_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
						T14_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*it)._Ukind.S6.sons->data[((NI) 1)]).typ, IL64(36239903259928848));
						T13_ = ((*T14_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5) || (*T14_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18) || (*T14_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19));
						if (T13_) goto LA15_;
						T13_ = isArrayConstr_kR3j4BVoX6LmX0p7IycneQsem((*it)._Ukind.S6.sons->data[((NI) 1)]);
						LA15_: ;
						if (!T13_) goto LA16_;
						s = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*it).typ, IL64(36239903259928848));
						{
							if (!!(((*s).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6)))) goto LA20_;
							changeType_lfrCL9bscHIcnkZmm1gdmUg(c, (*it)._Ukind.S6.sons->data[((NI) 1)], s, NIM_TRUE);
						}
						LA20_: ;
						asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), (*it)._Ukind.S6.sons->data[((NI) 1)]);
					}
					LA16_: ;
				}
				LA9_: ;
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag, isAssignable_f9aTpaZXhdy71jBjQl9b59bxA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL isUnsafeAddr) {
	tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag result;
	result = (tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag)0;
	result = isAssignable_H8ClJSBthN45fIRKmjWHMQ((*(*c).p).owner, n, isUnsafeAddr);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, renderNotLValue_vfKkxNGxagsG9czCdz2IAEQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	result = dollar__qX5C9b0n9bOP7jk69amC8dA7A(n);
	{
		NIM_BOOL T3_;
		NI T5_;
		NimStringDesc* T8_;
		NimStringDesc* T9_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32));
		if (!(T3_)) goto LA4_;
		T5_ = (NI)0;
		T5_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		T3_ = (((NI) 1) < T5_);
		LA4_: ;
		if (!T3_) goto LA6_;
		T8_ = (NimStringDesc*)0;
		T9_ = (NimStringDesc*)0;
		T9_ = dollar__qX5C9b0n9bOP7jk69amC8dA7A((*n)._Ukind.S6.sons->data[((NI) 0)]);
		T8_ = rawNewString((T9_ ? T9_->Sup.len : 0) + (result ? result->Sup.len : 0) + 2);
appendString(T8_, T9_);
appendString(T8_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_125));
appendString(T8_, result);
appendString(T8_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_126));
		result = T8_;
	}
	goto LA1_;
	LA6_: ;
	{
		NIM_BOOL T11_;
		NI T13_;
		NimStringDesc* T16_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T17_;
		NimStringDesc* T18_;
		T11_ = (NIM_BOOL)0;
		T11_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59));
		if (!(T11_)) goto LA12_;
		T13_ = (NI)0;
		T13_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		T11_ = (T13_ == ((NI) 2));
		LA12_: ;
		if (!T11_) goto LA14_;
		T16_ = (NimStringDesc*)0;
		T17_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T17_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*n).typ, IL64(36239903259928848));
		T18_ = (NimStringDesc*)0;
		T18_ = typeToString_QlvraUan7WbHowhAbvDvdA(T17_, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		T16_ = rawNewString((T18_ ? T18_->Sup.len : 0) + (result ? result->Sup.len : 0) + 2);
appendString(T16_, T18_);
appendString(T16_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_125));
appendString(T16_, result);
appendString(T16_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_126));
		result = T16_;
	}
	goto LA1_;
	LA14_: ;
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newHiddenAddrTaken_U3qPBy54f1PkCP8vmFMCRA_13)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NIM_BOOL T5_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65));
		if (!(T3_)) goto LA4_;
		T5_ = (NIM_BOOL)0;
		T5_ = ((*(*(*c).graph).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 2));
		if (T5_) goto LA6_;
		T5_ = (((*(*c).module).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 28))&63U)))!=0);
		LA6_: ;
		T3_ = !(T5_);
		LA4_: ;
		if (!T3_) goto LA7_;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 1), (*(*c).graph).config);
		result = (*n)._Ukind.S6.sons->data[((NI) 0)];
	}
	goto LA1_;
	LA7_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T10_;
		T10_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T10_ = makeVarType_IekWGhQ3TRvziI363UmYLQ(c, (*n).typ, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23));
		result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 64), (*n).info, T10_);
		addSon_gCCf68XrWL79bKes6htzFjQ_2(result, n);
		{
			tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag T13_;
			NimStringDesc* T16_;
			NimStringDesc* T17_;
			T13_ = (tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag)0;
			T13_ = isAssignable_f9aTpaZXhdy71jBjQl9b59bxA(c, n, NIM_FALSE);
			if (!!(((6 &(1U<<((NU)(T13_)&7U)))!=0))) goto LA14_;
			T16_ = (NimStringDesc*)0;
			T16_ = renderNotLValue_vfKkxNGxagsG9czCdz2IAEQ(n);
			T17_ = (NimStringDesc*)0;
			T17_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_123), T16_);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T17_);
		}
		LA14_: ;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, analyseIfAddressTaken_U3qPBy54f1PkCP8vmFMCRA_12)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		{
			NIM_BOOL T4_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T6_;
			T4_ = (NIM_BOOL)0;
			T4_ = !(((*(*n)._Ukind.S4.sym).typ == NIM_NIL));
			if (!(T4_)) goto LA5_;
			T6_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T6_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S4.sym).typ, IL64(36099165763184656));
			T4_ = !(((*T6_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*T6_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47)));
			LA5_: ;
			if (!T4_) goto LA7_;
			(*(*n)._Ukind.S4.sym).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 15))%(sizeof(NU64)*8));
			result = newHiddenAddrTaken_U3qPBy54f1PkCP8vmFMCRA_13(c, n);
		}
		LA7_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45):
	{
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA12_;
			internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_127));
			goto BeforeRet_;
		}
		LA12_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T16_;
			T16_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T16_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*(*n)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S4.sym).typ, IL64(36099165763184656));
			if (!!(((*T16_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*T16_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47)))) goto LA17_;
			(*(*(*n)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S4.sym).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 15))%(sizeof(NU64)*8));
			result = newHiddenAddrTaken_U3qPBy54f1PkCP8vmFMCRA_13(c, n);
		}
		LA17_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
	{
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 1), (*(*c).graph).config);
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T22_;
			T22_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T22_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ, IL64(36099165763184656));
			if (!!(((*T22_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*T22_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47)))) goto LA23_;
			{
				if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA27_;
				(*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 15))%(sizeof(NU64)*8));
			}
			LA27_: ;
			result = newHiddenAddrTaken_U3qPBy54f1PkCP8vmFMCRA_13(c, n);
		}
		LA23_: ;
	}
	break;
	default:
	{
		result = newHiddenAddrTaken_U3qPBy54f1PkCP8vmFMCRA_13(c, n);
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, analyseIfAddressTakenInCall_wkwHEj6zZnYo2DMZys6jnA_5)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
{	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 1), (*(*c).graph).config);
	t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ, IL64(70368744179728));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		if (!(T3_)) goto LA4_;
		T3_ = ((TM_rF9caJawfOjYTjsgLVUSGFA_122[(NU)((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic)>>3] &(1U<<((NU)((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic)&7U)))!=0);
		LA4_: ;
		if (!T3_) goto LA5_;
		{
			NI i;
			NI colontmp_;
			NI T8_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T8_ = (NI)0;
			T8_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp_ = (NI)(T8_ - ((NI) 1));
			res = ((NI) 1);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA10;
					i = res;
					{
						NIM_BOOL T13_;
						NIM_BOOL T14_;
						NI T15_;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T18_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
						T13_ = (NIM_BOOL)0;
						T14_ = (NIM_BOOL)0;
						T15_ = (NI)0;
						T15_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(t);
						T14_ = (i < T15_);
						if (!(T14_)) goto LA16_;
						T14_ = !(((*t).sons->data[i] == NIM_NIL));
						LA16_: ;
						T13_ = T14_;
						if (!(T13_)) goto LA17_;
						T18_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
						T18_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*t).sons->data[i], IL64(36099165763184656));
						T13_ = ((*T18_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23));
						LA17_: ;
						if (!T13_) goto LA19_;
						it = (*n)._Ukind.S6.sons->data[i];
						{
							tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag T23_;
							T23_ = (tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag)0;
							T23_ = isAssignable_f9aTpaZXhdy71jBjQl9b59bxA(c, it, NIM_FALSE);
							if (!!(((6 &(1U<<((NU)(T23_)&7U)))!=0))) goto LA24_;
							{
								NimStringDesc* T30_;
								NimStringDesc* T31_;
								if (!!(((*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 64)))) goto LA28_;
								T30_ = (NimStringDesc*)0;
								T30_ = dollar__qX5C9b0n9bOP7jk69amC8dA7A(it);
								T31_ = (NimStringDesc*)0;
								T31_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_123), T30_);
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*it).info, T31_);
							}
							LA28_: ;
						}
						LA24_: ;
					}
					LA19_: ;
					res += ((NI) 1);
				} LA10: ;
			}
		}
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg;
			if (!((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 31) || (*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 32) || (*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 33))) goto LA34_;
			arg = (*n)._Ukind.S6.sons->data[((NI) 1)];
			{
				if (!((*arg).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65))) goto LA38_;
				arg = (*arg)._Ukind.S6.sons->data[((NI) 0)];
			}
			LA38_: ;
			{
				NIM_BOOL T42_;
				NIM_BOOL T43_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T46_;
				NimStringDesc* T49_;
				NimStringDesc* T50_;
				T42_ = (NIM_BOOL)0;
				T43_ = (NIM_BOOL)0;
				T43_ = ((*arg).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
				if (!(T43_)) goto LA44_;
				T43_ = ((*(*arg)._Ukind.S4.sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 11));
				LA44_: ;
				T42_ = T43_;
				if (!(T42_)) goto LA45_;
				T46_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T46_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*arg).typ, IL64(36099165763184912));
				T42_ = ((*T46_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*T46_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47));
				LA45_: ;
				if (!T42_) goto LA47_;
				T49_ = (NimStringDesc*)0;
				T49_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA((*n)._Ukind.S6.sons->data[((NI) 1)], 4);
				T50_ = (NimStringDesc*)0;
				T50_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_124), T49_);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T50_);
			}
			LA47_: ;
		}
		LA34_: ;
		goto BeforeRet_;
	}
	LA5_: ;
	{
		NI i_2;
		NI colontmp__2;
		NI T52_;
		NI res_2;
		i_2 = (NI)0;
		colontmp__2 = (NI)0;
		T52_ = (NI)0;
		T52_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp__2 = (NI)(T52_ - ((NI) 1));
		res_2 = ((NI) 1);
		{
			while (1) {
				if (!(res_2 <= colontmp__2)) goto LA54;
				i_2 = res_2;
				{
					if (!((*(*n)._Ukind.S6.sons->data[i_2]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32))) goto LA57_;
					analyseIfAddressTakenInCall_wkwHEj6zZnYo2DMZys6jnA_5(c, (*n)._Ukind.S6.sons->data[i_2]);
				}
				LA57_: ;
				{
					NIM_BOOL T61_;
					NI T62_;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T64_;
					T61_ = (NIM_BOOL)0;
					T62_ = (NI)0;
					T62_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(t);
					T61_ = (i_2 < T62_);
					if (!(T61_)) goto LA63_;
					T64_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T64_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*t).sons->data[i_2], IL64(36099165763184656));
					T61_ = ((*T64_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23));
					LA63_: ;
					if (!T61_) goto LA65_;
					{
						if (!!(((*(*n)._Ukind.S6.sons->data[i_2]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 64)))) goto LA69_;
						asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_2]), analyseIfAddressTaken_U3qPBy54f1PkCP8vmFMCRA_12(c, (*n)._Ukind.S6.sons->data[i_2]));
					}
					LA69_: ;
				}
				LA65_: ;
				res_2 += ((NI) 1);
			} LA54: ;
		}
	}
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAddr_9a0tqA9cvykbsNlTYkUMQoBw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL isUnsafeAddr) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 63), (*n).info);
	x = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, n, 0);
	{
		if (!((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA3_;
		(*(*x)._Ukind.S4.sym).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 15))%(sizeof(NU64)*8));
	}
	LA3_: ;
	{
		tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag T7_;
		T7_ = (tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag)0;
		T7_ = isAssignable_f9aTpaZXhdy71jBjQl9b59bxA(c, x, isUnsafeAddr);
		if (!!(((6 &(1U<<((NU)(T7_)&7U)))!=0))) goto LA8_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_128));
	}
	LA8_: ;
	add_gCCf68XrWL79bKes6htzFjQ(result, x);
	asgnRefNoCycle((void**) (&(*result).typ), makePtrType_l9aklUqVeTt1VTZeAvy7NSg(c, (*x).typ));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTypeOf_U3qPBy54f1PkCP8vmFMCRA_14)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* typExpr;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 132), (*n).info);
	typExpr = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, n, 4);
	add_gCCf68XrWL79bKes6htzFjQ(result, typExpr);
	asgnRefNoCycle((void**) (&(*result).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, (*typExpr).typ));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semDeref_U3qPBy54f1PkCP8vmFMCRA_15)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 1), (*(*c).graph).config);
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0));
	result = n;
	t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ, IL64(211106240923664));
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21):
	{
		asgnRefNoCycle((void**) (&(*n).typ), lastSon_ab52xel9cFebv9am0xV04xXA(t));
	}
	break;
	default:
	{
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semStaticType_wMW8LHacN21DLh2SAZzgTw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* childNode, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60), prev, c);
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, childNode, NIM_NIL);
	base = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(T1_, 272);
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, base);
	(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 23))%(sizeof(NU64)*8));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semSymGenericInstantiation_xZiYClCxIP6FwnrTC88utQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, explicitGenericSym_xZiYClCxIP6FwnrTC88utQ_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA m;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* newInst;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&m), sizeof(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA));
	initCandidate_QuqWjdtdULLI4ODFpVkK0Q(c, (&m), s, NIM_NIL, ((NI) -1), NIM_FALSE);
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* arg;
				tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ tm;
				tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ r;
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				formal = (*(*(*(*s).ast)._Ukind.S6.sons->data[((NI) 2)])._Ukind.S6.sons->data[(NI)(i - ((NI) 1))]).typ;
				arg = (*(*n)._Ukind.S6.sons->data[i]).typ;
				{
					NIM_BOOL T7_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* evaluated;
					T7_ = (NIM_BOOL)0;
					T7_ = ((*formal).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60));
					if (!(T7_)) goto LA8_;
					T7_ = !(((*arg).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60)));
					LA8_: ;
					if (!T7_) goto LA9_;
					evaluated = (*c).semTryConstExpr(c, (*n)._Ukind.S6.sons->data[i]);
					{
						if (!!((evaluated == NIM_NIL))) goto LA13_;
						arg = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60), c);
						if ((*arg).sons) { nimGCunrefNoCycle((*arg).sons); (*arg).sons = NIM_NIL; }
						(*arg).sons = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeqRC1((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
						asgnRefNoCycle((void**) (&(*arg).sons->data[0]), (*evaluated).typ);
						asgnRefNoCycle((void**) (&(*arg).n), evaluated);
					}
					LA13_: ;
				}
				LA9_: ;
				r = typeRelImpl_3a3tkQB9aY8V2J9acM5cZ6nA((&m), formal, arg, 0);
				tm = r;
				{
					if (!((3 &(1U<<((NU)(tm)&15U)))!=0)) goto LA17_;
					result = NIM_NIL;
					goto BeforeRet_;
				}
				LA17_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	newInst = generateInstance_g9b7H3AgWQ9ciaW2dF0vQm9ag(c, s, m.bindings, (*n).info);
	(*(*newInst).typ).flags &= ~(((NU64)1) << ((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9)) % (sizeof(NU64)*8)));
	markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, s, &(*(*c).graph).usageSym);
	result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(newInst, (*n).info);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, explicitGenericInstError_U3qPBy54f1PkCP8vmFMCRA_16)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NimStringDesc* T1_;
	NimStringDesc* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (NimStringDesc*)0;
	T1_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 0);
	T2_ = (NimStringDesc*)0;
	T2_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_36), T1_);
	localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T2_);
	result = n;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, explicitGenericInstantiation_xZiYClCxIP6FwnrTC88utQ_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_2;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e;
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				e = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[i], 0);
				asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[i]).typ), skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*e).typ, 256));
				res += ((NI) 1);
			} LA4: ;
		}
	}
	s_2 = s;
	a = (*n)._Ukind.S6.sons->data[((NI) 0)];
	{
		if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA7_;
		{
			NI T11_;
			NI T12_;
			NI expected;
			NimStringDesc* T15_;
			NimStringDesc* T16_;
			NI T17_;
			NimStringDesc* T18_;
			NimStringDesc* T19_;
			T11_ = (NI)0;
			T11_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer((*(*s_2).ast)._Ukind.S6.sons->data[((NI) 2)]);
			T12_ = (NI)0;
			T12_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			if (!!((T11_ == (NI)(T12_ - ((NI) 1))))) goto LA13_;
			expected = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer((*(*s_2).ast)._Ukind.S6.sons->data[((NI) 2)]);
			T15_ = (NimStringDesc*)0;
			T16_ = (NimStringDesc*)0;
			T16_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 0);
			T17_ = (NI)0;
			T17_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			T18_ = (NimStringDesc*)0;
			T18_ = nimIntToStr((NI)(T17_ - ((NI) 1)));
			T19_ = (NimStringDesc*)0;
			T19_ = nimIntToStr(expected);
			T15_ = rawNewString((T16_ ? T16_->Sup.len : 0) + (T18_ ? T18_->Sup.len : 0) + (T19_ ? T19_->Sup.len : 0) + 50);
appendString(T15_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_131));
appendString(T15_, T16_);
appendString(T15_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_132));
appendString(T15_, T18_);
appendString(T15_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_133));
appendString(T15_, T19_);
			localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), T15_);
			result = n;
			goto BeforeRet_;
		}
		LA13_: ;
		result = explicitGenericSym_xZiYClCxIP6FwnrTC88utQ_3(c, n, s_2);
		{
			if (!(result == NIM_NIL)) goto LA22_;
			result = explicitGenericInstError_U3qPBy54f1PkCP8vmFMCRA_16(c, n);
		}
		LA22_: ;
	}
	goto LA5_;
	LA7_: ;
	{
		if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56) || (*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 57))) goto LA25_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg((*a).kind, (*n).info);
		{
			NI i_2;
			NI colontmp__2;
			NI T28_;
			NI res_2;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			T28_ = (NI)0;
			T28_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
			colontmp__2 = (NI)(T28_ - ((NI) 1));
			res_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* candidate;
					if (!(res_2 <= colontmp__2)) goto LA30;
					i_2 = res_2;
					candidate = (*(*a)._Ukind.S6.sons->data[i_2])._Ukind.S4.sym;
					{
						if (!((126976 &(1U<<((NU)((*candidate).kind)&31U)))!=0)) goto LA33_;
						{
							NI T37_;
							NI T38_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
							T37_ = (NI)0;
							T37_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer((*(*candidate).ast)._Ukind.S6.sons->data[((NI) 2)]);
							T38_ = (NI)0;
							T38_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
							if (!(T37_ == (NI)(T38_ - ((NI) 1)))) goto LA39_;
							x = explicitGenericSym_xZiYClCxIP6FwnrTC88utQ_3(c, n, candidate);
							{
								if (!!((x == NIM_NIL))) goto LA43_;
								add_gCCf68XrWL79bKes6htzFjQ(result, x);
							}
							LA43_: ;
						}
						LA39_: ;
					}
					LA33_: ;
					res_2 += ((NI) 1);
				} LA30: ;
			}
		}
		{
			NIM_BOOL T47_;
			NI T48_;
			T47_ = (NIM_BOOL)0;
			T48_ = (NI)0;
			T48_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
			T47_ = (T48_ == ((NI) 1));
			if (!(T47_)) goto LA49_;
			T47_ = ((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56));
			LA49_: ;
			if (!T47_) goto LA50_;
			result = (*result)._Ukind.S6.sons->data[((NI) 0)];
		}
		goto LA45_;
		LA50_: ;
		{
			NI T53_;
			T53_ = (NI)0;
			T53_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
			if (!(T53_ == ((NI) 0))) goto LA54_;
			result = explicitGenericInstError_U3qPBy54f1PkCP8vmFMCRA_16(c, n);
		}
		goto LA45_;
		LA54_: ;
		LA45_: ;
	}
	goto LA5_;
	LA25_: ;
	{
		result = explicitGenericInstError_U3qPBy54f1PkCP8vmFMCRA_16(c, n);
	}
	LA5_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, symFromType_iNWu8slD9btMQQMjClRjrSQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T5_;
{	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		if (!!(((*t).sym == NIM_NIL))) goto LA3_;
		result = (*t).sym;
		goto BeforeRet_;
	}
	LA3_: ;
	T5_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T5_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_134));
	result = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7), T5_, (*t).owner, info, 0);
	(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 30))%(sizeof(NU64)*8));
	asgnRefNoCycle((void**) (&(*result).typ), t);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, symNodeFromType_EqKA9bzupHdasVP0eorisDQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = symFromType_iNWu8slD9btMQQMjClRjrSQ(c, t, info);
	result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(T1_, info);
	asgnRefNoCycle((void**) (&(*result).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, t));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semSubscript_k2Lin9a76VyrWz9b8OoRC9apg_8)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* arr;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI T3_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 1))) goto LA4_;
		x = semDeref_U3qPBy54f1PkCP8vmFMCRA_15(c, n);
		{
			if (!(x == NIM_NIL)) goto LA8_;
			result = NIM_NIL;
			goto BeforeRet_;
		}
		LA8_: ;
		result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 47), (*x).info, (*x).typ);
		add_gCCf68XrWL79bKes6htzFjQ(result, (*x)._Ukind.S6.sons->data[((NI) 0)]);
		goto BeforeRet_;
	}
	LA4_: ;
	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 2), (*(*c).graph).config);
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 16384));
	arr = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ, IL64(9218305501956112));
	{
		if (!((*arr).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA12_;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T16_;
			T16_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T16_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(arr);
			if (!((*T16_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0))) goto LA17_;
			result = n;
			asgnRefNoCycle((void**) (&(*result).typ), semStaticType_wMW8LHacN21DLh2SAZzgTw(c, (*n)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL));
			goto BeforeRet_;
		}
		goto LA14_;
		LA17_: ;
		{
			if (!!(((*arr).n == NIM_NIL))) goto LA20_;
			result = semSubscript_k2Lin9a76VyrWz9b8OoRC9apg_8(c, (*arr).n, flags);
			goto BeforeRet_;
		}
		goto LA14_;
		LA20_: ;
		{
			arr = base_BFFuB9cFDZ89c6QWZqEFAtdA(arr);
		}
		LA14_: ;
	}
	LA12_: ;
	switch ((*arr).kind) {
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 48):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 29):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* indexType;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg;
		{
			NI T26_;
			T26_ = (NI)0;
			T26_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			if (!!((T26_ == ((NI) 2)))) goto LA27_;
			result = NIM_NIL;
			goto BeforeRet_;
		}
		LA27_: ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), makeDeref_nRsa9acFWDI6GmzVZLXX3CQ((*n)._Ukind.S6.sons->data[((NI) 0)]));
		{
			NI i;
			NI colontmp_;
			NI T30_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T30_ = (NI)0;
			T30_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp_ = (NI)(T30_ - ((NI) 1));
			res = ((NI) 1);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA32;
					i = res;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[i], (flags & 260)));
					res += ((NI) 1);
				} LA32: ;
			}
		}
		{
			if (!((*arr).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16))) goto LA35_;
			indexType = (*arr).sons->data[((NI) 0)];
		}
		goto LA33_;
		LA35_: ;
		{
			indexType = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31));
		}
		LA33_: ;
		arg = indexTypesMatch_nqUTi2CjNXm3wHwX3FP3iA(c, indexType, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ, (*n)._Ukind.S6.sons->data[((NI) 1)]);
		{
			if (!!((arg == NIM_NIL))) goto LA40_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), arg);
			result = n;
			asgnRefNoCycle((void**) (&(*result).typ), elemType_BFFuB9cFDZ89c6QWZqEFAtdA_2(arr));
		}
		LA40_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T43_;
		result = n;
		T43_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T43_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, n, NIM_NIL);
		asgnRefNoCycle((void**) (&(*result).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, T43_));
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		{
			NI T47_;
			T47_ = (NI)0;
			T47_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			if (!!((T47_ == ((NI) 2)))) goto LA48_;
			result = NIM_NIL;
			goto BeforeRet_;
		}
		LA48_: ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), makeDeref_nRsa9acFWDI6GmzVZLXX3CQ((*n)._Ukind.S6.sons->data[((NI) 0)]));
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, (*n)._Ukind.S6.sons->data[((NI) 1)]));
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T52_;
			NI64 idx;
			T52_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T52_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ, IL64(70368745261072));
			if (!((*T52_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) && (*T52_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 35))) goto LA53_;
			idx = getOrdValue_k4X4XP9cdVXYioHD9akA9bVbQ((*n)._Ukind.S6.sons->data[((NI) 1)]);
			{
				NIM_BOOL T57_;
				NI T59_;
				T57_ = (NIM_BOOL)0;
				T57_ = (IL64(0) <= idx);
				if (!(T57_)) goto LA58_;
				T59_ = (NI)0;
				T59_ = len_SWFNCiWYB89bTUPh5KptkvA_2(arr);
				T57_ = (idx < ((NI64) (T59_)));
				LA58_: ;
				if (!T57_) goto LA60_;
				asgnRefNoCycle((void**) (&(*n).typ), (*arr).sons->data[idx]);
			}
			goto LA55_;
			LA60_: ;
			{
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_130));
			}
			LA55_: ;
			result = n;
		}
		goto LA50_;
		LA53_: ;
		{
			result = NIM_NIL;
		}
		LA50_: ;
	}
	break;
	default:
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		{
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA67_;
			s = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
		}
		goto LA65_;
		LA67_: ;
		{
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56) || (*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 57))) goto LA70_;
			s = (*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
		}
		goto LA65_;
		LA70_: ;
		{
			s = NIM_NIL;
		}
		LA65_: ;
		{
			if (!!((s == NIM_NIL))) goto LA75_;
			switch ((*s).kind) {
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 13):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 16):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15):
			{
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semSymGenericInstantiation_xZiYClCxIP6FwnrTC88utQ(c, (*n)._Ukind.S6.sons->data[((NI) 0)], s));
				result = explicitGenericInstantiation_xZiYClCxIP6FwnrTC88utQ_2(c, n, s);
			}
			break;
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
			{
				{
					if (!((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 15))&31U)))!=0)) goto LA81_;
					result = n;
				}
				goto LA79_;
				LA81_: ;
				{
					(*n).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27);
					switch ((*s).kind) {
					case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17):
					{
						result = semMacroExpr_9bmxDHTa4eojLns652LIkJw(c, n, n, s, flags);
					}
					break;
					case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
					{
						result = semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA(c, n, s, flags);
					}
					break;
					default:
					{
					}
					break;
					}
				}
				LA79_: ;
			}
			break;
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7):
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T88_;
				T88_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T88_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, n, NIM_NIL);
				result = symNodeFromType_EqKA9bzupHdasVP0eorisDQ(c, T88_, (*n).info);
			}
			break;
			default:
			{
			}
			break;
			}
		}
		LA75_: ;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, effectProblem_sKErKWQPrnyCjBRG4muZzw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* f, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, NimStringDesc** result) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*f).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25));
		if (!(T3_)) goto LA4_;
		T3_ = ((*a).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25));
		LA4_: ;
		if (!T3_) goto LA5_;
		{
			NIM_BOOL T9_;
			T9_ = (NIM_BOOL)0;
			T9_ = (((*f).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 7))&63U)))!=0);
			if (!(T9_)) goto LA10_;
			T9_ = !((((*a).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 7))&63U)))!=0));
			LA10_: ;
			if (!T9_) goto LA11_;
			unsureAsgnRef((void**) (&(*result)), resizeString((*result), 103));
appendString((*result), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_145));
		}
		goto LA7_;
		LA11_: ;
		{
			NIM_BOOL T14_;
			T14_ = (NIM_BOOL)0;
			T14_ = (((*f).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 1))&63U)))!=0);
			if (!(T14_)) goto LA15_;
			T14_ = !((((*a).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 1))&63U)))!=0));
			LA15_: ;
			if (!T14_) goto LA16_;
			unsureAsgnRef((void**) (&(*result)), resizeString((*result), 116));
appendString((*result), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_146));
		}
		goto LA7_;
		LA16_: ;
		LA7_: ;
	}
	LA5_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, presentFailedCandidates_lit4HV39axNlXtmRW3QNvtA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySequence_0dpGN6F4ocevqUQGsaf41w* errors, tyTuple_ZtAk5YtH0VW1iPowvxePrg* Result) {
	tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw prefer;
	NimStringDesc* proto;
	NimStringDesc* candidates;
	prefer = ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0);
	proto = describeArgs_ecpCiCj0vYckEVlm9brabQQ(c, n, ((NI) 1), ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
	{
		tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ err;
		NI i;
		NI L;
		NI T2_;
		nimZeroMem((void*)(&err), sizeof(tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ));
		i = ((NI) 0);
		T2_ = (errors ? errors->Sup.len : 0);
		L = T2_;
		{
			while (1) {
				NimStringDesc* errProto;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
				if (!(i < L)) goto LA4;
				nimCopyMem((void*)(&err), (NIM_CONST void*)(&errors->data[i]), sizeof(err));
				errProto = ((NimStringDesc*) NIM_NIL);
				n_2 = (*(*err.sym).typ).n;
				{
					NI i_2;
					NI colontmp_;
					NI T6_;
					NI res;
					i_2 = (NI)0;
					colontmp_ = (NI)0;
					T6_ = (NI)0;
					T6_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n_2);
					colontmp_ = (NI)(T6_ - ((NI) 1));
					res = ((NI) 1);
					{
						while (1) {
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* p;
							if (!(res <= colontmp_)) goto LA8;
							i_2 = res;
							p = (*n_2)._Ukind.S6.sons->data[i_2];
							{
								NimStringDesc* T13_;
								if (!((*p).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA11_;
								T13_ = (NimStringDesc*)0;
								T13_ = typeToString_QlvraUan7WbHowhAbvDvdA((*(*p)._Ukind.S4.sym).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
								errProto = resizeString(errProto, (T13_ ? T13_->Sup.len : 0) + 0);
appendString(errProto, T13_);
								{
									NI T16_;
									T16_ = (NI)0;
									T16_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n_2);
									if (!!((i_2 == (NI)(T16_ - ((NI) 1))))) goto LA17_;
									errProto = resizeString(errProto, 2);
appendString(errProto, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_137));
								}
								LA17_: ;
							}
							LA11_: ;
							res += ((NI) 1);
						} LA8: ;
					}
				}
				{
					if (!eqStrings(errProto, proto)) goto LA21_;
					prefer = ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 3);
					goto LA1;
				}
				LA21_: ;
				i += ((NI) 1);
			} LA4: ;
		}
	} LA1: ;
	candidates = ((NimStringDesc*) NIM_NIL);
	{
		tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ err_2;
		NI i_3;
		NI L_2;
		NI T24_;
		nimZeroMem((void*)(&err_2), sizeof(tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ));
		i_3 = ((NI) 0);
		T24_ = (errors ? errors->Sup.len : 0);
		L_2 = T24_;
		{
			while (1) {
				if (!(i_3 < L_2)) goto LA26;
				nimCopyMem((void*)(&err_2), (NIM_CONST void*)(&errors->data[i_3]), sizeof(err_2));
				{
					NIM_BOOL T29_;
					NimStringDesc* T33_;
					T29_ = (NIM_BOOL)0;
					T29_ = ((520192 &(1U<<((NU)((*err_2.sym).kind)&31U)))!=0);
					if (!(T29_)) goto LA30_;
					T29_ = !(((*err_2.sym).ast == NIM_NIL));
					LA30_: ;
					if (!T29_) goto LA31_;
					T33_ = (NimStringDesc*)0;
					T33_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA((*err_2.sym).ast, 22);
					candidates = resizeString(candidates, (T33_ ? T33_->Sup.len : 0) + 0);
appendString(candidates, T33_);
				}
				goto LA27_;
				LA31_: ;
				{
					NimStringDesc* T35_;
					T35_ = (NimStringDesc*)0;
					T35_ = getProcHeader_7eB0wVYzPcmlKQ3zrnnOsA((*(*c).graph).config, err_2.sym, prefer);
					candidates = resizeString(candidates, (T35_ ? T35_->Sup.len : 0) + 0);
appendString(candidates, T35_);
				}
				LA27_: ;
				candidates = resizeString(candidates, 1);
appendString(candidates, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_138));
				{
					NIM_BOOL T38_;
					NI T40_;
					NIM_BOOL cond;
					NI T43_;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* wanted;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* got;
					T38_ = (NIM_BOOL)0;
					T38_ = !((err_2.firstMismatch == ((NI) 0)));
					if (!(T38_)) goto LA39_;
					T40_ = (NI)0;
					T40_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					T38_ = (((NI) 1) < T40_);
					LA39_: ;
					if (!T38_) goto LA41_;
					T43_ = (NI)0;
					T43_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					cond = (((NI) 2) < T43_);
					{
						NimStringDesc* T48_;
						NimStringDesc* T49_;
						if (!cond) goto LA46_;
						T48_ = (NimStringDesc*)0;
						T49_ = (NimStringDesc*)0;
						T49_ = nimIntToStr((err_2.firstMismatch > 0? (err_2.firstMismatch) : -(err_2.firstMismatch)));
						T48_ = rawNewString((T49_ ? T49_->Sup.len : 0) + 35);
appendString(T48_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_139));
appendString(T48_, T49_);
						candidates = resizeString(candidates, (T48_ ? T48_->Sup.len : 0) + 0);
appendString(candidates, T48_);
						{
							if (!(((NI) 0) <= err_2.firstMismatch)) goto LA52_;
							candidates = resizeString(candidates, 18);
appendString(candidates, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_140));
						}
						goto LA50_;
						LA52_: ;
						{
							NimStringDesc* T55_;
							NimStringDesc* T56_;
							T55_ = (NimStringDesc*)0;
							T56_ = (NimStringDesc*)0;
							T56_ = dollar__qX5C9b0n9bOP7jk69amC8dA7A((*(*n)._Ukind.S6.sons->data[((NI32)-(err_2.firstMismatch))])._Ukind.S6.sons->data[((NI) 0)]);
							T55_ = rawNewString((T56_ ? T56_->Sup.len : 0) + 28);
appendString(T55_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_141));
appendString(T55_, T56_);
							candidates = resizeString(candidates, (T55_ ? T55_->Sup.len : 0) + 0);
appendString(candidates, T55_);
						}
						LA50_: ;
					}
					LA46_: ;
					wanted = NIM_NIL;
					got = NIM_NIL;
					{
						if (!(err_2.firstMismatch < ((NI) 0))) goto LA59_;
					}
					goto LA57_;
					LA59_: ;
					{
						NI T62_;
						T62_ = (NI)0;
						T62_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*err_2.sym).typ);
						if (!(err_2.firstMismatch < T62_)) goto LA63_;
						wanted = (*(*err_2.sym).typ).sons->data[err_2.firstMismatch];
						{
							NimStringDesc* T69_;
							if (!cond) goto LA67_;
							T69_ = (NimStringDesc*)0;
							T69_ = typeToString_QlvraUan7WbHowhAbvDvdA(wanted, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
							candidates = resizeString(candidates, (T69_ ? T69_->Sup.len : 0) + 0);
appendString(candidates, T69_);
						}
						LA67_: ;
					}
					goto LA57_;
					LA63_: ;
					{
						{
							if (!cond) goto LA73_;
							candidates = resizeString(candidates, 4);
appendString(candidates, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_142));
						}
						LA73_: ;
					}
					LA57_: ;
					{
						NIM_BOOL T77_;
						NI T79_;
						T77_ = (NIM_BOOL)0;
						T77_ = (((NI) 0) < err_2.firstMismatch);
						if (!(T77_)) goto LA78_;
						T79_ = (NI)0;
						T79_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
						T77_ = (err_2.firstMismatch < T79_);
						LA78_: ;
						if (!T77_) goto LA80_;
						{
							NimStringDesc* T86_;
							if (!cond) goto LA84_;
							candidates = resizeString(candidates, 19);
appendString(candidates, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_143));
							T86_ = (NimStringDesc*)0;
							T86_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA((*n)._Ukind.S6.sons->data[err_2.firstMismatch], 0);
							candidates = resizeString(candidates, (T86_ ? T86_->Sup.len : 0) + 0);
appendString(candidates, T86_);
							candidates = resizeString(candidates, 14);
appendString(candidates, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_144));
						}
						LA84_: ;
						got = (*(*n)._Ukind.S6.sons->data[err_2.firstMismatch]).typ;
						{
							NimStringDesc* T91_;
							if (!cond) goto LA89_;
							T91_ = (NimStringDesc*)0;
							T91_ = typeToString_QlvraUan7WbHowhAbvDvdA(got, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
							candidates = resizeString(candidates, (T91_ ? T91_->Sup.len : 0) + 0);
appendString(candidates, T91_);
						}
						LA89_: ;
					}
					LA80_: ;
					{
						NIM_BOOL T94_;
						T94_ = (NIM_BOOL)0;
						T94_ = !((wanted == NIM_NIL));
						if (!(T94_)) goto LA95_;
						T94_ = !((got == NIM_NIL));
						LA95_: ;
						if (!T94_) goto LA96_;
						effectProblem_sKErKWQPrnyCjBRG4muZzw(wanted, got, (&candidates));
					}
					LA96_: ;
					{
						if (!cond) goto LA100_;
						candidates = resizeString(candidates, 1);
appendString(candidates, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_138));
					}
					LA100_: ;
				}
				LA41_: ;
				{
					NIM_BOOL T104_;
					NI T106_;
					NimStringDesc* T109_;
					NimStringDesc* T110_;
					T104_ = (NIM_BOOL)0;
					T104_ = !((err_2.unmatchedVarParam == ((NI) 0)));
					if (!(T104_)) goto LA105_;
					T106_ = (NI)0;
					T106_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					T104_ = (err_2.unmatchedVarParam < T106_);
					LA105_: ;
					if (!T104_) goto LA107_;
					T109_ = (NimStringDesc*)0;
					T110_ = (NimStringDesc*)0;
					T110_ = renderNotLValue_vfKkxNGxagsG9czCdz2IAEQ((*n)._Ukind.S6.sons->data[err_2.unmatchedVarParam]);
					T109_ = rawNewString((T110_ ? T110_->Sup.len : 0) + 70);
appendString(T109_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_147));
appendString(T109_, T110_);
appendString(T109_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_148));
					candidates = resizeString(candidates, (T109_ ? T109_->Sup.len : 0) + 0);
appendString(candidates, T109_);
				}
				LA107_: ;
				{
					NimStringDesc* diag;
					tySequence_sM4lkSb7zS6F7OVMvW9cffQ* colontmp__2;
					NI i_4;
					NI L_3;
					NI T112_;
					diag = (NimStringDesc*)0;
					colontmp__2 = (tySequence_sM4lkSb7zS6F7OVMvW9cffQ*)0;
					colontmp__2 = err_2.diagnostics;
					i_4 = ((NI) 0);
					T112_ = (colontmp__2 ? colontmp__2->Sup.len : 0);
					L_3 = T112_;
					{
						while (1) {
							NimStringDesc* T115_;
							if (!(i_4 < L_3)) goto LA114;
							diag = colontmp__2->data[i_4];
							T115_ = (NimStringDesc*)0;
							T115_ = rawNewString((diag ? diag->Sup.len : 0) + 1);
appendString(T115_, diag);
appendString(T115_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_138));
							candidates = resizeString(candidates, (T115_ ? T115_->Sup.len : 0) + 0);
appendString(candidates, T115_);
							i_4 += ((NI) 1);
						} LA114: ;
					}
				}
				i_3 += ((NI) 1);
			} LA26: ;
		}
	}
	(*Result).Field0 = prefer;
	unsureAsgnRef((void**) (&(*Result).Field1), copyString(candidates));
}

N_LIB_PRIVATE N_NIMCALL(void, notFoundError_OeLjQPoXFC2vFeDs66H0uQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySequence_0dpGN6F4ocevqUQGsaf41w* errors) {
	tyTuple_ZtAk5YtH0VW1iPowvxePrg T12_;
	tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw prefer;
	NimStringDesc* candidates;
	NimStringDesc* result;
	NimStringDesc* T13_;
	NimStringDesc* T19_;
	NimStringDesc* T20_;
{	{
		if (!((*(*(*c).graph).config).m.errorOutputs == 0)) goto LA3_;
		globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_17));
	}
	LA3_: ;
	{
		NI T7_;
		NimStringDesc* T10_;
		NimStringDesc* T11_;
		T7_ = (errors ? errors->Sup.len : 0);
		if (!(T7_ == ((NI) 0))) goto LA8_;
		T10_ = (NimStringDesc*)0;
		T10_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA((*n)._Ukind.S6.sons->data[((NI) 0)], 0);
		T11_ = (NimStringDesc*)0;
		T11_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_136), T10_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T11_);
		goto BeforeRet_;
	}
	LA8_: ;
	nimZeroMem((void*)(&T12_), sizeof(tyTuple_ZtAk5YtH0VW1iPowvxePrg));
	presentFailedCandidates_lit4HV39axNlXtmRW3QNvtA(c, n, errors, (&T12_));
	prefer = (tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw)0;
	prefer = T12_.Field0;
	candidates = (NimStringDesc*)0;
	candidates = T12_.Field1;
	result = copyString(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_149));
	T13_ = (NimStringDesc*)0;
	T13_ = describeArgs_ecpCiCj0vYckEVlm9brabQQ(c, n, ((NI) 1), prefer);
	result = resizeString(result, (T13_ ? T13_->Sup.len : 0) + 0);
appendString(result, T13_);
	result = addChar(result, 62);
	{
		NimStringDesc* T18_;
		if (!!(((candidates ? candidates->Sup.len : 0) == 0))) goto LA16_;
		T18_ = (NimStringDesc*)0;
		T18_ = rawNewString((candidates ? candidates->Sup.len : 0) + 23);
appendString(T18_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_150));
appendString(T18_, candidates);
		result = resizeString(result, (T18_ ? T18_->Sup.len : 0) + 0);
appendString(result, T18_);
	}
	LA16_: ;
	T19_ = (NimStringDesc*)0;
	T20_ = (NimStringDesc*)0;
	T20_ = dollar__qX5C9b0n9bOP7jk69amC8dA7A(n);
	T19_ = rawNewString((result ? result->Sup.len : 0) + (T20_ ? T20_->Sup.len : 0) + 13);
appendString(T19_, result);
appendString(T19_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_151));
appendString(T19_, T20_);
	localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T19_);
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, bracketNotFoundError_wkwHEj6zZnYo2DMZys6jnA_6)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tySequence_0dpGN6F4ocevqUQGsaf41w* errors;
	tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ o;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* headSymbol;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* symx;
	errors = NIM_NIL;
	nimZeroMem((void*)(&o), sizeof(tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ));
	headSymbol = (*n)._Ukind.S6.sons->data[((NI) 0)];
	symx = initOverloadIter_5E8M4x8tMAW3KCmti57FUA((&o), c, headSymbol);
	{
		while (1) {
			if (!!((symx == NIM_NIL))) goto LA2;
			{
				tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ T7_;
				NI T8_;
				if (!((520192 &(1U<<((NU)((*symx).kind)&31U)))!=0)) goto LA5_;
				nimZeroMem((void*)(&T7_), sizeof(tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ));
				nimZeroMem((void*)(&T7_), sizeof(tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ));
				T7_.sym = symx;
				T7_.unmatchedVarParam = ((NI) 0);
				T7_.firstMismatch = ((NI) 0);
				T7_.diagnostics = NIM_NIL;
				T7_.enabled = NIM_FALSE;
				errors = (tySequence_0dpGN6F4ocevqUQGsaf41w*) incrSeqV3(&(errors)->Sup, (&NTI_0dpGN6F4ocevqUQGsaf41w_));
				T8_ = errors->Sup.len++;
				genericAssign((void*)(&errors->data[T8_]), (void*)(&T7_), (&NTI_5fLnqPfj0Ty9cmak1Q1pBFQ_));
			}
			LA5_: ;
			symx = nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2((&o), c, headSymbol);
		} LA2: ;
	}
	{
		NI T11_;
		NimStringDesc* T14_;
		NimStringDesc* T15_;
		T11_ = (errors ? errors->Sup.len : 0);
		if (!(T11_ == ((NI) 0))) goto LA12_;
		T14_ = (NimStringDesc*)0;
		T15_ = (NimStringDesc*)0;
		T15_ = dollar__qX5C9b0n9bOP7jk69amC8dA7A(n);
		T14_ = rawNewString((T15_ ? T15_->Sup.len : 0) + 19);
appendString(T14_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_135));
appendString(T14_, T15_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T14_);
	}
	goto LA9_;
	LA12_: ;
	{
		notFoundError_OeLjQPoXFC2vFeDs66H0uQ(c, n, errors);
	}
	LA9_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semArrGet_k2Lin9a76VyrWz9b8OoRC9apg_7)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), (*n).info);
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		i_2 = ((NI) 1);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[i]);
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	result = semSubscript_k2Lin9a76VyrWz9b8OoRC9apg_8(c, result, flags);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T8_;
		if (!(result == 0)) goto LA6_;
		x = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
		T8_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T8_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_15));
		asgnRefNoCycle((void**) (&(*x)._Ukind.S6.sons->data[((NI) 0)]), newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T8_, (*n).info));
		bracketNotFoundError_wkwHEj6zZnYo2DMZys6jnA_6(c, x);
		result = n;
	}
	LA6_: ;
	return result;
}

static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipAddr_8hC5GzyZwRmEI0dwiPCejwsem)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 64))) goto LA3_;
		result = (*n)._Ukind.S6.sons->data[((NI) 0)];
	}
	goto LA1_;
	LA3_: ;
	{
		result = n;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semArrPut_k2Lin9a76VyrWz9b8OoRC9apg_9)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	b = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), (*n).info);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = skipAddr_8hC5GzyZwRmEI0dwiPCejwsem((*n)._Ukind.S6.sons->data[((NI) 1)]);
	add_gCCf68XrWL79bKes6htzFjQ(b, T1_);
	{
		NI i;
		NI colontmp_;
		NI T3_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T3_ = (NI)0;
		T3_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		colontmp_ = (NI)(T3_ - ((NI) 2));
		res = ((NI) 2);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA5;
				i = res;
				add_gCCf68XrWL79bKes6htzFjQ(b, (*n)._Ukind.S6.sons->data[i]);
				res += ((NI) 1);
			} LA5: ;
		}
	}
	result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), (*n).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), b);
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), lastSon_esDJA7239bJDiq4UrX9aHCjg(n));
	result = semAsgn_mYOjn9apkbeBan9ajgaE2iOg(c, result, ((tyEnum_SemAsgnMode_e9aTobe3zFbbfTs9bHC7XMIQ) 1));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAsgnOpr_U3qPBy54f1PkCP8vmFMCRA_17)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), (*n).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), (*n)._Ukind.S6.sons->data[((NI) 1)]);
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), (*n)._Ukind.S6.sons->data[((NI) 2)]);
	result = semAsgn_mYOjn9apkbeBan9ajgaE2iOg(c, result, ((tyEnum_SemAsgnMode_e9aTobe3zFbbfTs9bHC7XMIQ) 2));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semIsPartOf_k2Lin9a76VyrWz9b8OoRC9apg_10)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyEnum_TAnalysisResult_p9a9bcrXoRmLT4eUuwrDq9b4w r;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	r = isPartOf_1otDDZAmvFsmbqPyFytXFg((*n)._Ukind.S6.sons->data[((NI) 1)], (*n)._Ukind.S6.sons->data[((NI) 2)]);
	result = newIntNodeT_9cyUT9bfUrNoEvba2MBHfEuw(((NI64) (r)), n, (*c).graph);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, toNode_wZjMTbS7mTh7jlNYlUTARA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q i) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4), i, t);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, uninstantiate_NQ09c28WWCqg4mh6W9aaQ4KQ_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27):
	{
		result = t;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53):
	{
		result = base_BFFuB9cFDZ89c6QWZqEFAtdA(t);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54):
	{
		result = uninstantiate_NQ09c28WWCqg4mh6W9aaQ4KQ_2((*t).sons->data[((NI) 1)]);
	}
	break;
	default:
	{
		result = t;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalTypeTrait_Rc4oN69c49c9bOhdIdiNAQ61A)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* traitCall, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* operand, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* context) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* trait;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* operand_2;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	trait = (*traitCall)._Ukind.S6.sons->data[((NI) 0)];
	{
		NimStringDesc* T5_;
		if (!!(((*trait).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA3_;
		T5_ = (NimStringDesc*)0;
		T5_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_154);
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T5_);
	}
	LA3_: ;
	operand_2 = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(operand, IL64(70368744177936));
	switch (hashString((*(*(*trait)._Ukind.S4.sym).name).s) & 15) {
	case 2: 
if (eqStrings((*(*(*trait)._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_160))) goto LA11_;
break;
	case 3: 
if (eqStrings((*(*(*trait)._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_22))) goto LA6_;
if (eqStrings((*(*(*trait)._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_159))) goto LA10_;
break;
	case 4: 
if (eqStrings((*(*(*trait)._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_158))) goto LA9_;
break;
	case 5: 
if (eqStrings((*(*(*trait)._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_157))) goto LA8_;
if (eqStrings((*(*(*trait)._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_161))) goto LA12_;
break;
	case 8: 
if (eqStrings((*(*(*trait)._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_162))) goto LA13_;
break;
	case 10: 
if (eqStrings((*(*(*trait)._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_155))) goto LA6_;
break;
	case 14: 
if (eqStrings((*(*(*trait)._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_156))) goto LA7_;
break;
	}
	goto LA14_;
	LA6_: ;
	{
		tySequence_Ef05srmQTDulnBdXR4Ja6Q* T17_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T18_;
		T17_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
		T17_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 2);
		asgnRefNoCycle((void**) (&T17_->data[0]), operand_2);
		asgnRefNoCycle((void**) (&T17_->data[1]), skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*traitCall)._Ukind.S6.sons->data[((NI) 2)]).typ, 256));
		T18_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T18_ = newTypeWithSons_9bMWuh2Si4sNtAnCubzpXcA(context, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 57), T17_);
		result = toNode_wZjMTbS7mTh7jlNYlUTARA(T18_, (*traitCall).info);
		goto BeforeRet_;
	}
	goto LA15_;
	LA7_: ;
	{
		tySequence_Ef05srmQTDulnBdXR4Ja6Q* T20_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T21_;
		T20_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
		T20_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 2);
		asgnRefNoCycle((void**) (&T20_->data[0]), operand_2);
		asgnRefNoCycle((void**) (&T20_->data[1]), skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*traitCall)._Ukind.S6.sons->data[((NI) 2)]).typ, 256));
		T21_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T21_ = newTypeWithSons_9bMWuh2Si4sNtAnCubzpXcA(context, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 56), T20_);
		result = toNode_wZjMTbS7mTh7jlNYlUTARA(T21_, (*traitCall).info);
		goto BeforeRet_;
	}
	goto LA15_;
	LA8_: ;
	{
		tySequence_Ef05srmQTDulnBdXR4Ja6Q* T23_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T24_;
		T23_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
		T23_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
		asgnRefNoCycle((void**) (&T23_->data[0]), operand_2);
		T24_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T24_ = newTypeWithSons_9bMWuh2Si4sNtAnCubzpXcA(context, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 58), T23_);
		result = toNode_wZjMTbS7mTh7jlNYlUTARA(T24_, (*traitCall).info);
		goto BeforeRet_;
	}
	goto LA15_;
	LA9_: ;
	{
		NimStringDesc* T26_;
		T26_ = (NimStringDesc*)0;
		T26_ = typeToString_QlvraUan7WbHowhAbvDvdA(operand_2, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 5));
		result = newStrNode_8GaTnuPqpzGLNcerzDOURQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20), T26_);
		asgnRefNoCycle((void**) (&(*result).typ), newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28), context));
		(*result).info = (*traitCall).info;
	}
	goto LA15_;
	LA10_: ;
	{
		NI T28_;
		T28_ = (NI)0;
		T28_ = len_SWFNCiWYB89bTUPh5KptkvA_2(operand_2);
		result = newIntNode_v2VGJAZNfKPVngZCqEXQtA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), ((NI64) ((NI)(T28_ - ((*operand_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25))))));
		asgnRefNoCycle((void**) (&(*result).typ), newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31), context));
		(*result).info = (*traitCall).info;
	}
	goto LA15_;
	LA11_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* res;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T39_;
		res = uninstantiate_NQ09c28WWCqg4mh6W9aaQ4KQ_2(operand_2);
		{
			NIM_BOOL T32_;
			NimStringDesc* T36_;
			NimStringDesc* T37_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T38_;
			T32_ = (NIM_BOOL)0;
			T32_ = (res == operand_2);
			if (!(T32_)) goto LA33_;
			T32_ = !(((*res).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19) || (*res).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24) || (*res).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16) || (*res).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27)));
			LA33_: ;
			if (!T32_) goto LA34_;
			T36_ = (NimStringDesc*)0;
			T37_ = (NimStringDesc*)0;
			T37_ = typeToString_QlvraUan7WbHowhAbvDvdA(operand_2, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T36_ = rawNewString((T37_ ? T37_->Sup.len : 0) + 55);
appendString(T36_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_163));
appendString(T36_, T37_);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*traitCall).info, T36_);
			T38_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T38_ = newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), context);
			result = toNode_wZjMTbS7mTh7jlNYlUTARA(T38_, (*traitCall).info);
			goto BeforeRet_;
		}
		LA34_: ;
		T39_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T39_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(res);
		result = toNode_wZjMTbS7mTh7jlNYlUTARA(T39_, (*traitCall).info);
	}
	goto LA15_;
	LA12_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T41_;
		T41_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T41_ = uninstantiate_NQ09c28WWCqg4mh6W9aaQ4KQ_2(operand_2);
		result = toNode_wZjMTbS7mTh7jlNYlUTARA(T41_, (*traitCall).info);
	}
	goto LA15_;
	LA13_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
		NIM_BOOL complexObj;
		NIM_BOOL T43_;
		t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(operand_2, IL64(36239903259887632));
		T43_ = (NIM_BOOL)0;
		T43_ = containsGarbageCollectedRef_IVXYI9cxSeivThgKCncHRnA(t);
		if (T43_) goto LA44_;
		T43_ = (((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 30))&63U)))!=0);
		LA44_: ;
		complexObj = T43_;
		result = newIntNodeT_9cyUT9bfUrNoEvba2MBHfEuw(((NI64) (!(complexObj))), traitCall, (*c).graph);
	}
	goto LA15_;
	LA14_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*traitCall).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_164));
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (*traitCall).info);
	}
	LA15_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTypeTraits_U3qPBy54f1PkCP8vmFMCRA_18)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 2), (*(*c).graph).config);
	t = (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ;
	{
		NIM_BOOL T3_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = !((t == NIM_NIL));
		if (!(T3_)) goto LA4_;
		T3_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
		LA4_: ;
		if (!!(T3_)) goto LA5_;
		T7_ = (NimStringDesc*)0;
		T7_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_152);
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T7_);
	}
	LA5_: ;
	{
		NI T10_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T13_;
		T10_ = (NI)0;
		T10_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(t);
		if (!(((NI) 0) < T10_)) goto LA11_;
		T13_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T13_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
		result = evalTypeTrait_Rc4oN69c49c9bOhdIdiNAQ61A(c, n, t, T13_);
	}
	goto LA8_;
	LA11_: ;
	{
		result = n;
	}
	LA8_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NI, expectIntLit_QxG3G3wb9aBNUPC2axaY2ig)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
	result = (NI)0;
	x = (*c).semConstExpr(c, n);
	switch ((*x).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 10):
	{
		result = ((NI) ((*x)._Ukind.S1.intVal));
	}
	break;
	default:
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_165));
	}
	break;
	}
	return result;
}

static N_INLINE(NI, toLinenumber_xCTdxEFc5VM0Lp6fDoJKSwastalgo)(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	NI result;
	result = (NI)0;
	result = ((NI) (info.line));
	return result;
}

static N_INLINE(NI, toColumn_xCTdxEFc5VM0Lp6fDoJKSw_2astalgo)(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	NI result;
	result = (NI)0;
	result = ((NI) (info.col));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semInstantiationInfo_U3qPBy54f1PkCP8vmFMCRA_19)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI idx;
	NI useFullPaths;
	tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* filename;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* line;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T16_;
	NI T17_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* column;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T18_;
	NI T19_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160), (*n).info, (*n).typ);
	idx = expectIntLit_QxG3G3wb9aBNUPC2axaY2ig(c, (*n)._Ukind.S6.sons->data[((NI) 1)]);
	useFullPaths = expectIntLit_QxG3G3wb9aBNUPC2axaY2ig(c, (*n)._Ukind.S6.sons->data[((NI) 2)]);
	info = getInfoContext_GGzPJJDWwqGxjES7LRmsUw((*(*c).graph).config, idx);
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28));
	filename = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20), (*n).info, T1_);
	{
		if (!!((useFullPaths == ((NI) 0)))) goto LA4_;
		asgnRefNoCycle((void**) (&(*filename)._Ukind.S3.strVal), toFullPath_tdNdBP9cVqODPZCeXYb1GvA((*(*c).graph).config, info.fileIndex));
	}
	goto LA2_;
	LA4_: ;
	{
		{
			NIM_BOOL T9_;
			NimStringDesc* T13_;
			T9_ = (NIM_BOOL)0;
			T9_ = (info.fileIndex < ((NI32) 0));
			if (T9_) goto LA10_;
			T9_ = ((*(*c).graph).config == NIM_NIL);
			LA10_: ;
			if (!T9_) goto LA11_;
			T13_ = (NimStringDesc*)0;
			T13_ = (*filename)._Ukind.S3.strVal; (*filename)._Ukind.S3.strVal = copyStringRC1(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_166));
			if (T13_) nimGCunrefNoCycle(T13_);
		}
		goto LA7_;
		LA11_: ;
		{
			NimStringDesc* T15_;
			T15_ = (NimStringDesc*)0;
			T15_ = (*filename)._Ukind.S3.strVal; (*filename)._Ukind.S3.strVal = copyStringRC1((*(*(*c).graph).config).m.fileInfos->data[info.fileIndex].projPath);
			if (T15_) nimGCunrefNoCycle(T15_);
		}
		LA7_: ;
	}
	LA2_: ;
	T16_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T16_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31));
	line = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), (*n).info, T16_);
	T17_ = (NI)0;
	T17_ = toLinenumber_xCTdxEFc5VM0Lp6fDoJKSwastalgo(info);
	(*line)._Ukind.S1.intVal = ((NI64) (T17_));
	T18_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T18_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31));
	column = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), (*n).info, T18_);
	T19_ = (NI)0;
	T19_ = toColumn_xCTdxEFc5VM0Lp6fDoJKSw_2astalgo(info);
	(*column)._Ukind.S1.intVal = ((NI64) (T19_));
	add_gCCf68XrWL79bKes6htzFjQ(result, filename);
	add_gCCf68XrWL79bKes6htzFjQ(result, line);
	add_gCCf68XrWL79bKes6htzFjQ(result, column);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semOrd_U3qPBy54f1PkCP8vmFMCRA_20)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* parType;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	parType = (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isOrdinalType_tcejMcLGk6ut4jAKBig68w(parType, NIM_TRUE);
		if (!T3_) goto LA4_;
	}
	goto LA1_;
	LA4_: ;
	{
		NI64 T9_;
		NI64 T10_;
		if (!((*parType).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19))) goto LA7_;
		T9_ = (NI64)0;
		T9_ = firstOrd_4cSIntenL9aBXY6LAFsvXdQ((*(*c).graph).config, parType);
		T10_ = (NI64)0;
		T10_ = lastOrd_PcKlk9cRVtdVcuEFs9bZTdAQ((*(*c).graph).config, parType, NIM_FALSE);
		asgnRefNoCycle((void**) (&(*result).typ), makeRangeType_J365P9cgI1ESa4FCAHPtZbA(c, T9_, T10_, (*n).info, NIM_NIL));
	}
	goto LA1_;
	LA7_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_167));
		asgnRefNoCycle((void**) (&(*result).typ), errorType_5olHzpuoNS9asyp0iz7j62Q(c));
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semOf_U3qPBy54f1PkCP8vmFMCRA_21)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI T3_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 3))) goto LA4_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 1)], 0));
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 2)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 2)], 256));
		a = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ, IL64(36239903266220304));
		b = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 2)]).typ, IL64(36239903266220304));
		x = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ, IL64(36239903266220048));
		y = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 2)]).typ, IL64(36239903266220048));
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = ((*x).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
			if (T8_) goto LA9_;
			T8_ = !(((*y).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8)));
			LA9_: ;
			if (!T8_) goto LA10_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_168));
		}
		goto LA6_;
		LA10_: ;
		{
			NIM_BOOL T13_;
			T13_ = (NIM_BOOL)0;
			T13_ = !(((*b).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17)));
			if (T13_) goto LA14_;
			T13_ = !(((*a).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17)));
			LA14_: ;
			if (!T13_) goto LA15_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_168));
		}
		goto LA6_;
		LA15_: ;
		{
			NI diff;
			diff = inheritanceDiff_1dM2iQB5qStJfnn3684ijQ_2(a, b);
			{
				NimStringDesc* T22_;
				if (!(diff <= ((NI) 0))) goto LA20_;
				T22_ = (NimStringDesc*)0;
				T22_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 0);
				message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 56), T22_);
				result = newIntNode_v2VGJAZNfKPVngZCqEXQtA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(1));
				(*result).info = (*n).info;
				asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1)));
				goto BeforeRet_;
			}
			goto LA18_;
			LA20_: ;
			{
				NimStringDesc* T26_;
				NimStringDesc* T27_;
				if (!(diff == ((NI) 2147483647))) goto LA24_;
				T26_ = (NimStringDesc*)0;
				T26_ = typeToString_QlvraUan7WbHowhAbvDvdA(a, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
				T27_ = (NimStringDesc*)0;
				T27_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_169), T26_);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T27_);
			}
			goto LA18_;
			LA24_: ;
			LA18_: ;
		}
		LA6_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_170));
	}
	LA1_: ;
	asgnRefNoCycle((void**) (&(*n).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1)));
	result = n;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semLowHigh_EW5X9akTyzsjElSah59cM0MA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI T3_;
		NimStringDesc* T6_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!!((T3_ == ((NI) 2)))) goto LA4_;
		T6_ = (NimStringDesc*)0;
		T6_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_171), opToStr_x47hvY2ezR4p9cvQjupSCVQ[(m)- 7]);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T6_);
	}
	goto LA1_;
	LA4_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 1)], 256));
		typ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ, IL64(45106365027363088));
		switch ((*typ).kind) {
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 29):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 48):
		{
			asgnRefNoCycle((void**) (&(*n).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31)));
		}
		break;
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16):
		{
			asgnRefNoCycle((void**) (&(*n).typ), (*typ).sons->data[((NI) 0)]);
		}
		break;
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 35):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 41):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 42):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 43):
		{
			asgnRefNoCycle((void**) (&(*n).typ), skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ, IL64(36239903259928848)));
		}
		break;
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12):
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T12_;
			T12_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T12_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
			asgnRefNoCycle((void**) (&(*n).typ), makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ(c, T12_));
		}
		break;
		default:
		{
			NimStringDesc* T14_;
			T14_ = (NimStringDesc*)0;
			T14_ = rawNewString((opToStr_x47hvY2ezR4p9cvQjupSCVQ[(m)- 7] ? opToStr_x47hvY2ezR4p9cvQjupSCVQ[(m)- 7]->Sup.len : 0) + 22);
appendString(T14_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_174));
appendString(T14_, opToStr_x47hvY2ezR4p9cvQjupSCVQ[(m)- 7]);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T14_);
		}
		break;
		}
	}
	LA1_: ;
	result = n;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semShallowCopy_k2Lin9a76VyrWz9b8OoRC9apg_11)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 3))) goto LA4_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 74), (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[((NI) 1)]);
		add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[((NI) 2)]);
		result = semAsgn_mYOjn9apkbeBan9ajgaE2iOg(c, result, ((tyEnum_SemAsgnMode_e9aTobe3zFbbfTs9bHC7XMIQ) 0));
	}
	goto LA1_;
	LA4_: ;
	{
		result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, flags);
	}
	LA1_: ;
	return result;
}

static N_INLINE(NIM_BOOL, isCompileTimeProc_r9cAFhCIx1KQ7kiILYnBfeAsem)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T3_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17));
	if (T1_) goto LA2_;
	T3_ = (NIM_BOOL)0;
	T3_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12));
	if (!(T3_)) goto LA4_;
	T3_ = (((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 24))&63U)))!=0);
	LA4_: ;
	T1_ = T3_;
	LA2_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semBindSym_U3qPBy54f1PkCP8vmFMCRA_22)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* sl;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* isMixin;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* id;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T13_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = copyNode_lz8T1F9c0YwEOpUnrAUYgjg(n);
	add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[((NI) 0)]);
	sl = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, (*n)._Ukind.S6.sons->data[((NI) 1)]);
	{
		if (!!(((*sl).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20) || (*sl).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 21) || (*sl).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 22)))) goto LA3_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_175));
		result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
		goto BeforeRet_;
	}
	LA3_: ;
	isMixin = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, (*n)._Ukind.S6.sons->data[((NI) 2)]);
	{
		NIM_BOOL T7_;
		NIM_BOOL T8_;
		T7_ = (NIM_BOOL)0;
		T8_ = (NIM_BOOL)0;
		T8_ = !(((*isMixin).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6)));
		if (T8_) goto LA9_;
		T8_ = ((*isMixin)._Ukind.S1.intVal < IL64(0));
		LA9_: ;
		T7_ = T8_;
		if (T7_) goto LA10_;
		T7_ = (IL64(2) < (*isMixin)._Ukind.S1.intVal);
		LA10_: ;
		if (!T7_) goto LA11_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 2)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_176));
		result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
		goto BeforeRet_;
	}
	LA11_: ;
	T13_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T13_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, (*sl)._Ukind.S3.strVal);
	id = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T13_, (*n).info);
	s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA(c, id, 2);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* sc;
		if (!!((s == NIM_NIL))) goto LA16_;
		sc = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, id, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) ((*isMixin)._Ukind.S1.intVal)));
		{
			NIM_BOOL T20_;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T22_;
			T20_ = (NIM_BOOL)0;
			T20_ = (((NI) 0) < (*c).inStaticContext);
			if (T20_) goto LA21_;
			T22_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
			T22_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
			T20_ = isCompileTimeProc_r9cAFhCIx1KQ7kiILYnBfeAsem(T22_);
			LA21_: ;
			if (!!(T20_)) goto LA23_;
			result = sc;
			goto BeforeRet_;
		}
		LA23_: ;
		add_gCCf68XrWL79bKes6htzFjQ(result, sc);
	}
	goto LA14_;
	LA16_: ;
	{
		errorUndeclaredIdentifier_PLFSD1YzsA1kjG9bgxNK1WA(c, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, (*sl)._Ukind.S3.strVal);
	}
	LA14_: ;
	}BeforeRet_: ;
	return result;
}
static N_NIMCALL(void, Marker_tyRef_SpPKZRnM6o0hUcC8D01PyQ)(void* p, NI op) {
	tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g* a;
	a = (tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g*)p;
	nimGCvisit((void*)(*a).c1, op);
	nimGCvisit((void*)(*a).scope2, op);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, opBindSym_9cV0njKwEz9aqXFlWdVBZNkw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* scope, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NI isMixin, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* id;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* tmpScope;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!!(((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 21) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 22) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2)))) goto LA3_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*info).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_179));
		result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
		goto BeforeRet_;
	}
	LA3_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = (isMixin < ((NI) 0));
		if (T7_) goto LA8_;
		T7_ = (((NI) 2) < isMixin);
		LA8_: ;
		if (!T7_) goto LA9_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*info).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_176));
		result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
		goto BeforeRet_;
	}
	LA9_: ;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA13_;
		id = n;
	}
	goto LA11_;
	LA13_: ;
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T16_;
		T16_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T16_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, (*n)._Ukind.S3.strVal);
		id = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T16_, (*info).info);
	}
	LA11_: ;
	tmpScope = (*c).currentScope;
	asgnRef((void**) (&(*c).currentScope), scope);
	s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA(c, id, 2);
	{
		if (!!((s == NIM_NIL))) goto LA19_;
		result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, id, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) (isMixin)));
	}
	goto LA17_;
	LA19_: ;
	{
		NimStringDesc* T22_;
		T22_ = (NimStringDesc*)0;
		{
			if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA25_;
			T22_ = copyString((*(*n)._Ukind.S5.ident).s);
		}
		goto LA23_;
		LA25_: ;
		{
			T22_ = copyString((*n)._Ukind.S3.strVal);
		}
		LA23_: ;
		errorUndeclaredIdentifier_PLFSD1YzsA1kjG9bgxNK1WA(c, (*info).info, T22_);
	}
	LA17_: ;
	asgnRef((void**) (&(*c).currentScope), tmpScope);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_CLOSURE(void, bindSymWrapper_9aTogSUg9cTTyP1djTiPulQQ)(tyObject_VmArgs_0UUl6e5CNNQfMon2xW2bVA* a, void* ClE_0) {
	tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g* colonenvP_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	NI64 T2_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T3_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T4_;
	colonenvP_ = (tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g*) ClE_0;
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = getNode_9aYjhJ9b65wMCAGzy3cT3fNg(a, ((NI) 0));
	T2_ = (NI64)0;
	T2_ = getInt_ZLWNgB9a9bBNn2K6uBUujX0Q(a, ((NI) 1));
	T3_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T3_ = getNode_9aYjhJ9b65wMCAGzy3cT3fNg(a, ((NI) 2));
	T4_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T4_ = opBindSym_9cV0njKwEz9aqXFlWdVBZNkw((*colonenvP_).c1, (*colonenvP_).scope2, T1_, ((NI) (T2_)), T3_);
	setResult_lEw9cDANMCUBq5p0fwnGPOw(a, T4_);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semDynamicBindSym_U3qPBy54f1PkCP8vmFMCRA_23)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g* colonenv_;
	tyObject_TCtx_kjKhKVgNzXX9aw59cmt1hHYg* vm;
	NI idx;
	tyProc_S09bPfanQx9bEvdh4862x8zw T12_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* idxNode;
	tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T13_;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T14_;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	colonenv_ = (tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g*)0;
	colonenv_ = (tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g*) newObj((&NTI_SpPKZRnM6o0hUcC8D01PyQ_), sizeof(tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g));
	(*colonenv_).Sup.m_type = (&NTI_ZyVpd6P9cpAD0YrlDyaAD6g_);
	asgnRef((void**) (&(*colonenv_).c1), c);
	{
		NIM_BOOL T3_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T5_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) < (*(*colonenv_).c1).inStaticContext);
		if (T3_) goto LA4_;
		T5_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T5_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg((*colonenv_).c1);
		T3_ = isCompileTimeProc_r9cAFhCIx1KQ7kiILYnBfeAsem(T5_);
		LA4_: ;
		if (!!(T3_)) goto LA6_;
		result = semBindSym_U3qPBy54f1PkCP8vmFMCRA_22((*colonenv_).c1, n);
		goto BeforeRet_;
	}
	LA6_: ;
	{
		if (!((*(*(*colonenv_).c1).graph).vm == 0)) goto LA10_;
		setupGlobalCtx_Jryw7iJyk9cy0c6AkQG59cMg((*(*colonenv_).c1).module, (*(*colonenv_).c1).graph);
	}
	LA10_: ;
	vm = ((tyObject_TCtx_kjKhKVgNzXX9aw59cmt1hHYg*) ((*(*(*colonenv_).c1).graph).vm));
	asgnRef((void**) (&(*colonenv_).scope2), (*(*colonenv_).c1).currentScope);
	nimZeroMem((void*)(&T12_), sizeof(tyProc_S09bPfanQx9bEvdh4862x8zw));
	T12_.ClP_0 = bindSymWrapper_9aTogSUg9cTTyP1djTiPulQQ; T12_.ClE_0 = colonenv_;
	idx = registerCallback_cgcfxU9adbDapJPQvvIUo1g(vm, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_178), T12_);
	nimZeroMem((void*)(&T13_), sizeof(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q));
	T14_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T14_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*(*colonenv_).c1).graph, T13_, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31));
	idxNode = newIntTypeNode_IoblBePQdnK3IoXX7b1EDg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), ((NI64) (idx)), T14_);
	result = copyNode_lz8T1F9c0YwEOpUnrAUYgjg(n);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
		x = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA18;
					i = i_2;
					x = (*n)._Ukind.S6.sons->data[i];
					add_gCCf68XrWL79bKes6htzFjQ(result, x);
					i_2 += ((NI) 1);
				} LA18: ;
			}
		}
	}
	add_gCCf68XrWL79bKes6htzFjQ(result, n);
	add_gCCf68XrWL79bKes6htzFjQ(result, idxNode);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, magicsAfterOverloadResolution_k2Lin9a76VyrWz9b8OoRC9apg_6)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	switch ((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic) {
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 13):
	{
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
		result = semAddr_9a0tqA9cvykbsNlTYkUMQoBw(c, (*n)._Ukind.S6.sons->data[((NI) 1)], eqStrings((*(*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_129)));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 15):
	{
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
		result = semTypeOf_U3qPBy54f1PkCP8vmFMCRA_14(c, (*n)._Ukind.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 4):
	{
		result = semArrGet_k2Lin9a76VyrWz9b8OoRC9apg_7(c, n, flags);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 5):
	{
		result = semArrPut_k2Lin9a76VyrWz9b8OoRC9apg_9(c, n, flags);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 6):
	{
		{
			if (!eqStrings((*(*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_96))) goto LA8_;
			result = semAsgnOpr_U3qPBy54f1PkCP8vmFMCRA_17(c, n);
		}
		goto LA6_;
		LA8_: ;
		{
			result = n;
		}
		LA6_: ;
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 156):
	{
		result = semIsPartOf_k2Lin9a76VyrWz9b8OoRC9apg_10(c, n, flags);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 10):
	{
		result = semTypeTraits_U3qPBy54f1PkCP8vmFMCRA_18(c, n);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 157):
	{
		NimStringDesc* T14_;
		T14_ = (NimStringDesc*)0;
		T14_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA((*n)._Ukind.S6.sons->data[((NI) 1)], 4);
		result = newStrNodeT_WT9aAnGjbhNgDuVvAUcXPaA(T14_, n, (*c).graph);
		asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28)));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 278):
	{
		result = semInstantiationInfo_U3qPBy54f1PkCP8vmFMCRA_19(c, n);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 30):
	{
		result = semOrd_U3qPBy54f1PkCP8vmFMCRA_20(c, n);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 12):
	{
		result = semOf_U3qPBy54f1PkCP8vmFMCRA_21(c, n);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 8):
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 7):
	{
		result = semLowHigh_EW5X9akTyzsjElSah59cM0MA(c, n, (*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 19):
	{
		result = semShallowCopy_k2Lin9a76VyrWz9b8OoRC9apg_11(c, n, flags);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 267):
	{
		{
			if (!!((((*c).features &(1U<<((NU)(((tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ) 6))&15U)))!=0))) goto LA23_;
			result = semBindSym_U3qPBy54f1PkCP8vmFMCRA_22(c, n);
		}
		goto LA21_;
		LA23_: ;
		{
			result = semDynamicBindSym_U3qPBy54f1PkCP8vmFMCRA_23(c, n);
		}
		LA21_: ;
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 219):
	{
		result = n;
		asgnRefNoCycle((void**) (&(*result).typ), (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 143):
	{
		result = n;
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 16):
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_180));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 17):
	{
		tyProc_MqeJmGcq433YA5MeaSjdjg plugin;
		plugin = getPlugin_4do1HPA4n4pVVIXuu4gcjA((*c).cache, (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym);
		{
			NimStringDesc* T34_;
			if (!(plugin == 0)) goto LA32_;
			T34_ = (NimStringDesc*)0;
			T34_ = rawNewString(((*(*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).s ? (*(*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).s->Sup.len : 0) + 19);
appendString(T34_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_181));
appendString(T34_, (*(*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).s);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T34_);
			result = n;
		}
		goto LA30_;
		LA32_: ;
		{
			result = plugin(c, n);
		}
		LA30_: ;
	}
	break;
	default:
	{
		result = n;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newProcType_folYoosh9csL06vxhe2kSLA)(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25), owner);
	asgnRefNoCycle((void**) (&(*result).n), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 76), info));
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, NIM_NIL);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 152), info);
	addSon_gCCf68XrWL79bKes6htzFjQ_2((*result).n, T1_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addParam_fOgchBIS5li4btpxItPSYQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* procType, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param) {
	NI T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	T1_ = (NI)0;
	T1_ = len_SWFNCiWYB89bTUPh5KptkvA_2(procType);
	(*param).position = (NI)(T1_ - ((NI) 1));
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = newSymNode_UWZXukHA5As9aCftRHbafBg(param);
	addSon_gCCf68XrWL79bKes6htzFjQ_2((*procType).n, T2_);
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(procType, (*param).typ);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newAsgnStmt_xZKC0wGy2jBnytvrjhvjwg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* le, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ri) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), (*le).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), le);
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), ri);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, defaultOp_EqLvDCRsBHP8S88OSL5lEg)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y) {
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
		if (!!(((*c).kind == ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 3)))) goto LA3_;
		T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = newAsgnStmt_xZKC0wGy2jBnytvrjhvjwg(x, y);
		add_gCCf68XrWL79bKes6htzFjQ(body, T5_);
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, addVar_uUhXmzovFMFlt08IBvmvJQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* value) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* vpart;
	vpart = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35), (*v).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*vpart)._Ukind.S6.sons->data[((NI) 0)]), v);
	asgnRefNoCycle((void**) (&(*vpart)._Ukind.S6.sons->data[((NI) 1)]), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (*v).info));
	asgnRefNoCycle((void**) (&(*vpart)._Ukind.S6.sons->data[((NI) 2)]), value);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(father, vpart);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, declareCounter_nJ7Gsh0pZucXzWHqJotPDQ)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, NI64 first) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* temp;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*c).c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_184));
	temp = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 5), T1_, (*c).fn, (*c).info, 0);
	asgnRefNoCycle((void**) (&(*temp).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*(*c).c).graph, (*body).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31)));
	(*temp).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 2))%(sizeof(NU64)*8));
	v = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99), (*c).info);
	result = newSymNode_UWZXukHA5As9aCftRHbafBg(temp);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = newIntLit_TuFlkTIoJNHT6fCcycYtSw((*(*c).c).graph, (*body).info, first);
	addVar_uUhXmzovFMFlt08IBvmvJQ(v, result, T2_);
	add_gCCf68XrWL79bKes6htzFjQ(body, v);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, genBuiltin_3ruLKRtg9cUn7GtT9cll9ajPA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg magic, NimStringDesc* name, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* i) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*i).info);
	T1_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = createMagic_wGa7y1oybLUFG1rIAeCr1A(g, name, magic);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = newSymNode_UWZXukHA5As9aCftRHbafBg(T1_);
	add_gCCf68XrWL79bKes6htzFjQ(result, T2_);
	add_gCCf68XrWL79bKes6htzFjQ(result, i);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, genWhileLoop_4KADwrzdXdnyOKZgTaLMng)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* i, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* dest) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* cmp;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96), (*c).info, ((NI) 2));
	cmp = genBuiltin_3ruLKRtg9cUn7GtT9cll9ajPA((*(*c).c).graph, ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 74), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_185), i);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = genHigh_MV2CjVA8K8K4UngVlqWOhQ((*(*c).c).graph, dest);
	add_gCCf68XrWL79bKes6htzFjQ(cmp, T1_);
	asgnRefNoCycle((void**) (&(*cmp).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*(*c).c).graph, (*c).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1)));
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), cmp);
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*c).info));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, at_JNplCAKg2O4f9c5UqWAh3CA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* i, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* elemType) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), (*a).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), a);
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), i);
	asgnRefNoCycle((void**) (&(*result).typ), elemType);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addIncStmt_IRp226yA0x9bJeuOTyvNYaA)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* i) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* incCall;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	incCall = genBuiltin_3ruLKRtg9cUn7GtT9cll9ajPA((*(*c).c).graph, ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 28), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_186), i);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = newIntLit_TuFlkTIoJNHT6fCcycYtSw((*(*c).c).graph, (*c).info, IL64(1));
	add_gCCf68XrWL79bKes6htzFjQ(incCall, T1_);
	add_gCCf68XrWL79bKes6htzFjQ(body, incCall);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, genAddr_I7Wwi9c0vii4YENbX59bFsPQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65))) goto LA3_;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(x, ((NI) 1), (*(*c).graph).config);
		result = (*x)._Ukind.S6.sons->data[((NI) 0)];
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T6_;
		T6_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T6_ = makeVarType_IekWGhQ3TRvziI363UmYLQ(c, (*x).typ, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23));
		result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 64), (*x).info, T6_);
		addSon_gCCf68XrWL79bKes6htzFjQ_2(result, x);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, destructorCall_5G551YLUwYFkrK7bdAONRg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*x).info, (*(*op).typ).sons->data[((NI) 0)]);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = newSymNode_UWZXukHA5As9aCftRHbafBg(op);
	add_gCCf68XrWL79bKes6htzFjQ(result, T1_);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = genAddr_I7Wwi9c0vii4YENbX59bFsPQ(c, x);
	add_gCCf68XrWL79bKes6htzFjQ(result, T2_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newAsgnCall_gv8ja9bt5MX9aMwxceO6YB9aQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T7_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NimStringDesc* T5_;
		if (!(((*op).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 21))&63U)))!=0)) goto LA3_;
		T5_ = (NimStringDesc*)0;
		T5_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_187), (*(*op).name).s);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*x).info, T5_);
	}
	LA3_: ;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*x).info);
	T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T6_ = newSymNode_UWZXukHA5As9aCftRHbafBg(op);
	add_gCCf68XrWL79bKes6htzFjQ(result, T6_);
	T7_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T7_ = genAddr_I7Wwi9c0vii4YENbX59bFsPQ(c, x);
	add_gCCf68XrWL79bKes6htzFjQ(result, T7_);
	add_gCCf68XrWL79bKes6htzFjQ(result, y);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, considerAsgnOrSink_wthYP6wjQuyR9aGNTa4041g)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* op;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T20_;
		if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 30))&63U)))!=0)) goto LA3_;
		op = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = sameType_3isNyHKb0U1OCnClmflXSg(t, (*c).asgnForType, 0);
			if (!T7_) goto LA8_;
			{
				if (!(*c).recurse) goto LA12_;
				op = (*c).fn;
			}
			goto LA10_;
			LA12_: ;
			{
				(*c).recurse = NIM_TRUE;
				result = NIM_FALSE;
				goto BeforeRet_;
			}
			LA10_: ;
		}
		goto LA5_;
		LA8_: ;
		{
			op = field;
			{
				if (!(op == NIM_NIL)) goto LA18_;
				op = liftBody_q2JRlTNHywfIpAuDfnDihg((*c).c, t, (*c).kind, (*c).info);
			}
			LA18_: ;
		}
		LA5_: ;
		markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*(*c).c).graph).config, (*c).info, op, &(*(*(*c).c).graph).usageSym);
		T20_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T20_ = newAsgnCall_gv8ja9bt5MX9aMwxceO6YB9aQ((*c).c, op, x, y);
		add_gCCf68XrWL79bKes6htzFjQ(body, T20_);
		result = NIM_TRUE;
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newOpCall_4cEr3tEyQ29a2O9ch73sFWfg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*x).info, (*(*op).typ).sons->data[((NI) 0)]);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = newSymNode_UWZXukHA5As9aCftRHbafBg(op);
	add_gCCf68XrWL79bKes6htzFjQ(result, T1_);
	add_gCCf68XrWL79bKes6htzFjQ(result, x);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newDeepCopyCall_RtzgKUBFn8d3cqCopPBSiQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = newOpCall_4cEr3tEyQ29a2O9ch73sFWfg(op, y);
	result = newAsgnStmt_xZKC0wGy2jBnytvrjhvjwg(x, T1_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, considerOverloadedOp_b79bpThV5jugZdp8EayObVw)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	switch ((*c).kind) {
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 3):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* op;
		op = (*t).destructor;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
			if (!!((op == NIM_NIL))) goto LA4_;
			markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*(*c).c).graph).config, (*c).info, op, &(*(*(*c).c).graph).usageSym);
			T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T6_ = destructorCall_5G551YLUwYFkrK7bdAONRg((*c).c, op, x);
			add_gCCf68XrWL79bKes6htzFjQ(body, T6_);
			result = NIM_TRUE;
		}
		LA4_: ;
	}
	break;
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 0):
	{
		result = considerAsgnOrSink_wthYP6wjQuyR9aGNTa4041g(c, t, body, x, y, (*t).assignment);
	}
	break;
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 1):
	{
		result = considerAsgnOrSink_wthYP6wjQuyR9aGNTa4041g(c, t, body, x, y, (*t).sink);
	}
	break;
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 2):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* op_2;
		op_2 = (*t).deepCopy;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T14_;
			if (!!((op_2 == NIM_NIL))) goto LA12_;
			markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*(*c).c).graph).config, (*c).info, op_2, &(*(*(*c).c).graph).usageSym);
			T14_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T14_ = newDeepCopyCall_RtzgKUBFn8d3cqCopPBSiQ(op_2, x, y);
			add_gCCf68XrWL79bKes6htzFjQ(body, T14_);
			result = NIM_TRUE;
		}
		LA12_: ;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newSeqCall_Rf570gXLqmmOisdPN2bfbQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* lenCall;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = genBuiltin_3ruLKRtg9cUn7GtT9cll9ajPA((*c).graph, ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 33), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_188), x);
	lenCall = genBuiltin_3ruLKRtg9cUn7GtT9cll9ajPA((*c).graph, ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 38), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_189), y);
	asgnRefNoCycle((void**) (&(*lenCall).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*x).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31)));
	add_gCCf68XrWL79bKes6htzFjQ(result, lenCall);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, dotField_3JUGGguyrkqXPkPD3E3nUA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* f) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45), (*x).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), x);
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(f, (*x).info));
	asgnRefNoCycle((void**) (&(*result).typ), (*f).typ);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, liftBodyObj_O7HP9aYIB72nY7iHgjC0YSg)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y) {
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* f;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T3_;
		f = (*n)._Ukind.S4.sym;
		T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T2_ = dotField_3JUGGguyrkqXPkPD3E3nUA(x, f);
		T3_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T3_ = dotField_3JUGGguyrkqXPkPD3E3nUA(y, f);
		liftBodyAux_1qKhZJAcRsaYyilT4S9bjzQ(c, (*f).typ, body, T2_, T3_);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* caseStmt;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* access;
		liftBodyObj_O7HP9aYIB72nY7iHgjC0YSg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], body, x, y);
		caseStmt = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 97), (*c).info);
		access = dotField_3JUGGguyrkqXPkPD3E3nUA(x, (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym);
		add_gCCf68XrWL79bKes6htzFjQ(caseStmt, access);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_2 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch;
					NI L;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T9_;
					if (!(i_2 < colontmp_)) goto LA8;
					i = i_2;
					branch = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*n)._Ukind.S6.sons->data[i]);
					L = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(branch);
					asgnRefNoCycle((void**) (&(*branch)._Ukind.S6.sons->data[(NI)(L - ((NI) 1))]), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*c).info));
					T9_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T9_ = lastSon_esDJA7239bJDiq4UrX9aHCjg((*n)._Ukind.S6.sons->data[i]);
					liftBodyObj_O7HP9aYIB72nY7iHgjC0YSg(c, T9_, (*branch)._Ukind.S6.sons->data[(NI)(L - ((NI) 1))], x, y);
					add_gCCf68XrWL79bKes6htzFjQ(caseStmt, branch);
					i_2 += ((NI) 1);
				} LA8: ;
			}
		}
		add_gCCf68XrWL79bKes6htzFjQ(body, caseStmt);
		localError_NF6kBGchnhQYPbCedyefVA((*(*(*c).c).graph).config, (*c).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_190));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t;
			t = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i_3;
				NI colontmp__2;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
				i_4 = ((NI) 0);
				{
					while (1) {
						if (!(i_4 < colontmp__2)) goto LA14;
						i_3 = i_4;
						t = (*n)._Ukind.S6.sons->data[i_3];
						liftBodyObj_O7HP9aYIB72nY7iHgjC0YSg(c, t, body, x, y);
						i_4 += ((NI) 1);
					} LA14: ;
				}
			}
		}
	}
	break;
	default:
	{
		illFormedAstLocal_aOnJJ9cXkOooTyUuLmnc09bw_2(n, (*(*(*c).c).graph).config);
	}
	break;
	}
}

N_LIB_PRIVATE N_NIMCALL(void, liftBodyTup_1qKhZJAcRsaYyilT4S9bjzQ_2)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y) {
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
		i_2 = ((NI) 0);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* lit;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T4_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				lit = newIntLit_TuFlkTIoJNHT6fCcycYtSw((*(*c).c).graph, (*x).info, ((NI64) (i)));
				T4_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T4_ = at_JNplCAKg2O4f9c5UqWAh3CA(x, lit, (*t).sons->data[i]);
				T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T5_ = at_JNplCAKg2O4f9c5UqWAh3CA(y, lit, (*t).sons->data[i]);
				liftBodyAux_1qKhZJAcRsaYyilT4S9bjzQ(c, (*t).sons->data[i], body, T4_, T5_);
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(void, liftBodyAux_1qKhZJAcRsaYyilT4S9bjzQ)(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y) {
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 3):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63):
	{
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 26):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 29):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 62):
	{
		defaultOp_EqLvDCRsBHP8S88OSL5lEg(c, t, body, x, y);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* i;
			NI64 T8_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* whileLoop;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* elemType;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T9_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T10_;
			if (!((1073741825 & (*t).flags) == 1073741824)) goto LA6_;
			T8_ = (NI64)0;
			T8_ = firstOrd_4cSIntenL9aBXY6LAFsvXdQ((*(*(*c).c).graph).config, t);
			i = declareCounter_nJ7Gsh0pZucXzWHqJotPDQ(c, body, T8_);
			whileLoop = genWhileLoop_4KADwrzdXdnyOKZgTaLMng(c, i, x);
			elemType = lastSon_ab52xel9cFebv9am0xV04xXA(t);
			T9_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T9_ = at_JNplCAKg2O4f9c5UqWAh3CA(x, i, elemType);
			T10_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T10_ = at_JNplCAKg2O4f9c5UqWAh3CA(y, i, elemType);
			liftBodyAux_1qKhZJAcRsaYyilT4S9bjzQ(c, elemType, (*whileLoop)._Ukind.S6.sons->data[((NI) 1)], T9_, T10_);
			addIncStmt_IRp226yA0x9bJeuOTyvNYaA(c, (*whileLoop)._Ukind.S6.sons->data[((NI) 1)], i);
			add_gCCf68XrWL79bKes6htzFjQ(body, whileLoop);
		}
		goto LA4_;
		LA6_: ;
		{
			defaultOp_EqLvDCRsBHP8S88OSL5lEg(c, t, body, x, y);
		}
		LA4_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24):
	{
		{
			NIM_BOOL T17_;
			if (!((*(*(*(*c).c).graph).config).selectedGC == ((tyEnum_TGCMode_tkz389aDYNd8ykeZszCuBSw) 5))) goto LA15_;
			T17_ = (NIM_BOOL)0;
			T17_ = considerOverloadedOp_b79bpThV5jugZdp8EayObVw(c, t, body, x, y);
			T17_;
		}
		goto LA13_;
		LA15_: ;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* i_2;
			NI64 T26_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* whileLoop_2;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* elemType_2;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T27_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T28_;
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 30))&63U)))!=0)) goto LA19_;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T25_;
				if (!!(((*c).kind == ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 3)))) goto LA23_;
				T25_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T25_ = newSeqCall_Rf570gXLqmmOisdPN2bfbQ((*c).c, x, y);
				add_gCCf68XrWL79bKes6htzFjQ(body, T25_);
			}
			LA23_: ;
			T26_ = (NI64)0;
			T26_ = firstOrd_4cSIntenL9aBXY6LAFsvXdQ((*(*(*c).c).graph).config, t);
			i_2 = declareCounter_nJ7Gsh0pZucXzWHqJotPDQ(c, body, T26_);
			whileLoop_2 = genWhileLoop_4KADwrzdXdnyOKZgTaLMng(c, i_2, x);
			elemType_2 = lastSon_ab52xel9cFebv9am0xV04xXA(t);
			T27_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T27_ = at_JNplCAKg2O4f9c5UqWAh3CA(x, i_2, elemType_2);
			T28_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T28_ = at_JNplCAKg2O4f9c5UqWAh3CA(y, i_2, elemType_2);
			liftBodyAux_1qKhZJAcRsaYyilT4S9bjzQ(c, elemType_2, (*whileLoop_2)._Ukind.S6.sons->data[((NI) 1)], T27_, T28_);
			addIncStmt_IRp226yA0x9bJeuOTyvNYaA(c, (*whileLoop_2)._Ukind.S6.sons->data[((NI) 1)], i_2);
			add_gCCf68XrWL79bKes6htzFjQ(body, whileLoop_2);
		}
		goto LA13_;
		LA19_: ;
		{
			defaultOp_EqLvDCRsBHP8S88OSL5lEg(c, t, body, x, y);
		}
		LA13_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28):
	{
		{
			NIM_BOOL T35_;
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 30))&63U)))!=0)) goto LA33_;
			T35_ = (NIM_BOOL)0;
			T35_ = considerOverloadedOp_b79bpThV5jugZdp8EayObVw(c, t, body, x, y);
			T35_;
		}
		goto LA31_;
		LA33_: ;
		{
			defaultOp_EqLvDCRsBHP8S88OSL5lEg(c, t, body, x, y);
		}
		LA31_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13):
	{
		{
			NIM_BOOL T40_;
			T40_ = (NIM_BOOL)0;
			T40_ = considerOverloadedOp_b79bpThV5jugZdp8EayObVw(c, t, body, x, y);
			if (!!(T40_)) goto LA41_;
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T47_;
				if (!!(((*t).sons->data[((NI) 0)] == NIM_NIL))) goto LA45_;
				T47_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T47_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*t).sons->data[((NI) 0)], IL64(36239903266179344));
				liftBodyAux_1qKhZJAcRsaYyilT4S9bjzQ(c, T47_, body, x, y);
			}
			LA45_: ;
			{
				if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA50_;
				liftBodyObj_O7HP9aYIB72nY7iHgjC0YSg(c, (*t).n, body, x, y);
			}
			LA50_: ;
		}
		LA41_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		liftBodyTup_1qKhZJAcRsaYyilT4S9bjzQ_2(c, t, body, x, y);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25):
	{
		{
			NIM_BOOL T56_;
			T56_ = (NIM_BOOL)0;
			T56_ = !(((*t).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8)));
			if (T56_) goto LA57_;
			T56_ = !(((*c).kind == ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 2)));
			LA57_: ;
			if (!T56_) goto LA58_;
			defaultOp_EqLvDCRsBHP8S88OSL5lEg(c, t, body, x, y);
		}
		goto LA54_;
		LA58_: ;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T61_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T62_;
			call = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*c).info, ((NI) 2));
			asgnRefNoCycle((void**) (&(*call).typ), t);
			T61_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
			T61_ = createMagic_wGa7y1oybLUFG1rIAeCr1A((*(*c).c).graph, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_191), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 215));
			asgnRefNoCycle((void**) (&(*call)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(T61_));
			asgnRefNoCycle((void**) (&(*call)._Ukind.S6.sons->data[((NI) 1)]), y);
			T62_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T62_ = newAsgnStmt_xZKC0wGy2jBnytvrjhvjwg(x, call);
			add_gCCf68XrWL79bKes6htzFjQ(body, T62_);
		}
		LA54_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 48):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27):
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*(*c).c).graph).config, (*c).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_192));
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 51):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 56):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 57):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 58):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 59):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 30):
	{
		NimStringDesc* T65_;
		NimStringDesc* T66_;
		T65_ = (NimStringDesc*)0;
		T66_ = (NimStringDesc*)0;
		T66_ = typeToString_QlvraUan7WbHowhAbvDvdA(t, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		T65_ = rawNewString((T66_ ? T66_->Sup.len : 0) + 31);
appendString(T65_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_193));
appendString(T65_, T66_);
		internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*(*c).c).graph).config, (*c).info, T65_);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 15):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 55):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T68_;
		T68_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T68_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
		liftBodyAux_1qKhZJAcRsaYyilT4S9bjzQ(c, T68_, body, x, y);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 49):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 45):
	{
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*(*c).c).graph).config, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_194));
	}
	break;
	}
}

static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newDeref_HtAG89bn1UDHEhRcS27NOXQlocals)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65), (*n).info, (*(*n).typ).sons->data[((NI) 0)]);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(result, n);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, liftBody_q2JRlTNHywfIpAuDfnDihg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ a;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* procname;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* dest;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T5_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* src;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T6_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T12_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T13_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	nimZeroMem((void*)(&a), sizeof(tyObject_TLiftCtx_2tIJb6qsg9a4NPHh9bfUCjXQ));
	a.info = info;
	a.c = c;
	a.kind = kind;
	body = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), info);
	switch (kind) {
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 0):
	{
		procname = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_96));
	}
	break;
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 1):
	{
		procname = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_97));
	}
	break;
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 2):
	{
		procname = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_95));
	}
	break;
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 3):
	{
		procname = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_93));
	}
	break;
	}
	result = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12), procname, (*typ).owner, info, 0);
	a.fn = result;
	a.asgnForType = typ;
	T5_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T5_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_182));
	dest = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3), T5_, result, info, 0);
	T6_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T6_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_183));
	src = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3), T6_, result, info, 0);
	asgnRefNoCycle((void**) (&(*dest).typ), makeVarType_IekWGhQ3TRvziI363UmYLQ(c, typ, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23)));
	asgnRefNoCycle((void**) (&(*src).typ), typ);
	asgnRefNoCycle((void**) (&(*result).typ), newProcType_folYoosh9csL06vxhe2kSLA(info, (*typ).owner));
	addParam_fOgchBIS5li4btpxItPSYQ((*result).typ, dest);
	{
		if (!!((kind == ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 3)))) goto LA9_;
		addParam_fOgchBIS5li4btpxItPSYQ((*result).typ, src);
	}
	LA9_: ;
	T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T11_ = newSymNode_UWZXukHA5As9aCftRHbafBg(dest);
	T12_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T12_ = newDeref_HtAG89bn1UDHEhRcS27NOXQlocals(T11_);
	T13_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T13_ = newSymNode_UWZXukHA5As9aCftRHbafBg(src);
	liftBodyAux_1qKhZJAcRsaYyilT4S9bjzQ((&a), typ, body, T12_, T13_);
	switch (kind) {
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 0):
	{
		asgnRefNoCycle((void**) (&(*typ).assignment), result);
	}
	break;
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 1):
	{
		asgnRefNoCycle((void**) (&(*typ).sink), result);
	}
	break;
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 2):
	{
		asgnRefNoCycle((void**) (&(*typ).deepCopy), result);
	}
	break;
	case ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 3):
	{
		asgnRefNoCycle((void**) (&(*typ).destructor), result);
	}
	break;
	}
	n = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79), info, ((NI) 7));
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA20;
				i = i_2;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), info));
				i_2 += ((NI) 1);
			} LA20: ;
		}
	}
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(result));
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 3)]), (*(*result).typ).n);
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), body);
	asgnRefNoCycle((void**) (&(*result).ast), n);
	(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 2))%(sizeof(NU64)*8));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, liftTypeBoundOps_loja41ceALuHLYIaYdWs2A)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ_2;
{	{
		if (!!((((*typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 30))&63U)))!=0))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	typ_2 = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(typ, 2064);
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T9_;
		if (!((*typ_2).destructor == NIM_NIL)) goto LA7_;
		T9_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T9_ = liftBody_q2JRlTNHywfIpAuDfnDihg(c, typ_2, ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 3), info);
	}
	LA7_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T14_;
		if (!((*typ_2).assignment == NIM_NIL)) goto LA12_;
		T14_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T14_ = liftBody_q2JRlTNHywfIpAuDfnDihg(c, typ_2, ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 0), info);
	}
	LA12_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T19_;
		if (!((*typ_2).sink == NIM_NIL)) goto LA17_;
		T19_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T19_ = liftBody_q2JRlTNHywfIpAuDfnDihg(c, typ_2, ((tyEnum_TTypeAttachedOp_jZY2AMF49b43fezf9aDwN9c9cQ) 1), info);
	}
	LA17_: ;
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasCycle_J6cfuIanCXYEsLNE8M8o9cQ_4)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	(*n).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 0))%(sizeof(NU32)*8));
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				{
					NIM_BOOL T6_;
					T6_ = (NIM_BOOL)0;
					T6_ = (((*(*n)._Ukind.S6.sons->data[i]).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 0))&31U)))!=0);
					if (T6_) goto LA7_;
					T6_ = hasCycle_J6cfuIanCXYEsLNE8M8o9cQ_4((*n)._Ukind.S6.sons->data[i]);
					LA7_: ;
					if (!T6_) goto LA8_;
					result = NIM_TRUE;
					goto LA1;
				}
				LA8_: ;
				i_2 += ((NI) 1);
			} LA3: ;
		}
	} LA1: ;
	(*n).flags &= ~(((NU32)1) << ((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 0)) % (sizeof(NU32)*8)));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, fixupTypeAfterEval_dGBK19cpTWH2Y7y5AybM0IA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* evaluated, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* eOrig) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!((*(*eOrig).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6) || (*(*eOrig).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7) || (*(*eOrig).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA3_;
		result = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, evaluated, 0);
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* expectedType;
		result = evaluated;
		expectedType = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*eOrig).typ, IL64(1152921504606846976));
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = hasCycle_J6cfuIanCXYEsLNE8M8o9cQ_4(result);
			if (!T8_) goto LA9_;
			globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, (*eOrig).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_197));
			result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, eOrig);
		}
		goto LA6_;
		LA9_: ;
		{
			annotateType_zBoL79cc9cORdBkTIEpbntbg(result, expectedType, (*(*c).graph).config);
		}
		LA6_: ;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalAtCompileTime_U3qPBy54f1PkCP8vmFMCRA_24)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* callee;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32)));
		if (T3_) goto LA4_;
		T3_ = !(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	callee = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
	{
		NIM_BOOL T9_;
		T9_ = (NIM_BOOL)0;
		T9_ = !(((*n).typ == NIM_NIL));
		if (!(T9_)) goto LA10_;
		T9_ = (((*(*n).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 32))&63U)))!=0);
		LA10_: ;
		if (!T9_) goto LA11_;
		goto BeforeRet_;
	}
	LA11_: ;
	{
		NIM_BOOL T15_;
		NIM_BOOL T16_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call;
		NIM_BOOL allConst;
		T15_ = (NIM_BOOL)0;
		T16_ = (NIM_BOOL)0;
		T16_ = !(((*callee).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0)));
		if (!(T16_)) goto LA17_;
		T16_ = ((TM_rF9caJawfOjYTjsgLVUSGFA_195[(NU)((*callee).magic)>>3] &(1U<<((NU)((*callee).magic)&7U)))!=0);
		LA17_: ;
		T15_ = T16_;
		if (!(T15_)) goto LA18_;
		T15_ = !(((*n).typ == NIM_NIL));
		LA18_: ;
		if (!T15_) goto LA19_;
		call = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, (*n).typ);
		add_gCCf68XrWL79bKes6htzFjQ(call, (*n)._Ukind.S6.sons->data[((NI) 0)]);
		allConst = NIM_TRUE;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_2 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					if (!(i_2 < colontmp_)) goto LA23;
					i = i_2;
					a = getConstExpr_A7gcXCy5E3uGBy5F37NoHA((*c).module, (*n)._Ukind.S6.sons->data[i], (*c).graph);
					{
						if (!(a == NIM_NIL)) goto LA26_;
						allConst = NIM_FALSE;
						a = (*n)._Ukind.S6.sons->data[i];
						{
							if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58))) goto LA30_;
							a = (*a)._Ukind.S6.sons->data[((NI) 1)];
						}
						LA30_: ;
					}
					LA26_: ;
					add_gCCf68XrWL79bKes6htzFjQ(call, a);
					i_2 += ((NI) 1);
				} LA23: ;
			}
		}
		{
			if (!allConst) goto LA34_;
			result = getConstExpr_A7gcXCy5E3uGBy5F37NoHA((*c).module, call, (*c).graph);
			{
				if (!(result == 0)) goto LA38_;
				result = n;
			}
			goto LA36_;
			LA38_: ;
			{
				goto BeforeRet_;
			}
			LA36_: ;
		}
		LA34_: ;
	}
	LA19_: ;
	{
		{
			NI T44_;
			tySequence_Ef05srmQTDulnBdXR4Ja6Q* T58_;
			T44_ = (NI)0;
			T44_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			if (!(((NI) 1) < T44_)) goto LA45_;
			{
				NI i_3;
				NI colontmp__2;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
				i_4 = ((NI) 1);
				{
					while (1) {
						if (!(i_4 < colontmp__2)) goto LA49;
						i_3 = i_4;
						{
							NIM_BOOL T52_;
							NIM_BOOL T53_;
							T52_ = (NIM_BOOL)0;
							T53_ = (NIM_BOOL)0;
							T53_ = ((*(*n)._Ukind.S6.sons->data[i_3]).typ == 0);
							if (T53_) goto LA54_;
							T53_ = !(((*(*(*n)._Ukind.S6.sons->data[i_3]).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60)));
							LA54_: ;
							T52_ = T53_;
							if (T52_) goto LA55_;
							T52_ = !((((*(*(*n)._Ukind.S6.sons->data[i_3]).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0));
							LA55_: ;
							if (!T52_) goto LA56_;
							goto LA41;
						}
						LA56_: ;
						i_4 += ((NI) 1);
					} LA49: ;
				}
			}
			T58_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
			T58_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
			asgnRefNoCycle((void**) (&T58_->data[0]), (*n).typ);
			asgnRefNoCycle((void**) (&(*n).typ), newTypeWithSons_9aJU4B1fwkaTke7gv1KDkuQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60), T58_));
			(*(*n).typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))%(sizeof(NU64)*8));
		}
		LA45_: ;
	} LA41: ;
	{
		NIM_BOOL T61_;
		NIM_BOOL T62_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call_2;
		T61_ = (NIM_BOOL)0;
		T62_ = (NIM_BOOL)0;
		T62_ = !(((16778240 & (*callee).flags) == 0));
		if (!(T62_)) goto LA63_;
		T62_ = ((48 & (*callee).flags) == 0);
		LA63_: ;
		T61_ = T62_;
		if (!(T61_)) goto LA64_;
		T61_ = !(((*n).typ == NIM_NIL));
		LA64_: ;
		if (!T61_) goto LA65_;
		{
			NIM_BOOL T69_;
			T69_ = (NIM_BOOL)0;
			T69_ = !((((*callee).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 24))&63U)))!=0));
			if (!(T69_)) goto LA70_;
			T69_ = !((((*(*(*c).graph).config).options &(1U<<((NU)(((tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg) 21))&31U)))!=0));
			LA70_: ;
			if (!T69_) goto LA71_;
			goto BeforeRet_;
		}
		LA71_: ;
		{
			if (!!(((TM_rF9caJawfOjYTjsgLVUSGFA_195[(NU)((*callee).magic)>>3] &(1U<<((NU)((*callee).magic)&7U)))!=0))) goto LA75_;
			goto BeforeRet_;
		}
		LA75_: ;
		{
			NIM_BOOL T79_;
			T79_ = (NIM_BOOL)0;
			T79_ = !(((77824 &(1U<<((NU)((*callee).kind)&31U)))!=0));
			if (T79_) goto LA80_;
			T79_ = isGenericRoutine_fqH89bI309asBDvp00Y3VVQA(callee);
			LA80_: ;
			if (!T79_) goto LA81_;
			goto BeforeRet_;
		}
		LA81_: ;
		{
			NIM_BOOL T85_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T87_;
			T85_ = (NIM_BOOL)0;
			T85_ = !(((*n).typ == NIM_NIL));
			if (!(T85_)) goto LA86_;
			T87_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T87_ = typeAllowed_l66YrquEyj20orz2a4YbTw((*n).typ, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 10), 0);
			T85_ = !((T87_ == NIM_NIL));
			LA86_: ;
			if (!T85_) goto LA88_;
			goto BeforeRet_;
		}
		LA88_: ;
		call_2 = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, (*n).typ);
		add_gCCf68XrWL79bKes6htzFjQ(call_2, (*n)._Ukind.S6.sons->data[((NI) 0)]);
		{
			NI i_5;
			NI colontmp__3;
			NI i_6;
			i_5 = (NI)0;
			colontmp__3 = (NI)0;
			colontmp__3 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_6 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_2;
					if (!(i_6 < colontmp__3)) goto LA92;
					i_5 = i_6;
					a_2 = getConstExpr_A7gcXCy5E3uGBy5F37NoHA((*c).module, (*n)._Ukind.S6.sons->data[i_5], (*c).graph);
					{
						if (!(a_2 == NIM_NIL)) goto LA95_;
						result = n;
						goto BeforeRet_;
					}
					LA95_: ;
					add_gCCf68XrWL79bKes6htzFjQ(call_2, a_2);
					i_6 += ((NI) 1);
				} LA92: ;
			}
		}
		{
			if (!(((*callee).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 24))&63U)))!=0)) goto LA99_;
			result = evalStaticExpr_ajRaPV9aInq6ZNnUYn0DaVw((*c).module, (*c).graph, call_2, (*(*c).p).owner);
			{
				NimStringDesc* T105_;
				NimStringDesc* T106_;
				if (!(result == 0)) goto LA103_;
				T105_ = (NimStringDesc*)0;
				T105_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(call_2, 0);
				T106_ = (NimStringDesc*)0;
				T106_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_196), T105_);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T106_);
			}
			goto LA101_;
			LA103_: ;
			{
				result = fixupTypeAfterEval_dGBK19cpTWH2Y7y5AybM0IA(c, result, n);
			}
			LA101_: ;
		}
		goto LA97_;
		LA99_: ;
		{
			result = evalConstExpr_P8uF2QSxl7YdNpBnl0Ybqg((*c).module, (*c).graph, call_2);
			{
				if (!(result == 0)) goto LA111_;
				result = n;
			}
			goto LA109_;
			LA111_: ;
			{
				result = fixupTypeAfterEval_dGBK19cpTWH2Y7y5AybM0IA(c, result, n);
			}
			LA109_: ;
		}
		LA97_: ;
	}
	LA65_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, afterCallActions_GgyyrWN39a1O9c0p79aeR9aJkw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* callee;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	callee = (*(*result)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
	switch ((*callee).kind) {
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17):
	{
		result = semMacroExpr_9bmxDHTa4eojLns652LIkJw(c, result, orig, callee, flags);
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
	{
		result = semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA(c, result, callee, flags);
	}
	break;
	default:
	{
		semFinishOperands_b9a16o9ajKKf77bS9bhmwr4LA(c, result);
		activate_9aKmRFIRmowmJXCJbF9aObuQ_3(c, result);
		fixAbstractType_wkwHEj6zZnYo2DMZys6jnA_4(c, result);
		analyseIfAddressTakenInCall_wkwHEj6zZnYo2DMZys6jnA_5(c, result);
		{
			if (!!(((*callee).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0)))) goto LA6_;
			result = magicsAfterOverloadResolution_k2Lin9a76VyrWz9b8OoRC9apg_6(c, result, flags);
		}
		LA6_: ;
		{
			NIM_BOOL T10_;
			NIM_BOOL T12_;
			T10_ = (NIM_BOOL)0;
			T10_ = !(((*result).typ == NIM_NIL));
			if (!(T10_)) goto LA11_;
			T12_ = (NIM_BOOL)0;
			T12_ = ((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24));
			if (!(T12_)) goto LA13_;
			T12_ = ((*(*(*result).typ).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 3));
			LA13_: ;
			T10_ = !(T12_);
			LA11_: ;
			if (!T10_) goto LA14_;
			liftTypeBoundOps_loja41ceALuHLYIaYdWs2A(c, (*result).typ, (*n).info);
		}
		LA14_: ;
	}
	break;
	}
	{
		if (!((*c).matchedConcept == NIM_NIL)) goto LA18_;
		result = evalAtCompileTime_U3qPBy54f1PkCP8vmFMCRA_24(c, result);
	}
	LA18_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nOrig = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
	result = semOverloadedCallAnalyseEffects_tlHRnlepD3lWks2ZTgSoRg(c, n, nOrig, flags);
	{
		if (!!((result == NIM_NIL))) goto LA3_;
		result = afterCallActions_GgyyrWN39a1O9c0p79aeR9aJkw(c, result, nOrig, flags);
	}
	goto LA1_;
	LA3_: ;
	{
		result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalPattern_dwfhsn9abqwoD6b9aTbAh52g)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NimStringDesc* rule;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27));
		if (!(T3_)) goto LA4_;
		T3_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		LA4_: ;
		if (!!(T3_)) goto LA5_;
		T7_ = (NimStringDesc*)0;
		T7_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_120);
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T7_);
	}
	LA5_: ;
	rule = (NimStringDesc*)0;
	{
		NIM_BOOL T10_;
		T10_ = (NIM_BOOL)0;
		T10_ = (((*(*(*c).graph).config).options &(1U<<((NU)(((tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg) 13))&31U)))!=0);
		if (!(T10_)) goto LA11_;
		T10_ = (((*(*(*c).graph).config).notes &((NU64)1<<((NU)((((tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg) 58)- 11))&63U)))!=0);
		LA11_: ;
		if (!T10_) goto LA12_;
		rule = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 4);
	}
	LA12_: ;
	s = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
	switch ((*s).kind) {
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17):
	{
		result = semMacroExpr_9bmxDHTa4eojLns652LIkJw(c, n, orig, s, 0);
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
	{
		result = semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA(c, n, s, 65536);
	}
	break;
	default:
	{
		result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, 0);
	}
	break;
	}
	{
		NIM_BOOL T19_;
		NimStringDesc* T23_;
		NimStringDesc* T24_;
		T19_ = (NIM_BOOL)0;
		T19_ = (((*(*(*c).graph).config).options &(1U<<((NU)(((tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg) 13))&31U)))!=0);
		if (!(T19_)) goto LA20_;
		T19_ = (((*(*(*c).graph).config).notes &((NU64)1<<((NU)((((tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg) 58)- 11))&63U)))!=0);
		LA20_: ;
		if (!T19_) goto LA21_;
		T23_ = (NimStringDesc*)0;
		T24_ = (NimStringDesc*)0;
		T24_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(result, 4);
		T23_ = rawNewString((rule ? rule->Sup.len : 0) + (T24_ ? T24_->Sup.len : 0) + 7);
appendString(T23_, rule);
appendString(T23_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_198));
appendString(T23_, T24_);
appendString(T23_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
		message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*orig).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 58), T23_);
	}
	LA21_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, applyPatterns_U3qPBy54f1PkCP8vmFMCRA_11)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = ((*c).patterns ? (*c).patterns->Sup.len : 0);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = colontmp_;
		{
			while (1) {
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* pattern;
				if (!(((NI) 0) <= res)) goto LA4;
				i = res;
				pattern = (*c).patterns->data[i];
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
					if (!!((pattern == 0))) goto LA7_;
					x = applyRule_CznRIfbV1P9bsQhIYnRp0Qg(c, pattern, result);
					{
						if (!!((x == 0))) goto LA11_;
						(*(*(*c).graph).config).evalTemplateCounter += ((NI) 1);
						{
							if (!(((NI) 1000) < (*(*(*c).graph).config).evalTemplateCounter)) goto LA15_;
							globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_7));
						}
						LA15_: ;
						asgnRefNoCycle((void**) (&(*c).patterns->data[i]), NIM_NIL);
						{
							if (!((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115))) goto LA19_;
							asgnRefNoCycle((void**) (&(*x)._Ukind.S6.sons->data[((NI) 1)]), evalPattern_dwfhsn9abqwoD6b9aTbAh52g(c, (*x)._Ukind.S6.sons->data[((NI) 1)], result));
							result = flattenStmts_kDuk7Mp6Hb4CD2EwZbGQ3g(x);
						}
						goto LA17_;
						LA19_: ;
						{
							result = evalPattern_dwfhsn9abqwoD6b9aTbAh52g(c, x, result);
						}
						LA17_: ;
						(*(*(*c).graph).config).evalTemplateCounter -= ((NI) 1);
						asgnRefNoCycle((void**) (&(*c).patterns->data[i]), pattern);
					}
					LA11_: ;
				}
				LA7_: ;
				res -= ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, hlo_U3qPBy54f1PkCP8vmFMCRA_10)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	(*c).hloLoopDetector += ((NI) 1);
	{
		if (!(((NI) 300) < (*c).hloLoopDetector)) goto LA3_;
		result = n;
		goto BeforeRet_;
	}
	LA3_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 82):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
		result = n;
	}
	break;
	default:
	{
		{
			NIM_BOOL T9_;
			NIM_BOOL T10_;
			T9_ = (NIM_BOOL)0;
			T10_ = (NIM_BOOL)0;
			T10_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 74) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36));
			if (!(T10_)) goto LA11_;
			T10_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
			LA11_: ;
			T9_ = T10_;
			if (!(T9_)) goto LA12_;
			T9_ = ((520 & (*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).flags) == 520);
			LA12_: ;
			if (!T9_) goto LA13_;
			result = n;
			goto BeforeRet_;
		}
		LA13_: ;
		result = applyPatterns_U3qPBy54f1PkCP8vmFMCRA_11(c, n);
		{
			if (!(result == n)) goto LA17_;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(result);
				i_2 = ((NI) 0);
				{
					while (1) {
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* h;
						if (!(i_2 < colontmp_)) goto LA21;
						i = i_2;
						a = (*result)._Ukind.S6.sons->data[i];
						h = hlo_U3qPBy54f1PkCP8vmFMCRA_10(c, a);
						{
							if (!!((h == a))) goto LA24_;
							asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i]), h);
						}
						LA24_: ;
						i_2 += ((NI) 1);
					} LA21: ;
				}
			}
		}
		goto LA15_;
		LA17_: ;
		{
			{
				NIM_BOOL T29_;
				T29_ = (NIM_BOOL)0;
				T29_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*n).typ);
				if (!(T29_)) goto LA30_;
				T29_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*result).typ);
				LA30_: ;
				if (!T29_) goto LA31_;
			}
			goto LA27_;
			LA31_: ;
			{
				result = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, (*n).typ, result, (*n).info);
			}
			LA27_: ;
			result = commonOptimizations_0A2Fu3iOZ9aCzHX2sVSYlhg((*c).graph, (*c).module, result);
			result = hlo_U3qPBy54f1PkCP8vmFMCRA_10(c, result);
			result = commonOptimizations_0A2Fu3iOZ9aCzHX2sVSYlhg((*c).graph, (*c).module, result);
		}
		LA15_: ;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, hloBody_U3qPBy54f1PkCP8vmFMCRA_9)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NI T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = ((*c).patterns ? (*c).patterns->Sup.len : 0);
		T3_ = (T4_ == ((NI) 0));
		if (T3_) goto LA5_;
		T3_ = !((((*(*(*c).graph).config).options &(1U<<((NU)(((tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg) 22))&31U)))!=0));
		LA5_: ;
		if (!T3_) goto LA6_;
		result = n;
		goto BeforeRet_;
	}
	LA6_: ;
	(*c).hloLoopDetector = ((NI) 0);
	result = hlo_U3qPBy54f1PkCP8vmFMCRA_10(c, n);
	}BeforeRet_: ;
	return result;
}

static N_INLINE(void, popProcCon_SSNSh333Y0csrmTQnH74tQsem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c) {
	asgnRef((void**) (&(*c).p), (*(*c).p).next);
}

N_LIB_PRIVATE N_NIMCALL(void, fixupInstantiatedSymbols_79a2N3yeoK32VpcXiRGgdSg_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = ((*c).generics ? (*c).generics->Sup.len : 0);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* oldPrc;
					tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T9_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
					if (!((*(*c).generics->data[i].genericSym).Sup.id == (*s).Sup.id)) goto LA7_;
					oldPrc = (*(*c).generics->data[i].inst).sym;
					pushProcCon_rlp4YNQ9cuQQzIjJRzZxqsA_3(c, oldPrc);
					pushOwner_Wu2m3sh279aYfWNXavlKecA(c, oldPrc);
					pushInfoContext_jVPMMc4H29cyI52qg0Kp9aUg((*(*c).graph).config, (*oldPrc).info);
					T9_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
					T9_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
					n = (*oldPrc).ast;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*(*s).ast)._Ukind.S6.sons->data[((NI) 6)]));
					instantiateBody_6RB9cSw8gDnp85iQpBn9a1Bg(c, n, (*(*oldPrc).typ).n, oldPrc, s);
					closeScope_q62Ixzqzx2R5yeGMamw81g(c);
					popInfoContext_HFVjkUQz7LMV9aOS6uKLckQ((*(*c).graph).config);
					popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw(c);
					popProcCon_SSNSh333Y0csrmTQnH74tQsem(c);
				}
				LA7_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, searchForBorrowProc_CajxMS2havTbmCMNkAzU8w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* startScope, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call;
	NIM_BOOL hasDistinct;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	call = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*fn).info);
	hasDistinct = NIM_FALSE;
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA((*fn).name, (*fn).info);
	add_gCCf68XrWL79bKes6htzFjQ(call, T1_);
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*(*fn).typ).n);
		i_2 = ((NI) 1);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* param;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T17_;
				if (!(i_2 < colontmp_)) goto LA4;
				i = i_2;
				param = (*(*(*fn).typ).n)._Ukind.S6.sons->data[i];
				t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*param).typ, IL64(36239903259920400));
				{
					NIM_BOOL T7_;
					T7_ = (NIM_BOOL)0;
					T7_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13));
					if (T7_) goto LA8_;
					T7_ = ((*(*param).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13));
					LA8_: ;
					if (!T7_) goto LA9_;
					hasDistinct = NIM_TRUE;
				}
				LA9_: ;
				x = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				{
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T15_;
					if (!((*(*param).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23))) goto LA13_;
					x = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23), c);
					T15_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T15_ = baseOfDistinct_wDvPudHayM9arXOf7L9a4WIQ(t);
					addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(x, T15_);
				}
				goto LA11_;
				LA13_: ;
				{
					x = baseOfDistinct_wDvPudHayM9arXOf7L9a4WIQ(t);
				}
				LA11_: ;
				T17_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T17_ = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (*fn).info, x);
				add_gCCf68XrWL79bKes6htzFjQ(call, T17_);
				i_2 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* resolved;
		tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw T22_;
		if (!hasDistinct) goto LA20_;
		T22_ = 0;
		T22_ |=((NU32)(1)<<(((*fn).kind)%(sizeof(NU32)*8)));
		resolved = semOverloadedCall_z9bsZfns7wNaCTMF0VgboGQ(c, call, call, T22_, 0);
		{
			if (!!((resolved == NIM_NIL))) goto LA25_;
			result = (*(*resolved)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
			{
				NIM_BOOL T29_;
				T29_ = (NIM_BOOL)0;
				T29_ = compareTypes_oyXq5u7iL4RjsT9bovvTE9cg((*(*result).typ).sons->data[((NI) 0)], (*(*fn).typ).sons->data[((NI) 0)], ((tyEnum_TDistinctCompare_9bNKHGs63atuMFXnAleTveg) 1), 0);
				if (!!(T29_)) goto LA30_;
				result = NIM_NIL;
			}
			goto LA27_;
			LA30_: ;
			{
				if (!((*result).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 5) || (*result).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 4))) goto LA33_;
				result = NIM_NIL;
			}
			goto LA27_;
			LA33_: ;
			LA27_: ;
		}
		LA25_: ;
	}
	LA20_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, semBorrow_oBalgLazmUb2OV8fMqOnBQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* b;
	b = searchForBorrowProc_CajxMS2havTbmCMNkAzU8w(c, (*(*c).currentScope).parent, s);
	{
		if (!!((b == NIM_NIL))) goto LA3_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), newSymNode_UWZXukHA5As9aCftRHbafBg(b));
		(*s).magic = (*b).magic;
	}
	goto LA1_;
	LA3_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_200));
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, sideEffectsCheck_grUXOQ5yIYTIh9cBH5o3wgA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semProcAux_HYGotOQX5pnodBI9cpMJqTw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tySet_tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw validPragmas, tyEnum_TProcCompilationSteps_2LY1MARGn5z4Y5kU8eJFMg phase) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	NIM_BOOL typeIsDetermined;
	NIM_BOOL isAnon;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* oldScope;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T16_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gp;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* proto;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = semProcAnnotation_HKvmn9cXyuMLnGdyw4BNd9cw(c, n, validPragmas);
	{
		if (!!((result == NIM_NIL))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	result = n;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 7), (*(*c).graph).config);
	s = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	typeIsDetermined = NIM_FALSE;
	isAnon = NIM_FALSE;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA7_;
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T13_;
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA11_;
			T13_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
			T13_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
			s = newSym_ZQfOwiQo63qLga19cuF5r9cQ(kind, (*(*c).cache).idAnon, T13_, (*n).info, 0);
			(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
			isAnon = NIM_TRUE;
		}
		goto LA9_;
		LA11_: ;
		{
			s = semIdentDef_xo9cgbfYKVVrrYTXCTptvbQ(c, (*n)._Ukind.S6.sons->data[((NI) 0)], kind);
		}
		LA9_: ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(s));
		asgnRefNoCycle((void**) (&(*s).ast), n);
	}
	goto LA5_;
	LA7_: ;
	{
		s = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
		asgnRefNoCycle((void**) (&(*s).owner), getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c));
		typeIsDetermined = ((*s).typ == NIM_NIL);
		asgnRefNoCycle((void**) (&(*s).ast), n);
	}
	LA5_: ;
	(*s).options = (*(*(*c).graph).config).options;
	oldScope = (*c).currentScope;
	pushOwner_Wu2m3sh279aYfWNXavlKecA(c, s);
	T16_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T16_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	gp = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA19_;
		gp = setGenericParamsMisc_U3qPBy54f1PkCP8vmFMCRA_5(c, n);
	}
	goto LA17_;
	LA19_: ;
	{
		gp = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 75), (*n).info);
	}
	LA17_: ;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 3)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA24_;
		semParamList_1K4lBiaKx6f704AxKCVBWw(c, (*n)._Ukind.S6.sons->data[((NI) 3)], gp, s);
		{
			NI T28_;
			T28_ = (NI)0;
			T28_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(gp);
			if (!(((NI) 0) < T28_)) goto LA29_;
			{
				if (!((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA33_;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 2)]), gp);
			}
			LA33_: ;
		}
		LA29_: ;
	}
	goto LA22_;
	LA24_: ;
	{
		asgnRefNoCycle((void**) (&(*s).typ), newProcType_xLsbVleCb74T7Vl9aPE528w(c, (*n).info, NIM_NIL));
	}
	LA22_: ;
	{
		if (!(((*(*s).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 32))&63U)))!=0)) goto LA38_;
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 24))%(sizeof(NU64)*8));
	}
	LA38_: ;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA42_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), semPattern_U3qPBy54f1PkCP8vmFMCRA_8(c, (*n)._Ukind.S6.sons->data[((NI) 1)]));
	}
	LA42_: ;
	{
		if (!((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15))) goto LA46_;
		(*(*s).typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 15))%(sizeof(NU64)*8));
	}
	goto LA44_;
	LA46_: ;
	{
		if (!((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 13))) goto LA49_;
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 10))%(sizeof(NU64)*8));
		(*(*s).typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 1))%(sizeof(NU64)*8));
	}
	goto LA44_;
	LA49_: ;
	LA44_: ;
	proto = searchForProc_uVWu21csPbNmiy7yDLzlNA(c, oldScope, s);
	{
		NIM_BOOL T53_;
		T53_ = (NIM_BOOL)0;
		T53_ = (proto == NIM_NIL);
		if (T53_) goto LA54_;
		T53_ = isAnon;
		LA54_: ;
		if (!T53_) goto LA55_;
		{
			if (!((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15))) goto LA59_;
			{
				if (!!(((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8)))) goto LA63_;
				{
					if (!isAnon) goto LA67_;
					(*(*s).typ).callConv = ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8);
				}
				goto LA65_;
				LA67_: ;
				{
					(*(*s).typ).callConv = ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 5);
				}
				LA65_: ;
			}
			LA63_: ;
		}
		goto LA57_;
		LA59_: ;
		{
			tyObject_TOptionEntry_H9ac5KbrDJVwT1zH5O83r7w* T71_;
			T71_ = (tyObject_TOptionEntry_H9ac5KbrDJVwT1zH5O83r7w*)0;
			T71_ = lastOptionEntry_8p6fqPdj1LEFydikuHxfXw(c);
			(*(*s).typ).callConv = (*T71_).defaultCC;
		}
		LA57_: ;
		{
			if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0)) goto LA74_;
		}
		goto LA72_;
		LA74_: ;
		{
			if (!((520256 &(1U<<((NU)(kind)&31U)))!=0)) goto LA77_;
			{
				if (!!(typeIsDetermined)) goto LA81_;
				addInterfaceOverloadableSymAt_AlLnlK2NPVlmdvcGAsINdQ(c, oldScope, s);
			}
			LA81_: ;
		}
		goto LA72_;
		LA77_: ;
		{
			{
				if (!!(typeIsDetermined)) goto LA86_;
				addInterfaceDeclAt_AlLnlK2NPVlmdvcGAsINdQ_2(c, oldScope, s);
			}
			LA86_: ;
		}
		LA72_: ;
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 4)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA90_;
			pragma_av9bQYmoLtJKLA6ueIgHxoA(c, s, (*n)._Ukind.S6.sons->data[((NI) 4)], validPragmas);
		}
		goto LA88_;
		LA90_: ;
		{
			implicitPragmas_av9bQYmoLtJKLA6ueIgHxoA_3(c, s, n, validPragmas);
		}
		LA88_: ;
	}
	goto LA51_;
	LA55_: ;
	{
		tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T113_;
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 4)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA96_;
			pragma_av9bQYmoLtJKLA6ueIgHxoA(c, s, (*n)._Ukind.S6.sons->data[((NI) 4)], validPragmas);
			{
				NIM_BOOL T100_;
				NimStringDesc* T104_;
				NimStringDesc* T105_;
				NimStringDesc* T106_;
				T100_ = (NIM_BOOL)0;
				T100_ = !(((*(*proto).typ).callConv == (*(*s).typ).callConv));
				if (T100_) goto LA101_;
				T100_ = (((*(*proto).typ).flags & ~ (*(*s).typ).flags ==0)&&((*(*proto).typ).flags != (*(*s).typ).flags));
				LA101_: ;
				if (!T100_) goto LA102_;
				T104_ = (NimStringDesc*)0;
				T105_ = (NimStringDesc*)0;
				T105_ = dollar__tduYJIZOMabvcOCb9bVwWCA_2((*(*c).graph).config, (*proto).info);
				T104_ = rawNewString(((*(*proto).name).s ? (*(*proto).name).s->Sup.len : 0) + (T105_ ? T105_->Sup.len : 0) + 8);
appendString(T104_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
appendString(T104_, (*(*proto).name).s);
appendString(T104_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_91));
appendString(T104_, T105_);
				T106_ = (NimStringDesc*)0;
				T106_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_90), T104_);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 4)]).info, T106_);
			}
			LA102_: ;
		}
		LA96_: ;
		{
			NIM_BOOL T109_;
			T109_ = (NIM_BOOL)0;
			T109_ = !((((*proto).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 4))&63U)))!=0));
			if (!(T109_)) goto LA110_;
			T109_ = ((*proto).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0));
			LA110_: ;
			if (!T109_) goto LA111_;
			wrongRedefinition_5xD0f9cR8frDSNZXLBtBo7A(c, (*n).info, (*(*proto).name).s, (*proto).info);
		}
		LA111_: ;
		(*proto).flags &= ~(((NU64)1) << ((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 4)) % (sizeof(NU64)*8)));
		closeScope_q62Ixzqzx2R5yeGMamw81g(c);
		T113_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
		T113_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
		{
			if (!!(((*(*(*proto).ast)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA116_;
			addGenericParamListToScope_wkwHEj6zZnYo2DMZys6jnA_3(c, (*(*proto).ast)._Ukind.S6.sons->data[((NI) 2)]);
		}
		LA116_: ;
		addParams_ZGxWSZNSlj0lQFGwU8y5Eg_2(c, (*(*proto).typ).n, (*proto).kind);
		(*proto).info = (*s).info;
		asgnRefNoCycle((void**) (&(*s).typ), (*proto).typ);
		(*proto).options = (*s).options;
		s = proto;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 2)]), (*(*proto).ast)._Ukind.S6.sons->data[((NI) 2)]);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 3)]), (*(*proto).ast)._Ukind.S6.sons->data[((NI) 3)]);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 4)]), (*(*proto).ast)._Ukind.S6.sons->data[((NI) 4)]);
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA120_;
			internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_92));
		}
		LA120_: ;
		asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym), proto);
		{
			NIM_BOOL T124_;
			NimStringDesc* T128_;
			T124_ = (NIM_BOOL)0;
			T124_ = importantComments_6aU0ZBrns2mWNHTDUbDERQsem((*(*c).graph).config);
			if (!(T124_)) goto LA125_;
			T124_ = (((NI) 0) < ((*(*proto).ast).comment ? (*(*proto).ast).comment->Sup.len : 0));
			LA125_: ;
			if (!T124_) goto LA126_;
			T128_ = (NimStringDesc*)0;
			T128_ = (*n).comment; (*n).comment = copyStringRC1((*(*proto).ast).comment);
			if (T128_) nimGCunrefNoCycle(T128_);
		}
		LA126_: ;
		asgnRefNoCycle((void**) (&(*proto).ast), n);
		popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw(c);
		pushOwner_Wu2m3sh279aYfWNXavlKecA(c, s);
	}
	LA51_: ;
	{
		NIM_BOOL T131_;
		T131_ = (NIM_BOOL)0;
		T131_ = (((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 31))&63U)))!=0);
		if (T131_) goto LA132_;
		T131_ = ((NU8)((*(*s).name).s->data[((NI) 0)]) == (NU8)(61));
		LA132_: ;
		if (!T131_) goto LA133_;
		semOverride_llOVo9c3s0bb48y1MlbyvAw_2(c, s, n);
	}
	LA133_: ;
	{
		if (!(((NU8)((*(*s).name).s->data[((NI) 0)])) == ((NU8)(46)) || ((NU8)((*(*s).name).s->data[((NI) 0)])) == ((NU8)(40)))) goto LA137_;
		{
			NIM_BOOL T141_;
			NimStringDesc* T145_;
			T141_ = (NIM_BOOL)0;
			T141_ = contains_jPdUhZfr9a8sH2V3ZBDljzwparseopt(TM_rF9caJawfOjYTjsgLVUSGFA_107, 3, (*(*s).name).s);
			if (!(T141_)) goto LA142_;
			T141_ = ((18 & (*c).features) == 0);
			LA142_: ;
			if (!T141_) goto LA143_;
			T145_ = (NimStringDesc*)0;
			T145_ = rawNewString(((*(*s).name).s ? (*(*s).name).s->Sup.len : 0) + 80);
appendString(T145_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_111));
appendString(T145_, (*(*s).name).s);
appendString(T145_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_112));
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T145_);
		}
		goto LA139_;
		LA143_: ;
		{
			NIM_BOOL T147_;
			NimStringDesc* T151_;
			T147_ = (NIM_BOOL)0;
			T147_ = eqStrings((*(*s).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_47));
			if (!(T147_)) goto LA148_;
			T147_ = !((((*c).features &(1U<<((NU)(((tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ) 2))&15U)))!=0));
			LA148_: ;
			if (!T147_) goto LA149_;
			T151_ = (NimStringDesc*)0;
			T151_ = rawNewString(((*(*s).name).s ? (*(*s).name).s->Sup.len : 0) + 80);
appendString(T151_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_111));
appendString(T151_, (*(*s).name).s);
appendString(T151_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_113));
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T151_);
		}
		goto LA139_;
		LA149_: ;
		LA139_: ;
	}
	LA137_: ;
	{
		NIM_BOOL usePseudoGenerics;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 6)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA154_;
		{
			NimStringDesc* T160_;
			if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 27))&63U)))!=0)) goto LA158_;
			T160_ = (NimStringDesc*)0;
			T160_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_114), (*(*s).name).s);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 6)]).info, T160_);
		}
		LA158_: ;
		usePseudoGenerics = ((393216 &(1U<<((NU)(kind)&31U)))!=0);
		{
			NIM_BOOL T163_;
			NIM_BOOL T164_;
			NIM_BOOL T167_;
			T163_ = (NIM_BOOL)0;
			T164_ = (NIM_BOOL)0;
			T164_ = !(usePseudoGenerics);
			if (!(T164_)) goto LA165_;
			T164_ = ((6 &(1U<<((NU)((*(*(*c).graph).config).ideCmd)&15U)))!=0);
			LA165_: ;
			T163_ = T164_;
			if (!(T163_)) goto LA166_;
			T167_ = (NIM_BOOL)0;
			T167_ = cursorInProc_43tL9cYyE1TPnGK9bR9akYRmQ((*(*c).graph).config, (*n)._Ukind.S6.sons->data[((NI) 6)]);
			T163_ = !(T167_);
			LA166_: ;
			if (!T163_) goto LA168_;
			{
				if (!((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14))) goto LA172_;
				semMethodPrototype_llOVo9c3s0bb48y1MlbyvAw_3(c, s, n);
			}
			LA172_: ;
		}
		goto LA161_;
		LA168_: ;
		{
			pushProcCon_rlp4YNQ9cuQQzIjJRzZxqsA_3(c, s);
			{
				NIM_BOOL T177_;
				T177_ = (NIM_BOOL)0;
				T177_ = ((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
				if (T177_) goto LA178_;
				T177_ = usePseudoGenerics;
				LA178_: ;
				if (!T177_) goto LA179_;
				{
					if (!!(usePseudoGenerics)) goto LA183_;
					paramsTypeCheck_x9cTuhi0AX52YZsSO1Yzt6Asem(c, (*s).typ);
				}
				LA183_: ;
				(*(*c).p).wasForwarded = !((proto == NIM_NIL));
				maybeAddResult_llOVo9c3s0bb48y1MlbyvAw(c, s, n);
				{
					if (!((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14))) goto LA187_;
					semMethodPrototype_llOVo9c3s0bb48y1MlbyvAw_3(c, s, n);
				}
				LA187_: ;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* semBody;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T193_;
					if (!!((((*s).loc.flags &(1U<<((NU)(((tyEnum_TLocFlag_o2bqJgR4ceIupnUSpxiudA) 4))&15U)))!=0))) goto LA191_;
					T193_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T193_ = semProcBody_U3qPBy54f1PkCP8vmFMCRA_4(c, (*n)._Ukind.S6.sons->data[((NI) 6)]);
					semBody = hloBody_U3qPBy54f1PkCP8vmFMCRA_9(c, T193_);
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), transformBody_80mJDJ8hRZ7Zm2rfDijiOQ((*c).graph, (*c).module, semBody, s));
				}
				LA191_: ;
			}
			goto LA175_;
			LA179_: ;
			{
				tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T203_;
				{
					NIM_BOOL T197_;
					tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T201_;
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T202_;
					T197_ = (NIM_BOOL)0;
					T197_ = !(((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL));
					if (!(T197_)) goto LA198_;
					T197_ = !((kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15)));
					LA198_: ;
					if (!T197_) goto LA199_;
					T201_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
					T201_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_44));
					T202_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
					T202_ = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 0), T201_, NIM_NIL, (*n).info, 0);
					addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, T202_);
				}
				LA199_: ;
				T203_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
				T203_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), semGenericStmt_U3qPBy54f1PkCP8vmFMCRA_6(c, (*n)._Ukind.S6.sons->data[((NI) 6)]));
				closeScope_q62Ixzqzx2R5yeGMamw81g(c);
				{
					if (!((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0))) goto LA206_;
					fixupInstantiatedSymbols_79a2N3yeoK32VpcXiRGgdSg_2(c, s);
				}
				LA206_: ;
				{
					if (!((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14))) goto LA210_;
					semMethodPrototype_llOVo9c3s0bb48y1MlbyvAw_3(c, s, n);
				}
				LA210_: ;
			}
			LA175_: ;
			{
				if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 5))&63U)))!=0)) goto LA214_;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), (*(*c).graph).emptyNode);
			}
			LA214_: ;
			popProcCon_SSNSh333Y0csrmTQnH74tQsem(c);
		}
		LA161_: ;
	}
	goto LA152_;
	LA154_: ;
	{
		{
			if (!((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14))) goto LA219_;
			semMethodPrototype_llOVo9c3s0bb48y1MlbyvAw_3(c, s, n);
		}
		LA219_: ;
		{
			NimStringDesc* T225_;
			if (!!((proto == NIM_NIL))) goto LA223_;
			T225_ = (NimStringDesc*)0;
			T225_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_199), (*(*proto).name).s);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T225_);
		}
		LA223_: ;
		{
			NIM_BOOL T228_;
			T228_ = (NIM_BOOL)0;
			T228_ = ((134217760 & (*s).flags) == 0);
			if (!(T228_)) goto LA229_;
			T228_ = ((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0));
			LA229_: ;
			if (!T228_) goto LA230_;
			(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 4))%(sizeof(NU64)*8));
		}
		goto LA226_;
		LA230_: ;
		{
			if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 27))&63U)))!=0)) goto LA233_;
			semBorrow_oBalgLazmUb2OV8fMqOnBQ(c, n, s);
		}
		goto LA226_;
		LA233_: ;
		LA226_: ;
	}
	LA152_: ;
	sideEffectsCheck_grUXOQ5yIYTIh9cBH5o3wgA(c, s);
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw(c);
	{
		NI T239_;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA237_;
		asgnRefNoCycle((void**) (&(*c).patterns), (tySequence_DfgJFJEYoj4YBAHLZPl5lQ*) incrSeqV3(&((*c).patterns)->Sup, (&NTI_DfgJFJEYoj4YBAHLZPl5lQ_)));
		T239_ = (*c).patterns->Sup.len++;
		asgnRefNoCycle((void**) (&(*c).patterns->data[T239_]), s);
	}
	LA237_: ;
	{
		if (!isAnon) goto LA242_;
		(*n).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51);
		asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	}
	LA242_: ;
	{
		NIM_BOOL T246_;
		NIM_BOOL T247_;
		T246_ = (NIM_BOOL)0;
		T247_ = (NIM_BOOL)0;
		T247_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
		if (!(T247_)) goto LA248_;
		T247_ = !(((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15)));
		LA248_: ;
		T246_ = T247_;
		if (!(T246_)) goto LA249_;
		T246_ = ((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA249_: ;
		if (!T246_) goto LA250_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*s).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_201));
	}
	LA250_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, determineType_79a2N3yeoK32VpcXiRGgdSg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
{	{
		if (!!(((*s).typ == NIM_NIL))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T5_ = semProcAux_HYGotOQX5pnodBI9cpMJqTw(c, (*s).ast, (*s).kind, TM_rF9caJawfOjYTjsgLVUSGFA_202, ((tyEnum_TProcCompilationSteps_2LY1MARGn5z4Y5kU8eJFMg) 1));
	T5_;
	}BeforeRet_: ;
}
static N_NIMCALL(void, Marker_tySequence_P9bWebqKHkrGHwy9aZW9bw0TA)(void* p, NI op) {
	tySequence_P9bWebqKHkrGHwy9aZW9bw0TA* a;
	NI T1_;
	a = (tySequence_P9bWebqKHkrGHwy9aZW9bw0TA*)p;
	T1_ = (NI)0;
	for (T1_ = 0; T1_ < (a ? a->Sup.len : 0); T1_++) {
	nimGCvisit((void*)a->data[T1_].Field0, op);
	}
}

N_LIB_PRIVATE N_NIMCALL(tySequence_P9bWebqKHkrGHwy9aZW9bw0TA*, initCandidateSymbols_ljUfAVhs9a2P8OoOfJTl5Dw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* headSymbol, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initialBinding, tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw filter, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* best, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* alt, tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ* o, NIM_BOOL diagnostics) {
	tySequence_P9bWebqKHkrGHwy9aZW9bw0TA* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* symx;
	result = (tySequence_P9bWebqKHkrGHwy9aZW9bw0TA*)0;
	result = NIM_NIL;
	symx = initOverloadIter_5E8M4x8tMAW3KCmti57FUA(o, c, headSymbol);
	{
		while (1) {
			if (!!((symx == NIM_NIL))) goto LA2;
			{
				tyTuple_K9bYwLtGKmFQYg8TwmqoG3Q T7_;
				NI T8_;
				if (!((filter &(1U<<((NU)((*symx).kind)&31U)))!=0)) goto LA5_;
				nimZeroMem((void*)(&T7_), sizeof(tyTuple_K9bYwLtGKmFQYg8TwmqoG3Q));
				T7_.Field0 = symx;
				T7_.Field1 = lastOverloadScope_BsRyCn9bd9cpY9adFkr4n1inQ((&(*o)));
				result = (tySequence_P9bWebqKHkrGHwy9aZW9bw0TA*) incrSeqV3(&(result)->Sup, (&NTI_P9bWebqKHkrGHwy9aZW9bw0TA_));
				T8_ = result->Sup.len++;
				asgnRefNoCycle((void**) (&result->data[T8_].Field0), T7_.Field0);
				result->data[T8_].Field1 = T7_.Field1;
			}
			LA5_: ;
			symx = nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2(o, c, headSymbol);
		} LA2: ;
	}
	{
		NI T11_;
		T11_ = (result ? result->Sup.len : 0);
		if (!(((NI) 0) < T11_)) goto LA12_;
		initCandidate_QuqWjdtdULLI4ODFpVkK0Q(c, best, result->data[((NI) 0)].Field0, initialBinding, result->data[((NI) 0)].Field1, diagnostics);
		initCandidate_QuqWjdtdULLI4ODFpVkK0Q(c, alt, result->data[((NI) 0)].Field0, initialBinding, result->data[((NI) 0)].Field1, diagnostics);
		(*best).state = ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 2);
	}
	LA12_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, pickBestCandidate_UDLdJj9bbqqsA0eEwYbtKsA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* headSymbol, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initialBinding, tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw filter, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* best, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* alt, tySequence_0dpGN6F4ocevqUQGsaf41w** errors, NIM_BOOL diagnosticsFlag, NIM_BOOL errorsEnabled) {
	tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ o;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
	NI scope;
	NI counterInitial;
	tySequence_P9bWebqKHkrGHwy9aZW9bw0TA* syms;
	NIM_BOOL noSyms;
	NI nextSymIndex;
	tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA z;
	nimZeroMem((void*)(&o), sizeof(tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ));
	sym = initOverloadIter_5E8M4x8tMAW3KCmti57FUA((&o), c, headSymbol);
	scope = lastOverloadScope_BsRyCn9bd9cpY9adFkr4n1inQ((&o));
	counterInitial = (*(*c).currentScope).symbols.counter;
	syms = (tySequence_P9bWebqKHkrGHwy9aZW9bw0TA*)0;
	noSyms = NIM_TRUE;
	nextSymIndex = ((NI) 0);
	{
		while (1) {
			if (!!((sym == NIM_NIL))) goto LA2;
			{
				if (!((filter &(1U<<((NU)((*sym).kind)&31U)))!=0)) goto LA5_;
				initCandidate_QuqWjdtdULLI4ODFpVkK0Q(c, best, sym, initialBinding, scope, diagnosticsFlag);
				initCandidate_QuqWjdtdULLI4ODFpVkK0Q(c, alt, sym, initialBinding, scope, diagnosticsFlag);
				(*best).state = ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 2);
				goto LA1;
			}
			goto LA3_;
			LA5_: ;
			{
				sym = nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2((&o), c, headSymbol);
				scope = lastOverloadScope_BsRyCn9bd9cpY9adFkr4n1inQ((&o));
			}
			LA3_: ;
		} LA2: ;
	} LA1: ;
	nimZeroMem((void*)(&z), sizeof(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA));
	{
		while (1) {
			if (!!((sym == NIM_NIL))) goto LA9;
			{
				{
					if (!!(((filter &(1U<<((NU)((*sym).kind)&31U)))!=0))) goto LA13_;
					sym = nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2((&o), c, headSymbol);
					scope = lastOverloadScope_BsRyCn9bd9cpY9adFkr4n1inQ((&o));
					goto LA10;
				}
				LA13_: ;
				determineType_79a2N3yeoK32VpcXiRGgdSg(c, sym);
				initCandidate_QuqWjdtdULLI4ODFpVkK0Q(c, (&z), sym, initialBinding, scope, diagnosticsFlag);
				{
					NIM_BOOL T17_;
					NI T19_;
					T17_ = (NIM_BOOL)0;
					T17_ = ((*(*c).currentScope).symbols.counter == counterInitial);
					if (T17_) goto LA18_;
					T19_ = (syms ? syms->Sup.len : 0);
					T17_ = !((T19_ == ((NI) 0)));
					LA18_: ;
					if (!T17_) goto LA20_;
					matches_PbP19b36C8eDxA2wQt6exGQ_2(c, n, orig, (&z));
					{
						if (!(z.state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1))) goto LA24_;
						{
							if (!((*sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15))) goto LA28_;
							z.exactMatches += ((NI) 200);
						}
						LA28_: ;
						switch ((*best).state) {
						case ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 0):
						case ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 2):
						{
							genericAssign((void*)(&(*best)), (void*)(&z), (&NTI_B8Gf2sSWgQ79bLZ9bYWrLHaA_));
						}
						break;
						case ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1):
						{
							NI cmp;
							cmp = cmpCandidates_y6m9bhhlwHAuzsfu0xg0hDQ((&(*best)), (&z));
							{
								if (!(cmp < ((NI) 0))) goto LA34_;
								genericAssign((void*)(&(*best)), (void*)(&z), (&NTI_B8Gf2sSWgQ79bLZ9bYWrLHaA_));
							}
							goto LA32_;
							LA34_: ;
							{
								if (!(cmp == ((NI) 0))) goto LA37_;
								genericAssign((void*)(&(*alt)), (void*)(&z), (&NTI_B8Gf2sSWgQ79bLZ9bYWrLHaA_));
							}
							goto LA32_;
							LA37_: ;
							LA32_: ;
						}
						break;
						}
					}
					goto LA22_;
					LA24_: ;
					{
						NIM_BOOL T40_;
						tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ T44_;
						T40_ = (NIM_BOOL)0;
						T40_ = errorsEnabled;
						if (T40_) goto LA41_;
						T40_ = z.diagnosticsEnabled;
						LA41_: ;
						if (!T40_) goto LA42_;
						nimZeroMem((void*)(&T44_), sizeof(tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ));
						nimZeroMem((void*)(&T44_), sizeof(tyObject_CandidateError_5fLnqPfj0Ty9cmak1Q1pBFQ));
						T44_.sym = sym;
						T44_.unmatchedVarParam = ((NI) (z.mutabilityProblem));
						T44_.firstMismatch = z.firstMismatch;
						genericSeqAssign((&T44_.diagnostics), z.diagnostics, (&NTI_sM4lkSb7zS6F7OVMvW9cffQ_));
						safeAdd_TLXpby9abwZs6Huf5RGwBbQ(errors, T44_);
					}
					goto LA22_;
					LA42_: ;
					LA22_: ;
				}
				goto LA15_;
				LA20_: ;
				{
					syms = initCandidateSymbols_ljUfAVhs9a2P8OoOfJTl5Dw(c, headSymbol, initialBinding, filter, best, alt, (&o), diagnosticsFlag);
					noSyms = NIM_FALSE;
				}
				LA15_: ;
				{
					if (!noSyms) goto LA48_;
					sym = nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2((&o), c, headSymbol);
					scope = lastOverloadScope_BsRyCn9bd9cpY9adFkr4n1inQ((&o));
				}
				goto LA46_;
				LA48_: ;
				{
					NI T51_;
					T51_ = (syms ? syms->Sup.len : 0);
					if (!(nextSymIndex < T51_)) goto LA52_;
					sym = syms->data[nextSymIndex].Field0;
					scope = syms->data[nextSymIndex].Field1;
					nextSymIndex += ((NI) 1);
				}
				goto LA46_;
				LA52_: ;
				{
					goto LA8;
				}
				LA46_: ;
			} LA10: ;
		} LA9: ;
	} LA8: ;
}

static N_INLINE(tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA, dotdot__gZc19czncDHf5RCNZiquNrQnimblecmd)(NI a, NI b) {
	tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA result;
	nimZeroMem((void*)(&result), sizeof(tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA));
	result.a = a;
	result.b = b;
	return result;
}

static N_INLINE(NimStringDesc*, X5BX5D__SeS5h9bMpIkS1zha7iXXRaAnimblecmd)(NimStringDesc* s, tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA x) {
	NimStringDesc* result;
	NI a;
	NI L;
	result = (NimStringDesc*)0;
	a = x.a;
	L = (NI)((NI)(x.b - a) + ((NI) 1));
	result = mnewString(((NI) (L)));
	{
		NI i;
		NI i_2;
		i = (NI)0;
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < L)) goto LA3;
				i = i_2;
				result->data[i] = s->data[(NI)(i + a)];
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameMethodDispatcher_AbGRfvK0w0rm1Smw9caKnOQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* a, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* b) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = NIM_FALSE;
	{
		NIM_BOOL T3_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* aa;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* bb;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*a).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14));
		if (!(T3_)) goto LA4_;
		T3_ = ((*b).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14));
		LA4_: ;
		if (!T3_) goto LA5_;
		aa = lastSon_esDJA7239bJDiq4UrX9aHCjg((*a).ast);
		bb = lastSon_esDJA7239bJDiq4UrX9aHCjg((*b).ast);
		{
			NIM_BOOL T9_;
			T9_ = (NIM_BOOL)0;
			T9_ = ((*aa).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
			if (!(T9_)) goto LA10_;
			T9_ = ((*bb).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
			LA10_: ;
			if (!T9_) goto LA11_;
			{
				if (!((*aa)._Ukind.S4.sym == (*bb)._Ukind.S4.sym)) goto LA15_;
				result = NIM_TRUE;
			}
			LA15_: ;
		}
		goto LA7_;
		LA11_: ;
		{
		}
		LA7_: ;
	}
	LA5_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, resolveOverloads_B3gtjSNpYjtA6RUxTTCoJA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig, tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw filter, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags, tySequence_0dpGN6F4ocevqUQGsaf41w** errors, NIM_BOOL errorsEnabled, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* Result) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initialBinding;
	tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA alt;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* f;
	tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg overloadsState;
{	genericReset((void*)Result, (&NTI_B8Gf2sSWgQ79bLZ9bYWrLHaA_));
	initialBinding = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&alt), sizeof(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA));
	f = (*n)._Ukind.S6.sons->data[((NI) 0)];
	{
		if (!((*f).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42))) goto LA3_;
		semOpAux_wkwHEj6zZnYo2DMZys6jnA_2(c, f);
		initialBinding = f;
		f = (*f)._Ukind.S6.sons->data[((NI) 0)];
	}
	goto LA1_;
	LA3_: ;
	{
		initialBinding = NIM_NIL;
	}
	LA1_: ;
	pickBestCandidate_UDLdJj9bbqqsA0eEwYbtKsA(c, f, n, orig, initialBinding, filter, Result, (&alt), errors, ((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))&31U)))!=0), errorsEnabled);
	overloadsState = (*Result).state;
	{
		if (!!((overloadsState == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1)))) goto LA8_;
		{
			NIM_BOOL T12_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* hiddenArg;
			T12_ = (NIM_BOOL)0;
			T12_ = !(((*c).p == NIM_NIL));
			if (!(T12_)) goto LA13_;
			T12_ = !(((*(*c).p).selfSym == NIM_NIL));
			LA13_: ;
			if (!T12_) goto LA14_;
			hiddenArg = newSymNode_UWZXukHA5As9aCftRHbafBg((*(*c).p).selfSym);
			asgnRefNoCycle((void**) (&(*hiddenArg).typ), NIM_NIL);
			insert_sdPxAA6tJBXORWiLIJmHnQ((&(*n)._Ukind.S6.sons), hiddenArg, ((NI) 1));
			insert_sdPxAA6tJBXORWiLIJmHnQ((&(*orig)._Ukind.S6.sons), hiddenArg, ((NI) 1));
			pickBestCandidate_UDLdJj9bbqqsA0eEwYbtKsA(c, f, n, orig, initialBinding, filter, Result, (&alt), errors, ((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))&31U)))!=0), errorsEnabled);
			{
				if (!!(((*Result).state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1)))) goto LA18_;
				delete_CLZdKKlcUPYhcUpOnWP7ag((&(*n)._Ukind.S6.sons), ((NI) 1));
				delete_CLZdKKlcUPYhcUpOnWP7ag((&(*orig)._Ukind.S6.sons), ((NI) 1));
				(*n).flags &= ~(((NU32)1) << ((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 12)) % (sizeof(NU32)*8)));
			}
			goto LA16_;
			LA18_: ;
			{
				goto BeforeRet_;
			}
			LA16_: ;
		}
		LA14_: ;
		{
			tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA T33_;
			tyArray_T6RKPw8xfAeNaoei9aZGzXg T34_;
			tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA T35_;
			tyArray_T6RKPw8xfAeNaoei9aZGzXg T36_;
			if (!(((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 9))&31U)))!=0)) goto LA23_;
			{
				NIM_BOOL T27_;
				NI T29_;
				NimStringDesc* T32_;
				T27_ = (NIM_BOOL)0;
				T27_ = ((*f).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2));
				if (!(T27_)) goto LA28_;
				T29_ = (NI)0;
				T29_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
				T27_ = (((NI) 2) <= T29_);
				LA28_: ;
				if (!!(T27_)) goto LA30_;
				T32_ = (NimStringDesc*)0;
				T32_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_204);
				internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T32_);
			}
			LA30_: ;
			T33_ = dotdot__gZc19czncDHf5RCNZiquNrQnimblecmd(((NI) 0), ((NI) 1));
			nimZeroMem((void*)T34_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
			T34_[0] = NIM_NIL;
			T34_[1] = (*n)._Ukind.S6.sons->data[((NI) 1)];
			T34_[2] = f;
			X5BX5Deq__qp0QnTj4n9bRuO69cX64g09bw((&(*n)._Ukind.S6.sons), T33_, T34_, 3);
			T35_ = dotdot__gZc19czncDHf5RCNZiquNrQnimblecmd(((NI) 0), ((NI) 1));
			nimZeroMem((void*)T36_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
			T36_[0] = NIM_NIL;
			T36_[1] = (*orig)._Ukind.S6.sons->data[((NI) 1)];
			T36_[2] = f;
			X5BX5Deq__qp0QnTj4n9bRuO69cX64g09bw((&(*orig)._Ukind.S6.sons), T35_, T36_, 3);
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* op;
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T41_;
				if (!(((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 11))&31U)))!=0)) goto LA39_;
				T41_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T41_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_109));
				op = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T41_, (*n).info);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), op);
				asgnRefNoCycle((void**) (&(*orig)._Ukind.S6.sons->data[((NI) 0)]), op);
				pickBestCandidate_UDLdJj9bbqqsA0eEwYbtKsA(c, op, n, orig, initialBinding, filter, Result, (&alt), errors, ((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))&31U)))!=0), errorsEnabled);
			}
			LA39_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* op_2;
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T46_;
				if (!((5 &(1U<<((NU)((*Result).state)&7U)))!=0)) goto LA44_;
				T46_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T46_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_108));
				op_2 = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T46_, (*n).info);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), op_2);
				asgnRefNoCycle((void**) (&(*orig)._Ukind.S6.sons->data[((NI) 0)]), op_2);
				pickBestCandidate_UDLdJj9bbqqsA0eEwYbtKsA(c, op_2, n, orig, initialBinding, filter, Result, (&alt), errors, ((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))&31U)))!=0), errorsEnabled);
			}
			LA44_: ;
		}
		goto LA21_;
		LA23_: ;
		{
			NIM_BOOL T48_;
			NIM_BOOL T49_;
			NI T52_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* calleeName;
			tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA T55_;
			NimStringDesc* T56_;
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T57_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* callOp;
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T58_;
			tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA T59_;
			tyArray_T6RKPw8xfAeNaoei9aZGzXg T60_;
			tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA T61_;
			tyArray_T6RKPw8xfAeNaoei9aZGzXg T62_;
			T48_ = (NIM_BOOL)0;
			T49_ = (NIM_BOOL)0;
			T49_ = (((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 10))&31U)))!=0);
			if (!(T49_)) goto LA50_;
			T49_ = ((*f).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2));
			LA50_: ;
			T48_ = T49_;
			if (!(T48_)) goto LA51_;
			T52_ = (NI)0;
			T52_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			T48_ = (T52_ == ((NI) 3));
			LA51_: ;
			if (!T48_) goto LA53_;
			T55_ = dotdot__gZc19czncDHf5RCNZiquNrQnimblecmd(((NI) 0), (NI)(((*(*f)._Ukind.S5.ident).s ? (*(*f)._Ukind.S5.ident).s->Sup.len : 0) - ((NI) 2)));
			T56_ = (NimStringDesc*)0;
			T56_ = X5BX5D__SeS5h9bMpIkS1zha7iXXRaAnimblecmd((*(*f)._Ukind.S5.ident).s, T55_);
			T57_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T57_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, T56_);
			calleeName = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T57_, (*n).info);
			T58_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T58_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_110));
			callOp = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T58_, (*n).info);
			T59_ = dotdot__gZc19czncDHf5RCNZiquNrQnimblecmd(((NI) 0), ((NI) 1));
			nimZeroMem((void*)T60_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
			T60_[0] = callOp;
			T60_[1] = (*n)._Ukind.S6.sons->data[((NI) 1)];
			T60_[2] = calleeName;
			X5BX5Deq__qp0QnTj4n9bRuO69cX64g09bw((&(*n)._Ukind.S6.sons), T59_, T60_, 3);
			T61_ = dotdot__gZc19czncDHf5RCNZiquNrQnimblecmd(((NI) 0), ((NI) 1));
			nimZeroMem((void*)T62_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
			T62_[0] = callOp;
			T62_[1] = (*orig)._Ukind.S6.sons->data[((NI) 1)];
			T62_[2] = calleeName;
			X5BX5Deq__qp0QnTj4n9bRuO69cX64g09bw((&(*orig)._Ukind.S6.sons), T61_, T62_, 3);
			pickBestCandidate_UDLdJj9bbqqsA0eEwYbtKsA(c, callOp, n, orig, initialBinding, filter, Result, (&alt), errors, ((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))&31U)))!=0), errorsEnabled);
		}
		goto LA21_;
		LA53_: ;
		LA21_: ;
		{
			NIM_BOOL T65_;
			T65_ = (NIM_BOOL)0;
			T65_ = (overloadsState == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 0));
			if (!(T65_)) goto LA66_;
			T65_ = ((*Result).state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 0));
			LA66_: ;
			if (!T65_) goto LA67_;
			{
				NIM_BOOL T71_;
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T75_;
				NimStringDesc* T76_;
				T71_ = (NIM_BOOL)0;
				T71_ = (((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 9))&31U)))!=0);
				if (!(T71_)) goto LA72_;
				T71_ = !((((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 11))&31U)))!=0));
				LA72_: ;
				if (!T71_) goto LA73_;
				T75_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T75_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, f, n);
				T76_ = (NimStringDesc*)0;
				T76_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_206), (*T75_).s);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T76_);
			}
			goto LA69_;
			LA73_: ;
			{
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T78_;
				NimStringDesc* T79_;
				T78_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T78_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, f, n);
				T79_ = (NimStringDesc*)0;
				T79_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_207), (*T78_).s);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T79_);
			}
			LA69_: ;
			goto BeforeRet_;
		}
		goto LA63_;
		LA67_: ;
		{
			if (!!(((*Result).state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1)))) goto LA81_;
			{
				NimStringDesc* T87_;
				NimStringDesc* T88_;
				if (!(((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 12))&31U)))!=0)) goto LA85_;
				T87_ = (NimStringDesc*)0;
				T87_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 4);
				T88_ = (NimStringDesc*)0;
				T88_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_136), T87_);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T88_);
			}
			goto LA83_;
			LA85_: ;
			{
				{
					if (!!(((1536 & (*n).flags) == 0))) goto LA92_;
					delete_CLZdKKlcUPYhcUpOnWP7ag((&(*n)._Ukind.S6.sons), ((NI) 2));
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), f);
				}
				LA92_: ;
			}
			LA83_: ;
			goto BeforeRet_;
		}
		goto LA63_;
		LA81_: ;
		LA63_: ;
	}
	LA8_: ;
	{
		NIM_BOOL T96_;
		NIM_BOOL T97_;
		NI T99_;
		NIM_BOOL T101_;
		T96_ = (NIM_BOOL)0;
		T97_ = (NIM_BOOL)0;
		T97_ = (alt.state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1));
		if (!(T97_)) goto LA98_;
		T99_ = (NI)0;
		T99_ = cmpCandidates_y6m9bhhlwHAuzsfu0xg0hDQ(Result, (&alt));
		T97_ = (T99_ == ((NI) 0));
		LA98_: ;
		T96_ = T97_;
		if (!(T96_)) goto LA100_;
		T101_ = (NIM_BOOL)0;
		T101_ = sameMethodDispatcher_AbGRfvK0w0rm1Smw9caKnOQ((*Result).calleeSym, alt.calleeSym);
		T96_ = !(T101_);
		LA100_: ;
		if (!T96_) goto LA102_;
		{
			NimStringDesc* T108_;
			if (!!(((*Result).state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1)))) goto LA106_;
			T108_ = (NimStringDesc*)0;
			T108_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_208);
			internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T108_);
		}
		LA106_: ;
		{
			if (!((*(*(*c).graph).config).m.errorOutputs == 0)) goto LA111_;
			globalError_mMj7lrOf3zBP9bl69amiKu5g_2((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_209));
		}
		goto LA109_;
		LA111_: ;
		{
			NimStringDesc* args;
			tyArray_24KAM9afIUgUaqBaEBB6r9bg T125_;
			NimStringDesc* T126_;
			if (!((*(*(*c).graph).config).errorCounter == ((NI) 0))) goto LA114_;
			args = copyString(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_125));
			{
				NI i;
				NI colontmp_;
				NI T117_;
				NI res;
				i = (NI)0;
				colontmp_ = (NI)0;
				T117_ = (NI)0;
				T117_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
				colontmp_ = (NI)(T117_ - ((NI) 1));
				res = ((NI) 1);
				{
					while (1) {
						NimStringDesc* T124_;
						if (!(res <= colontmp_)) goto LA119;
						i = res;
						{
							if (!(((NI) 1) < i)) goto LA122_;
							args = resizeString(args, 2);
appendString(args, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_137));
						}
						LA122_: ;
						T124_ = (NimStringDesc*)0;
						T124_ = typeToString_QlvraUan7WbHowhAbvDvdA((*(*n)._Ukind.S6.sons->data[i]).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
						args = resizeString(args, (T124_ ? T124_->Sup.len : 0) + 0);
appendString(args, T124_);
						res += ((NI) 1);
					} LA119: ;
				}
			}
			args = resizeString(args, 1);
appendString(args, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_126));
			nimZeroMem((void*)T125_, sizeof(tyArray_24KAM9afIUgUaqBaEBB6r9bg));
			T125_[0] = getProcHeader_7eB0wVYzPcmlKQ3zrnnOsA((*(*c).graph).config, (*Result).calleeSym, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T125_[1] = getProcHeader_7eB0wVYzPcmlKQ3zrnnOsA((*(*c).graph).config, alt.calleeSym, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T125_[2] = copyString(args);
			T126_ = (NimStringDesc*)0;
			T126_ = nsuFormatOpenArray(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_210), T125_, 3);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T126_);
		}
		goto LA109_;
		LA114_: ;
		LA109_: ;
	}
	LA102_: ;
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, instGenericConvertersSons_aGJ9cjJ0NUF4TmTcXr43xlw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* x) {
	{
		if (!(*x).genericConverter) goto LA3_;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_2 = ((NI) 1);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA7;
					i = i_2;
					instGenericConvertersArg_6yHi72tjFidHu2E3fNZkJA(c, (*n)._Ukind.S6.sons->data[i], x);
					i_2 += ((NI) 1);
				} LA7: ;
			}
		}
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, updateDefaultParams_2k3LJ9aeIb9cbqxq3ECHhyow)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* calleeParams;
	calleeParams = (*(*(*(*call)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).typ).n;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(call);
		i_2 = ((NI) 1);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* def;
					if (!(((*(*call)._Ukind.S6.sons->data[i]).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 17))&31U)))!=0)) goto LA6_;
					def = (*(*(*calleeParams)._Ukind.S6.sons->data[i])._Ukind.S4.sym).ast;
					{
						if (!(((*def).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 18))&31U)))!=0)) goto LA10_;
						(*call).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 18))%(sizeof(NU32)*8));
					}
					LA10_: ;
					asgnRefNoCycle((void**) (&(*call)._Ukind.S6.sons->data[i]), def);
				}
				LA6_: ;
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semResolvedCall_iRpWWdN2e9bG9aWWSScrOemw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* finalCallee;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gp;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	finalCallee = (*x).calleeSym;
	markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, finalCallee, &(*(*c).graph).usageSym);
	{
		if (!!(((*x).fauxMatch == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0)))) goto LA3_;
		result = (*x).call;
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(finalCallee, (*(*result)._Ukind.S6.sons->data[((NI) 0)]).info));
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = containsGenericType_YPjOkGV9axAnGR3UfLeWZ1g((*result).typ);
			if (T7_) goto LA8_;
			T7_ = ((*x).fauxMatch == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61));
			LA8_: ;
			if (!T7_) goto LA9_;
			asgnRefNoCycle((void**) (&(*result).typ), newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ((*x).fauxMatch, c));
		}
		LA9_: ;
		goto BeforeRet_;
	}
	LA3_: ;
	gp = (*(*finalCallee).ast)._Ukind.S6.sons->data[((NI) 2)];
	{
		if (!!(((*gp).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA13_;
		{
			if (!!(((393216 &(1U<<((NU)((*(*x).calleeSym).kind)&31U)))!=0))) goto LA17_;
			{
				if (!((*(*x).calleeSym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 4) || (*(*x).calleeSym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 5))) goto LA21_;
				finalCallee = (*x).calleeSym;
			}
			goto LA19_;
			LA21_: ;
			{
				finalCallee = generateInstance_g9b7H3AgWQ9ciaW2dF0vQm9ag(c, (*x).calleeSym, (*x).bindings, (*n).info);
			}
			LA19_: ;
		}
		goto LA15_;
		LA17_: ;
		{
			{
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
				tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q colontmp_;
				s = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
				nimZeroMem((void*)(&colontmp_), sizeof(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q));
				colontmp_.counter = (*x).bindings.counter;
				colontmp_.data = (*x).bindings.data;
				{
					NimStringDesc* T30_;
					if (!!(((*gp).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 75)))) goto LA28_;
					T30_ = (NimStringDesc*)0;
					T30_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_34);
					internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T30_);
				}
				LA28_: ;
				{
					NI i;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					i = (NI)0;
					a = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					{
						NI i_2;
						NI colontmp__2;
						NI i_3;
						i_2 = (NI)0;
						colontmp__2 = (NI)0;
						colontmp__2 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(gp);
						i_3 = ((NI) 0);
						{
							while (1) {
								if (!(i_3 < colontmp__2)) goto LA34;
								i_2 = i_3;
								i = i_2;
								a = (*gp)._Ukind.S6.sons->data[i_2];
								{
									tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* q;
									tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw symKind;
									tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_2;
									tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T50_;
									tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
									tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T51_;
									RootObj* T52_;
									{
										NimStringDesc* T40_;
										if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA38_;
										T40_ = (NimStringDesc*)0;
										T40_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_35);
										internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T40_);
									}
									LA38_: ;
									q = (*a)._Ukind.S4.sym;
									{
										if (!!(((*(*q).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8) || (*(*q).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12) || (*(*q).typ).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 51) && (*(*q).typ).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54) || (*(*q).typ).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 56) && (*(*q).typ).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60)))) goto LA43_;
										goto LA35;
									}
									LA43_: ;
									{
										if (!((*(*q).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA47_;
										symKind = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 10);
									}
									goto LA45_;
									LA47_: ;
									{
										symKind = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7);
									}
									LA45_: ;
									T50_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
									T50_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
									s_2 = newSym_ZQfOwiQo63qLga19cuF5r9cQ(symKind, (*q).name, T50_, (*q).info, 0);
									(*s_2).flags = ((*s_2).flags | 5);
									T51_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
									T51_ = &(*q).typ->Sup;
									T52_ = (RootObj*)0;
									T52_ = idTableGet_6XGoeu1puMq6qoi2OW419bA(colontmp_, T51_);
									t = ((tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T52_));
									{
										if (!(t == NIM_NIL)) goto LA55_;
										{
											if (!(((*(*q).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 11))&63U)))!=0)) goto LA59_;
											t = (*q).typ;
										}
										goto LA57_;
										LA59_: ;
										{
											NimStringDesc* T62_;
											T62_ = (NimStringDesc*)0;
											T62_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_36), (*(*s_2).name).s);
											localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, T62_);
											t = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
										}
										LA57_: ;
									}
									goto LA53_;
									LA55_: ;
									{
										NimStringDesc* T66_;
										if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12))) goto LA64_;
										T66_ = (NimStringDesc*)0;
										T66_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_36), (*(*q).name).s);
										localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, T66_);
										t = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
									}
									goto LA53_;
									LA64_: ;
									{
										if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9))) goto LA68_;
										t = generateTypeInstance_hh5ZlzAUaBgsyjiF5uPRIQ(c, colontmp_, (*a).info, t);
									}
									goto LA53_;
									LA68_: ;
									LA53_: ;
									asgnRefNoCycle((void**) (&(*s_2).typ), t);
									{
										if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA72_;
										asgnRefNoCycle((void**) (&(*s_2).ast), (*t).n);
									}
									LA72_: ;
									s = s_2;
									switch ((*s).kind) {
									case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 10):
									{
										add_gCCf68XrWL79bKes6htzFjQ((*x).call, (*s).ast);
									}
									break;
									case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7):
									{
										tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T76_;
										T76_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
										T76_ = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
										add_gCCf68XrWL79bKes6htzFjQ((*x).call, T76_);
									}
									break;
									default:
									{
										{
											NimStringDesc* T82_;
											if (!NIM_TRUE) goto LA80_;
											T82_ = (NimStringDesc*)0;
											T82_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_212);
											internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T82_);
										}
										LA80_: ;
									}
									break;
									}
								} LA35: ;
								i_3 += ((NI) 1);
							} LA34: ;
						}
					}
				}
			}
		}
		LA15_: ;
	}
	LA13_: ;
	result = (*x).call;
	instGenericConvertersSons_aGJ9cjJ0NUF4TmTcXr43xlw(c, result, x);
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(finalCallee, (*(*result)._Ukind.S6.sons->data[((NI) 0)]).info));
	asgnRefNoCycle((void**) (&(*result).typ), (*(*finalCallee).typ).sons->data[((NI) 0)]);
	updateDefaultParams_2k3LJ9aeIb9cbqxq3ECHhyow(result);
	}BeforeRet_: ;
	return result;
}

static N_INLINE(NIM_BOOL, canDeref_kR3j4BVoX6LmX0p7IycneQ_2sem)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NI T2_;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	NIM_BOOL T4_;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T6_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T2_ = (NI)0;
	T2_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
	T1_ = (((NI) 2) <= T2_);
	if (!(T1_)) goto LA3_;
	t = (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ;
	T4_ = (NIM_BOOL)0;
	T4_ = !((t == NIM_NIL));
	if (!(T4_)) goto LA5_;
	T6_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T6_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(t, IL64(70368744179728));
	T4_ = ((*T6_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21) || (*T6_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22));
	LA5_: ;
	T1_ = T4_;
	LA3_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tryDeref_nRsa9acFWDI6GmzVZLXX3CQ_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65), (*n).info);
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*n).typ, IL64(36099165763184912));
	asgnRefNoCycle((void**) (&(*result).typ), (*T1_).sons->data[((NI) 0)]);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(result, n);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semOverloadedCall_z9bsZfns7wNaCTMF0VgboGQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tySet_tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw filter, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tySequence_0dpGN6F4ocevqUQGsaf41w* errors;
	tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA r;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	errors = NIM_NIL;
	nimZeroMem((void*)(&r), sizeof(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA));
	resolveOverloads_B3gtjSNpYjtA6RUxTTCoJA(c, n, nOrig, filter, flags, (&errors), ((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))&31U)))!=0), (&r));
	{
		if (!(r.state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1))) goto LA3_;
		{
			NI T7_;
			tyTuple_ZtAk5YtH0VW1iPowvxePrg T10_;
			tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw _;
			NimStringDesc* candidates;
			NimStringDesc* T11_;
			NimStringDesc* T12_;
			T7_ = (errors ? errors->Sup.len : 0);
			if (!(((NI) 0) < T7_)) goto LA8_;
			nimZeroMem((void*)(&T10_), sizeof(tyTuple_ZtAk5YtH0VW1iPowvxePrg));
			presentFailedCandidates_lit4HV39axNlXtmRW3QNvtA(c, n, errors, (&T10_));
			_ = (tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw)0;
			_ = T10_.Field0;
			candidates = (NimStringDesc*)0;
			candidates = T10_.Field1;
			T11_ = (NimStringDesc*)0;
			T12_ = (NimStringDesc*)0;
			T12_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 0);
			T11_ = rawNewString((T12_ ? T12_->Sup.len : 0) + (candidates ? candidates->Sup.len : 0) + 29);
appendString(T11_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_211));
appendString(T11_, T12_);
appendString(T11_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_138));
appendString(T11_, candidates);
			message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 68), T11_);
		}
		LA8_: ;
		result = semResolvedCall_iRpWWdN2e9bG9aWWSScrOemw(c, (&r), n, flags);
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T14_;
		tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA r_2;
		T14_ = (NIM_BOOL)0;
		T14_ = (((*c).features &(1U<<((NU)(((tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ) 0))&15U)))!=0);
		if (!(T14_)) goto LA15_;
		T14_ = canDeref_kR3j4BVoX6LmX0p7IycneQ_2sem(n);
		LA15_: ;
		if (!T14_) goto LA16_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), tryDeref_nRsa9acFWDI6GmzVZLXX3CQ_2((*n)._Ukind.S6.sons->data[((NI) 1)]));
		nimZeroMem((void*)(&r_2), sizeof(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA));
		resolveOverloads_B3gtjSNpYjtA6RUxTTCoJA(c, n, nOrig, filter, flags, (&errors), ((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))&31U)))!=0), (&r_2));
		{
			if (!(r_2.state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1))) goto LA20_;
			result = semResolvedCall_iRpWWdN2e9bG9aWWSScrOemw(c, (&r_2), n, flags);
		}
		goto LA18_;
		LA20_: ;
		{
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), (*(*n)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S6.sons->data[((NI) 0)]);
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T27_;
				if (!!(((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))&31U)))!=0))) goto LA25_;
				T27_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T27_ = semOverloadedCall_z9bsZfns7wNaCTMF0VgboGQ(c, n, nOrig, filter, (flags | 512));
				T27_;
			}
			goto LA23_;
			LA25_: ;
			{
				notFoundError_OeLjQPoXFC2vFeDs66H0uQ(c, n, errors);
			}
			LA23_: ;
		}
		LA18_: ;
	}
	goto LA1_;
	LA16_: ;
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T34_;
			if (!!(((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))&31U)))!=0))) goto LA32_;
			T34_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T34_ = semOverloadedCall_z9bsZfns7wNaCTMF0VgboGQ(c, n, nOrig, filter, (flags | 512));
			T34_;
		}
		goto LA30_;
		LA32_: ;
		{
			notFoundError_OeLjQPoXFC2vFeDs66H0uQ(c, n, errors);
		}
		LA30_: ;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semOverloadedCallAnalyseEffects_tlHRnlepD3lWks2ZTgSoRg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!!(((flags & 6) == 0))) goto LA3_;
		result = semOverloadedCall_z9bsZfns7wNaCTMF0VgboGQ(c, n, nOrig, 520192, flags);
	}
	goto LA1_;
	LA3_: ;
	{
		result = semOverloadedCall_z9bsZfns7wNaCTMF0VgboGQ(c, n, nOrig, 487424, flags);
	}
	LA1_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* callee;
		if (!!((result == NIM_NIL))) goto LA8_;
		{
			if (!!(((*(*result)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA12_;
			internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_213));
			goto BeforeRet_;
		}
		LA12_: ;
		callee = (*(*result)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
		switch ((*callee).kind) {
		case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17):
		case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
		{
		}
		break;
		default:
		{
			{
				NIM_BOOL T18_;
				NimStringDesc* T22_;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T23_;
				T18_ = (NIM_BOOL)0;
				T18_ = ((*callee).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
				if (!(T18_)) goto LA19_;
				T18_ = ((*callee).Sup.id == (*(*(*c).p).owner).Sup.id);
				LA19_: ;
				if (!T18_) goto LA20_;
				T22_ = (NimStringDesc*)0;
				T22_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_5), (*(*callee).name).s);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T22_);
				T23_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
				T23_ = errorSym_2lqvMm9cf9bZrSA2I9a9cHb8ag(c, n);
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(T23_));
			}
			LA20_: ;
		}
		break;
		}
	}
	LA8_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, propertyWriteAccess_17hF5LAthFRvex8pEvpNKg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* id;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* setterId;
	NimStringDesc* T1_;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T2_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* aOrig;
	tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* T3_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig;
	tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* T4_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	id = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*a)._Ukind.S6.sons->data[((NI) 1)], a);
	T1_ = (NimStringDesc*)0;
	T1_ = rawNewString(((*id).s ? (*id).s->Sup.len : 0) + 1);
appendString(T1_, (*id).s);
appendChar(T1_, 61);
	T2_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T2_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, T1_);
	setterId = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T2_, (*n).info);
	aOrig = (*nOrig)._Ukind.S6.sons->data[((NI) 0)];
	T3_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
	T3_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) newSeq((&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_), 3);
	asgnRefNoCycle((void**) (&T3_->data[0]), setterId);
	asgnRefNoCycle((void**) (&T3_->data[1]), (*a)._Ukind.S6.sons->data[((NI) 0)]);
	asgnRefNoCycle((void**) (&T3_->data[2]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 1)], 0));
	result = newNode_sa9bwmR1oPRYm27rlMD66CQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, T3_, NIM_NIL);
	(*result).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 10))%(sizeof(NU32)*8));
	T4_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
	T4_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) newSeq((&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_), 3);
	asgnRefNoCycle((void**) (&T4_->data[0]), setterId);
	asgnRefNoCycle((void**) (&T4_->data[1]), (*aOrig)._Ukind.S6.sons->data[((NI) 0)]);
	asgnRefNoCycle((void**) (&T4_->data[2]), (*nOrig)._Ukind.S6.sons->data[((NI) 1)]);
	orig = newNode_sa9bwmR1oPRYm27rlMD66CQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, T4_, NIM_NIL);
	result = semOverloadedCallAnalyseEffects_tlHRnlepD3lWks2ZTgSoRg(c, result, orig, 0);
	{
		if (!!((result == NIM_NIL))) goto LA7_;
		result = afterCallActions_GgyyrWN39a1O9c0p79aeR9aJkw(c, result, nOrig, 0);
	}
	LA7_: ;
	return result;
}

static N_INLINE(NIM_BOOL, isSymChoice_kR3j4BVoX6LmX0p7IycneQ_3sem)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 57));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, dotTransformation_U3qPBy54f1PkCP8vmFMCRA_25)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
		T3_ = (NIM_BOOL)0;
		T3_ = isSymChoice_kR3j4BVoX6LmX0p7IycneQ_3sem((*n)._Ukind.S6.sons->data[((NI) 1)]);
		if (!T3_) goto LA4_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 25), (*n).info);
		addSon_gCCf68XrWL79bKes6htzFjQ_2(result, (*n)._Ukind.S6.sons->data[((NI) 1)]);
		T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*n)._Ukind.S6.sons->data[((NI) 0)]);
		addSon_gCCf68XrWL79bKes6htzFjQ_2(result, T6_);
	}
	goto LA1_;
	LA4_: ;
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* i;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T8_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T9_;
		i = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], n);
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 25), (*n).info);
		(*result).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 9))%(sizeof(NU32)*8));
		T8_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T8_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(i, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info);
		addSon_gCCf68XrWL79bKes6htzFjQ_2(result, T8_);
		T9_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T9_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*n)._Ukind.S6.sons->data[((NI) 0)]);
		addSon_gCCf68XrWL79bKes6htzFjQ_2(result, T9_);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, buildOverloadedSubscripts_vzb67e0e3FoItZbupP4kXw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(ident, (*n).info);
	add_gCCf68XrWL79bKes6htzFjQ(result, T1_);
	{
		NI i;
		NI colontmp_;
		NI T3_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T3_ = (NI)0;
		T3_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		colontmp_ = (NI)(T3_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA5;
				i = res;
				add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[i]);
				res += ((NI) 1);
			} LA5: ;
		}
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, takeImplicitAddr_9bHhZwt4fwhJLlgtCh1ak2w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL isLent) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* root;
	tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag valid;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T44_;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	root = exprRoot_xyjZDNYKDR5wgJws9bj171A(n);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !((root == NIM_NIL));
		if (!(T3_)) goto LA4_;
		T3_ = ((*root).owner == (*(*c).p).owner);
		LA4_: ;
		if (!T3_) goto LA5_;
		{
			NIM_BOOL T9_;
			tyArray_24KAM9afIUgUaqBaEBB6r9bg T13_;
			NimStringDesc* T14_;
			T9_ = (NIM_BOOL)0;
			T9_ = ((800 &(1U<<((NU)((*root).kind)&31U)))!=0);
			if (!(T9_)) goto LA10_;
			T9_ = !((((*root).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 3))&63U)))!=0));
			LA10_: ;
			if (!T9_) goto LA11_;
			nimZeroMem((void*)T13_, sizeof(tyArray_24KAM9afIUgUaqBaEBB6r9bg));
			T13_[0] = copyString((*(*root).name).s);
			T13_[1] = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 4);
			T13_[2] = copyString(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_218));
			T14_ = (NimStringDesc*)0;
			T14_ = nsuFormatOpenArray(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_217), T13_, 3);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T14_);
		}
		goto LA7_;
		LA11_: ;
		{
			NIM_BOOL T16_;
			tyArray_24KAM9afIUgUaqBaEBB6r9bg T20_;
			NimStringDesc* T21_;
			T16_ = (NIM_BOOL)0;
			T16_ = ((*root).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
			if (!(T16_)) goto LA17_;
			T16_ = !(((*root).position == ((NI) 0)));
			LA17_: ;
			if (!T16_) goto LA18_;
			nimZeroMem((void*)T20_, sizeof(tyArray_24KAM9afIUgUaqBaEBB6r9bg));
			T20_[0] = copyString((*(*root).name).s);
			T20_[1] = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 4);
			T20_[2] = copyString(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_218));
			T21_ = (NimStringDesc*)0;
			T21_ = nsuFormatOpenArray(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_219), T20_, 3);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T21_);
		}
		goto LA7_;
		LA18_: ;
		LA7_: ;
	}
	LA5_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 64):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 63):
	{
		result = n;
		goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 47):
	{
		result = (*n)._Ukind.S6.sons->data[((NI) 0)];
		goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
	{
		{
			NI T27_;
			T27_ = (NI)0;
			T27_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			if (!(T27_ == ((NI) 1))) goto LA28_;
			result = (*n)._Ukind.S6.sons->data[((NI) 0)];
			goto BeforeRet_;
		}
		LA28_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	valid = isAssignable_f9aTpaZXhdy71jBjQl9b59bxA(c, n, NIM_FALSE);
	{
		if (!!((valid == ((tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag) 1)))) goto LA33_;
		{
			NimStringDesc* T39_;
			NimStringDesc* T40_;
			if (!(valid == ((tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag) 2))) goto LA37_;
			T39_ = (NimStringDesc*)0;
			T39_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 4);
			T40_ = (NimStringDesc*)0;
			T40_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_124), T39_);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T40_);
		}
		goto LA35_;
		LA37_: ;
		{
			if (!!(isLent)) goto LA42_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_128));
		}
		goto LA35_;
		LA42_: ;
		LA35_: ;
	}
	LA33_: ;
	T44_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T44_ = makePtrType_l9aklUqVeTt1VTZeAvy7NSg(c, (*n).typ);
	result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 64), (*n).info, T44_);
	add_gCCf68XrWL79bKes6htzFjQ(result, n);
	}BeforeRet_: ;
	return result;
}

static N_INLINE(void, asgnToResultVar_w3kobMcnwPIuhVr3BM8Uzgsem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* le, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ri) {
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
		if (!((*le).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65))) goto LA3_;
		x = (*le)._Ukind.S6.sons->data[((NI) 0)];
		{
			NIM_BOOL T7_;
			NIM_BOOL T8_;
			T7_ = (NIM_BOOL)0;
			T8_ = (NIM_BOOL)0;
			T8_ = ((*(*x).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*(*x).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47));
			if (!(T8_)) goto LA9_;
			T8_ = ((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
			LA9_: ;
			T7_ = T8_;
			if (!(T7_)) goto LA10_;
			T7_ = ((*(*x)._Ukind.S4.sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 11));
			LA10_: ;
			if (!T7_) goto LA11_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), x);
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), takeImplicitAddr_9bHhZwt4fwhJLlgtCh1ak2w(c, ri, ((*(*x).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47))));
			(*(*x).typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 19))%(sizeof(NU64)*8));
		}
		LA11_: ;
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAsgn_mYOjn9apkbeBan9ajgaE2iOg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_SemAsgnMode_e9aTobe3zFbbfTs9bHC7XMIQ mode) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* le;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
	a = (*n)._Ukind.S6.sons->data[((NI) 0)];
	switch ((*a).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig;
		nOrig = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
		a = builtinFieldAccess_k2Lin9a76VyrWz9b8OoRC9apg_4(c, a, 1);
		{
			if (!(a == NIM_NIL)) goto LA4_;
			a = propertyWriteAccess_17hF5LAthFRvex8pEvpNKg(c, n, nOrig, (*n)._Ukind.S6.sons->data[((NI) 0)]);
			{
				if (!!((a == NIM_NIL))) goto LA8_;
				result = a;
				goto BeforeRet_;
			}
			LA8_: ;
			a = dotTransformation_U3qPBy54f1PkCP8vmFMCRA_25(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
			{
				if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 25))) goto LA12_;
				(*a).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27);
				a = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, a, 1);
			}
			LA12_: ;
		}
		LA4_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
	{
		a = semSubscript_k2Lin9a76VyrWz9b8OoRC9apg_8(c, a, 1);
		{
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T19_;
			if (!(a == NIM_NIL)) goto LA17_;
			T19_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T19_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_63));
			result = buildOverloadedSubscripts_vzb67e0e3FoItZbupP4kXw((*n)._Ukind.S6.sons->data[((NI) 0)], T19_);
			add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[((NI) 1)]);
			{
				if (!(mode == ((tyEnum_SemAsgnMode_e9aTobe3zFbbfTs9bHC7XMIQ) 1))) goto LA22_;
				bracketNotFoundError_wkwHEj6zZnYo2DMZys6jnA_6(c, result);
				result = n;
				goto BeforeRet_;
			}
			goto LA20_;
			LA22_: ;
			{
				result = semExprNoType_U3qPBy54f1PkCP8vmFMCRA_2(c, result);
				goto BeforeRet_;
			}
			LA20_: ;
		}
		LA17_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 40):
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T26_;
		T26_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T26_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_62));
		result = buildOverloadedSubscripts_vzb67e0e3FoItZbupP4kXw((*n)._Ukind.S6.sons->data[((NI) 0)], T26_);
		add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[((NI) 1)]);
		result = semExprNoType_U3qPBy54f1PkCP8vmFMCRA_2(c, result);
		goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160):
	{
		{
			NI T30_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T33_;
			T30_ = (NI)0;
			T30_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
			if (!(((NI) 2) <= T30_)) goto LA31_;
			T33_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T33_ = lowerTupleUnpackingForAsgn_T5SG2LMxpDuzIR4uljA0pw_2((*c).graph, n, (*(*c).p).owner);
			result = semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3(c, T33_, 0);
			goto BeforeRet_;
		}
		goto LA28_;
		LA31_: ;
		{
			a = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, a, 1);
		}
		LA28_: ;
	}
	break;
	default:
	{
		a = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, a, 1);
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), a);
	le = (*a).typ;
	{
		NIM_BOOL T38_;
		NIM_BOOL T39_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T40_;
		tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag T42_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T44_;
		NimStringDesc* T47_;
		NimStringDesc* T48_;
		T38_ = (NIM_BOOL)0;
		T39_ = (NIM_BOOL)0;
		T40_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T40_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(le, IL64(70368744179728));
		T39_ = !(((*T40_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23)));
		if (!(T39_)) goto LA41_;
		T42_ = (tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag)0;
		T42_ = isAssignable_f9aTpaZXhdy71jBjQl9b59bxA(c, a, NIM_FALSE);
		T39_ = (T42_ == ((tyEnum_TAssignableResult_JFgO3TudAWntzWI8Fmx4Ag) 0));
		LA41_: ;
		T38_ = T39_;
		if (T38_) goto LA43_;
		T44_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T44_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(le, IL64(36239903259928848));
		T38_ = ((*T44_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27) || (*T44_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 48));
		LA43_: ;
		if (!T38_) goto LA45_;
		T47_ = (NimStringDesc*)0;
		T47_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(a, 4);
		T48_ = (NimStringDesc*)0;
		T48_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_214), T47_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, T48_);
	}
	goto LA36_;
	LA45_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* lhs;
		NIM_BOOL lhsIsResult;
		NIM_BOOL T50_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* rhs;
		tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ T52_;
		lhs = (*n)._Ukind.S6.sons->data[((NI) 0)];
		T50_ = (NIM_BOOL)0;
		T50_ = ((*lhs).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		if (!(T50_)) goto LA51_;
		T50_ = ((*(*lhs)._Ukind.S4.sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 11));
		LA51_: ;
		lhsIsResult = T50_;
		{
			if (!lhsIsResult) goto LA55_;
			T52_ = 1024;
		}
		goto LA53_;
		LA55_: ;
		{
			T52_ = 0;
		}
		LA53_: ;
		rhs = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 1)], T52_);
		{
			if (!lhsIsResult) goto LA60_;
			asgnRefNoCycle((void**) (&(*n).typ), (*c).enforceVoidContext);
			{
				NIM_BOOL T64_;
				NIM_BOOL T66_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* rhsTyp;
				T64_ = (NIM_BOOL)0;
				T64_ = !(((*(*(*c).p).owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17)));
				if (!(T64_)) goto LA65_;
				T66_ = (NIM_BOOL)0;
				T66_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw((*(*lhs)._Ukind.S4.sym).typ);
				if (!(T66_)) goto LA67_;
				T66_ = !(((*(*(*lhs)._Ukind.S4.sym).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8)));
				LA67_: ;
				T64_ = T66_;
				LA65_: ;
				if (!T64_) goto LA68_;
				rhsTyp = (*rhs).typ;
				{
					NIM_BOOL T72_;
					T72_ = (NIM_BOOL)0;
					T72_ = ((*rhsTyp).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52) || (*rhsTyp).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53));
					if (!(T72_)) goto LA73_;
					T72_ = (((*rhsTyp).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0);
					LA73_: ;
					if (!T72_) goto LA74_;
					rhsTyp = lastSon_ab52xel9cFebv9am0xV04xXA(rhsTyp);
				}
				LA74_: ;
				{
					tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ T78_;
					T78_ = (tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ)0;
					T78_ = cmpTypes_B4Ot9chnluDWHfLApyBRgYQ(c, (*lhs).typ, rhsTyp);
					if (!((1280 &(1U<<((NU)(T78_)&15U)))!=0)) goto LA79_;
					{
						NimStringDesc* T85_;
						if (!!(!(((*(*c).p).resultSym == NIM_NIL)))) goto LA83_;
						T85_ = (NimStringDesc*)0;
						T85_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_215);
						internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T85_);
					}
					LA83_: ;
					typeAllowedCheck_OJXIxi4fH0HgKVBUkO49a7w((*(*c).graph).config, (*n).info, rhsTyp, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 11), 0);
					asgnRefNoCycle((void**) (&(*lhs).typ), rhsTyp);
					asgnRefNoCycle((void**) (&(*(*(*c).p).resultSym).typ), rhsTyp);
					asgnRefNoCycle((void**) (&(*(*(*(*c).p).owner).typ).sons->data[((NI) 0)]), rhsTyp);
				}
				goto LA76_;
				LA79_: ;
				{
					typeMismatch_1xxyFIws27lai2cG4n31Ow((*(*c).graph).config, (*n).info, (*lhs).typ, rhsTyp);
				}
				LA76_: ;
			}
			LA68_: ;
		}
		LA60_: ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, le, rhs, (*n).info));
		liftTypeBoundOps_loja41ceALuHLYIaYdWs2A(c, (*lhs).typ, (*lhs).info);
		fixAbstractType_wkwHEj6zZnYo2DMZys6jnA_4(c, n);
		asgnToResultVar_w3kobMcnwPIuhVr3BM8Uzgsem(c, n, (*n)._Ukind.S6.sons->data[((NI) 0)], (*n)._Ukind.S6.sons->data[((NI) 1)]);
	}
	LA36_: ;
	result = n;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semProcBody_U3qPBy54f1PkCP8vmFMCRA_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, n, 0);
	{
		NIM_BOOL T4_;
		NIM_BOOL T6_;
		T4_ = (NIM_BOOL)0;
		T4_ = !(((*(*c).p).resultSym == NIM_NIL));
		if (!(T4_)) goto LA5_;
		T6_ = (NIM_BOOL)0;
		T6_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*result).typ);
		T4_ = !(T6_);
		LA5_: ;
		if (!T4_) goto LA7_;
		{
			if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23))) goto LA11_;
			asgnRefNoCycle((void**) (&(*result).typ), NIM_NIL);
		}
		goto LA9_;
		LA11_: ;
		{
			NIM_BOOL T14_;
			T14_ = (NIM_BOOL)0;
			T14_ = ((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126));
			if (!(T14_)) goto LA15_;
			T14_ = ((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5));
			LA15_: ;
			if (!T14_) goto LA16_;
			fixNilType_wkwHEj6zZnYo2DMZys6jnA(c, result);
		}
		goto LA9_;
		LA16_: ;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			a = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), (*n).info, ((NI) 2));
			asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg((*(*c).p).resultSym));
			asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[((NI) 1)]), result);
			result = semAsgn_mYOjn9apkbeBan9ajgaE2iOg(c, a, ((tyEnum_SemAsgnMode_e9aTobe3zFbbfTs9bHC7XMIQ) 0));
		}
		LA9_: ;
	}
	goto LA2_;
	LA7_: ;
	{
		discardCheck_1gYGSG6NjOPkINqwm7joJg(c, result, 0);
	}
	LA2_: ;
	{
		NIM_BOOL T22_;
		NIM_BOOL T23_;
		T22_ = (NIM_BOOL)0;
		T23_ = (NIM_BOOL)0;
		T23_ = !(((393216 &(1U<<((NU)((*(*(*c).p).owner).kind)&31U)))!=0));
		if (!(T23_)) goto LA24_;
		T23_ = !(((*(*c).p).resultSym == NIM_NIL));
		LA24_: ;
		T22_ = T23_;
		if (!(T22_)) goto LA25_;
		T22_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw((*(*(*c).p).resultSym).typ);
		LA25_: ;
		if (!T22_) goto LA26_;
		{
			NIM_BOOL T30_;
			T30_ = (NIM_BOOL)0;
			T30_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*result).typ);
			if (!T30_) goto LA31_;
			asgnRefNoCycle((void**) (&(*(*(*c).p).resultSym).typ), errorType_5olHzpuoNS9asyp0iz7j62Q(c));
			asgnRefNoCycle((void**) (&(*(*(*(*c).p).owner).typ).sons->data[((NI) 0)]), NIM_NIL);
		}
		goto LA28_;
		LA31_: ;
		{
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*(*c).p).resultSym).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_220));
		}
		LA28_: ;
	}
	LA26_: ;
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, instantiateBody_6RB9cSw8gDnp85iQpBn9a1Bg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* orig) {
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* procParams;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
		tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q symMap;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 6)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA3_;
		procParams = (*(*result).typ).n;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(procParams);
			i_2 = ((NI) 1);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA7;
					i = i_2;
					addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, (*(*procParams)._Ukind.S6.sons->data[i])._Ukind.S4.sym);
					i_2 += ((NI) 1);
				} LA7: ;
			}
		}
		maybeAddResult_llOVo9c3s0bb48y1MlbyvAw(c, result, (*result).ast);
		(*c).inGenericInst += ((NI) 1);
		b = (*n)._Ukind.S6.sons->data[((NI) 6)];
		nimZeroMem((void*)(&symMap), sizeof(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q));
		initIdTable_9cUS2oaKn1IFXKjLdglPZHQ((&symMap));
		{
			if (!!((params == NIM_NIL))) goto LA10_;
			{
				NI i_3;
				NI colontmp__2;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(params);
				i_4 = ((NI) 1);
				{
					while (1) {
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param;
						if (!(i_4 < colontmp__2)) goto LA14;
						i_3 = i_4;
						param = (*(*params)._Ukind.S6.sons->data[i_3])._Ukind.S4.sym;
						{
							tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T19_;
							RootObj* T20_;
							if (!(((*param).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0)) goto LA17_;
							T19_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
							T19_ = &(*(*params)._Ukind.S6.sons->data[i_3])._Ukind.S4.sym->Sup;
							T20_ = (RootObj*)0;
							T20_ = &(*(*(*(*result).typ).n)._Ukind.S6.sons->data[(NI)((*param).position + ((NI) 1))])._Ukind.S4.sym->Sup.Sup;
							idTablePut_Xhv7unnxpOqdw7OJsXRnRg((&symMap), T19_, T20_);
						}
						LA17_: ;
						i_4 += ((NI) 1);
					} LA14: ;
				}
			}
		}
		LA10_: ;
		freshGenSyms_HQLWTiTxA5Nl9ciT1Sx7Dfg(b, result, orig, (&symMap));
		b = semProcBody_U3qPBy54f1PkCP8vmFMCRA_4(c, b);
		b = hloBody_U3qPBy54f1PkCP8vmFMCRA_9(c, b);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), transformBody_80mJDJ8hRZ7Zm2rfDijiOQ((*c).graph, (*c).module, b, result));
		(*result).flags &= ~(((NU64)1) << ((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 4)) % (sizeof(NU64)*8)));
		(*c).inGenericInst -= ((NI) 1);
	}
	LA3_: ;
}

static N_INLINE(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, pop_iSW3NpdhhLmgN2JVyXuzcQtransf)(tySequence_DfgJFJEYoj4YBAHLZPl5lQ** s) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	NI L;
	NI T1_;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = ((*s) ? (*s)->Sup.len : 0);
	L = (NI)(T1_ - ((NI) 1));
	result = (*s)->data[L];
	unsureAsgnRef((void**) (&(*s)), (tySequence_DfgJFJEYoj4YBAHLZPl5lQ*) setLengthSeqV2(&((*s))->Sup, (&NTI_DfgJFJEYoj4YBAHLZPl5lQ_), ((NI) (L))));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, finishMethod_79a2N3yeoK32VpcXiRGgdSg_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = hasObjParam_cO2rS0JIm8g9cbNlNyVnwhg_2(s);
		if (!T3_) goto LA4_;
		methodDef_NKjYu87vB0uQmGRMfpDEBQ((*c).graph, s, NIM_FALSE);
	}
	LA4_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, generateInstance_g9b7H3AgWQ9ciaW2dF0vQm9ag)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T10_;
	NI T11_;
	tyObject_TMatchedConcept_9blNHn9cqK8EfxnwsfjDnKvg* oldMatchedConcept;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* oldScope;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T15_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gp;
	tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA* entry;
	NI i;
	NI T21_;
	NI T22_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* oldPrc;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T103_;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		NimStringDesc* T5_;
		if (!!(!(((393216 &(1U<<((NU)((*fn).kind)&31U)))!=0)))) goto LA3_;
		T5_ = (NimStringDesc*)0;
		T5_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_30);
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T5_);
	}
	LA3_: ;
	{
		if (!(((NI) 50) < (*c).instCounter)) goto LA8_;
		globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_32));
	}
	LA8_: ;
	(*c).instCounter += ((NI) 1);
	n = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*fn).ast);
	T10_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T10_ = getModule_43y2sdiIt63745LnAZPmZQ(fn);
	asgnRefNoCycle((void**) (&(*c).friendModules), (tySequence_DfgJFJEYoj4YBAHLZPl5lQ*) incrSeqV3(&((*c).friendModules)->Sup, (&NTI_DfgJFJEYoj4YBAHLZPl5lQ_)));
	T11_ = (*c).friendModules->Sup.len++;
	asgnRefNoCycle((void**) (&(*c).friendModules->data[T11_]), T10_);
	oldMatchedConcept = (*c).matchedConcept;
	(*c).matchedConcept = NIM_NIL;
	oldScope = (*c).currentScope;
	{
		while (1) {
			NIM_BOOL T14_;
			T14_ = (NIM_BOOL)0;
			T14_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
			if (!!(T14_)) goto LA13;
			asgnRef((void**) (&(*c).currentScope), (*(*c).currentScope).parent);
		} LA13: ;
	}
	result = copySym_hicZXrzB9bwpjzwTWf8NTog(fn, NIM_FALSE);
	(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 2))%(sizeof(NU64)*8));
	asgnRefNoCycle((void**) (&(*result).owner), fn);
	asgnRefNoCycle((void**) (&(*result).ast), n);
	pushOwner_Wu2m3sh279aYfWNXavlKecA(c, result);
	T15_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T15_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	gp = (*n)._Ukind.S6.sons->data[((NI) 2)];
	{
		NimStringDesc* T20_;
		if (!!(!(((*gp).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))))) goto LA18_;
		T20_ = (NimStringDesc*)0;
		T20_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_33);
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T20_);
	}
	LA18_: ;
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(result));
	pushInfoContext_jVPMMc4H29cyI52qg0Kp9aUg((*(*c).graph).config, info);
	entry = new_WXvut0jf9avLrZqje29bbhTQ();
	asgnRefNoCycle((void**) (&(*entry).sym), result);
	i = ((NI) 0);
	T21_ = (NI)0;
	T21_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*fn).typ);
	T22_ = (NI)0;
	T22_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(gp);
	if ((*entry).concreteTypes) { nimGCunrefNoCycle((*entry).concreteTypes); (*entry).concreteTypes = NIM_NIL; }
	(*entry).concreteTypes = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeqRC1((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), ((NI) ((NI)((NI)(T21_ + T22_) - ((NI) 1)))));
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		s = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		{
			NimStringDesc* T28_;
			if (!!(((*gp).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 75)))) goto LA26_;
			T28_ = (NimStringDesc*)0;
			T28_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_34);
			internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T28_);
		}
		LA26_: ;
		{
			NI i_2;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
			i_2 = (NI)0;
			a = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i_3;
				NI colontmp_;
				NI i_4;
				i_3 = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(gp);
				i_4 = ((NI) 0);
				{
					while (1) {
						if (!(i_4 < colontmp_)) goto LA32;
						i_3 = i_4;
						i_2 = i_3;
						a = (*gp)._Ukind.S6.sons->data[i_3];
						{
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* q;
							tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw symKind;
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_2;
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T48_;
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
							tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T49_;
							RootObj* T50_;
							{
								NimStringDesc* T38_;
								if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA36_;
								T38_ = (NimStringDesc*)0;
								T38_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_35);
								internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T38_);
							}
							LA36_: ;
							q = (*a)._Ukind.S4.sym;
							{
								if (!!(((*(*q).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8) || (*(*q).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12) || (*(*q).typ).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 51) && (*(*q).typ).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54) || (*(*q).typ).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 56) && (*(*q).typ).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60)))) goto LA41_;
								goto LA33;
							}
							LA41_: ;
							{
								if (!((*(*q).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA45_;
								symKind = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 10);
							}
							goto LA43_;
							LA45_: ;
							{
								symKind = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7);
							}
							LA43_: ;
							T48_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
							T48_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
							s_2 = newSym_ZQfOwiQo63qLga19cuF5r9cQ(symKind, (*q).name, T48_, (*q).info, 0);
							(*s_2).flags = ((*s_2).flags | 5);
							T49_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
							T49_ = &(*q).typ->Sup;
							T50_ = (RootObj*)0;
							T50_ = idTableGet_6XGoeu1puMq6qoi2OW419bA(pt, T49_);
							t = ((tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) (T50_));
							{
								if (!(t == NIM_NIL)) goto LA53_;
								{
									if (!(((*(*q).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 11))&63U)))!=0)) goto LA57_;
									t = (*q).typ;
								}
								goto LA55_;
								LA57_: ;
								{
									NimStringDesc* T60_;
									T60_ = (NimStringDesc*)0;
									T60_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_36), (*(*s_2).name).s);
									localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, T60_);
									t = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
								}
								LA55_: ;
							}
							goto LA51_;
							LA53_: ;
							{
								NimStringDesc* T64_;
								if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12))) goto LA62_;
								T64_ = (NimStringDesc*)0;
								T64_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_36), (*(*q).name).s);
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, T64_);
								t = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
							}
							goto LA51_;
							LA62_: ;
							{
								if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9))) goto LA66_;
								t = generateTypeInstance_hh5ZlzAUaBgsyjiF5uPRIQ(c, pt, (*a).info, t);
							}
							goto LA51_;
							LA66_: ;
							LA51_: ;
							asgnRefNoCycle((void**) (&(*s_2).typ), t);
							{
								if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA70_;
								asgnRefNoCycle((void**) (&(*s_2).ast), (*t).n);
							}
							LA70_: ;
							s = s_2;
							addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, s);
							asgnRefNoCycle((void**) (&(*entry).concreteTypes->data[i]), (*s).typ);
							i += ((NI) 1);
						} LA33: ;
						i_4 += ((NI) 1);
					} LA32: ;
				}
			}
		}
	}
	rawPushProcCon_rlp4YNQ9cuQQzIjJRzZxqsA(c, result);
	instantiateProcType_MuX09aHBkOq8swzh84Bygqw(c, pt, result, info);
	{
		NI j;
		NI colontmp__2;
		NI T73_;
		NI res;
		j = (NI)0;
		colontmp__2 = (NI)0;
		T73_ = (NI)0;
		T73_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*result).typ);
		colontmp__2 = (NI)(T73_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				if (!(res <= colontmp__2)) goto LA75;
				j = res;
				asgnRefNoCycle((void**) (&(*entry).concreteTypes->data[i]), (*(*result).typ).sons->data[j]);
				i += ((NI) 1);
				res += ((NI) 1);
			} LA75: ;
		}
	}
	{
		if (!(((*(*result).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 32))&63U)))!=0)) goto LA78_;
		(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 24))%(sizeof(NU64)*8));
	}
	LA78_: ;
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 2)]), (*(*c).graph).emptyNode);
	oldPrc = genericCacheGet_yrVWUjVCLM4qNMOOOoQryQ(fn, (*entry), (*c).compilesContextId);
	{
		tyObject_TInstantiationPair_HkXM4cJmOpk8zFcmq9c9c3gQ T84_;
		NI T85_;
		if (!(oldPrc == NIM_NIL)) goto LA82_;
		rawHandleSelf_rlp4YNQ9cuQQzIjJRzZxqsA_2(c, result);
		(*entry).compilesId = (*c).compilesContextId;
		safeAdd_159bXvKbDCwtLAAM9au9cb2iw((&(*fn)._Ukind.S2.procInstCache), entry);
		nimZeroMem((void*)(&T84_), sizeof(tyObject_TInstantiationPair_HkXM4cJmOpk8zFcmq9c9c3gQ));
		makeInstPair_Bur9cvlxIwJjniXLtddeKWQ(fn, entry, (&T84_));
		asgnRefNoCycle((void**) (&(*c).generics), (tySequence_jWKvSdankQPoT5bw9cBU9aiw*) incrSeqV3(&((*c).generics)->Sup, (&NTI_jWKvSdankQPoT5bw9cBU9aiw_)));
		T85_ = (*c).generics->Sup.len++;
		asgnRefNoCycle((void**) (&(*c).generics->data[T85_].genericSym), T84_.genericSym);
		asgnRefNoCycle((void**) (&(*c).generics->data[T85_].inst), T84_.inst);
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 4)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA88_;
			pragma_av9bQYmoLtJKLA6ueIgHxoA(c, result, (*n)._Ukind.S6.sons->data[((NI) 4)], TM_rF9caJawfOjYTjsgLVUSGFA_43);
		}
		LA88_: ;
		{
			if (!((*n)._Ukind.S6.sons->data[((NI) 6)] == 0)) goto LA92_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*(*fn).ast)._Ukind.S6.sons->data[((NI) 6)]));
		}
		LA92_: ;
		{
			if (!((*c).inGenericContext == ((NI) 0))) goto LA96_;
			instantiateBody_6RB9cSw8gDnp85iQpBn9a1Bg(c, n, (*(*fn).typ).n, result, fn);
		}
		LA96_: ;
		sideEffectsCheck_grUXOQ5yIYTIh9cBH5o3wgA(c, result);
		{
			if (!!(((*result).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 142)))) goto LA100_;
			paramsTypeCheck_x9cTuhi0AX52YZsSO1Yzt6Asem(c, (*result).typ);
		}
		LA100_: ;
	}
	goto LA80_;
	LA82_: ;
	{
		result = oldPrc;
	}
	LA80_: ;
	popProcCon_SSNSh333Y0csrmTQnH74tQsem(c);
	popInfoContext_HFVjkUQz7LMV9aOS6uKLckQ((*(*c).graph).config);
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw(c);
	asgnRef((void**) (&(*c).currentScope), oldScope);
	T103_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T103_ = pop_iSW3NpdhhLmgN2JVyXuzcQtransf((&(*c).friendModules));
	T103_;
	(*c).instCounter -= ((NI) 1);
	(*c).matchedConcept = oldMatchedConcept;
	{
		if (!((*result).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14))) goto LA106_;
		finishMethod_79a2N3yeoK32VpcXiRGgdSg_3(c, result);
	}
	LA106_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, instGenericConvertersArg_6yHi72tjFidHu2E3fNZkJA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* x) {
	{
		NIM_BOOL T3_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32));
		if (!(T3_)) goto LA4_;
		T3_ = ((*(*a)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		LA4_: ;
		if (!T3_) goto LA5_;
		s = (*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
		{
			NIM_BOOL T9_;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* finalCallee;
			T9_ = (NIM_BOOL)0;
			T9_ = !(((*s).ast == NIM_NIL));
			if (!(T9_)) goto LA10_;
			T9_ = !(((*(*(*s).ast)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)));
			LA10_: ;
			if (!T9_) goto LA11_;
			finalCallee = generateInstance_g9b7H3AgWQ9ciaW2dF0vQm9ag(c, s, (*x).bindings, (*a).info);
			asgnRefNoCycle((void**) (&(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym), finalCallee);
			asgnRefNoCycle((void**) (&(*(*a)._Ukind.S6.sons->data[((NI) 0)]).typ), (*finalCallee).typ);
		}
		LA11_: ;
	}
	LA5_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, indexTypesMatch_nqUTi2CjNXm3wHwX3FP3iA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* f, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA m;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&m), sizeof(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA));
	initCandidate_al6D1MtFq9bIwSvVxpct8pw(c, (&m), f);
	result = paramTypesMatch_MkZIYaWSL2Febv66liB9aIA((&m), f, a, arg, NIM_NIL);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = m.genericConverter;
		if (!(T3_)) goto LA4_;
		T3_ = !((result == NIM_NIL));
		LA4_: ;
		if (!T3_) goto LA5_;
		instGenericConvertersArg_6yHi72tjFidHu2E3fNZkJA(c, result, (&m));
	}
	LA5_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NimStringDesc* T5_;
		NimStringDesc* T6_;
		if (!((*arg).typ == 0)) goto LA3_;
		T5_ = (NimStringDesc*)0;
		T6_ = (NimStringDesc*)0;
		T6_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(arg, 4);
		T5_ = rawNewString((T6_ ? T6_->Sup.len : 0) + 24);
appendString(T5_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_29));
appendString(T5_, T6_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*arg).info, T5_);
		result = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(arg);
		asgnRefNoCycle((void**) (&(*result).typ), formal);
	}
	goto LA1_;
	LA3_: ;
	{
		result = indexTypesMatch_nqUTi2CjNXm3wHwX3FP3iA(c, formal, (*arg).typ, arg);
		{
			if (!(result == NIM_NIL)) goto LA10_;
			typeMismatch_1xxyFIws27lai2cG4n31Ow((*(*c).graph).config, info, formal, (*arg).typ);
			result = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(arg);
			asgnRefNoCycle((void**) (&(*result).typ), formal);
		}
		goto LA8_;
		LA10_: ;
		{
			result = fitNodePostMatch_dy7KC0VI4p5JxVZFyTe7fw(c, formal, result);
		}
		LA8_: ;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, forceBool_U3qPBy54f1PkCP8vmFMCRA_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1));
	result = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, T1_, n, (*n).info);
	{
		if (!(result == NIM_NIL)) goto LA4_;
		result = n;
	}
	LA4_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semWhen_9cFxfe3QuUjcGT0YjtIGZ4g)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL semCheck) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NIM_BOOL whenNimvm;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = NIM_NIL;
	whenNimvm = NIM_FALSE;
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) newObj((&NTI_AgIT5feFR9a9aoVjv9cx2rOtg_), sizeof(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ));
	(*T1_).Sup.Sup.m_type = (&NTI_v9ae2Dpu13OW2ZJ2U9bNMd9cQ_);
	(*T1_).kind = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6);
	typ = T1_;
	{
		NIM_BOOL T4_;
		NIM_BOOL T5_;
		NI T6_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* exprNode;
		T4_ = (NIM_BOOL)0;
		T5_ = (NIM_BOOL)0;
		T6_ = ((*n)._Ukind.S6.sons ? (*n)._Ukind.S6.sons->Sup.len : 0);
		T5_ = (T6_ == ((NI) 2));
		if (!(T5_)) goto LA7_;
		T5_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86));
		LA7_: ;
		T4_ = T5_;
		if (!(T4_)) goto LA8_;
		T4_ = ((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88));
		LA8_: ;
		if (!T4_) goto LA9_;
		exprNode = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 0)];
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T15_;
			if (!((*exprNode).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA13_;
			T15_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
			T15_ = lookUp_2lqvMm9cf9bZrSA2I9a9cHb8ag_2(c, exprNode);
			whenNimvm = ((*T15_).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 280));
		}
		goto LA11_;
		LA13_: ;
		{
			if (!((*exprNode).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA17_;
			whenNimvm = ((*(*exprNode)._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 280));
		}
		goto LA11_;
		LA17_: ;
		LA11_: ;
		{
			if (!whenNimvm) goto LA21_;
			(*n).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 8))%(sizeof(NU32)*8));
		}
		LA21_: ;
	}
	LA9_: ;
	{
		NI i;
		NI colontmp_;
		NI T24_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T24_ = (NI)0;
		T24_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T24_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
				if (!(res <= colontmp_)) goto LA26;
				i = res;
				it = (*n)._Ukind.S6.sons->data[i];
				switch ((*it).kind) {
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86):
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 49):
				{
					checkSonsLen_EezdXeDvu4rB7fR84AJZgw(it, ((NI) 2), (*(*c).graph).config);
					{
						if (!whenNimvm) goto LA30_;
						{
							if (!semCheck) goto LA34_;
							asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[((NI) 1)]), semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*it)._Ukind.S6.sons->data[((NI) 1)], 0));
							typ = commonType_hfwrZ5ThSx8sbABQFEwdHg(typ, (*(*it)._Ukind.S6.sons->data[((NI) 1)]).typ);
						}
						LA34_: ;
						result = n;
					}
					goto LA28_;
					LA30_: ;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T37_;
						T37_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T37_ = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, (*it)._Ukind.S6.sons->data[((NI) 0)]);
						e = forceBool_U3qPBy54f1PkCP8vmFMCRA_3(c, T37_);
						{
							if (!!(((*e).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6)))) goto LA40_;
						}
						goto LA38_;
						LA40_: ;
						{
							NIM_BOOL T43_;
							T43_ = (NIM_BOOL)0;
							T43_ = !(((*e)._Ukind.S1.intVal == IL64(0)));
							if (!(T43_)) goto LA44_;
							T43_ = (result == NIM_NIL);
							LA44_: ;
							if (!T43_) goto LA45_;
							{
								if (!semCheck) goto LA49_;
								result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*it)._Ukind.S6.sons->data[((NI) 1)], 0);
							}
							goto LA47_;
							LA49_: ;
							{
								result = (*it)._Ukind.S6.sons->data[((NI) 1)];
							}
							LA47_: ;
						}
						goto LA38_;
						LA45_: ;
						LA38_: ;
					}
					LA28_: ;
				}
				break;
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 50):
				{
					checkSonsLen_EezdXeDvu4rB7fR84AJZgw(it, ((NI) 1), (*(*c).graph).config);
					{
						NIM_BOOL T55_;
						T55_ = (NIM_BOOL)0;
						T55_ = (result == NIM_NIL);
						if (T55_) goto LA56_;
						T55_ = whenNimvm;
						LA56_: ;
						if (!T55_) goto LA57_;
						{
							if (!semCheck) goto LA61_;
							asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[((NI) 0)]), semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*it)._Ukind.S6.sons->data[((NI) 0)], 0));
							typ = commonType_hfwrZ5ThSx8sbABQFEwdHg(typ, (*(*it)._Ukind.S6.sons->data[((NI) 0)]).typ);
						}
						LA61_: ;
						{
							if (!(result == NIM_NIL)) goto LA65_;
							result = (*it)._Ukind.S6.sons->data[((NI) 0)];
						}
						LA65_: ;
					}
					LA57_: ;
				}
				break;
				default:
				{
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
				}
				break;
				}
				res += ((NI) 1);
			} LA26: ;
		}
	}
	{
		if (!(result == NIM_NIL)) goto LA70_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (*n).info);
	}
	LA70_: ;
	{
		if (!whenNimvm) goto LA74_;
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA74_: ;
	idSynchronizationPoint_GU7xhi8Sthx1AieMTTUZqQ(((NI) 200));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, semTypeIdent_0bGgbY2vzd9cI8DrFDXzH9aA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
{	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA3_;
		result = getGenSym_9cHGgeaz0zI8z6eWnyHP7Bg(c, (*n)._Ukind.S4.sym);
	}
	goto LA1_;
	LA3_: ;
	{
		result = pickSym_2ZELfpJltTxjVuLyF6lJRQ(c, n, 152, 0);
		{
			if (!(result == 0)) goto LA8_;
			result = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA(c, n, 3);
		}
		LA8_: ;
		{
			if (!!((result == NIM_NIL))) goto LA12_;
			markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, result, &(*(*c).graph).usageSym);
			{
				NIM_BOOL T16_;
				T16_ = (NIM_BOOL)0;
				T16_ = ((*result).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
				if (!(T16_)) goto LA17_;
				T16_ = ((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
				LA17_: ;
				if (!T16_) goto LA18_;
				{
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* bound;
					if (!(((NI) 0) < (*c).inGenericInst)) goto LA22_;
					bound = (*(*(*result).typ).sons->data[((NI) 0)]).sym;
					{
						if (!!((bound == NIM_NIL))) goto LA26_;
						result = bound;
						goto BeforeRet_;
					}
					LA26_: ;
					goto BeforeRet_;
				}
				LA22_: ;
				{
					if (!((*(*result).typ).sym == NIM_NIL)) goto LA30_;
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
					result = errorSym_2lqvMm9cf9bZrSA2I9a9cHb8ag(c, n);
					goto BeforeRet_;
				}
				LA30_: ;
				result = copySym_hicZXrzB9bwpjzwTWf8NTog((*(*result).typ).sym, NIM_FALSE);
				asgnRefNoCycle((void**) (&(*result).typ), copyType_UkDKseEIJgQZ1cGmoQSskA((*result).typ, (*(*result).typ).owner, NIM_TRUE));
				(*(*result).typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))%(sizeof(NU64)*8));
			}
			LA18_: ;
			{
				if (!((*result).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 4))) goto LA34_;
				{
					NIM_BOOL T38_;
					NIM_BOOL T39_;
					NI T41_;
					T38_ = (NIM_BOOL)0;
					T39_ = (NIM_BOOL)0;
					T39_ = ((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12));
					if (!(T39_)) goto LA40_;
					T41_ = (NI)0;
					T41_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*result).typ);
					T39_ = (T41_ == ((NI) 0));
					LA40_: ;
					T38_ = T39_;
					if (!(T38_)) goto LA42_;
					T38_ = (((*(*result).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 29))&63U)))!=0);
					LA42_: ;
					if (!T38_) goto LA43_;
					(*result).kind = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7);
					(*(*result).typ).flags &= ~(((NU64)1) << ((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 29)) % (sizeof(NU64)*8)));
					goto BeforeRet_;
				}
				goto LA36_;
				LA43_: ;
				{
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
					result = errorSym_2lqvMm9cf9bZrSA2I9a9cHb8ag(c, n);
					goto BeforeRet_;
				}
				LA36_: ;
			}
			LA34_: ;
			{
				NIM_BOOL T48_;
				tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ ov;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* amb;
				T48_ = (NIM_BOOL)0;
				T48_ = !(((*result).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7)));
				if (!(T48_)) goto LA49_;
				T48_ = !(((*result).magic >= ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 14) && (*result).magic <= ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 15) || (*result).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 22)));
				LA49_: ;
				if (!T48_) goto LA50_;
				nimZeroMem((void*)(&ov), sizeof(tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ));
				amb = initOverloadIter_5E8M4x8tMAW3KCmti57FUA((&ov), c, n);
				{
					while (1) {
						NIM_BOOL T54_;
						T54_ = (NIM_BOOL)0;
						T54_ = !((amb == NIM_NIL));
						if (!(T54_)) goto LA55_;
						T54_ = !(((*amb).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7)));
						LA55_: ;
						if (!T54_) goto LA53;
						amb = nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2((&ov), c, n);
					} LA53: ;
				}
				{
					if (!!((amb == NIM_NIL))) goto LA58_;
					result = amb;
				}
				goto LA56_;
				LA58_: ;
				{
					{
						if (!!(((*result).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 0)))) goto LA63_;
						localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
					}
					LA63_: ;
					result = errorSym_2lqvMm9cf9bZrSA2I9a9cHb8ag(c, n);
					goto BeforeRet_;
				}
				LA56_: ;
			}
			LA50_: ;
			{
				tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q oldInfo;
				if (!!(((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12)))) goto LA67_;
				oldInfo = (*n).info;
				genericReset((void*)(&(*n)), (&NTI_bROa11lyF5vxEN9aYNbHmhw_));
				(*n).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S4.sym), result);
				(*n).info = oldInfo;
				asgnRefNoCycle((void**) (&(*n).typ), (*result).typ);
			}
			LA67_: ;
		}
		goto LA10_;
		LA12_: ;
		{
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_221));
			result = errorSym_2lqvMm9cf9bZrSA2I9a9cHb8ag(c, n);
		}
		LA10_: ;
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, symFromExpectedTypeNode_0bGgbY2vzd9cI8DrFDXzH9aA_3)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4))) goto LA3_;
		result = symFromType_iNWu8slD9btMQQMjClRjrSQ(c, (*n).typ, (*n).info);
	}
	goto LA1_;
	LA3_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
		result = errorSym_2lqvMm9cf9bZrSA2I9a9cHb8ag(c, n);
	}
	LA1_: ;
	return result;
}

static N_INLINE(NIM_BOOL, isRange_GZCDL1KLeVpc9b7cG4gxP7Asem)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* callee;
		if (!((*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))) goto LA3_;
		callee = (*n)._Ukind.S6.sons->data[((NI) 0)];
		{
			NIM_BOOL T7_;
			NIM_BOOL T8_;
			NIM_BOOL T9_;
			NIM_BOOL T12_;
			NIM_BOOL T15_;
			T7_ = (NIM_BOOL)0;
			T8_ = (NIM_BOOL)0;
			T9_ = (NIM_BOOL)0;
			T9_ = ((*callee).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2));
			if (!(T9_)) goto LA10_;
			T9_ = ((*(*callee)._Ukind.S5.ident).Sup.id == ((NI) 71));
			LA10_: ;
			T8_ = T9_;
			if (T8_) goto LA11_;
			T12_ = (NIM_BOOL)0;
			T12_ = ((*callee).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
			if (!(T12_)) goto LA13_;
			T12_ = ((*(*(*callee)._Ukind.S4.sym).name).Sup.id == ((NI) 71));
			LA13_: ;
			T8_ = T12_;
			LA11_: ;
			T7_ = T8_;
			if (T7_) goto LA14_;
			T15_ = (NIM_BOOL)0;
			T15_ = ((*callee).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56) || (*callee).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 57));
			if (!(T15_)) goto LA16_;
			T15_ = ((*(*(*(*callee)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S4.sym).name).Sup.id == ((NI) 71));
			LA16_: ;
			T7_ = T15_;
			LA14_: ;
			if (!T7_) goto LA17_;
			result = NIM_TRUE;
		}
		LA17_: ;
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semArrayIndex_dGBWDMhChCbFdqZsqOlYQA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isRange_GZCDL1KLeVpc9b7cG4gxP7Asem(n);
		if (!T3_) goto LA4_;
		result = semRangeAux_VyBZhWPO9cyRyURhXkNKu7w_4(c, n, NIM_NIL);
	}
	goto LA1_;
	LA4_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e;
		e = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, n, 256);
		{
			if (!((*(*e).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61))) goto LA9_;
			result = makeRangeWithStaticExpr_4aCCB7OpRYArRl1IRP6KOQ(c, (*(*e).typ).n);
		}
		goto LA7_;
		LA9_: ;
		{
			if (!((*e).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6) && (*e).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 15))) goto LA12_;
			{
				NimStringDesc* T18_;
				NimStringDesc* T19_;
				if (!((*e)._Ukind.S1.intVal < IL64(0))) goto LA16_;
				T18_ = (NimStringDesc*)0;
				T19_ = (NimStringDesc*)0;
				T19_ = nimInt64ToStr((*e)._Ukind.S1.intVal);
				T18_ = rawNewString((T19_ ? T19_->Sup.len : 0) + 40);
appendString(T18_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_222));
appendString(T18_, T19_);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, T18_);
			}
			LA16_: ;
			result = makeRangeType_J365P9cgI1ESa4FCAHPtZbA(c, IL64(0), (NI64)((*e)._Ukind.S1.intVal - IL64(1)), (*n).info, (*e).typ);
		}
		goto LA7_;
		LA12_: ;
		{
			NIM_BOOL T21_;
			T21_ = (NIM_BOOL)0;
			T21_ = ((*e).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
			if (!(T21_)) goto LA22_;
			T21_ = ((*(*e).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60));
			LA22_: ;
			if (!T21_) goto LA23_;
			{
				if (!!(((*(*e)._Ukind.S4.sym).ast == NIM_NIL))) goto LA27_;
				result = semArrayIndex_dGBWDMhChCbFdqZsqOlYQA(c, (*(*e)._Ukind.S4.sym).ast);
				goto BeforeRet_;
			}
			LA27_: ;
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T31_;
				NIM_BOOL T32_;
				tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
				T31_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T31_ = lastSon_ab52xel9cFebv9am0xV04xXA((*e).typ);
				T32_ = (NIM_BOOL)0;
				T32_ = isOrdinalType_tcejMcLGk6ut4jAKBig68w(T31_, NIM_FALSE);
				if (!!(T32_)) goto LA33_;
				{
					NI T37_;
					T37_ = (NI)0;
					T37_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
					if (!(((NI) 1) < T37_)) goto LA38_;
					info = (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info;
				}
				goto LA35_;
				LA38_: ;
				{
					info = (*n).info;
				}
				LA35_: ;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_167));
			}
			LA33_: ;
			result = makeRangeWithStaticExpr_4aCCB7OpRYArRl1IRP6KOQ(c, e);
			{
				if (!(((NI) 0) < (*c).inGenericContext)) goto LA43_;
				(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))%(sizeof(NU64)*8));
			}
			LA43_: ;
		}
		goto LA7_;
		LA23_: ;
		{
			NIM_BOOL T46_;
			T46_ = (NIM_BOOL)0;
			T46_ = ((*e).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) && (*e).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32) || (*e).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42));
			if (!(T46_)) goto LA47_;
			T46_ = hasUnresolvedArgs_LeFS3Ufk6SguFjd3eMJWeg(c, e);
			LA47_: ;
			if (!T46_) goto LA48_;
			{
				NIM_BOOL T52_;
				T52_ = (NIM_BOOL)0;
				T52_ = isOrdinalType_tcejMcLGk6ut4jAKBig68w((*e).typ, NIM_FALSE);
				if (!!(T52_)) goto LA53_;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_167));
			}
			LA53_: ;
			result = makeRangeWithStaticExpr_4aCCB7OpRYArRl1IRP6KOQ(c, e);
		}
		goto LA7_;
		LA48_: ;
		{
			if (!((*e).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA56_;
			result = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*e).typ, 256);
		}
		goto LA7_;
		LA56_: ;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
			x = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, e);
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T63_;
				if (!((*x).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6) && (*x).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 15))) goto LA61_;
				T63_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T63_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*x).typ, 256);
				result = makeRangeType_J365P9cgI1ESa4FCAHPtZbA(c, IL64(0), (NI64)((*x)._Ukind.S1.intVal - IL64(1)), (*n).info, T63_);
			}
			goto LA59_;
			LA61_: ;
			{
				result = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*x).typ, 256);
			}
			LA59_: ;
		}
		LA7_: ;
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semArray_VyBZhWPO9cyRyURhXkNKu7w_6)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	base = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NI T3_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* indx;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* indxB;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 3))) goto LA4_;
		indx = semArrayIndex_dGBWDMhChCbFdqZsqOlYQA(c, (*n)._Ukind.S6.sons->data[((NI) 1)]);
		indxB = indx;
		{
			if (!((*indxB).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11) || (*indxB).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4) || (*indxB).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46))) goto LA8_;
			indxB = lastSon_ab52xel9cFebv9am0xV04xXA(indxB);
		}
		LA8_: ;
		{
			if (!!(((*indxB).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12) || (*indxB).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60) || (*indxB).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61)))) goto LA12_;
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T16_;
				T16_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T16_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(indxB, 1048576);
				if (!((*T16_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 40) || (*T16_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44))) goto LA17_;
			}
			goto LA14_;
			LA17_: ;
			{
				NIM_BOOL T20_;
				T20_ = (NIM_BOOL)0;
				T20_ = isOrdinalType_tcejMcLGk6ut4jAKBig68w(indxB, NIM_FALSE);
				if (!!(T20_)) goto LA21_;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_167));
			}
			goto LA14_;
			LA21_: ;
			{
				NIM_BOOL T24_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T27_;
				NimStringDesc* T28_;
				NimStringDesc* T29_;
				T24_ = (NIM_BOOL)0;
				T24_ = enumHasHoles_oBaRrNx0TwrublbZIUKenA_2(indxB);
				if (!T24_) goto LA25_;
				T27_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T27_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(indxB, 1048576);
				T28_ = (NimStringDesc*)0;
				T28_ = typeToString_QlvraUan7WbHowhAbvDvdA(T27_, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
				T29_ = (NimStringDesc*)0;
				T29_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_19), T28_);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, T29_);
			}
			goto LA14_;
			LA25_: ;
			LA14_: ;
		}
		LA12_: ;
		base = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 2)], NIM_NIL);
		result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16), prev, c);
		rawAddSonNoPropagationOfTypeFlags_uZzh0IWnWErsZbQ8YFaRRA_2(result, indx);
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, base);
	}
	goto LA1_;
	LA4_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_223));
		result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, semContainerArg_6WuDX6eZfO9aljUv9bdjHa8A)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NimStringDesc* kindStr, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result) {
	{
		NI T3_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 2))) goto LA4_;
		base = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
		{
			NimStringDesc* T10_;
			NimStringDesc* T11_;
			if (!((*base).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63))) goto LA8_;
			T10_ = (NimStringDesc*)0;
			T10_ = typeToString_QlvraUan7WbHowhAbvDvdA(base, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T11_ = (NimStringDesc*)0;
			T11_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_224), T10_);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T11_);
		}
		LA8_: ;
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, base);
	}
	goto LA1_;
	LA4_: ;
	{
		NimStringDesc* T13_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T14_;
		T13_ = (NimStringDesc*)0;
		T13_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_225), kindStr);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T13_);
		T14_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T14_ = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, T14_);
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semContainer_c2ZxSNt5fpSIjL1iBbVIDA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, NimStringDesc* kindStr, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(kind, prev, c);
	semContainerArg_6WuDX6eZfO9aljUv9bdjHa8A(c, n, kindStr, result);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semRange_VyBZhWPO9cyRyURhXkNKu7w_7)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = NIM_NIL;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 2))) goto LA4_;
		{
			NIM_BOOL T8_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
			T8_ = (NIM_BOOL)0;
			T8_ = isRange_GZCDL1KLeVpc9b7cG4gxP7Asem((*n)._Ukind.S6.sons->data[((NI) 1)]);
			if (!T8_) goto LA9_;
			result = semRangeAux_VyBZhWPO9cyRyURhXkNKu7w_4(c, (*n)._Ukind.S6.sons->data[((NI) 1)], prev);
			n_2 = (*result).n;
			{
				NIM_BOOL T13_;
				T13_ = (NIM_BOOL)0;
				T13_ = ((*(*n_2)._Ukind.S6.sons->data[((NI) 0)]).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*(*n_2)._Ukind.S6.sons->data[((NI) 0)]).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 15));
				if (!(T13_)) goto LA14_;
				T13_ = (IL64(0) < (*(*n_2)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S1.intVal);
				LA14_: ;
				if (!T13_) goto LA15_;
				(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 18))%(sizeof(NU64)*8));
			}
			goto LA11_;
			LA15_: ;
			{
				NIM_BOOL T18_;
				T18_ = (NIM_BOOL)0;
				T18_ = ((*(*n_2)._Ukind.S6.sons->data[((NI) 1)]).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*(*n_2)._Ukind.S6.sons->data[((NI) 1)]).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 15));
				if (!(T18_)) goto LA19_;
				T18_ = ((*(*n_2)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S1.intVal < IL64(0));
				LA19_: ;
				if (!T18_) goto LA20_;
				(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 18))%(sizeof(NU64)*8));
			}
			goto LA11_;
			LA20_: ;
			{
				NIM_BOOL T23_;
				T23_ = (NIM_BOOL)0;
				T23_ = ((*(*n_2)._Ukind.S6.sons->data[((NI) 0)]).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 16) && (*(*n_2)._Ukind.S6.sons->data[((NI) 0)]).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 18));
				if (!(T23_)) goto LA24_;
				T23_ = (0.0 < (*(*n_2)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S2.floatVal);
				LA24_: ;
				if (!T23_) goto LA25_;
				(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 18))%(sizeof(NU64)*8));
			}
			goto LA11_;
			LA25_: ;
			{
				NIM_BOOL T28_;
				T28_ = (NIM_BOOL)0;
				T28_ = ((*(*n_2)._Ukind.S6.sons->data[((NI) 1)]).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 16) && (*(*n_2)._Ukind.S6.sons->data[((NI) 1)]).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 18));
				if (!(T28_)) goto LA29_;
				T28_ = ((*(*n_2)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S2.floatVal < 0.0);
				LA29_: ;
				if (!T28_) goto LA30_;
				(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 18))%(sizeof(NU64)*8));
			}
			goto LA11_;
			LA30_: ;
			LA11_: ;
		}
		goto LA6_;
		LA9_: ;
		{
			{
				NIM_BOOL T35_;
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T37_;
				T35_ = (NIM_BOOL)0;
				T35_ = ((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29));
				if (!(T35_)) goto LA36_;
				T37_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T37_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*(*n)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
				T35_ = eqStrings((*T37_).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_227));
				LA36_: ;
				if (!T35_) goto LA38_;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_228));
			}
			goto LA33_;
			LA38_: ;
			{
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_229));
			}
			LA33_: ;
			result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
		}
		LA6_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		NimStringDesc* T42_;
		T42_ = (NimStringDesc*)0;
		T42_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_225), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_230));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T42_);
		result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semSet_VyBZhWPO9cyRyURhXkNKu7w_8)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19), prev, c);
	{
		NI T3_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 2))) goto LA4_;
		base = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, base);
		{
			if (!((*base).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11) || (*base).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4) || (*base).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46))) goto LA8_;
			base = lastSon_ab52xel9cFebv9am0xV04xXA(base);
		}
		LA8_: ;
		{
			if (!!(((*base).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12)))) goto LA12_;
			{
				NIM_BOOL T16_;
				T16_ = (NIM_BOOL)0;
				T16_ = isOrdinalType_tcejMcLGk6ut4jAKBig68w(base, NIM_TRUE);
				if (!!(T16_)) goto LA17_;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_167));
			}
			goto LA14_;
			LA17_: ;
			{
				NI64 T20_;
				T20_ = (NI64)0;
				T20_ = lengthOrd_4cSIntenL9aBXY6LAFsvXdQ_2((*(*c).graph).config, base);
				if (!(IL64(65536) < T20_)) goto LA21_;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_231));
			}
			goto LA14_;
			LA21_: ;
			LA14_: ;
		}
		LA12_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		NimStringDesc* T24_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T25_;
		T24_ = (NimStringDesc*)0;
		T24_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_225), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_232));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T24_);
		T25_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T25_ = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, T25_);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semOrdinal_VyBZhWPO9cyRyURhXkNKu7w_9)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 15), prev, c);
	{
		NI T3_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 2))) goto LA4_;
		base = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
		{
			if (!!(((*base).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12)))) goto LA8_;
			{
				NIM_BOOL T12_;
				T12_ = (NIM_BOOL)0;
				T12_ = isOrdinalType_tcejMcLGk6ut4jAKBig68w(base, NIM_FALSE);
				if (!!(T12_)) goto LA13_;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_167));
			}
			LA13_: ;
		}
		LA8_: ;
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, base);
	}
	goto LA1_;
	LA4_: ;
	{
		NimStringDesc* T16_;
		T16_ = (NimStringDesc*)0;
		T16_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_225), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_233));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T16_);
		result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semVarargs_VyBZhWPO9cyRyURhXkNKu7w_10)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 48), prev, c);
	{
		NIM_BOOL T3_;
		NI T4_;
		NI T6_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
		T3_ = (NIM_BOOL)0;
		T4_ = (NI)0;
		T4_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		T3_ = (T4_ == ((NI) 2));
		if (T3_) goto LA5_;
		T6_ = (NI)0;
		T6_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		T3_ = (T6_ == ((NI) 3));
		LA5_: ;
		if (!T3_) goto LA7_;
		base = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, base);
		{
			NI T11_;
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T14_;
			T11_ = (NI)0;
			T11_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			if (!(T11_ == ((NI) 3))) goto LA12_;
			T14_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T14_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*n)._Ukind.S6.sons->data[((NI) 2)], NIM_NIL);
			asgnRefNoCycle((void**) (&(*result).n), newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T14_, (*(*n)._Ukind.S6.sons->data[((NI) 2)]).info));
		}
		LA12_: ;
	}
	goto LA1_;
	LA7_: ;
	{
		NimStringDesc* T16_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T17_;
		T16_ = (NimStringDesc*)0;
		T16_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_225), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_236));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T16_);
		T17_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T17_ = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, T17_);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semTuple_VyBZhWPO9cyRyURhXkNKu7w_11)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
	tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg check;
	NI counter;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	typ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info));
	nimZeroMem((void*)(&check), sizeof(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&check));
	counter = ((NI) 0);
	{
		NI i;
		NI colontmp_;
		NI colontmp__2;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp__2 = (NI)0;
		colontmp_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42));
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp__2 = (NI)(T2_ - ((NI) 1));
		res = colontmp_;
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				NI length;
				if (!(res <= colontmp__2)) goto LA4;
				i = res;
				a = (*n)._Ukind.S6.sons->data[i];
				{
					if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35)))) goto LA7_;
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a, (*(*c).graph).config);
				}
				LA7_: ;
				checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a, ((NI) 3), (*(*c).graph).config);
				length = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a);
				{
					if (!!(((*(*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA11_;
					typ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
				}
				goto LA9_;
				LA11_: ;
				{
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
					typ = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
				}
				LA9_: ;
				{
					if (!!(((*(*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA16_;
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_238));
				}
				LA16_: ;
				{
					NI j;
					NI colontmp__3;
					NI res_2;
					j = (NI)0;
					colontmp__3 = (NI)0;
					colontmp__3 = (NI)(length - ((NI) 3));
					res_2 = ((NI) 0);
					{
						while (1) {
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field;
							if (!(res_2 <= colontmp__3)) goto LA20;
							j = res_2;
							field = newSymG_sxL9bg3I9cVytmWlUkzsHDaA(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 19), (*a)._Ukind.S6.sons->data[j], c);
							asgnRefNoCycle((void**) (&(*field).typ), typ);
							(*field).position = counter;
							counter += ((NI) 1);
							{
								NIM_BOOL T23_;
								NimStringDesc* T26_;
								T23_ = (NIM_BOOL)0;
								T23_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg((&check), (*(*field).name).Sup.id);
								if (!T23_) goto LA24_;
								T26_ = (NimStringDesc*)0;
								T26_ = rawNewString(((*(*field).name).s ? (*(*field).name).s->Sup.len : 0) + 23);
appendString(T26_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_83));
appendString(T26_, (*(*field).name).s);
appendString(T26_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*a)._Ukind.S6.sons->data[j]).info, T26_);
							}
							goto LA21_;
							LA24_: ;
							{
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T28_;
								T28_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								T28_ = newSymNode_UWZXukHA5As9aCftRHbafBg(field);
								addSon_gCCf68XrWL79bKes6htzFjQ_2((*result).n, T28_);
								addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, typ);
							}
							LA21_: ;
							{
								if (!(((*(*(*c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA31_;
								nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*c).graph).config, (*(*a)._Ukind.S6.sons->data[j]).info, field, (*field).kind);
							}
							LA31_: ;
							res_2 += ((NI) 1);
						} LA20: ;
					}
				}
				res += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NI T35_;
		T35_ = (NI)0;
		T35_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*result).n);
		if (!(T35_ == ((NI) 0))) goto LA36_;
		asgnRefNoCycle((void**) (&(*result).n), NIM_NIL);
	}
	LA36_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semGenericParamInInvocation_dGBWDMhChCbFdqZsqOlYQA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, n, NIM_NIL);
	asgnRefNoCycle((void**) (&(*n).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, result));
	return result;
}

static N_INLINE(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipGenericInvocation_hkZ6Hsm3Bu1SSKpvfSugGgsem)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = t;
	{
		if (!((*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9))) goto LA3_;
		result = (*result).sons->data[((NI) 0)];
	}
	LA3_: ;
	{
		while (1) {
			if (!((*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11) || (*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10) || (*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22) || (*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21) || (*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4) || (*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46))) goto LA6;
			result = lastSon_ab52xel9cFebv9am0xV04xXA(result);
		} LA6: ;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addInheritedFieldsAux_WGkEcJpcdeTr9adNGygDWCg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* check, NI* pos, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA4_;
			internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_248));
		}
		LA4_: ;
		addInheritedFieldsAux_WGkEcJpcdeTr9adNGygDWCg(c, check, pos, (*n)._Ukind.S6.sons->data[((NI) 0)]);
		{
			NI i;
			NI colontmp_;
			NI T7_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T7_ = (NI)0;
			T7_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp_ = (NI)(T7_ - ((NI) 1));
			res = ((NI) 1);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA9;
					i = res;
					switch ((*(*n)._Ukind.S6.sons->data[i]).kind) {
					case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85):
					case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
						T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T11_ = lastSon_esDJA7239bJDiq4UrX9aHCjg((*n)._Ukind.S6.sons->data[i]);
						addInheritedFieldsAux_WGkEcJpcdeTr9adNGygDWCg(c, check, pos, T11_);
					}
					break;
					default:
					{
						internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_249));
					}
					break;
					}
					res += ((NI) 1);
				} LA9: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		{
			NI i_2;
			NI colontmp__2;
			NI T15_;
			NI res_2;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			T15_ = (NI)0;
			T15_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__2 = (NI)(T15_ - ((NI) 1));
			res_2 = ((NI) 0);
			{
				while (1) {
					if (!(res_2 <= colontmp__2)) goto LA17;
					i_2 = res_2;
					addInheritedFieldsAux_WGkEcJpcdeTr9adNGygDWCg(c, check, pos, (*n)._Ukind.S6.sons->data[i_2]);
					res_2 += ((NI) 1);
				} LA17: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		incl_iUpE9bYmIR0fROyJskQwN8g(check, (*(*(*n)._Ukind.S4.sym).name).Sup.id);
		(*pos) += ((NI) 1);
	}
	break;
	default:
	{
		internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_250));
	}
	break;
	}
}

N_LIB_PRIVATE N_NIMCALL(void, addInheritedFields_7Ogd7OW2nM9axopp0e6LaMw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* check, NI* pos, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj) {
	{
		NIM_BOOL T3_;
		NI T4_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T8_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NI)0;
		T4_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(obj);
		T3_ = (((NI) 0) < T4_);
		if (!(T3_)) goto LA5_;
		T3_ = !(((*obj).sons->data[((NI) 0)] == NIM_NIL));
		LA5_: ;
		if (!T3_) goto LA6_;
		T8_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T8_ = skipGenericInvocation_hkZ6Hsm3Bu1SSKpvfSugGgsem((*obj).sons->data[((NI) 0)]);
		addInheritedFields_7Ogd7OW2nM9axopp0e6LaMw(c, check, pos, T8_);
	}
	LA6_: ;
	addInheritedFieldsAux_WGkEcJpcdeTr9adNGygDWCg(c, check, pos, (*obj).n);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConstBoolExpr_U3qPBy54f1PkCP8vmFMCRA_26)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nn;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nn = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, n, 0);
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1));
	result = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, T1_, nn, (*nn).info);
	{
		if (!(result == NIM_NIL)) goto LA4_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_176));
		result = nn;
		goto BeforeRet_;
	}
	LA4_: ;
	result = getConstExpr_A7gcXCy5E3uGBy5F37NoHA((*c).module, result, (*c).graph);
	{
		if (!(result == NIM_NIL)) goto LA8_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_176));
		result = nn;
	}
	LA8_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semBranchRange_KUnffHj9akL1GhAPGbEA6HA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b, NI64* covered) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ac;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* bc;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* at;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* bt;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(t, ((NI) 1), (*(*c).graph).config);
	ac = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, a);
	bc = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, b);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, (*(*t)._Ukind.S6.sons->data[((NI) 0)]).typ, ac, (*ac).info);
	at = skipConvTakeType_6rsSLwtlU9c53a6w69be5JlQ_3(T1_);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, (*(*t)._Ukind.S6.sons->data[((NI) 0)]).typ, bc, (*bc).info);
	bt = skipConvTakeType_6rsSLwtlU9c53a6w69be5JlQ_3(T2_);
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 44), (*a).info);
	add_gCCf68XrWL79bKes6htzFjQ(result, at);
	add_gCCf68XrWL79bKes6htzFjQ(result, bt);
	{
		NIM_BOOL T5_;
		T5_ = (NIM_BOOL)0;
		T5_ = emptyRange_GLYFox9ciWitxKuirhftGHg_2(ac, bc);
		if (!T5_) goto LA6_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*b).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_16));
	}
	goto LA3_;
	LA6_: ;
	{
		NI64 T9_;
		NI64 T10_;
		T9_ = (NI64)0;
		T9_ = getOrdValue_k4X4XP9cdVXYioHD9akA9bVbQ(bc);
		T10_ = (NI64)0;
		T10_ = getOrdValue_k4X4XP9cdVXYioHD9akA9bVbQ(ac);
		(*covered) = (NI64)((NI64)((NI64)((*covered) + T9_) - T10_) + IL64(1));
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semCaseBranchRange_RDTieXCUQCagoHhpkNTH2w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b, NI64* covered) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(b, ((NI) 3), (*(*c).graph).config);
	result = semBranchRange_KUnffHj9akL1GhAPGbEA6HA(c, t, (*b)._Ukind.S6.sons->data[((NI) 1)], (*b)._Ukind.S6.sons->data[((NI) 2)], covered);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semCaseBranchSetElem_RDTieXCUQCagoHhpkNTH2w_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b, NI64* covered) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isRange_GZCDL1KLeVpc9b7cG4gxP7Asem(b);
		if (!T3_) goto LA4_;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(b, ((NI) 3), (*(*c).graph).config);
		result = semBranchRange_KUnffHj9akL1GhAPGbEA6HA(c, t, (*b)._Ukind.S6.sons->data[((NI) 1)], (*b)._Ukind.S6.sons->data[((NI) 2)], covered);
	}
	goto LA1_;
	LA4_: ;
	{
		if (!((*b).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 44))) goto LA7_;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(b, ((NI) 2), (*(*c).graph).config);
		result = semBranchRange_KUnffHj9akL1GhAPGbEA6HA(c, t, (*b)._Ukind.S6.sons->data[((NI) 0)], (*b)._Ukind.S6.sons->data[((NI) 1)], covered);
	}
	goto LA1_;
	LA7_: ;
	{
		result = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, (*(*t)._Ukind.S6.sons->data[((NI) 0)]).typ, b, (*b).info);
		(*covered) += ((NI) 1);
	}
	LA1_: ;
	return result;
}

static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw**, X5BX5D__YLEY3nLpUU2onE02S2OSlgast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** s, NI sLen_0, NI i) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw**)0;
	result = &s[(NI)(sLen_0 - i)];
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, checkForOverlap_0YalQdM3GQT9bIT0IUTSROw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t, NI currentEx, NI branchIndex) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex;
	ex = skipConv_6rsSLwtlU9c53a6w69be5JlQ((*(*t)._Ukind.S6.sons->data[branchIndex])._Ukind.S6.sons->data[currentEx]);
	{
		NI i;
		NI res;
		i = (NI)0;
		res = ((NI) 1);
		{
			while (1) {
				if (!(res <= branchIndex)) goto LA3;
				i = res;
				{
					NI j;
					NI colontmp_;
					NI T5_;
					NI res_2;
					j = (NI)0;
					colontmp_ = (NI)0;
					T5_ = (NI)0;
					T5_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig((*t)._Ukind.S6.sons->data[i]);
					colontmp_ = (NI)(T5_ - ((NI) 2));
					res_2 = ((NI) 0);
					{
						while (1) {
							if (!(res_2 <= colontmp_)) goto LA7;
							j = res_2;
							{
								NIM_BOOL T10_;
								T10_ = (NIM_BOOL)0;
								T10_ = (i == branchIndex);
								if (!(T10_)) goto LA11_;
								T10_ = (j == currentEx);
								LA11_: ;
								if (!T10_) goto LA12_;
								goto LA4;
							}
							LA12_: ;
							{
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T16_;
								NIM_BOOL T17_;
								T16_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								T16_ = skipConv_6rsSLwtlU9c53a6w69be5JlQ((*(*t)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[j]);
								T17_ = (NIM_BOOL)0;
								T17_ = overlap_GLYFox9ciWitxKuirhftGHg(T16_, ex);
								if (!T17_) goto LA18_;
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*ex).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_258));
							}
							LA18_: ;
							res_2 += ((NI) 1);
						} LA7: ;
					}
				} LA4: ;
				res += ((NI) 1);
			} LA3: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(void, semCaseBranch_qifAUGxpq0PltMRr0U3F5w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch, NI branchIndex, NI64* covered) {
	NI lastIndex;
	NI T1_;
{	T1_ = (NI)0;
	T1_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(branch);
	lastIndex = (NI)(T1_ - ((NI) 2));
	{
		NI i;
		NI res;
		i = (NI)0;
		res = ((NI) 0);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
				if (!(res <= lastIndex)) goto LA4;
				i = res;
				b = (*branch)._Ukind.S6.sons->data[i];
				{
					if (!((*b).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 44))) goto LA7_;
					asgnRefNoCycle((void**) (&(*branch)._Ukind.S6.sons->data[i]), b);
				}
				goto LA5_;
				LA7_: ;
				{
					NIM_BOOL T10_;
					T10_ = (NIM_BOOL)0;
					T10_ = isRange_GZCDL1KLeVpc9b7cG4gxP7Asem(b);
					if (!T10_) goto LA11_;
					asgnRefNoCycle((void**) (&(*branch)._Ukind.S6.sons->data[i]), semCaseBranchRange_RDTieXCUQCagoHhpkNTH2w(c, t, b, covered));
				}
				goto LA5_;
				LA11_: ;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* r;
					r = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, b);
					{
						NIM_BOOL T16_;
						NIM_BOOL T17_;
						NI T19_;
						NI T21_;
						T16_ = (NIM_BOOL)0;
						T17_ = (NIM_BOOL)0;
						T17_ = ((*r).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 39) || (*r).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41));
						if (!(T17_)) goto LA18_;
						T19_ = (NI)0;
						T19_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(r);
						T17_ = (T19_ == ((NI) 0));
						LA18_: ;
						T16_ = T17_;
						if (!(T16_)) goto LA20_;
						T21_ = (NI)0;
						T21_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(branch);
						T16_ = (T21_ == ((NI) 2));
						LA20_: ;
						if (!T16_) goto LA22_;
						delSon_9c9c9b4wX9aUbrl9bXf1tGC9acyw(branch, ((NI) 0));
						goto BeforeRet_;
					}
					goto LA14_;
					LA22_: ;
					{
						NIM_BOOL T25_;
						NI T27_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tmp;
						T25_ = (NIM_BOOL)0;
						T25_ = !(((*r).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 39) || (*r).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41)));
						if (T25_) goto LA26_;
						T27_ = (NI)0;
						T27_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(r);
						T25_ = (T27_ == ((NI) 0));
						LA26_: ;
						if (!T25_) goto LA28_;
						checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(t, ((NI) 1), (*(*c).graph).config);
						tmp = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, (*(*t)._Ukind.S6.sons->data[((NI) 0)]).typ, r, (*r).info);
						{
							if (!((*tmp).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32))) goto LA32_;
							tmp = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, tmp);
						}
						LA32_: ;
						asgnRefNoCycle((void**) (&(*branch)._Ukind.S6.sons->data[i]), skipConv_6rsSLwtlU9c53a6w69be5JlQ(tmp));
						(*covered) += ((NI) 1);
					}
					goto LA14_;
					LA28_: ;
					{
						{
							if (!((*r).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 39))) goto LA37_;
							r = deduplicate_npqksG7nXsyGRBfJK1db1g((*(*c).graph).config, r);
						}
						LA37_: ;
						asgnRefNoCycle((void**) (&(*branch)._Ukind.S6.sons->data[i]), semCaseBranchSetElem_RDTieXCUQCagoHhpkNTH2w_2(c, t, (*r)._Ukind.S6.sons->data[((NI) 0)], covered));
						{
							NI j;
							NI colontmp_;
							NI i_2;
							j = (NI)0;
							colontmp_ = (NI)0;
							colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(r);
							i_2 = ((NI) 1);
							{
								while (1) {
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T42_;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T43_;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** T44_;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** T45_;
									if (!(i_2 < colontmp_)) goto LA41;
									j = i_2;
									T42_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
									T42_ = semCaseBranchSetElem_RDTieXCUQCagoHhpkNTH2w_2(c, t, (*r)._Ukind.S6.sons->data[j], covered);
									add_gCCf68XrWL79bKes6htzFjQ(branch, T42_);
									T43_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
									T44_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw**)0;
									T44_ = X5BX5D__YLEY3nLpUU2onE02S2OSlgast((*branch)._Ukind.S6.sons->data, ((*branch)._Ukind.S6.sons ? (*branch)._Ukind.S6.sons->Sup.len : 0), ((NI) 2));
									T45_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw**)0;
									T45_ = X5BX5D__YLEY3nLpUU2onE02S2OSlgast((*branch)._Ukind.S6.sons->data, ((*branch)._Ukind.S6.sons ? (*branch)._Ukind.S6.sons->Sup.len : 0), ((NI) 1));
									T43_ = (*T44_);
									unsureAsgnRef((void**) (&(*T44_)), (*T45_));
									unsureAsgnRef((void**) (&(*T45_)), T43_);
									i_2 += ((NI) 1);
								} LA41: ;
							}
						}
					}
					LA14_: ;
				}
				LA5_: ;
				checkForOverlap_0YalQdM3GQT9bIT0IUTSROw(c, t, i, branchIndex);
				res += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NI i_3;
		NI colontmp__2;
		NI colontmp__3;
		NI T47_;
		NI res_2;
		i_3 = (NI)0;
		colontmp__2 = (NI)0;
		colontmp__3 = (NI)0;
		colontmp__2 = (NI)(lastIndex + ((NI) 1));
		T47_ = (NI)0;
		T47_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(branch);
		colontmp__3 = (NI)(T47_ - ((NI) 2));
		res_2 = colontmp__2;
		{
			while (1) {
				if (!(res_2 <= colontmp__3)) goto LA49;
				i_3 = res_2;
				checkForOverlap_0YalQdM3GQT9bIT0IUTSROw(c, t, i_3, branchIndex);
				res_2 += ((NI) 1);
			} LA49: ;
		}
	}
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, semRecordCase_8W9bBv3X3MsW8TEC560FN4Q_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* check, NI* pos, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* rectype) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	NI64 covered;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
	NIM_BOOL chckCovered;
{	a = copyNode_lz8T1F9c0YwEOpUnrAUYgjg(n);
	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 2), (*(*c).graph).config);
	semRecordNodeAux_8W9bBv3X3MsW8TEC560FN4Q(c, (*n)._Ukind.S6.sons->data[((NI) 0)], check, pos, a, rectype);
	{
		if (!!(((*(*a)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA3_;
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_253));
		goto BeforeRet_;
	}
	LA3_: ;
	(*(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 18))%(sizeof(NU64)*8));
	covered = IL64(0);
	typ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*a)._Ukind.S6.sons->data[((NI) 0)]).typ, IL64(36239903259928592));
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = isOrdinalType_tcejMcLGk6ut4jAKBig68w(typ, NIM_FALSE);
		if (!!(T7_)) goto LA8_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_254));
	}
	goto LA5_;
	LA8_: ;
	{
		NI64 T11_;
		NimStringDesc* T14_;
		T11_ = (NI64)0;
		T11_ = firstOrd_4cSIntenL9aBXY6LAFsvXdQ((*(*c).graph).config, typ);
		if (!!((T11_ == IL64(0)))) goto LA12_;
		T14_ = (NimStringDesc*)0;
		T14_ = rawNewString(((*(*(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).s ? (*(*(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).s->Sup.len : 0) + 32);
appendString(T14_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_255));
appendString(T14_, (*(*(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).s);
appendString(T14_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_256));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T14_);
	}
	goto LA5_;
	LA12_: ;
	{
		NI64 T16_;
		NimStringDesc* T19_;
		T16_ = (NI64)0;
		T16_ = lengthOrd_4cSIntenL9aBXY6LAFsvXdQ_2((*(*c).graph).config, typ);
		if (!(IL64(32767) < T16_)) goto LA17_;
		T19_ = (NimStringDesc*)0;
		T19_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_257), (*(*(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).s);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T19_);
	}
	goto LA5_;
	LA17_: ;
	LA5_: ;
	chckCovered = NIM_TRUE;
	{
		NI i;
		NI colontmp_;
		NI T21_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T21_ = (NI)0;
		T21_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T21_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
				NI T27_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T28_;
				if (!(res <= colontmp_)) goto LA23;
				i = res;
				b = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*n)._Ukind.S6.sons->data[i]);
				addSon_gCCf68XrWL79bKes6htzFjQ_2(a, b);
				switch ((*(*n)._Ukind.S6.sons->data[i]).kind) {
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85):
				{
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(b, ((NI) 2), (*(*c).graph).config);
					semCaseBranch_qifAUGxpq0PltMRr0U3F5w(c, a, b, i, (&covered));
				}
				break;
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
				{
					chckCovered = NIM_FALSE;
					checkSonsLen_EezdXeDvu4rB7fR84AJZgw(b, ((NI) 1), (*(*c).graph).config);
				}
				break;
				default:
				{
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
				}
				break;
				}
				T27_ = (NI)0;
				T27_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(b);
				delSon_9c9c9b4wX9aUbrl9bXf1tGC9acyw(b, (NI)(T27_ - ((NI) 1)));
				T28_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T28_ = lastSon_esDJA7239bJDiq4UrX9aHCjg((*n)._Ukind.S6.sons->data[i]);
				semRecordNodeAux_8W9bBv3X3MsW8TEC560FN4Q(c, T28_, check, pos, b, rectype);
				res += ((NI) 1);
			} LA23: ;
		}
	}
	{
		NIM_BOOL T31_;
		NI64 T33_;
		T31_ = (NIM_BOOL)0;
		T31_ = chckCovered;
		if (!(T31_)) goto LA32_;
		T33_ = (NI64)0;
		T33_ = lengthOrd_4cSIntenL9aBXY6LAFsvXdQ_2((*(*c).graph).config, (*(*a)._Ukind.S6.sons->data[((NI) 0)]).typ);
		T31_ = !((covered == T33_));
		LA32_: ;
		if (!T31_) goto LA34_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_259));
	}
	LA34_: ;
	addSon_gCCf68XrWL79bKes6htzFjQ_2(father, a);
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, semRecordNodeAux_8W9bBv3X3MsW8TEC560FN4Q)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* check, NI* pos, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* rectype) {
{	{
		if (!(n == NIM_NIL)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 140):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch;
		branch = NIM_NIL;
		{
			NI i;
			NI colontmp_;
			NI T7_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T7_ = (NI)0;
			T7_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp_ = (NI)(T7_ - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
					NI idx;
					if (!(res <= colontmp_)) goto LA9;
					i = res;
					it = (*n)._Ukind.S6.sons->data[i];
					{
						if (!(it == NIM_NIL)) goto LA12_;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
					}
					LA12_: ;
					idx = ((NI) 1);
					switch ((*it).kind) {
					case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86):
					{
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(it, ((NI) 2), (*(*c).graph).config);
						{
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e;
							if (!((*c).inGenericContext == ((NI) 0))) goto LA17_;
							e = semConstBoolExpr_U3qPBy54f1PkCP8vmFMCRA_26(c, (*it)._Ukind.S6.sons->data[((NI) 0)]);
							{
								if (!!(((*e).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6)))) goto LA21_;
								internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*c).graph).config, (*e).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_252));
							}
							goto LA19_;
							LA21_: ;
							{
								NIM_BOOL T24_;
								T24_ = (NIM_BOOL)0;
								T24_ = !(((*e)._Ukind.S1.intVal == IL64(0)));
								if (!(T24_)) goto LA25_;
								T24_ = (branch == NIM_NIL);
								LA25_: ;
								if (!T24_) goto LA26_;
								branch = (*it)._Ukind.S6.sons->data[((NI) 1)];
							}
							goto LA19_;
							LA26_: ;
							LA19_: ;
						}
						goto LA15_;
						LA17_: ;
						{
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T29_;
							T29_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T29_ = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*it)._Ukind.S6.sons->data[((NI) 0)], 0);
							asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[((NI) 0)]), forceBool_U3qPBy54f1PkCP8vmFMCRA_3(c, T29_));
						}
						LA15_: ;
					}
					break;
					case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
					{
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(it, ((NI) 1), (*(*c).graph).config);
						{
							if (!(branch == NIM_NIL)) goto LA33_;
							branch = (*it)._Ukind.S6.sons->data[((NI) 0)];
						}
						LA33_: ;
						idx = ((NI) 0);
					}
					break;
					default:
					{
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
					}
					break;
					}
					{
						tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg newCheck;
						NI newPos;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* newf;
						if (!(((NI) 0) < (*c).inGenericContext)) goto LA38_;
						nimZeroMem((void*)(&newCheck), sizeof(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg));
						assign_a2uuNOWD29cFDODAp4nip0A((&newCheck), (&(*check)));
						newPos = (*pos);
						newf = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info);
						semRecordNodeAux_8W9bBv3X3MsW8TEC560FN4Q(c, (*it)._Ukind.S6.sons->data[idx], (&newCheck), (&newPos), newf, rectype);
						{
							NI T42_;
							T42_ = (NI)0;
							T42_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(newf);
							if (!(T42_ == ((NI) 1))) goto LA43_;
							asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[idx]), (*newf)._Ukind.S6.sons->data[((NI) 0)]);
						}
						goto LA40_;
						LA43_: ;
						{
							asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[idx]), newf);
						}
						LA40_: ;
					}
					LA38_: ;
					res += ((NI) 1);
				} LA9: ;
			}
		}
		{
			if (!(((NI) 0) < (*c).inGenericContext)) goto LA48_;
			addSon_gCCf68XrWL79bKes6htzFjQ_2(father, n);
		}
		goto LA46_;
		LA48_: ;
		{
			if (!!((branch == NIM_NIL))) goto LA51_;
			semRecordNodeAux_8W9bBv3X3MsW8TEC560FN4Q(c, branch, check, pos, father, rectype);
		}
		goto LA46_;
		LA51_: ;
		LA46_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		semRecordCase_8W9bBv3X3MsW8TEC560FN4Q_2(c, n, check, pos, father, rectype);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T59_;
			if (!!(((*father).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138)))) goto LA57_;
			T59_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T59_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info);
			addSon_gCCf68XrWL79bKes6htzFjQ_2(father, T59_);
		}
		LA57_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
		{
			if (!((*father).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138))) goto LA63_;
			a = father;
		}
		goto LA61_;
		LA63_: ;
		{
			a = copyNode_lz8T1F9c0YwEOpUnrAUYgjg(n);
		}
		LA61_: ;
		{
			NI i_2;
			NI colontmp__2;
			NI T67_;
			NI res_2;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			T67_ = (NI)0;
			T67_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__2 = (NI)(T67_ - ((NI) 1));
			res_2 = ((NI) 0);
			{
				while (1) {
					if (!(res_2 <= colontmp__2)) goto LA69;
					i_2 = res_2;
					semRecordNodeAux_8W9bBv3X3MsW8TEC560FN4Q(c, (*n)._Ukind.S6.sons->data[i_2], check, pos, a, rectype);
					res_2 += ((NI) 1);
				} LA69: ;
			}
		}
		{
			if (!!((a == father))) goto LA72_;
			addSon_gCCf68XrWL79bKes6htzFjQ_2(father, a);
		}
		LA72_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35):
	{
		NI length;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_2;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fieldOwner;
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 3), (*(*c).graph).config);
		length = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		a_2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		{
			NIM_BOOL T77_;
			T77_ = (NIM_BOOL)0;
			T77_ = !(((*father).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138)));
			if (!(T77_)) goto LA78_;
			T77_ = (((NI) 4) <= length);
			LA78_: ;
			if (!T77_) goto LA79_;
			a_2 = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info);
		}
		goto LA75_;
		LA79_: ;
		{
			a_2 = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (*n).info);
		}
		LA75_: ;
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA84_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_238));
		}
		LA84_: ;
		typ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		{
			if (!((*(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA88_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
			typ = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
		}
		goto LA86_;
		LA88_: ;
		{
			typ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
			propagateToOwner_Zokyl22yTzwcKmRycgQbKg(rectype, typ);
		}
		LA86_: ;
		{
			if (!(((NI) 0) < (*c).inGenericContext)) goto LA93_;
			fieldOwner = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
		}
		goto LA91_;
		LA93_: ;
		{
			fieldOwner = (*rectype).sym;
		}
		LA91_: ;
		{
			NI i_3;
			NI colontmp__3;
			NI T97_;
			NI res_3;
			i_3 = (NI)0;
			colontmp__3 = (NI)0;
			T97_ = (NI)0;
			T97_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__3 = (NI)(T97_ - ((NI) 3));
			res_3 = ((NI) 0);
			{
				while (1) {
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* f;
					if (!(res_3 <= colontmp__3)) goto LA99;
					i_3 = res_3;
					f = semIdentWithPragma_w0c4409bd9b4T2DSbUAAqpNA(c, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 19), (*n)._Ukind.S6.sons->data[i_3], 2);
					suggestSym_nUjK9c6nUBlRnsyc9a0Rm4jQsem((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[i_3]).info, f, &(*(*c).graph).usageSym, NIM_TRUE);
					asgnRefNoCycle((void**) (&(*f).typ), typ);
					(*f).position = (*pos);
					{
						NIM_BOOL T102_;
						NIM_BOOL T103_;
						T102_ = (NIM_BOOL)0;
						T103_ = (NIM_BOOL)0;
						T103_ = !((fieldOwner == NIM_NIL));
						if (!(T103_)) goto LA104_;
						T103_ = !(((96 & (*fieldOwner).flags) == 0));
						LA104_: ;
						T102_ = T103_;
						if (!(T102_)) goto LA105_;
						T102_ = ((*f).loc.r == NIM_NIL);
						LA105_: ;
						if (!T102_) goto LA106_;
						asgnRefNoCycle((void**) (&(*f).loc.r), rope_yShmEg9cffWxI7s5XzEKBow((*(*f).name).s));
						(*f).flags = ((*f).flags | (96 & (*fieldOwner).flags));
					}
					LA106_: ;
					(*pos) += ((NI) 1);
					{
						NIM_BOOL T110_;
						NimStringDesc* T113_;
						T110_ = (NIM_BOOL)0;
						T110_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg(check, (*(*f).name).Sup.id);
						if (!T110_) goto LA111_;
						T113_ = (NimStringDesc*)0;
						T113_ = rawNewString(((*(*f).name).s ? (*(*f).name).s->Sup.len : 0) + 23);
appendString(T113_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_83));
appendString(T113_, (*(*f).name).s);
appendString(T113_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
						localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[i_3]).info, T113_);
					}
					LA111_: ;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T118_;
						if (!((*a_2).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA116_;
						T118_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T118_ = newSymNode_UWZXukHA5As9aCftRHbafBg(f);
						addSon_gCCf68XrWL79bKes6htzFjQ_2(father, T118_);
					}
					goto LA114_;
					LA116_: ;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T120_;
						T120_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T120_ = newSymNode_UWZXukHA5As9aCftRHbafBg(f);
						addSon_gCCf68XrWL79bKes6htzFjQ_2(a_2, T120_);
					}
					LA114_: ;
					{
						if (!(((*(*(*c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA123_;
						nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*c).graph).config, (*f).info, f, (*f).kind);
					}
					LA123_: ;
					res_3 += ((NI) 1);
				} LA99: ;
			}
		}
		{
			if (!!(((*a_2).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA127_;
			addSon_gCCf68XrWL79bKes6htzFjQ_2(father, a_2);
		}
		LA127_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		{
			NIM_BOOL T132_;
			NimStringDesc* T135_;
			T132_ = (NIM_BOOL)0;
			T132_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg(check, (*(*(*n)._Ukind.S4.sym).name).Sup.id);
			if (!T132_) goto LA133_;
			T135_ = (NimStringDesc*)0;
			T135_ = rawNewString(((*(*(*n)._Ukind.S4.sym).name).s ? (*(*(*n)._Ukind.S4.sym).name).s->Sup.len : 0) + 23);
appendString(T135_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_83));
appendString(T135_, (*(*(*n)._Ukind.S4.sym).name).s);
appendString(T135_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T135_);
		}
		LA133_: ;
		addSon_gCCf68XrWL79bKes6htzFjQ_2(father, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1):
	{
	}
	break;
	default:
	{
		illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
	}
	break;
	}
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, semObjectTypeForInheritedGenericInst_hPOulSjdjhT7Htg9b0wXuDg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg check;
	NI pos;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* realBase;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* newf;
	nimZeroMem((void*)(&check), sizeof(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&check));
	pos = ((NI) 0);
	realBase = (*t).sons->data[((NI) 0)];
	base = skipTypesOrNil_7vZ9a9bub9bucX5E73hsr9cjvg_2(realBase, IL64(36239903266179344));
	{
		NimStringDesc* T5_;
		if (!(base == 0)) goto LA3_;
		T5_ = (NimStringDesc*)0;
		T5_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_74), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_247));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T5_);
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* concreteBase;
		concreteBase = skipGenericInvocation_hkZ6Hsm3Bu1SSKpvfSugGgsem(base);
		{
			NIM_BOOL T9_;
			T9_ = (NIM_BOOL)0;
			T9_ = ((*concreteBase).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17));
			if (!(T9_)) goto LA10_;
			T9_ = !((((*concreteBase).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 2))&63U)))!=0));
			LA10_: ;
			if (!T9_) goto LA11_;
			addInheritedFields_7Ogd7OW2nM9axopp0e6LaMw(c, (&check), (&pos), concreteBase);
		}
		goto LA7_;
		LA11_: ;
		{
			{
				if (!!(((*concreteBase).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50)))) goto LA16_;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_251));
			}
			LA16_: ;
		}
		LA7_: ;
	}
	LA1_: ;
	newf = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info);
	semRecordNodeAux_8W9bBv3X3MsW8TEC560FN4Q(c, (*t).n, (&check), (&pos), newf, t);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semGeneric_p0lr3JXE4IdHVsfvGgDDIg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tx;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		tyArray_Re75IspeoxXy2oCZHwcRrA T5_;
		NimStringDesc* T6_;
		NimStringDesc* T7_;
		if (!((*s).typ == NIM_NIL)) goto LA3_;
		nimZeroMem((void*)T5_, sizeof(tyArray_Re75IspeoxXy2oCZHwcRrA));
		T5_[0] = copyString((*(*s).name).s);
		T6_ = (NimStringDesc*)0;
		T6_ = substr_9bUFQ4OV1temcDF0GZp317g(reprEnum((NI)(*s).kind, (&NTI_cNCW9acsSznmEccl1fgQwkw_)), ((NI) 2));
		T5_[1] = nsuToLowerAsciiStr(T6_);
		T7_ = (NimStringDesc*)0;
		T7_ = nsuFormatOpenArray(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_239), T5_, 2);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T7_);
		result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
		goto BeforeRet_;
	}
	LA3_: ;
	t = (*s).typ;
	{
		NIM_BOOL T10_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T12_;
		T10_ = (NIM_BOOL)0;
		T10_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54));
		if (!(T10_)) goto LA11_;
		T12_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T12_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(t);
		T10_ = ((*T12_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10));
		LA11_: ;
		if (!T10_) goto LA13_;
		t = base_BFFuB9cFDZ89c6QWZqEFAtdA(t);
	}
	LA13_: ;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9), prev, c);
	addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, t);
	{
		if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 30))) goto LA17_;
		{
			NI i;
			NI colontmp_;
			NI T20_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T20_ = (NI)0;
			T20_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp_ = (NI)(T20_ - ((NI) 1));
			res = ((NI) 1);
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* elem;
					if (!(res <= colontmp_)) goto LA22;
					i = res;
					elem = semGenericParamInInvocation_dGBWDMhChCbFdqZsqOlYQA_2(c, (*n)._Ukind.S6.sons->data[i]);
					{
						if (!(elem == 0)) goto LA25_;
						{
							NimStringDesc* T31_;
							if (!NIM_TRUE) goto LA29_;
							T31_ = (NimStringDesc*)0;
							T31_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_240);
							internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T31_);
						}
						LA29_: ;
						rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, elem);
					}
					goto LA23_;
					LA25_: ;
					{
						addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, elem);
					}
					LA23_: ;
					res += ((NI) 1);
				} LA22: ;
			}
		}
		goto BeforeRet_;
	}
	goto LA15_;
	LA17_: ;
	{
		NimStringDesc* T36_;
		if (!!(((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10)))) goto LA34_;
		T36_ = (NimStringDesc*)0;
		T36_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_241), (*(*s).name).s);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T36_);
		result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
		goto BeforeRet_;
	}
	goto LA15_;
	LA34_: ;
	{
		tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA m;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T38_;
		NIM_BOOL isConcrete;
		nimZeroMem((void*)(&m), sizeof(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA));
		newCandidate_9bunQe3vWF3D9cR5HrL718NQ(c, t, (&m));
		m.isNoCall = NIM_TRUE;
		T38_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T38_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
		matches_PbP19b36C8eDxA2wQt6exGQ_2(c, n, T38_, (&m));
		{
			NimStringDesc* err;
			NimStringDesc* T43_;
			NimStringDesc* T44_;
			NimStringDesc* T45_;
			NimStringDesc* T46_;
			if (!!((m.state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1)))) goto LA41_;
			T43_ = (NimStringDesc*)0;
			T44_ = (NimStringDesc*)0;
			T44_ = typeToString_QlvraUan7WbHowhAbvDvdA(t, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T45_ = (NimStringDesc*)0;
			T45_ = describeArgs_ecpCiCj0vYckEVlm9brabQQ(c, n, ((NI) 1), ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T46_ = (NimStringDesc*)0;
			T46_ = describeArgs_ecpCiCj0vYckEVlm9brabQQ(c, (*t).n, ((NI) 0), ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T43_ = rawNewString((T44_ ? T44_->Sup.len : 0) + (T45_ ? T45_->Sup.len : 0) + (T46_ ? T46_->Sup.len : 0) + 44);
appendString(T43_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_242));
appendString(T43_, T44_);
appendString(T43_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_243));
appendString(T43_, T45_);
appendString(T43_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_244));
appendString(T43_, T46_);
appendString(T43_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_245));
			err = T43_;
			localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), err);
			result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
			goto BeforeRet_;
		}
		LA41_: ;
		isConcrete = NIM_TRUE;
		{
			NI i_2;
			NI colontmp__2;
			NI i_3;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(m.call);
			i_3 = ((NI) 1);
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
					if (!(i_3 < colontmp__2)) goto LA49;
					i_2 = i_3;
					typ = (*(*m.call)._Ukind.S6.sons->data[i_2]).typ;
					{
						NIM_BOOL T52_;
						T52_ = (NIM_BOOL)0;
						T52_ = ((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
						if (!(T52_)) goto LA53_;
						T52_ = ((*(*typ).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0));
						LA53_: ;
						if (!T52_) goto LA54_;
						isConcrete = NIM_FALSE;
						{
							if (!(typ == 0)) goto LA58_;
							{
								NimStringDesc* T64_;
								if (!NIM_TRUE) goto LA62_;
								T64_ = (NimStringDesc*)0;
								T64_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_240);
								internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T64_);
							}
							LA62_: ;
							rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, typ);
						}
						goto LA56_;
						LA58_: ;
						{
							addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, typ);
						}
						LA56_: ;
					}
					goto LA50_;
					LA54_: ;
					{
						typ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(typ, 256);
						{
							NIM_BOOL T69_;
							T69_ = (NIM_BOOL)0;
							T69_ = containsGenericType_YPjOkGV9axAnGR3UfLeWZ1g(typ);
							if (!T69_) goto LA70_;
							isConcrete = NIM_FALSE;
						}
						LA70_: ;
						{
							if (!(typ == 0)) goto LA74_;
							{
								NimStringDesc* T80_;
								if (!NIM_TRUE) goto LA78_;
								T80_ = (NimStringDesc*)0;
								T80_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_240);
								internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T80_);
							}
							LA78_: ;
							rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, typ);
						}
						goto LA72_;
						LA74_: ;
						{
							addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, typ);
						}
						LA72_: ;
					}
					LA50_: ;
					i_3 += ((NI) 1);
				} LA49: ;
			}
		}
		{
			if (!isConcrete) goto LA84_;
			{
				NIM_BOOL T88_;
				NimStringDesc* T92_;
				T88_ = (NIM_BOOL)0;
				T88_ = ((*s).ast == NIM_NIL);
				if (!(T88_)) goto LA89_;
				T88_ = !(((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54)));
				LA89_: ;
				if (!T88_) goto LA90_;
				T92_ = (NimStringDesc*)0;
				T92_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_36), (*(*s).name).s);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T92_);
				result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
			}
			goto LA86_;
			LA90_: ;
			{
				result = instGenericContainer_pqNRK9bvN0hfgmWeHuyytbQ(c, (*n).info, result, NIM_FALSE);
			}
			LA86_: ;
		}
		LA84_: ;
	}
	LA15_: ;
	tx = skipTypes_lCkL59aq3ht3am1vLQUjzPw(result, IL64(36239903266220304), ((NI) 50));
	{
		NimStringDesc* T98_;
		NimStringDesc* T99_;
		if (!(tx == 0)) goto LA96_;
		T98_ = (NimStringDesc*)0;
		T98_ = typeToString_QlvraUan7WbHowhAbvDvdA((*result).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		T99_ = (NimStringDesc*)0;
		T99_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_246), T98_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T99_);
		result = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
		goto BeforeRet_;
	}
	LA96_: ;
	{
		NIM_BOOL T102_;
		NIM_BOOL T103_;
		T102_ = (NIM_BOOL)0;
		T103_ = (NIM_BOOL)0;
		T103_ = !((tx == result));
		if (!(T103_)) goto LA104_;
		T103_ = ((*tx).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17));
		LA104_: ;
		T102_ = T103_;
		if (!(T102_)) goto LA105_;
		T102_ = !(((*tx).sons->data[((NI) 0)] == NIM_NIL));
		LA105_: ;
		if (!T102_) goto LA106_;
		semObjectTypeForInheritedGenericInst_hPOulSjdjhT7Htg9b0wXuDg(c, n, tx);
	}
	LA106_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semObjectNode_VyBZhWPO9cyRyURhXkNKu7w_12)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg check;
	NI pos;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* realBase;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 0))) goto LA4_;
		result = newConstraint_3OZ81tHhhvQxNS5O7XIa9aQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17));
		goto BeforeRet_;
	}
	LA4_: ;
	nimZeroMem((void*)(&check), sizeof(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&check));
	pos = ((NI) 0);
	base = NIM_NIL;
	realBase = NIM_NIL;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 3), (*(*c).graph).config);
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA8_;
		realBase = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*(*n)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
		base = skipTypesOrNil_7vZ9a9bub9bucX5E73hsr9cjvg_2(realBase, IL64(36239903266179344));
		{
			if (!(base == 0)) goto LA12_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_263));
		}
		goto LA10_;
		LA12_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* concreteBase;
			concreteBase = skipGenericInvocation_hkZ6Hsm3Bu1SSKpvfSugGgsem(base);
			{
				NIM_BOOL T17_;
				T17_ = (NIM_BOOL)0;
				T17_ = ((*concreteBase).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17) || (*concreteBase).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12) || (*concreteBase).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9));
				if (!(T17_)) goto LA18_;
				T17_ = !((((*concreteBase).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 2))&63U)))!=0));
				LA18_: ;
				if (!T17_) goto LA19_;
				{
					if (!((*concreteBase).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA23_;
					addInheritedFields_7Ogd7OW2nM9axopp0e6LaMw(c, (&check), (&pos), concreteBase);
				}
				LA23_: ;
			}
			goto LA15_;
			LA19_: ;
			{
				{
					NimStringDesc* T30_;
					NimStringDesc* T31_;
					if (!!(((*concreteBase).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50)))) goto LA28_;
					T30_ = (NimStringDesc*)0;
					T31_ = (NimStringDesc*)0;
					T31_ = typeToString_QlvraUan7WbHowhAbvDvdA(realBase, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
					T30_ = rawNewString((T31_ ? T31_->Sup.len : 0) + 88);
appendString(T30_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_264));
appendString(T30_, T31_);
appendString(T30_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_265));
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, T30_);
				}
				LA28_: ;
				base = NIM_NIL;
				realBase = NIM_NIL;
			}
			LA15_: ;
		}
		LA10_: ;
	}
	LA8_: ;
	{
		if (!!(((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 133)))) goto LA34_;
		internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_266));
	}
	LA34_: ;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17), prev, c);
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, realBase);
	{
		if (!((*result).n == 0)) goto LA38_;
		asgnRefNoCycle((void**) (&(*result).n), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info));
	}
	goto LA36_;
	LA38_: ;
	{
		addInheritedFields_7Ogd7OW2nM9axopp0e6LaMw(c, (&check), (&pos), result);
	}
	LA36_: ;
	semRecordNodeAux_8W9bBv3X3MsW8TEC560FN4Q(c, (*n)._Ukind.S6.sons->data[((NI) 2)], (&check), (&pos), (*result).n, result);
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T45_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T46_;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA43_;
		T45_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T45_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_267));
		T46_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T46_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T45_, (*n).info);
		s = newSymS_sxL9bg3I9cVytmWlUkzsHDaA_2(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7), T46_, c);
		asgnRefNoCycle((void**) (&(*s).typ), result);
		pragma_av9bQYmoLtJKLA6ueIgHxoA(c, s, (*n)._Ukind.S6.sons->data[((NI) 0)], TM_rF9caJawfOjYTjsgLVUSGFA_268);
	}
	LA43_: ;
	{
		NIM_BOOL T49_;
		T49_ = (NIM_BOOL)0;
		T49_ = (base == NIM_NIL);
		if (!(T49_)) goto LA50_;
		T49_ = !((((*result).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 3))&63U)))!=0));
		LA50_: ;
		if (!T49_) goto LA51_;
		(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 2))%(sizeof(NU64)*8));
	}
	LA51_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConceptBody_U3qPBy54f1PkCP8vmFMCRA_27)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w ctx;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&ctx), sizeof(tyObject_GenericCtx_ldEK1fsP9cZbQbUrs7bxs0w));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&ctx.toMixin));
	result = semGenericStmt_KTgYfJqnXmLWnl7vvw9c2lA(c, n, 8, (&ctx));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semTypeClass_VyBZhWPO9cyRyURhXkNKu7w_13)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pragmas;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* inherited;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* candidateTypeSlot;
	tySequence_Ef05srmQTDulnBdXR4Ja6Q* T1_;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T11_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	pragmas = (*n)._Ukind.S6.sons->data[((NI) 1)];
	inherited = (*n)._Ukind.S6.sons->data[((NI) 2)];
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52), prev, c);
	owner = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
	T1_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
	T1_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
	asgnRefNoCycle((void**) (&T1_->data[0]), errorType_5olHzpuoNS9asyp0iz7j62Q(c));
	candidateTypeSlot = newTypeWithSons_9bMWuh2Si4sNtAnCubzpXcA(owner, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4), T1_);
	if ((*result).sons) { nimGCunrefNoCycle((*result).sons); (*result).sons = NIM_NIL; }
	(*result).sons = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeqRC1((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
	asgnRefNoCycle((void**) (&(*result).sons->data[0]), candidateTypeSlot);
	asgnRefNoCycle((void**) (&(*result).n), n);
	{
		if (!!(((*inherited).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA4_;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
			tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* colontmp_;
			NI i;
			NI L;
			NI T7_;
			n_2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			colontmp_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
			colontmp_ = (*inherited)._Ukind.S6.sons;
			i = ((NI) 0);
			T7_ = (colontmp_ ? colontmp_->Sup.len : 0);
			L = T7_;
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
					NI T10_;
					if (!(i < L)) goto LA9;
					n_2 = colontmp_->data[i];
					typ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, n_2, NIM_NIL);
					asgnRefNoCycle((void**) (&(*result).sons), (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) incrSeqV3(&((*result).sons)->Sup, (&NTI_Ef05srmQTDulnBdXR4Ja6Q_)));
					T10_ = (*result).sons->Sup.len++;
					asgnRefNoCycle((void**) (&(*result).sons->data[T10_]), typ);
					i += ((NI) 1);
				} LA9: ;
			}
		}
	}
	LA4_: ;
	T11_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T11_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* param;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* colontmp__2;
		param = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		colontmp__2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		colontmp__2 = (*n)._Ukind.S6.sons->data[((NI) 0)];
		{
			NI i_2;
			NI colontmp__3;
			NI i_3;
			i_2 = (NI)0;
			colontmp__3 = (NI)0;
			colontmp__3 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(colontmp__2);
			i_3 = ((NI) 0);
			{
				while (1) {
					if (!(i_3 < colontmp__3)) goto LA15;
					i_2 = i_3;
					param = (*colontmp__2)._Ukind.S6.sons->data[i_2];
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* dummyName;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* dummyType;
						tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag modifier;
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* dummyParam;
						tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw T41_;
						dummyName = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						dummyType = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
						switch ((*param).kind) {
						case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 143):
						{
							modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23);
						}
						break;
						case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 141):
						{
							modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22);
						}
						break;
						case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 142):
						{
							modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21);
						}
						break;
						case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 137):
						{
							modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60);
						}
						break;
						case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 132):
						{
							modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8);
						}
						break;
						default:
						{
							modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0);
						}
						break;
						}
						{
							if (!!((modifier == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0)))) goto LA25_;
							dummyName = (*param)._Ukind.S6.sons->data[((NI) 0)];
							dummyType = makeTypeWithModifier_0HcxfShQg3TcTn6Hj8uKKg(c, modifier, candidateTypeSlot);
							{
								if (!(modifier == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA29_;
								(*dummyType).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 27))%(sizeof(NU64)*8));
							}
							LA29_: ;
						}
						goto LA23_;
						LA25_: ;
						{
							dummyName = param;
							dummyType = candidateTypeSlot;
						}
						LA23_: ;
						{
							if (!((*dummyName).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA34_;
							goto LA16;
						}
						LA34_: ;
						{
							NimStringDesc* T40_;
							if (!!(((*dummyName).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2)))) goto LA38_;
							T40_ = (NimStringDesc*)0;
							T40_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_269);
							internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T40_);
						}
						LA38_: ;
						T41_ = (tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw)0;
						{
							if (!(modifier == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA44_;
							T41_ = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7);
						}
						goto LA42_;
						LA44_: ;
						{
							T41_ = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 8);
						}
						LA42_: ;
						dummyParam = newSym_ZQfOwiQo63qLga19cuF5r9cQ(T41_, (*dummyName)._Ukind.S5.ident, owner, (*param).info, 0);
						asgnRefNoCycle((void**) (&(*dummyParam).typ), dummyType);
						(*dummyParam).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
						addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, dummyParam);
					} LA16: ;
					i_3 += ((NI) 1);
				} LA15: ;
			}
		}
	}
	asgnRefNoCycle((void**) (&(*(*result).n)._Ukind.S6.sons->data[((NI) 3)]), semConceptBody_U3qPBy54f1PkCP8vmFMCRA_27(c, (*n)._Ukind.S6.sons->data[((NI) 3)]));
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semVarType_VyBZhWPO9cyRyURhXkNKu7w_14)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NI T3_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T6_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 1))) goto LA4_;
		result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23), prev, c);
		T6_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T6_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
		base = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(T6_, 256);
		{
			if (!((*base).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23))) goto LA9_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_237));
			base = (*base).sons->data[((NI) 0)];
		}
		LA9_: ;
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, base);
	}
	goto LA1_;
	LA4_: ;
	{
		result = newConstraint_3OZ81tHhhvQxNS5O7XIa9aQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23));
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semDistinct_VyBZhWPO9cyRyURhXkNKu7w_15)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T6_;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		if (!(T3_ == ((NI) 0))) goto LA4_;
		result = newConstraint_3OZ81tHhhvQxNS5O7XIa9aQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13));
		goto BeforeRet_;
	}
	LA4_: ;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13), prev, c);
	T6_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T6_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
	addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, T6_);
	{
		NI T9_;
		T9_ = (NI)0;
		T9_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		if (!(((NI) 1) < T9_)) goto LA10_;
		asgnRefNoCycle((void**) (&(*result).n), (*n)._Ukind.S6.sons->data[((NI) 1)]);
	}
	LA10_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semProcTypeWithScope_iRXxEADPfCxgmm2q7sy9b9bQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T2_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T3_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	result = semProcTypeNode_Wwai8c2OJJtA0TZ9bSUtsXQ(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL, prev, kind, NIM_TRUE);
	(*result).callConv = ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8);
	T2_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T2_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_267));
	T3_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T3_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T2_, (*n).info);
	s = newSymS_sxL9bg3I9cVytmWlUkzsHDaA_2(kind, T3_, c);
	asgnRefNoCycle((void**) (&(*s).typ), result);
	{
		NIM_BOOL T6_;
		NI T8_;
		T6_ = (NIM_BOOL)0;
		T6_ = !(((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)));
		if (!(T6_)) goto LA7_;
		T8_ = (NI)0;
		T8_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*n)._Ukind.S6.sons->data[((NI) 1)]);
		T6_ = (((NI) 0) < T8_);
		LA7_: ;
		if (!T6_) goto LA9_;
		pragma_av9bQYmoLtJKLA6ueIgHxoA(c, s, (*n)._Ukind.S6.sons->data[((NI) 1)], TM_rF9caJawfOjYTjsgLVUSGFA_270);
		setEffectsForProcType_anXKpeIcfo8QOiHQxzurxw((*c).graph, result, (*n)._Ukind.S6.sons->data[((NI) 1)]);
	}
	LA9_: ;
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semEnum_VyBZhWPO9cyRyURhXkNKu7w_16)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	NI64 counter;
	NI64 x;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* e;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
	NIM_BOOL isPure;
	NIM_BOOL T19_;
	tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA symbols;
	NIM_BOOL hasNull;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 0))) goto LA4_;
		result = newConstraint_3OZ81tHhhvQxNS5O7XIa9aQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14));
		goto BeforeRet_;
	}
	goto LA1_;
	LA4_: ;
	{
		NI T7_;
		T7_ = (NI)0;
		T7_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T7_ == ((NI) 1))) goto LA8_;
		result = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
		goto BeforeRet_;
	}
	goto LA1_;
	LA8_: ;
	LA1_: ;
	counter = (NI64)0;
	x = (NI64)0;
	e = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	base = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	counter = IL64(0);
	base = NIM_NIL;
	result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 150), (*n).info));
	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 1), (*(*c).graph).config);
	{
		NI64 T18_;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA12_;
		base = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
		{
			if (!!(((*base).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14)))) goto LA16_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_271));
		}
		LA16_: ;
		T18_ = (NI64)0;
		T18_ = lastOrd_PcKlk9cRVtdVcuEFs9bZTdAQ((*(*c).graph).config, base, NIM_FALSE);
		counter = (NI64)(T18_ + IL64(1));
	}
	LA12_: ;
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, base);
	T19_ = (NIM_BOOL)0;
	T19_ = !(((*result).sym == NIM_NIL));
	if (!(T19_)) goto LA20_;
	T19_ = (((*(*result).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 9))&63U)))!=0);
	LA20_: ;
	isPure = T19_;
	nimZeroMem((void*)(&symbols), sizeof(tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA));
	{
		if (!isPure) goto LA23_;
		initStrTable_dDG9ckEId9ai4WID9aLQcRYNg((&symbols));
	}
	LA23_: ;
	hasNull = NIM_FALSE;
	{
		NI i;
		NI colontmp_;
		NI T26_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T26_ = (NI)0;
		T26_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T26_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T76_;
				if (!(res <= colontmp_)) goto LA28;
				i = res;
				switch ((*(*n)._Ukind.S6.sons->data[i]).kind) {
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 151):
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* strVal;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T30_;
					e = newSymS_sxL9bg3I9cVytmWlUkzsHDaA_2(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 20), (*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)], c);
					v = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, (*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 1)]);
					strVal = NIM_NIL;
					T30_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T30_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*v).typ, IL64(36099165763184656));
					switch ((*T30_).kind) {
					case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18):
					{
						{
							NI T34_;
							T34_ = (NI)0;
							T34_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(v);
							if (!(T34_ == ((NI) 2))) goto LA35_;
							strVal = (*v)._Ukind.S6.sons->data[((NI) 1)];
							{
								tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T39_;
								T39_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
								T39_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*strVal).typ, IL64(36099165763184912));
								if (!((*T39_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28) || (*T39_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 29))) goto LA40_;
								x = getOrdValue_k4X4XP9cdVXYioHD9akA9bVbQ((*v)._Ukind.S6.sons->data[((NI) 0)]);
							}
							goto LA37_;
							LA40_: ;
							{
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*strVal).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_175));
							}
							LA37_: ;
						}
						goto LA32_;
						LA35_: ;
						{
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*v).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_272));
						}
						LA32_: ;
					}
					break;
					case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28):
					case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 29):
					{
						strVal = v;
						x = counter;
					}
					break;
					default:
					{
						x = getOrdValue_k4X4XP9cdVXYioHD9akA9bVbQ(v);
					}
					break;
					}
					{
						if (!!((i == ((NI) 1)))) goto LA48_;
						{
							if (!!((x == counter))) goto LA52_;
							(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 5))%(sizeof(NU64)*8));
						}
						LA52_: ;
						{
							NimStringDesc* T58_;
							if (!(x < counter)) goto LA56_;
							T58_ = (NimStringDesc*)0;
							T58_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_273), (*(*e).name).s);
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[i]).info, T58_);
							x = counter;
						}
						LA56_: ;
					}
					LA48_: ;
					asgnRefNoCycle((void**) (&(*e).ast), strVal);
					counter = x;
				}
				break;
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
				{
					e = (*(*n)._Ukind.S6.sons->data[i])._Ukind.S4.sym;
				}
				break;
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
				{
					e = newSymS_sxL9bg3I9cVytmWlUkzsHDaA_2(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 20), (*n)._Ukind.S6.sons->data[i], c);
				}
				break;
				default:
				{
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw((*n)._Ukind.S6.sons->data[i], (*(*c).graph).config);
				}
				break;
				}
				asgnRefNoCycle((void**) (&(*e).typ), result);
				(*e).position = ((NI) (counter));
				{
					if (!((*e).position == ((NI) 0))) goto LA64_;
					hasNull = NIM_TRUE;
				}
				LA64_: ;
				{
					NIM_BOOL T68_;
					T68_ = (NIM_BOOL)0;
					T68_ = !(((*result).sym == NIM_NIL));
					if (!(T68_)) goto LA69_;
					T68_ = (((*(*result).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 1))&63U)))!=0);
					LA69_: ;
					if (!T68_) goto LA70_;
					(*e).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
					(*e).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 1))%(sizeof(NU64)*8));
					{
						if (!!(isPure)) goto LA74_;
						strTableAdd_bNTI8uh3GP35hzyXvGA8Xg((&(*(*c).module)._Ukind.S3.tab), e);
					}
					LA74_: ;
				}
				LA70_: ;
				T76_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T76_ = newSymNode_UWZXukHA5As9aCftRHbafBg(e);
				addSon_gCCf68XrWL79bKes6htzFjQ_2((*result).n, T76_);
				{
					if (!(((*(*(*c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA79_;
					nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*c).graph).config, (*e).info, e, (*e).kind);
				}
				LA79_: ;
				{
					if (!!((((*e).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0))) goto LA83_;
					{
						if (!!(isPure)) goto LA87_;
						addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, e);
					}
					goto LA85_;
					LA87_: ;
					{
						importPureEnumField_XycMcmD5Ww9bvRloNQSVksA(c, e);
					}
					LA85_: ;
				}
				LA83_: ;
				{
					NIM_BOOL T92_;
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* conflict;
					T92_ = (NIM_BOOL)0;
					T92_ = isPure;
					if (!(T92_)) goto LA93_;
					conflict = strTableInclReportConflict_ZoAkSuAU8XaRvefco9bS25Q((&symbols), e, NIM_FALSE);
					T92_ = !((conflict == NIM_NIL));
					LA93_: ;
					if (!T92_) goto LA94_;
					wrongRedefinition_5xD0f9cR8frDSNZXLBtBo7A(c, (*e).info, (*(*e).name).s, (*conflict).info);
				}
				LA94_: ;
				counter += ((NI) 1);
				res += ((NI) 1);
			} LA28: ;
		}
	}
	{
		if (!!(hasNull)) goto LA98_;
		(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 18))%(sizeof(NU64)*8));
	}
	LA98_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semStmtListType_VyBZhWPO9cyRyURhXkNKu7w_17)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	NI length;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 1), (*(*c).graph).config);
	length = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
	{
		NI i;
		NI colontmp_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = (NI)(length - ((NI) 2));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA3;
				i = res;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3(c, (*n)._Ukind.S6.sons->data[i], 0));
				res += ((NI) 1);
			} LA3: ;
		}
	}
	{
		if (!(((NI) 0) < length)) goto LA6_;
		result = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))], prev);
		asgnRefNoCycle((void**) (&(*n).typ), result);
		asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))]).typ), result);
	}
	goto LA4_;
	LA6_: ;
	{
		result = NIM_NIL;
	}
	LA4_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semBlockType_VyBZhWPO9cyRyURhXkNKu7w_18)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	(*(*c).p).nestedBlockCounter += ((NI) 1);
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T6_;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) || (*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA4_;
		T6_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T6_ = newSymS_sxL9bg3I9cVytmWlUkzsHDaA_2(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 22), (*n)._Ukind.S6.sons->data[((NI) 0)], c);
		addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, T6_);
	}
	LA4_: ;
	result = semStmtListType_VyBZhWPO9cyRyURhXkNKu7w_17(c, (*n)._Ukind.S6.sons->data[((NI) 1)], prev);
	asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ), result);
	asgnRefNoCycle((void**) (&(*n).typ), result);
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	(*(*c).p).nestedBlockCounter -= ((NI) 1);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, semTypeNode_VyBZhWPO9cyRyURhXkNKu7w)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* prev) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = NIM_NIL;
	(*c).inTypeContext += ((NI) 1);
	{
		if (!((*(*(*c).graph).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 14))) goto LA3_;
		suggestExpr_utpC2gr4BrwN59bDcE4of4w(c, n);
	}
	LA3_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 132):
	{
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 1), (*(*c).graph).config);
		result = semTypeof_VyBZhWPO9cyRyURhXkNKu7w_2(c, (*n)._Ukind.S6.sons->data[((NI) 0)], prev);
		{
			if (!((*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA9_;
			(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 28))%(sizeof(NU64)*8));
		}
		LA9_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37):
	{
		{
			NI T14_;
			T14_ = (NI)0;
			T14_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			if (!(T14_ == ((NI) 1))) goto LA15_;
			result = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], prev);
		}
		goto LA12_;
		LA15_: ;
		{
			result = semAnonTuple_VyBZhWPO9cyRyURhXkNKu7w_3(c, n, prev);
		}
		LA12_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160):
	{
		result = semAnonTuple_VyBZhWPO9cyRyURhXkNKu7w_3(c, n, prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
		x = (*n)._Ukind.S6.sons->data[((NI) 0)];
		switch ((*x).kind) {
		case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
		{
			ident = (*x)._Ukind.S5.ident;
		}
		break;
		case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
		{
			ident = (*(*x)._Ukind.S4.sym).name;
		}
		break;
		case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56):
		case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 57):
		{
			ident = (*(*(*x)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name;
		}
		break;
		default:
		{
			ident = NIM_NIL;
		}
		break;
		}
		{
			NIM_BOOL T26_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
			T26_ = (NIM_BOOL)0;
			T26_ = !((ident == NIM_NIL));
			if (!(T26_)) goto LA27_;
			T26_ = eqStrings((*ident).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_15));
			LA27_: ;
			if (!T26_) goto LA28_;
			b = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), (*n).info);
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
				i_2 = ((NI) 1);
				{
					while (1) {
						if (!(i_2 < colontmp_)) goto LA32;
						i = i_2;
						add_gCCf68XrWL79bKes6htzFjQ(b, (*n)._Ukind.S6.sons->data[i]);
						i_2 += ((NI) 1);
					} LA32: ;
				}
			}
			result = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, b, prev);
		}
		goto LA24_;
		LA28_: ;
		{
			NIM_BOOL T34_;
			T34_ = (NIM_BOOL)0;
			T34_ = !((ident == NIM_NIL));
			if (!(T34_)) goto LA35_;
			T34_ = ((*ident).Sup.id == ((NI) 71));
			LA35_: ;
			if (!T34_) goto LA36_;
			result = semRangeAux_VyBZhWPO9cyRyURhXkNKu7w_4(c, n, prev);
		}
		goto LA24_;
		LA36_: ;
		{
			NIM_BOOL T39_;
			NI T41_;
			T39_ = (NIM_BOOL)0;
			T39_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23));
			if (!(T39_)) goto LA40_;
			T41_ = (NI)0;
			T41_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			T39_ = (T41_ == ((NI) 2));
			LA40_: ;
			if (!T39_) goto LA42_;
			result = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], prev);
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T46_;
				T46_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T46_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(result, IL64(70368744179728));
				if (!((*T46_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9) && (*T46_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10) || (*T46_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12) || (*T46_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21) && (*T46_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22) || (*T46_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25) && (*T46_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 26) || (*T46_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 29) || (*T46_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50))) goto LA47_;
				{
					if (!(((*result).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 17))&63U)))!=0)) goto LA51_;
					result = freshType_qZDdYKlnG87DemGcaKuMLwsem(result, prev);
					(*result).flags &= ~(((NU64)1) << ((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 17)) % (sizeof(NU64)*8)));
				}
				LA51_: ;
			}
			goto LA44_;
			LA47_: ;
			{
				localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_20));
			}
			LA44_: ;
		}
		goto LA24_;
		LA42_: ;
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2) || (*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3) || (*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53) || (*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 57) || (*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56)))) goto LA55_;
			result = semTypeExpr_VyBZhWPO9cyRyURhXkNKu7w_5(c, n, prev);
		}
		goto LA24_;
		LA55_: ;
		{
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* op;
			op = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
			{
				NIM_BOOL T60_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t1;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t2;
				T60_ = (NIM_BOOL)0;
				T60_ = ((*op).Sup.id == ((NI) 2) || (*op).Sup.id == ((NI) 47));
				if (T60_) goto LA61_;
				T60_ = eqStrings((*op).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_22));
				LA61_: ;
				if (!T60_) goto LA62_;
				checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 3), (*(*c).graph).config);
				t1 = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
				t2 = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 2)], NIM_NIL);
				{
					if (!(t1 == NIM_NIL)) goto LA66_;
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
					result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
				}
				goto LA64_;
				LA66_: ;
				{
					if (!(t2 == NIM_NIL)) goto LA69_;
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 2)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
					result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
				}
				goto LA64_;
				LA69_: ;
				{
					{
						if (!((*op).Sup.id == ((NI) 2))) goto LA74_;
						result = makeAndType_dzmTDcEU4T1CMf8RPHFyIg(c, t1, t2);
					}
					goto LA72_;
					LA74_: ;
					{
						result = makeOrType_dzmTDcEU4T1CMf8RPHFyIg_2(c, t1, t2);
					}
					LA72_: ;
				}
				LA64_: ;
			}
			goto LA58_;
			LA62_: ;
			{
				NI T80_;
				if (!((*op).Sup.id == ((NI) 43))) goto LA78_;
				T80_ = (NI)0;
				T80_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
				switch (T80_) {
				case ((NI) 3):
				{
					result = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], prev);
					{
						NIM_BOOL T84_;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T85_;
						T84_ = (NIM_BOOL)0;
						T85_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
						T85_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(result, IL64(70368744179728));
						T84_ = ((*T85_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9) && (*T85_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10) || (*T85_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12) || (*T85_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21) && (*T85_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22) || (*T85_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25) && (*T85_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 26) || (*T85_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 29) && (*T85_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 30) || (*T85_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50));
						if (!(T84_)) goto LA86_;
						T84_ = ((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23));
						LA86_: ;
						if (!T84_) goto LA87_;
						result = freshType_qZDdYKlnG87DemGcaKuMLwsem(result, prev);
						(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 17))%(sizeof(NU64)*8));
						{
							if (!!((((*c).features &(1U<<((NU)(((tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ) 5))&15U)))!=0))) goto LA91_;
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_23));
						}
						LA91_: ;
					}
					goto LA82_;
					LA87_: ;
					{
						localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_20));
					}
					LA82_: ;
				}
				break;
				case ((NI) 2):
				{
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* negated;
					negated = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], prev);
					result = makeNotType_7dJh5LJZc6UpAu4Si6BKOg(c, negated);
				}
				break;
				default:
				{
					localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_20));
				}
				break;
				}
			}
			goto LA58_;
			LA78_: ;
			{
				if (!((*op).Sup.id == ((NI) 50))) goto LA97_;
				result = semAnyRef_Qz0jS9bzELc1ZEW1Xl29cGVg(c, n, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21), prev);
			}
			goto LA58_;
			LA97_: ;
			{
				if (!((*op).Sup.id == ((NI) 52))) goto LA100_;
				result = semAnyRef_Qz0jS9bzELc1ZEW1Xl29cGVg(c, n, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22), prev);
			}
			goto LA58_;
			LA100_: ;
			{
				if (!((*op).Sup.id == ((NI) 60))) goto LA103_;
				checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
				result = semTypeof_VyBZhWPO9cyRyURhXkNKu7w_2(c, (*n)._Ukind.S6.sons->data[((NI) 1)], prev);
			}
			goto LA58_;
			LA103_: ;
			{
				{
					NIM_BOOL T108_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T112_;
					T108_ = (NIM_BOOL)0;
					T108_ = (((NI) 0) < (*c).inGenericContext);
					if (!(T108_)) goto LA109_;
					T108_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27));
					LA109_: ;
					if (!T108_) goto LA110_;
					T112_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T112_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
					result = makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ(c, T112_);
				}
				goto LA106_;
				LA110_: ;
				{
					result = semTypeExpr_VyBZhWPO9cyRyURhXkNKu7w_5(c, n, prev);
				}
				LA106_: ;
			}
			LA58_: ;
		}
		LA24_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 93):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* whenResult;
		whenResult = semWhen_9cFxfe3QuUjcGT0YjtIGZ4g(c, n, NIM_FALSE);
		{
			if (!((*whenResult).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115))) goto LA117_;
			(*whenResult).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 128);
		}
		LA117_: ;
		result = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, whenResult, prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* head;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 2), (*(*c).graph).config);
		head = (*n)._Ukind.S6.sons->data[((NI) 0)];
		{
			if (!!(((*head).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*head).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*head).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*head).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*head).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*head).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*head).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32)))) goto LA122_;
			s = semTypeIdent_0bGgbY2vzd9cI8DrFDXzH9aA_2(c, head);
		}
		goto LA120_;
		LA122_: ;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T125_;
			T125_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T125_ = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, head, 0);
			s = symFromExpectedTypeNode_0bGgbY2vzd9cI8DrFDXzH9aA_3(c, T125_);
		}
		LA120_: ;
		switch ((*s).magic) {
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 170):
		{
			result = semArray_VyBZhWPO9cyRyURhXkNKu7w_6(c, n, prev);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 171):
		{
			result = semContainer_c2ZxSNt5fpSIjL1iBbVIDA(c, n, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_226), prev);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 172):
		{
			result = semRange_VyBZhWPO9cyRyURhXkNKu7w_7(c, n, prev);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 173):
		{
			result = semSet_VyBZhWPO9cyRyURhXkNKu7w_8(c, n, prev);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 183):
		{
			result = semOrdinal_VyBZhWPO9cyRyURhXkNKu7w_9(c, n, prev);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 174):
		{
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* s_2;
				if (!((*(*(*c).graph).config).selectedGC == ((tyEnum_TGCMode_tkz389aDYNd8ykeZszCuBSw) 5))) goto LA134_;
				s_2 = (*(*c).graph).sysTypes[(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24))- 0];
				result = copyType_UkDKseEIJgQZ1cGmoQSskA(s_2, (*s_2).owner, NIM_FALSE);
				asgnRefNoCycle((void**) (&(*result).sons), (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) setLengthSeqV2(&((*result).sons)->Sup, (&NTI_Ef05srmQTDulnBdXR4Ja6Q_), ((NI) 0)));
				asgnRefNoCycle((void**) (&(*result).n), NIM_NIL);
				{
					if (!((*(*(*c).graph).config).selectedGC == ((tyEnum_TGCMode_tkz389aDYNd8ykeZszCuBSw) 5))) goto LA138_;
					(*result).flags = 1073741824;
				}
				goto LA136_;
				LA138_: ;
				{
					(*result).flags = 0;
				}
				LA136_: ;
				semContainerArg_6WuDX6eZfO9aljUv9bdjHa8A(c, n, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_234), result);
			}
			goto LA132_;
			LA134_: ;
			{
				result = semContainer_c2ZxSNt5fpSIjL1iBbVIDA(c, n, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_234), prev);
				{
					if (!((*(*(*c).graph).config).selectedGC == ((tyEnum_TGCMode_tkz389aDYNd8ykeZszCuBSw) 5))) goto LA144_;
					(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 30))%(sizeof(NU64)*8));
				}
				LA144_: ;
			}
			LA132_: ;
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 175):
		{
			result = semContainer_c2ZxSNt5fpSIjL1iBbVIDA(c, n, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 62), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_235), prev);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 176):
		{
			result = semVarargs_VyBZhWPO9cyRyURhXkNKu7w_10(c, n, prev);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 208):
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 14) ... ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 15):
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T149_;
			T149_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T149_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
			result = makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, T149_);
			(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 28))%(sizeof(NU64)*8));
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 22):
		{
			result = semStaticType_wMW8LHacN21DLh2SAZzgTw(c, (*n)._Ukind.S6.sons->data[((NI) 1)], prev);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 206):
		{
			result = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
			{
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T156_;
				if (!!((result == NIM_NIL))) goto LA154_;
				T156_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
				T156_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
				result = copyType_UkDKseEIJgQZ1cGmoQSskA(result, T156_, NIM_FALSE);
				{
					NI i_3;
					NI colontmp__2;
					NI T158_;
					NI res;
					i_3 = (NI)0;
					colontmp__2 = (NI)0;
					T158_ = (NI)0;
					T158_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					colontmp__2 = (NI)(T158_ - ((NI) 1));
					res = ((NI) 1);
					{
						while (1) {
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T161_;
							if (!(res <= colontmp__2)) goto LA160;
							i_3 = res;
							T161_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
							T161_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[i_3], NIM_NIL);
							rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, T161_);
							res += ((NI) 1);
						} LA160: ;
					}
				}
			}
			LA154_: ;
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 180):
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T163_;
			result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13), prev, c);
			T163_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T163_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
			addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, T163_);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 179):
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
			result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23), prev, c);
			base = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
			{
				if (!((*base).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*base).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47))) goto LA167_;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_237));
				base = (*base).sons->data[((NI) 0)];
			}
			LA167_: ;
			addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, base);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 177):
		{
			result = semAnyRef_Qz0jS9bzELc1ZEW1Xl29cGVg(c, n, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22), prev);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 178):
		{
			result = semAnyRef_Qz0jS9bzELc1ZEW1Xl29cGVg(c, n, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21), prev);
		}
		break;
		case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 182):
		{
			result = semTuple_VyBZhWPO9cyRyURhXkNKu7w_11(c, n, prev);
		}
		break;
		default:
		{
			result = semGeneric_p0lr3JXE4IdHVsfvGgDDIg(c, n, s, prev);
		}
		break;
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* typeExpr;
		typeExpr = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, n, 0);
		{
			if (!((*typeExpr).typ == 0)) goto LA176_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_260));
			result = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
		}
		goto LA174_;
		LA176_: ;
		{
			if (!((*(*typeExpr).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61))) goto LA179_;
			result = (*typeExpr).typ;
		}
		goto LA174_;
		LA179_: ;
		{
			if (!!(((*(*typeExpr).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8)))) goto LA182_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
			result = errorType_5olHzpuoNS9asyp0iz7j62Q(c);
		}
		goto LA174_;
		LA182_: ;
		{
			result = base_BFFuB9cFDZ89c6QWZqEFAtdA((*typeExpr).typ);
			{
				NIM_BOOL T187_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* preprocessed;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T191_;
				T187_ = (NIM_BOOL)0;
				T187_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw(result);
				if (!(T187_)) goto LA188_;
				T187_ = !(((*result).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52)));
				LA188_: ;
				if (!T187_) goto LA189_;
				preprocessed = semGenericStmt_U3qPBy54f1PkCP8vmFMCRA_6(c, n);
				T191_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T191_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(preprocessed);
				result = makeTypeFromExpr_Eh3UpHrUYY37qORanE1OOQ(c, T191_);
			}
			goto LA185_;
			LA189_: ;
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* alias;
				alias = maybeAliasType_L9clWyMIvLOOZ9cbCUsKxaCQ(c, result, prev);
				{
					if (!!((alias == NIM_NIL))) goto LA195_;
					result = alias;
				}
				LA195_: ;
			}
			LA185_: ;
		}
		LA174_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_3;
		s_3 = semTypeIdent_0bGgbY2vzd9cI8DrFDXzH9aA_2(c, n);
		{
			if (!((*s_3).typ == NIM_NIL)) goto LA200_;
			{
				if (!!(((*s_3).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 0)))) goto LA204_;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
			}
			LA204_: ;
			result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
		}
		goto LA198_;
		LA200_: ;
		{
			NIM_BOOL T207_;
			T207_ = (NIM_BOOL)0;
			T207_ = ((*s_3).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
			if (!(T207_)) goto LA208_;
			T207_ = ((*(*s_3).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
			LA208_: ;
			if (!T207_) goto LA209_;
			{
				NIM_BOOL T213_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T214_;
				NimStringDesc* T218_;
				T213_ = (NIM_BOOL)0;
				T214_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T214_ = base_BFFuB9cFDZ89c6QWZqEFAtdA((*s_3).typ);
				T213_ = !(((*T214_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0)));
				if (!(T213_)) goto LA215_;
				T213_ = (prev == NIM_NIL);
				LA215_: ;
				if (!!(T213_)) goto LA216_;
				T218_ = (NimStringDesc*)0;
				T218_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_261);
				internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T218_);
			}
			LA216_: ;
			result = base_BFFuB9cFDZ89c6QWZqEFAtdA((*s_3).typ);
		}
		goto LA198_;
		LA209_: ;
		{
			if (!(prev == NIM_NIL)) goto LA220_;
			result = (*s_3).typ;
		}
		goto LA198_;
		LA220_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* alias_2;
			alias_2 = maybeAliasType_L9clWyMIvLOOZ9cbCUsKxaCQ(c, (*s_3).typ, prev);
			{
				if (!!((alias_2 == NIM_NIL))) goto LA225_;
				result = alias_2;
			}
			goto LA223_;
			LA225_: ;
			{
				assignType_z2malisaD2RKFo0cGpXWvQ(prev, (*s_3).typ);
				{
					if (!!(((*(*s_3).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1) || (*(*s_3).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2) || (*(*s_3).typ).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) && (*(*s_3).typ).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 35) || (*(*s_3).typ).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 36) && (*(*s_3).typ).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 39) || (*(*s_3).typ).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 40) && (*(*s_3).typ).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44)))) goto LA230_;
					(*prev).Sup.id = (*(*s_3).typ).Sup.id;
				}
				LA230_: ;
				result = prev;
			}
			LA223_: ;
		}
		LA198_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_4;
		s_4 = getGenSym_9cHGgeaz0zI8z6eWnyHP7Bg(c, (*n)._Ukind.S4.sym);
		{
			NIM_BOOL T235_;
			NIM_BOOL T236_;
			NIM_BOOL T239_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* alias_3;
			T235_ = (NIM_BOOL)0;
			T236_ = (NIM_BOOL)0;
			T236_ = ((*s_4).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7));
			if (!(T236_)) goto LA237_;
			T236_ = !(((*s_4).typ == NIM_NIL));
			LA237_: ;
			T235_ = T236_;
			if (T235_) goto LA238_;
			T239_ = (NIM_BOOL)0;
			T239_ = ((*s_4).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
			if (!(T239_)) goto LA240_;
			T239_ = ((*(*s_4).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
			LA240_: ;
			T235_ = T239_;
			LA238_: ;
			if (!T235_) goto LA241_;
			{
				if (!((*s_4).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7))) goto LA245_;
				t = (*s_4).typ;
			}
			goto LA243_;
			LA245_: ;
			{
				{
					NIM_BOOL T250_;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T251_;
					NimStringDesc* T255_;
					T250_ = (NIM_BOOL)0;
					T251_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T251_ = base_BFFuB9cFDZ89c6QWZqEFAtdA((*s_4).typ);
					T250_ = !(((*T251_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0)));
					if (!(T250_)) goto LA252_;
					T250_ = (prev == NIM_NIL);
					LA252_: ;
					if (!!(T250_)) goto LA253_;
					T255_ = (NimStringDesc*)0;
					T255_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_262);
					internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T255_);
				}
				LA253_: ;
				t = base_BFFuB9cFDZ89c6QWZqEFAtdA((*s_4).typ);
			}
			LA243_: ;
			alias_3 = maybeAliasType_L9clWyMIvLOOZ9cbCUsKxaCQ(c, t, prev);
			{
				if (!!((alias_3 == NIM_NIL))) goto LA258_;
				result = alias_3;
			}
			goto LA256_;
			LA258_: ;
			{
				if (!(prev == NIM_NIL)) goto LA261_;
				result = t;
			}
			goto LA256_;
			LA261_: ;
			{
				assignType_z2malisaD2RKFo0cGpXWvQ(prev, t);
				result = prev;
			}
			LA256_: ;
			markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, (*n)._Ukind.S4.sym, &(*(*c).graph).usageSym);
		}
		goto LA233_;
		LA241_: ;
		{
			{
				if (!!(((*s_4).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 0)))) goto LA267_;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
			}
			LA267_: ;
			result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
		}
		LA233_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 133):
	{
		result = semObjectNode_VyBZhWPO9cyRyURhXkNKu7w_12(c, n, prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 134):
	{
		result = semTuple_VyBZhWPO9cyRyURhXkNKu7w_11(c, n, prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 135):
	{
		result = newConstraint_3OZ81tHhhvQxNS5O7XIa9aQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 136):
	{
		result = semTypeClass_VyBZhWPO9cyRyURhXkNKu7w_13(c, n, prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 141):
	{
		result = semAnyRef_Qz0jS9bzELc1ZEW1Xl29cGVg(c, n, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22), prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 142):
	{
		result = semAnyRef_Qz0jS9bzELc1ZEW1Xl29cGVg(c, n, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21), prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 143):
	{
		result = semVarType_VyBZhWPO9cyRyURhXkNKu7w_14(c, n, prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 146):
	{
		result = semDistinct_VyBZhWPO9cyRyURhXkNKu7w_15(c, n, prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 137):
	{
		result = semStaticType_wMW8LHacN21DLh2SAZzgTw(c, (*n)._Ukind.S6.sons->data[((NI) 0)], prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 148):
	{
		{
			NI T281_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* child;
			T281_ = (NI)0;
			T281_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			if (!(T281_ == ((NI) 0))) goto LA282_;
			result = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 51), c);
			child = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25), c);
			(*child).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 15))%(sizeof(NU64)*8));
			addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, child);
		}
		goto LA279_;
		LA282_: ;
		{
			result = semProcTypeWithScope_iRXxEADPfCxgmm2q7sy9b9bQ(c, n, prev, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
			(*result).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 15))%(sizeof(NU64)*8));
			{
				NIM_BOOL T287_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T288_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T290_;
				T287_ = (NIM_BOOL)0;
				T288_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T288_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(n);
				T287_ = ((*T288_).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 90));
				if (!(T287_)) goto LA289_;
				T290_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T290_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(n);
				T287_ = hasPragma_JViD3fSNjxPl61dYtezU6A(T290_, ((tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw) 137));
				LA289_: ;
				if (!T287_) goto LA291_;
				(*result).callConv = ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 5);
			}
			goto LA285_;
			LA291_: ;
			{
				(*result).callConv = ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8);
			}
			LA285_: ;
		}
		LA279_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 147):
	{
		{
			NI T297_;
			T297_ = (NI)0;
			T297_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			if (!(T297_ == ((NI) 0))) goto LA298_;
			result = newConstraint_3OZ81tHhhvQxNS5O7XIa9aQ(c, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25));
		}
		goto LA295_;
		LA298_: ;
		{
			result = semProcTypeWithScope_iRXxEADPfCxgmm2q7sy9b9bQ(c, n, prev, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12));
		}
		LA295_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 150):
	{
		result = semEnum_VyBZhWPO9cyRyURhXkNKu7w_16(c, n, prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4):
	{
		result = (*n).typ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 128):
	{
		result = semStmtListType_VyBZhWPO9cyRyURhXkNKu7w_17(c, n, prev);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 129):
	{
		result = semBlockType_VyBZhWPO9cyRyURhXkNKu7w_18(c, n, prev);
	}
	break;
	default:
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
		result = newOrPrevType_y4ESw6ErNhPuQy82cNWFmw(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50), prev, c);
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).typ), result);
	(*c).inTypeContext -= ((NI) 1);
	{
		if (!((*c).inTypeContext == ((NI) 0))) goto LA308_;
		instAllTypeBoundOp_QvnfHbdpOPBouSkW8SHxDQ(c, (*n).info);
	}
	LA308_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAfterMacroCall_XlzLDLqIEXrxOyQPBIKHYg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* macroResult, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T5_;
	NI T6_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T41_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	(*(*(*c).graph).config).evalTemplateCounter += ((NI) 1);
	{
		if (!(((NI) 1000) < (*(*(*c).graph).config).evalTemplateCounter)) goto LA3_;
		globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, (*s).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_7));
	}
	LA3_: ;
	T5_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T5_ = getModule_43y2sdiIt63745LnAZPmZQ((*s).owner);
	asgnRefNoCycle((void**) (&(*c).friendModules), (tySequence_DfgJFJEYoj4YBAHLZPl5lQ*) incrSeqV3(&((*c).friendModules)->Sup, (&NTI_DfgJFJEYoj4YBAHLZPl5lQ_)));
	T6_ = (*c).friendModules->Sup.len++;
	asgnRefNoCycle((void**) (&(*c).friendModules->data[T6_]), T5_);
	result = macroResult;
	(*result).flags &= ~(((NU32)1) << ((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 7)) % (sizeof(NU32)*8)));
	{
		if (!((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL)) goto LA9_;
		result = semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3(c, result, flags);
	}
	goto LA7_;
	LA9_: ;
	{
		switch ((*(*(*s).typ).sons->data[((NI) 0)]).kind) {
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6):
		{
			result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, result, flags);
		}
		break;
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7):
		{
			result = semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3(c, result, flags);
		}
		break;
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8):
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
			{
				if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115))) goto LA17_;
				(*result).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 128);
			}
			LA17_: ;
			typ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, result, NIM_NIL);
			{
				NimStringDesc* T23_;
				NimStringDesc* T24_;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T25_;
				if (!(typ == NIM_NIL)) goto LA21_;
				T23_ = (NimStringDesc*)0;
				T24_ = (NimStringDesc*)0;
				T24_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(result, 4);
				T23_ = rawNewString((T24_ ? T24_->Sup.len : 0) + 24);
appendString(T23_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_29));
appendString(T23_, T24_);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*result).info, T23_);
				T25_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
				T25_ = errorSym_2lqvMm9cf9bZrSA2I9a9cHb8ag(c, result);
				result = newSymNode_UWZXukHA5As9aCftRHbafBg(T25_);
			}
			goto LA19_;
			LA21_: ;
			{
				asgnRefNoCycle((void**) (&(*result).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, typ));
			}
			LA19_: ;
		}
		break;
		default:
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* retType;
			retType = (*(*s).typ).sons->data[((NI) 0)];
			{
				NIM_BOOL T30_;
				tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q paramTypes;
				T30_ = (NIM_BOOL)0;
				T30_ = !(((*(*s).ast)._Ukind.S6.sons->data[((NI) 2)] == NIM_NIL));
				if (!(T30_)) goto LA31_;
				T30_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw(retType);
				LA31_: ;
				if (!T30_) goto LA32_;
				nimZeroMem((void*)(&paramTypes), sizeof(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q));
				newIdTable_9aSEqMbyKKKJdiwaVLEvfQw((&paramTypes));
				{
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* value;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gp;
					param = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
					value = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					gp = (*(*s).ast)._Ukind.S6.sons->data[((NI) 2)];
					{
						NI i;
						NI colontmp_;
						NI i_2;
						i = (NI)0;
						colontmp_ = (NI)0;
						colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(gp);
						i_2 = ((NI) 0);
						{
							while (1) {
								tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* genericParam;
								NI posInCall;
								NI T38_;
								tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T39_;
								RootObj* T40_;
								if (!(i_2 < colontmp_)) goto LA37;
								i = i_2;
								genericParam = (*(*gp)._Ukind.S6.sons->data[i])._Ukind.S4.sym;
								T38_ = (NI)0;
								T38_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*s).typ);
								posInCall = (NI)(T38_ + i);
								param = genericParam;
								value = (*call)._Ukind.S6.sons->data[posInCall];
								T39_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
								T39_ = &(*param).typ->Sup;
								T40_ = (RootObj*)0;
								T40_ = &(*value).typ->Sup.Sup;
								idTablePut_Xhv7unnxpOqdw7OJsXRnRg((&paramTypes), T39_, T40_);
								i_2 += ((NI) 1);
							} LA37: ;
						}
					}
				}
				retType = generateTypeInstance_hh5ZlzAUaBgsyjiF5uPRIQ(c, paramTypes, (*macroResult).info, retType);
			}
			LA32_: ;
			result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, result, flags);
			result = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, retType, result, (*result).info);
		}
		break;
		}
	}
	LA7_: ;
	(*(*(*c).graph).config).evalTemplateCounter -= ((NI) 1);
	T41_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T41_ = pop_iSW3NpdhhLmgN2JVyXuzcQtransf((&(*c).friendModules));
	T41_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semMacroExpr_9bmxDHTa4eojLns652LIkJw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI genericParams;
	NI suppliedParams;
	NI T11_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	pushInfoContext_jVPMMc4H29cyI52qg0Kp9aUg((*(*c).graph).config, (*nOrig).info);
	markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, sym, &(*(*c).graph).usageSym);
	{
		NimStringDesc* T5_;
		if (!(sym == (*(*c).p).owner)) goto LA3_;
		T5_ = (NimStringDesc*)0;
		T5_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_5), (*(*sym).name).s);
		globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, (*n).info, T5_);
	}
	LA3_: ;
	{
		if (!(((*sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 26))&63U)))!=0)) goto LA8_;
		genericParams = ((NI) 0);
	}
	goto LA6_;
	LA8_: ;
	{
		genericParams = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*(*sym).ast)._Ukind.S6.sons->data[((NI) 2)]);
	}
	LA6_: ;
	T11_ = (NI)0;
	T11_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
	suppliedParams = (((NI)(T11_ - ((NI) 1)) >= ((NI) 0)) ? (NI)(T11_ - ((NI) 1)) : ((NI) 0));
	{
		NimStringDesc* T16_;
		NimStringDesc* T17_;
		if (!(suppliedParams < genericParams)) goto LA14_;
		T16_ = (NimStringDesc*)0;
		T16_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 0);
		T17_ = (NimStringDesc*)0;
		T17_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_6), T16_);
		globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, (*n).info, T17_);
	}
	LA14_: ;
	result = evalMacroCall_wCEfcY0TEZRJihtTHLABDg((*c).module, (*c).graph, n, nOrig, sym);
	{
		if (!!(((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 13))&31U)))!=0))) goto LA20_;
		result = semAfterMacroCall_XlzLDLqIEXrxOyQPBIKHYg(c, n, result, sym, flags);
	}
	LA20_: ;
	result = wrapInComesFrom_N3MzXUBcBDWrgMcQMvXyxw((*nOrig).info, sym, result);
	popInfoContext_HFVjkUQz7LMV9aOS6uKLckQ((*(*c).graph).config);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semSym_XS6IXZ9bx3UuasCvJk5VxKA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	s = getGenSym_9cHGgeaz0zI8z6eWnyHP7Bg(c, sym);
	switch ((*s).kind) {
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 10):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T2_;
		markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, s, &(*(*c).graph).usageSym);
		T2_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T2_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*s).typ, IL64(36099165763184656));
		switch ((*T2_).kind) {
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 35):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 36) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 39):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 40) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44):
		{
			{
				if (!((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0))) goto LA6_;
				result = inlineConst_9bymE7d1QP8cYGIeo3NFMKAsem(c, n, s);
			}
			goto LA4_;
			LA6_: ;
			{
				result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
			}
			LA4_: ;
		}
		break;
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24):
		{
			{
				NI T12_;
				T12_ = (NI)0;
				T12_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*s).ast);
				if (!(T12_ == ((NI) 0))) goto LA13_;
				result = inlineConst_9bymE7d1QP8cYGIeo3NFMKAsem(c, n, s);
			}
			goto LA10_;
			LA13_: ;
			{
				result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
			}
			LA10_: ;
		}
		break;
		default:
		{
			result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
		}
		break;
		}
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17):
	{
		{
			NIM_BOOL T20_;
			NIM_BOOL T21_;
			NI T23_;
			NIM_BOOL T25_;
			NI T27_;
			T20_ = (NIM_BOOL)0;
			T21_ = (NIM_BOOL)0;
			T21_ = ((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 14))&31U)))!=0);
			if (!(T21_)) goto LA22_;
			T23_ = (NI)0;
			T23_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*(*s).ast)._Ukind.S6.sons->data[((NI) 2)]);
			T21_ = (((NI) 0) < T23_);
			LA22_: ;
			T20_ = T21_;
			if (T20_) goto LA24_;
			T25_ = (NIM_BOOL)0;
			T25_ = !(((*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 (!(T25_)) goto LA26_;
			T27_ = (NI)0;
			T27_ = requiredParams_6Hq5d57iO68Jzq8gsWL25A(s);
			T25_ = (((NI) 0) < T27_);
			LA26_: ;
			T20_ = T25_;
			LA24_: ;
			if (!T20_) goto LA28_;
			markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, s, &(*(*c).graph).usageSym);
			result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
		}
		goto LA18_;
		LA28_: ;
		{
			result = semMacroExpr_9bmxDHTa4eojLns652LIkJw(c, n, n, s, flags);
		}
		LA18_: ;
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
	{
		{
			NIM_BOOL T34_;
			NIM_BOOL T35_;
			NIM_BOOL T36_;
			NI T38_;
			NIM_BOOL T40_;
			NI T42_;
			T34_ = (NIM_BOOL)0;
			T35_ = (NIM_BOOL)0;
			T36_ = (NIM_BOOL)0;
			T36_ = ((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 14))&31U)))!=0);
			if (!(T36_)) goto LA37_;
			T38_ = (NI)0;
			T38_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*(*s).ast)._Ukind.S6.sons->data[((NI) 2)]);
			T36_ = (((NI) 0) < T38_);
			LA37_: ;
			T35_ = T36_;
			if (T35_) goto LA39_;
			T40_ = (NIM_BOOL)0;
			T40_ = !(((*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 (!(T40_)) goto LA41_;
			T42_ = (NI)0;
			T42_ = requiredParams_6Hq5d57iO68Jzq8gsWL25A(s);
			T40_ = (((NI) 0) < T42_);
			LA41_: ;
			T35_ = T40_;
			LA39_: ;
			T34_ = T35_;
			if (T34_) goto LA43_;
			T34_ = (((*sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 8))&63U)))!=0);
			LA43_: ;
			if (!T34_) goto LA44_;
			markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, s, &(*(*c).graph).usageSym);
			result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
		}
		goto LA32_;
		LA44_: ;
		{
			result = semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA(c, n, s, flags);
		}
		LA32_: ;
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3):
	{
		markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, s, &(*(*c).graph).usageSym);
		{
			NIM_BOOL T50_;
			NIM_BOOL T51_;
			T50_ = (NIM_BOOL)0;
			T51_ = (NIM_BOOL)0;
			T51_ = !(((*s).typ == NIM_NIL));
			if (!(T51_)) goto LA52_;
			T51_ = ((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60));
			LA52_: ;
			T50_ = T51_;
			if (!(T50_)) goto LA53_;
			T50_ = !(((*(*s).typ).n == NIM_NIL));
			LA53_: ;
			if (!T50_) goto LA54_;
			result = (*(*s).typ).n;
			goto BeforeRet_;
		}
		goto LA48_;
		LA54_: ;
		{
			if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0)) goto LA57_;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* realParam;
				if (!(*(*c).p).wasForwarded) goto LA61_;
				realParam = (*(*(*(*(*c).p).owner).typ).n)._Ukind.S6.sons->data[(NI)((*s).position + ((NI) 1))];
				{
					NIM_BOOL T65_;
					NimStringDesc* T69_;
					T65_ = (NIM_BOOL)0;
					T65_ = ((*realParam).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
					if (!(T65_)) goto LA66_;
					T65_ = ((*(*realParam)._Ukind.S4.sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
					LA66_: ;
					if (!!(T65_)) goto LA67_;
					T69_ = (NimStringDesc*)0;
					T69_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_274);
					internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T69_);
				}
				LA67_: ;
				result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ((*(*(*(*(*(*c).p).owner).typ).n)._Ukind.S6.sons->data[(NI)((*s).position + ((NI) 1))])._Ukind.S4.sym, (*n).info);
				goto BeforeRet_;
			}
			goto LA59_;
			LA61_: ;
			{
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* u;
				if (!((*(*(*c).p).owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17))) goto LA71_;
				u = searchInScopes_xnVjAYTNrHOYQvPVqwg14w(c, (*s).name);
				{
					NIM_BOOL T75_;
					NIM_BOOL T76_;
					NimStringDesc* T81_;
					T75_ = (NIM_BOOL)0;
					T76_ = (NIM_BOOL)0;
					T76_ = !((u == NIM_NIL));
					if (!(T76_)) goto LA77_;
					T76_ = ((*u).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
					LA77_: ;
					T75_ = T76_;
					if (!(T75_)) goto LA78_;
					T75_ = ((*u).owner == (*s).owner);
					LA78_: ;
					if (!!(T75_)) goto LA79_;
					T81_ = (NimStringDesc*)0;
					T81_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_275);
					internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T81_);
				}
				LA79_: ;
				result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(u, (*n).info);
				goto BeforeRet_;
			}
			goto LA59_;
			LA71_: ;
			LA59_: ;
		}
		goto LA48_;
		LA57_: ;
		LA48_: ;
		result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 8):
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 9):
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 11):
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 21):
	{
		{
			if (!((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 280))) goto LA85_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_276));
		}
		LA85_: ;
		markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, s, &(*(*c).graph).usageSym);
		result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 4):
	{
		{
			if (!((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA90_;
			result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
			asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
		}
		goto LA88_;
		LA90_: ;
		{
			if (!!(((*s).ast == NIM_NIL))) goto LA93_;
			result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*s).ast, 0);
		}
		goto LA88_;
		LA93_: ;
		{
			asgnRefNoCycle((void**) (&(*n).typ), (*s).typ);
			result = n;
			goto BeforeRet_;
		}
		LA88_: ;
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7):
	{
		markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, s, &(*(*c).graph).usageSym);
		{
			NIM_BOOL T99_;
			NIM_BOOL T100_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T102_;
			T99_ = (NIM_BOOL)0;
			T100_ = (NIM_BOOL)0;
			T100_ = ((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60));
			if (!(T100_)) goto LA101_;
			T102_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T102_ = base_BFFuB9cFDZ89c6QWZqEFAtdA((*s).typ);
			T100_ = !(((*T102_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0)));
			LA101_: ;
			T99_ = T100_;
			if (!(T99_)) goto LA103_;
			T99_ = !(((*(*s).typ).n == NIM_NIL));
			LA103_: ;
			if (!T99_) goto LA104_;
			result = (*(*s).typ).n;
			goto BeforeRet_;
		}
		LA104_: ;
		result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
		asgnRefNoCycle((void**) (&(*result).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, (*s).typ));
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 19):
	{
		tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ* p;
		p = (*c).p;
		{
			while (1) {
				NIM_BOOL T109_;
				T109_ = (NIM_BOOL)0;
				T109_ = !((p == NIM_NIL));
				if (!(T109_)) goto LA110_;
				T109_ = ((*p).selfSym == NIM_NIL);
				LA110_: ;
				if (!T109_) goto LA108;
				p = (*p).next;
			} LA108: ;
		}
		{
			NIM_BOOL T113_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* ty;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* check;
			T113_ = (NIM_BOOL)0;
			T113_ = !((p == NIM_NIL));
			if (!(T113_)) goto LA114_;
			T113_ = !(((*p).selfSym == NIM_NIL));
			LA114_: ;
			if (!T113_) goto LA115_;
			ty = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*p).selfSym).typ, IL64(211106247215120));
			{
				while (1) {
					if (!(((*ty).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 31))&63U)))!=0)) goto LA118;
					ty = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(ty, 8192);
				} LA118: ;
			}
			check = NIM_NIL;
			{
				if (!((*ty).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA121_;
				{
					while (1) {
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* f;
						check = NIM_NIL;
						f = lookupInRecordAndBuildCheck_3pOAAA43UjbX8Yi0x0mECQ(c, n, (*ty).n, (*s).name, &check);
						{
							NIM_BOOL T127_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T135_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T136_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T137_;
							T127_ = (NIM_BOOL)0;
							T127_ = !((f == NIM_NIL));
							if (!(T127_)) goto LA128_;
							T127_ = fieldVisible_FeY58g4QgBCvGhzCZ7tjxAsigmatch(c, f);
							LA128_: ;
							if (!T127_) goto LA129_;
							{
								if (!!((f == s))) goto LA133_;
								failedAssertImpl_aDmpBTs9cPuXp0Mp9cfiNeyA(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_277));
							}
							LA133_: ;
							markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, f, &(*(*c).graph).usageSym);
							result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45), (*n).info, (*f).typ);
							T135_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T135_ = newSymNode_UWZXukHA5As9aCftRHbafBg((*p).selfSym);
							T136_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T136_ = makeDeref_nRsa9acFWDI6GmzVZLXX3CQ(T135_);
							add_gCCf68XrWL79bKes6htzFjQ(result, T136_);
							T137_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T137_ = newSymNode_UWZXukHA5As9aCftRHbafBg(f);
							add_gCCf68XrWL79bKes6htzFjQ(result, T137_);
							{
								if (!!((check == NIM_NIL))) goto LA140_;
								asgnRefNoCycle((void**) (&(*check)._Ukind.S6.sons->data[((NI) 0)]), result);
								asgnRefNoCycle((void**) (&(*check).typ), (*result).typ);
								result = check;
							}
							LA140_: ;
							goto BeforeRet_;
						}
						LA129_: ;
						{
							if (!((*ty).sons->data[((NI) 0)] == NIM_NIL)) goto LA144_;
							goto LA123;
						}
						LA144_: ;
						ty = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*ty).sons->data[((NI) 0)], IL64(36239903266179344));
					}
				} LA123: ;
			}
			LA121_: ;
		}
		LA115_: ;
		markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, s, &(*(*c).graph).usageSym);
		result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
	}
	break;
	default:
	{
		markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, s, &(*(*c).graph).usageSym);
		result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

static N_INLINE(void, markIndirect_Cfv6llbTDnhr49bNNRv9cmhgsem)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	{
		if (!((126976 &(1U<<((NU)((*s).kind)&31U)))!=0)) goto LA3_;
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 15))%(sizeof(NU64)*8));
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semFieldAccess_k2Lin9a76VyrWz9b8OoRC9apg_12)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = builtinFieldAccess_k2Lin9a76VyrWz9b8OoRC9apg_4(c, n, flags);
	{
		if (!(result == NIM_NIL)) goto LA3_;
		result = dotTransformation_U3qPBy54f1PkCP8vmFMCRA_25(c, n);
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semStaticExpr_U3qPBy54f1PkCP8vmFMCRA_29)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	a = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, n, 0);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T3_;
		T3_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T3_ = findUnresolvedStatic_esDJA7239bJDiq4UrX9aHCjg_2(a);
		if (!!((T3_ == NIM_NIL))) goto LA4_;
		result = a;
		goto BeforeRet_;
	}
	LA4_: ;
	result = evalStaticExpr_ajRaPV9aInq6ZNnUYn0DaVw((*c).module, (*c).graph, a, (*(*c).p).owner);
	{
		NimStringDesc* T10_;
		NimStringDesc* T11_;
		if (!(result == 0)) goto LA8_;
		T10_ = (NimStringDesc*)0;
		T10_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 0);
		T11_ = (NimStringDesc*)0;
		T11_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_196), T10_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T11_);
		result = (*(*c).graph).emptyNode;
	}
	goto LA6_;
	LA8_: ;
	{
		result = fixupTypeAfterEval_dGBK19cpTWH2Y7y5AybM0IA(c, result, a);
	}
	LA6_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, maybeLiftType_T3CMuM9cllXYTybk03hCyKA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ** t, tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lifted;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 152), info);
	lifted = liftParamType_cvIOLkRvmfPZ0X4ehqT3Dg(c, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7), T2_, (*t), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_281), info, NIM_FALSE);
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	{
		if (!!((lifted == NIM_NIL))) goto LA5_;
		unsureAsgnRef((void**) (&(*t)), lifted);
	}
	LA5_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, inferWithMetatype_Q9bYZoySevMBqJgfPwQRyew)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg, NIM_BOOL coerceDistincts) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA m;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&m), sizeof(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA));
	initCandidate_al6D1MtFq9bIwSvVxpct8pw(c, (&m), formal);
	m.coerceDistincts = coerceDistincts;
	result = paramTypesMatch_MkZIYaWSL2Febv66liB9aIA((&m), formal, (*arg).typ, arg, NIM_NIL);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = m.genericConverter;
		if (!(T3_)) goto LA4_;
		T3_ = !((result == NIM_NIL));
		LA4_: ;
		if (!T3_) goto LA5_;
		instGenericConvertersArg_6yHi72tjFidHu2E3fNZkJA(c, result, (&m));
	}
	LA5_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T11_;
		if (!!((result == NIM_NIL))) goto LA9_;
		T11_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T11_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(formal, IL64(18014398509481984));
		asgnRefNoCycle((void**) (&(*result).typ), generateTypeInstance_hh5ZlzAUaBgsyjiF5uPRIQ(c, m.bindings, (*arg).info, T11_));
	}
	goto LA7_;
	LA9_: ;
	{
		typeMismatch_1xxyFIws27lai2cG4n31Ow((*(*c).graph).config, (*arg).info, formal, (*arg).typ);
		result = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(arg);
		asgnRefNoCycle((void**) (&(*result).typ), formal);
	}
	LA7_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw, checkConversionBetweenObjects_IxznSNSPzSVAXeEIIkymSA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* castDest, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* src, NI pointers) {
	tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw result;
	NI diff;
{	result = (tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw)0;
	diff = inheritanceDiff_1dM2iQB5qStJfnn3684ijQ_2(castDest, src);
	{
		NIM_BOOL T3_;
		NIM_BOOL T5_;
		T3_ = (NIM_BOOL)0;
		T3_ = (diff == ((NI) 2147483647));
		if (T3_) goto LA4_;
		T5_ = (NIM_BOOL)0;
		T5_ = (((NI) 1) < pointers);
		if (!(T5_)) goto LA6_;
		T5_ = !((diff == ((NI) 0)));
		LA6_: ;
		T3_ = T5_;
		LA4_: ;
		if (!T3_) goto LA7_;
		result = ((tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw) 2);
	}
	goto LA1_;
	LA7_: ;
	{
		result = ((tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw) 0);
	}
	LA1_: ;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw, checkConvertible_8XIqQeY3x4Ws1FyTXP2DwA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* castDest, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* src) {
	tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* d;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* s;
	NI pointers;
{	result = (tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw)0;
	result = ((tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw) 0);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = sameType_3isNyHKb0U1OCnClmflXSg(castDest, src, 0);
		if (!(T3_)) goto LA4_;
		T3_ = ((*castDest).sym == (*src).sym);
		LA4_: ;
		if (!T3_) goto LA5_;
		{
			if (!!(((*castDest).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1) && (*castDest).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2) || (*castDest).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14) || (*castDest).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20) || (*castDest).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) && (*castDest).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44)))) goto LA9_;
			result = ((tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw) 1);
		}
		LA9_: ;
		goto BeforeRet_;
	}
	LA5_: ;
	d = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(castDest, IL64(36239903259928848));
	s = src;
	{
		NIM_BOOL T13_;
		T13_ = (NIM_BOOL)0;
		T13_ = ((*s).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52) || (*s).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53));
		if (!(T13_)) goto LA14_;
		T13_ = (((*s).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0);
		LA14_: ;
		if (!T13_) goto LA15_;
		s = lastSon_ab52xel9cFebv9am0xV04xXA(s);
	}
	LA15_: ;
	s = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(s, IL64(36239903259928592));
	pointers = ((NI) 0);
	{
		while (1) {
			NIM_BOOL T19_;
			NIM_BOOL T20_;
			T19_ = (NIM_BOOL)0;
			T20_ = (NIM_BOOL)0;
			T20_ = !((d == NIM_NIL));
			if (!(T20_)) goto LA21_;
			T20_ = ((*d).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21) || (*d).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22));
			LA21_: ;
			T19_ = T20_;
			if (!(T19_)) goto LA22_;
			T19_ = ((*d).kind == (*s).kind);
			LA22_: ;
			if (!T19_) goto LA18;
			d = lastSon_ab52xel9cFebv9am0xV04xXA(d);
			s = lastSon_ab52xel9cFebv9am0xV04xXA(s);
			pointers += ((NI) 1);
		} LA18: ;
	}
	{
		if (!(d == NIM_NIL)) goto LA25_;
		result = ((tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw) 2);
	}
	goto LA23_;
	LA25_: ;
	{
		NIM_BOOL T28_;
		T28_ = (NIM_BOOL)0;
		T28_ = ((*d).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17));
		if (!(T28_)) goto LA29_;
		T28_ = ((*s).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17));
		LA29_: ;
		if (!T28_) goto LA30_;
		result = checkConversionBetweenObjects_IxznSNSPzSVAXeEIIkymSA(d, s, pointers);
	}
	goto LA23_;
	LA30_: ;
	{
		NIM_BOOL T33_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T34_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T36_;
		T33_ = (NIM_BOOL)0;
		T34_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T34_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(castDest, IL64(36099165772622096));
		T33_ = ((*T34_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1) || (*T34_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14) || (*T34_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2) || (*T34_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) && (*T34_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44));
		if (!(T33_)) goto LA35_;
		T36_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T36_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(src, IL64(36099165772621840));
		T33_ = ((*T36_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1) || (*T36_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14) || (*T36_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2) || (*T36_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) && (*T36_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44));
		LA35_: ;
		if (!T33_) goto LA37_;
	}
	goto LA23_;
	LA37_: ;
	{
		tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ T40_;
		T40_ = (tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ)0;
		T40_ = cmpTypes_B4Ot9chnluDWHfLApyBRgYQ(c, d, s);
		switch (T40_) {
		case ((tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ) 0):
		case ((tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ) 8):
		{
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T44_;
				NIM_BOOL T45_;
				T44_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T44_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(castDest, IL64(36239903259928848));
				T45_ = (NIM_BOOL)0;
				T45_ = compareTypes_oyXq5u7iL4RjsT9bovvTE9cg(T44_, src, ((tyEnum_TDistinctCompare_9bNKHGs63atuMFXnAleTveg) 1), 0);
				if (!!(T45_)) goto LA46_;
				result = ((tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw) 2);
			}
			LA46_: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA23_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConv_U3qPBy54f1PkCP8vmFMCRA_28)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* targetType;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T42_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* op;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!!((T3_ == ((NI) 2)))) goto LA4_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_279));
		result = n;
		goto BeforeRet_;
	}
	LA4_: ;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 60), (*n).info);
	targetType = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
	{
		if (!((*targetType).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA8_;
		{
			NI T12_;
			NimStringDesc* T15_;
			T12_ = (NI)0;
			T12_ = len_SWFNCiWYB89bTUPh5KptkvA_2(targetType);
			if (!!((((NI) 0) < T12_))) goto LA13_;
			T15_ = (NimStringDesc*)0;
			T15_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_280);
			internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T15_);
		}
		LA13_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T18_;
			T18_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T18_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(targetType);
			if (!((*T18_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0))) goto LA19_;
			result = semTypeOf_U3qPBy54f1PkCP8vmFMCRA_14(c, (*n)._Ukind.S6.sons->data[((NI) 1)]);
			goto BeforeRet_;
		}
		goto LA16_;
		LA19_: ;
		{
			targetType = base_BFFuB9cFDZ89c6QWZqEFAtdA(targetType);
		}
		LA16_: ;
	}
	goto LA6_;
	LA8_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* evaluated;
		if (!((*targetType).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA23_;
		evaluated = semStaticExpr_U3qPBy54f1PkCP8vmFMCRA_29(c, (*n)._Ukind.S6.sons->data[((NI) 1)]);
		{
			NIM_BOOL T27_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T31_;
			T27_ = (NIM_BOOL)0;
			T27_ = ((*evaluated).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4));
			if (T27_) goto LA28_;
			T27_ = ((*(*evaluated).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
			LA28_: ;
			if (!T27_) goto LA29_;
			result = n;
			T31_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T31_ = semStaticType_wMW8LHacN21DLh2SAZzgTw(c, evaluated, NIM_NIL);
			asgnRefNoCycle((void**) (&(*result).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, T31_));
			goto BeforeRet_;
		}
		goto LA25_;
		LA29_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T33_;
			T33_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T33_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(targetType);
			if (!((*T33_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0))) goto LA34_;
			result = evaluated;
			goto BeforeRet_;
		}
		goto LA25_;
		LA34_: ;
		{
			targetType = base_BFFuB9cFDZ89c6QWZqEFAtdA(targetType);
		}
		LA25_: ;
	}
	goto LA6_;
	LA23_: ;
	LA6_: ;
	maybeLiftType_T3CMuM9cllXYTybk03hCyKA(&targetType, c, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info);
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* baseType;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T41_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
		if (!((*targetType).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46) || (*targetType).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47))) goto LA39_;
		T41_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T41_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
		baseType = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(T41_, 256);
		t = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ((*targetType).kind, c);
		rawAddSonNoPropagationOfTypeFlags_uZzh0IWnWErsZbQ8YFaRRA_2(t, baseType);
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4), (*n).info);
		asgnRefNoCycle((void**) (&(*result).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, t));
		goto BeforeRet_;
	}
	LA39_: ;
	T42_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T42_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*n)._Ukind.S6.sons->data[((NI) 0)]);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(result, T42_);
	{
		NIM_BOOL T45_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T47_;
		T45_ = (NIM_BOOL)0;
		T45_ = ((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 33));
		if (!(T45_)) goto LA46_;
		T47_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T47_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(targetType, IL64(36239903266220304));
		T45_ = ((*T47_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17));
		LA46_: ;
		if (!T45_) goto LA48_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_282));
	}
	LA48_: ;
	op = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 1)], 0);
	{
		NIM_BOOL T52_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* final;
		T52_ = (NIM_BOOL)0;
		T52_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw(targetType);
		if (!T52_) goto LA53_;
		final = inferWithMetatype_Q9bYZoySevMBqJgfPwQRyew(c, targetType, op, NIM_TRUE);
		addSon_gCCf68XrWL79bKes6htzFjQ_2(result, final);
		asgnRefNoCycle((void**) (&(*result).typ), (*final).typ);
		goto BeforeRet_;
	}
	LA53_: ;
	asgnRefNoCycle((void**) (&(*result).typ), targetType);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(result, op);
	{
		NIM_BOOL T57_;
		tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw status;
		T57_ = (NIM_BOOL)0;
		T57_ = isSymChoice_kR3j4BVoX6LmX0p7IycneQ_3sem(op);
		if (!!(T57_)) goto LA58_;
		status = checkConvertible_8XIqQeY3x4Ws1FyTXP2DwA(c, (*result).typ, (*op).typ);
		switch (status) {
		case ((tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw) 0):
		{
			{
				NIM_BOOL T63_;
				T63_ = (NIM_BOOL)0;
				T63_ = ((*op).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
				if (!(T63_)) goto LA64_;
				T63_ = isGenericRoutine_fqH89bI309asBDvp00Y3VVQA((*op)._Ukind.S4.sym);
				LA64_: ;
				if (!T63_) goto LA65_;
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, (*result).typ, (*result)._Ukind.S6.sons->data[((NI) 1)], (*result).info));
			}
			goto LA61_;
			LA65_: ;
			{
				NIM_BOOL T68_;
				T68_ = (NIM_BOOL)0;
				T68_ = ((*op).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37) || (*op).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160));
				if (!(T68_)) goto LA69_;
				T68_ = ((*targetType).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18));
				LA69_: ;
				if (!T68_) goto LA70_;
				op = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, targetType, op, (*result).info);
			}
			goto LA61_;
			LA70_: ;
			LA61_: ;
		}
		break;
		case ((tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw) 1):
		{
			NimStringDesc* T73_;
			T73_ = (NimStringDesc*)0;
			T73_ = typeToString_QlvraUan7WbHowhAbvDvdA((*result).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 48), T73_);
		}
		break;
		case ((tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw) 2):
		{
			result = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, (*result).typ, (*result)._Ukind.S6.sons->data[((NI) 1)], (*result).info);
			{
				tyArray_Re75IspeoxXy2oCZHwcRrA T79_;
				NimStringDesc* T80_;
				if (!(result == NIM_NIL)) goto LA77_;
				nimZeroMem((void*)T79_, sizeof(tyArray_Re75IspeoxXy2oCZHwcRrA));
				T79_[0] = typeToString_QlvraUan7WbHowhAbvDvdA((*op).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
				T79_[1] = typeToString_QlvraUan7WbHowhAbvDvdA((*result).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
				T80_ = (NimStringDesc*)0;
				T80_ = nsuFormatOpenArray(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_283), T79_, 2);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T80_);
			}
			LA77_: ;
		}
		break;
		}
	}
	goto LA55_;
	LA58_: ;
	{
		{
			NI i;
			NI colontmp_;
			NI T83_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T83_ = (NI)0;
			T83_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(op);
			colontmp_ = (NI)(T83_ - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
					tyEnum_TConvStatus_GXWKwypnpPcXHHdgiz4mmw status_2;
					if (!(res <= colontmp_)) goto LA85;
					i = res;
					it = (*op)._Ukind.S6.sons->data[i];
					status_2 = checkConvertible_8XIqQeY3x4Ws1FyTXP2DwA(c, (*result).typ, (*it).typ);
					{
						if (!((3 &(1U<<((NU)(status_2)&7U)))!=0)) goto LA88_;
						markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*n).info, (*it)._Ukind.S4.sym, &(*(*c).graph).usageSym);
						markIndirect_Cfv6llbTDnhr49bNNRv9cmhgsem(c, (*it)._Ukind.S4.sym);
						result = it;
						goto BeforeRet_;
					}
					LA88_: ;
					res += ((NI) 1);
				} LA85: ;
			}
		}
		errorUseQualifier_Rv9aK9aEqb7vd5si1J3UiI7A(c, (*n).info, (*(*op)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym);
	}
	LA55_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, mergeInitStatus_vweTYREIAWa53nOKdzM0qA)(tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ* existing, tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ newStatus) {
	switch (newStatus) {
	case ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 4):
	{
		(*existing) = newStatus;
	}
	break;
	case ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 2):
	{
		{
			if (!((11 &(1U<<((NU)((*existing))&7U)))!=0)) goto LA5_;
			(*existing) = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 2);
		}
		LA5_: ;
	}
	break;
	case ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 3):
	{
		{
			if (!((*existing) == ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 0))) goto LA10_;
			(*existing) = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 3);
		}
		goto LA8_;
		LA10_: ;
		{
			if (!((*existing) == ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 1))) goto LA13_;
			(*existing) = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 2);
		}
		goto LA8_;
		LA13_: ;
		LA8_: ;
	}
	break;
	case ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 1):
	{
		{
			if (!((*existing) == ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 0))) goto LA18_;
			(*existing) = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 1);
		}
		goto LA16_;
		LA18_: ;
		{
			if (!((*existing) == ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 3))) goto LA21_;
			(*existing) = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 2);
		}
		goto LA16_;
		LA21_: ;
		LA16_: ;
	}
	break;
	case ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 0):
	{
	}
	break;
	}
}

N_LIB_PRIVATE N_NIMCALL(void, invalidObjConstr_wkwHEj6zZnYo2DMZys6jnA_7)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29));
		if (!(T4_)) goto LA5_;
		T4_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2));
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T3_ = ((NU8)((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S5.ident).s->data[((NI) 0)]) == (NU8)(58));
		LA6_: ;
		if (!T3_) goto LA7_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_287));
	}
	goto LA1_;
	LA7_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_288));
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, locateFieldInInitExpr_A1jnc89cFTLh9bz8KfRFS7Dw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI fieldId;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	fieldId = (*(*field).name).Sup.id;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(initExpr);
		i_2 = ((NI) 1);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* assignment;
					assignment = (*initExpr)._Ukind.S6.sons->data[i];
					{
						if (!!(((*assignment).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34)))) goto LA7_;
						invalidObjConstr_wkwHEj6zZnYo2DMZys6jnA_7(c, assignment);
						goto LA4;
					}
					LA7_: ;
					{
						tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T11_;
						T11_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
						T11_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*assignment)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
						if (!(fieldId == (*T11_).Sup.id)) goto LA12_;
						result = assignment;
						goto BeforeRet_;
					}
					LA12_: ;
				} LA4: ;
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, fieldsPresentInInitExpr_Itzn66C3O2qVlbXOhavwVw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fieldsRecList, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	result = ((NimStringDesc*) NIM_NIL);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* field;
		field = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* assignment;
			if (!((*fieldsRecList).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA4_;
			field = fieldsRecList;
			assignment = locateFieldInInitExpr_A1jnc89cFTLh9bz8KfRFS7Dw(c, (*field)._Ukind.S4.sym, initExpr);
			{
				NimStringDesc* T14_;
				if (!!((assignment == NIM_NIL))) goto LA8_;
				{
					if (!!(((result ? result->Sup.len : 0) == ((NI) 0)))) goto LA12_;
					result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_137));
				}
				LA12_: ;
				T14_ = (NimStringDesc*)0;
				T14_ = rawNewString(((*(*(*field)._Ukind.S4.sym).name).s ? (*(*(*field)._Ukind.S4.sym).name).s->Sup.len : 0) + 2);
appendString(T14_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
appendString(T14_, (*(*(*field)._Ukind.S4.sym).name).s);
appendString(T14_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
				result = resizeString(result, (T14_ ? T14_->Sup.len : 0) + 0);
appendString(result, T14_);
			}
			LA8_: ;
		}
		goto LA2_;
		LA4_: ;
		{
			{
				if (!!(((*fieldsRecList).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138)))) goto LA18_;
				failedAssertImpl_aDmpBTs9cPuXp0Mp9cfiNeyA(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_289));
			}
			LA18_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* field_2;
				field_2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				{
					NI i;
					NI colontmp_;
					NI i_2;
					i = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(fieldsRecList);
					i_2 = ((NI) 0);
					{
						while (1) {
							if (!(i_2 < colontmp_)) goto LA23;
							i = i_2;
							field_2 = (*fieldsRecList)._Ukind.S6.sons->data[i];
							{
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* assignment_2;
								{
									if (!!(((*field_2).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA27_;
									goto LA24;
								}
								LA27_: ;
								field = field_2;
								assignment_2 = locateFieldInInitExpr_A1jnc89cFTLh9bz8KfRFS7Dw(c, (*field)._Ukind.S4.sym, initExpr);
								{
									NimStringDesc* T37_;
									if (!!((assignment_2 == NIM_NIL))) goto LA31_;
									{
										if (!!(((result ? result->Sup.len : 0) == ((NI) 0)))) goto LA35_;
										result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_137));
									}
									LA35_: ;
									T37_ = (NimStringDesc*)0;
									T37_ = rawNewString(((*(*(*field)._Ukind.S4.sym).name).s ? (*(*(*field)._Ukind.S4.sym).name).s->Sup.len : 0) + 2);
appendString(T37_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
appendString(T37_, (*(*(*field)._Ukind.S4.sym).name).s);
appendString(T37_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
									result = resizeString(result, (T37_ ? T37_->Sup.len : 0) + 0);
appendString(result, T37_);
								}
								LA31_: ;
							} LA24: ;
							i_2 += ((NI) 1);
						} LA23: ;
					}
				}
			}
		}
		LA2_: ;
	}
	return result;
}

static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
	(*s).hasRaiseAction = NIM_FALSE;
	(*s).prev = excHandler_rqLlY5bs9atDw2OXYqJEn5g;
	excHandler_rqLlY5bs9atDw2OXYqJEn5g = s;
}

static N_INLINE(void, popSafePoint)(void) {
	excHandler_rqLlY5bs9atDw2OXYqJEn5g = (*excHandler_rqLlY5bs9atDw2OXYqJEn5g).prev;
}

static N_INLINE(Exception*, getCurrentException)(void) {
	Exception* result;
	result = (Exception*)0;
	result = currException_9bVPeDJlYTi9bQApZpfH8wjg;
	return result;
}

static N_INLINE(void, popCurrentException)(void) {
	asgnRef((void**) (&currException_9bVPeDJlYTi9bQApZpfH8wjg), (*currException_9bVPeDJlYTi9bQApZpfH8wjg).up);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tryConstExpr_U3qPBy54f1PkCP8vmFMCRA_30)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* volatile result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e;
	NI oldErrorCount;
	NI oldErrorMax;
	tySet_tyEnum_TErrorOutput_fBf8Teueoz9aAkO5cXaxrpA oldErrorOutputs;
	TSafePoint TM_rF9caJawfOjYTjsgLVUSGFA_292;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	e = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	result = getConstExpr_A7gcXCy5E3uGBy5F37NoHA((*c).module, e, (*c).graph);
	{
		if (!!((result == NIM_NIL))) goto LA7_;
		goto BeforeRet_;
	}
	LA7_: ;
	oldErrorCount = (*(*(*c).graph).config).errorCounter;
	oldErrorMax = (*(*(*c).graph).config).errorMax;
	oldErrorOutputs = (*(*(*c).graph).config).m.errorOutputs;
	(*(*(*c).graph).config).m.errorOutputs = 0;
	(*(*(*c).graph).config).errorMax = ((NI) 2147483647);
	pushSafePoint(&TM_rF9caJawfOjYTjsgLVUSGFA_292);
	TM_rF9caJawfOjYTjsgLVUSGFA_292.status = setjmp(TM_rF9caJawfOjYTjsgLVUSGFA_292.context);
	if (TM_rF9caJawfOjYTjsgLVUSGFA_292.status == 0) {
		result = evalConstExpr_P8uF2QSxl7YdNpBnl0Ybqg((*c).module, (*c).graph, e);
		{
			NIM_BOOL T12_;
			T12_ = (NIM_BOOL)0;
			T12_ = (result == NIM_NIL);
			if (T12_) goto LA13_;
			T12_ = ((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
			LA13_: ;
			if (!T12_) goto LA14_;
			result = NIM_NIL;
		}
		goto LA10_;
		LA14_: ;
		{
			result = fixupTypeAfterEval_dGBK19cpTWH2Y7y5AybM0IA(c, result, e);
		}
		LA10_: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI_AQaBoN9cWXPQJGaPX5hY5PQ_))) {
			TM_rF9caJawfOjYTjsgLVUSGFA_292.status = 0;
			result = NIM_NIL;
			popCurrentException();
		}
	}
	if (TM_rF9caJawfOjYTjsgLVUSGFA_292.status != 0) reraiseException();
	(*(*(*c).graph).config).errorCounter = oldErrorCount;
	(*(*(*c).graph).config).errorMax = oldErrorMax;
	(*(*(*c).graph).config).m.errorOutputs = oldErrorOutputs;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprFlagDispatched_k2Lin9a76VyrWz9b8OoRC9apg_14)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 3))&31U)))!=0)) goto LA3_;
		{
			if (!((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 5))&31U)))!=0)) goto LA7_;
			result = tryConstExpr_U3qPBy54f1PkCP8vmFMCRA_30(c, n);
			goto BeforeRet_;
		}
		goto LA5_;
		LA7_: ;
		{
			result = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, n);
			goto BeforeRet_;
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		result = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, n, flags);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* evaluated;
			if (!((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 4))&31U)))!=0)) goto LA13_;
			evaluated = getConstExpr_A7gcXCy5E3uGBy5F37NoHA((*c).module, result, (*c).graph);
			{
				if (!!((evaluated == NIM_NIL))) goto LA17_;
				result = evaluated;
				goto BeforeRet_;
			}
			LA17_: ;
			evaluated = evalAtCompileTime_U3qPBy54f1PkCP8vmFMCRA_24(c, result);
			{
				if (!!((evaluated == NIM_NIL))) goto LA21_;
				result = evaluated;
				goto BeforeRet_;
			}
			LA21_: ;
		}
		LA13_: ;
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConstrField_qdVnDJLvcO2ffiH8DKImeg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* assignment;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	assignment = locateFieldInInitExpr_A1jnc89cFTLh9bz8KfRFS7Dw(c, field, initExpr);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initValue;
		if (!!((assignment == NIM_NIL))) goto LA3_;
		{
			if (!(((*assignment).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 7))&31U)))!=0)) goto LA7_;
			result = (*assignment)._Ukind.S6.sons->data[((NI) 1)];
			goto BeforeRet_;
		}
		LA7_: ;
		{
			NIM_BOOL T11_;
			tyArray_nHXaesL0DJZHyVS07ARPRA T14_;
			NimStringDesc* T15_;
			T11_ = (NIM_BOOL)0;
			T11_ = fieldVisible_FeY58g4QgBCvGhzCZ7tjxAsigmatch(c, field);
			if (!!(T11_)) goto LA12_;
			nimZeroMem((void*)T14_, sizeof(tyArray_nHXaesL0DJZHyVS07ARPRA));
			T14_[0] = copyString((*(*field).name).s);
			T15_ = (NimStringDesc*)0;
			T15_ = nsuFormatOpenArray(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_291), T14_, 1);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*initExpr).info, T15_);
			goto BeforeRet_;
		}
		LA12_: ;
		initValue = semExprFlagDispatched_k2Lin9a76VyrWz9b8OoRC9apg_14(c, (*assignment)._Ukind.S6.sons->data[((NI) 1)], flags);
		{
			if (!!((initValue == NIM_NIL))) goto LA18_;
			initValue = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, (*field).typ, initValue, (*assignment).info);
		}
		LA18_: ;
		asgnRefNoCycle((void**) (&(*assignment)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(field));
		asgnRefNoCycle((void**) (&(*assignment)._Ukind.S6.sons->data[((NI) 1)]), initValue);
		(*assignment).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 7))%(sizeof(NU32)*8));
		result = initValue;
		goto BeforeRet_;
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, caseBranchMatchesExpr_aV4lPADyuJD9boY9cxzVtVVA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* matched) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(branch);
		colontmp_ = (NI)(T2_ - ((NI) 2));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					if (!((*(*branch)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 44))) goto LA7_;
					{
						NIM_BOOL T11_;
						T11_ = (NIM_BOOL)0;
						T11_ = overlap_GLYFox9ciWitxKuirhftGHg((*branch)._Ukind.S6.sons->data[i], matched);
						if (!T11_) goto LA12_;
						result = NIM_TRUE;
						goto BeforeRet_;
					}
					LA12_: ;
				}
				goto LA5_;
				LA7_: ;
				{
					NIM_BOOL T15_;
					T15_ = (NIM_BOOL)0;
					T15_ = exprStructuralEquivalent_XApnXRaD9btY9a4pkMO0ITTg((*branch)._Ukind.S6.sons->data[i], matched, NIM_FALSE);
					if (!T15_) goto LA16_;
					result = NIM_TRUE;
					goto BeforeRet_;
				}
				goto LA5_;
				LA16_: ;
				LA5_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	result = NIM_FALSE;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, missingMandatoryFields_Itzn66C3O2qVlbXOhavwVw_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fieldsRecList, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* r;
		r = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		{
			if (!((*fieldsRecList).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA4_;
			r = fieldsRecList;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* assignment;
				if (!!(((393216 & (*(*(*r)._Ukind.S4.sym).typ).flags) == 0))) goto LA8_;
				assignment = locateFieldInInitExpr_A1jnc89cFTLh9bz8KfRFS7Dw(c, (*r)._Ukind.S4.sym, initExpr);
				{
					if (!(assignment == NIM_NIL)) goto LA12_;
					{
						if (!((result ? result->Sup.len : 0) == ((NI) 0))) goto LA16_;
						result = copyString((*(*(*r)._Ukind.S4.sym).name).s);
					}
					goto LA14_;
					LA16_: ;
					{
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_137));
						result = resizeString(result, ((*(*(*r)._Ukind.S4.sym).name).s ? (*(*(*r)._Ukind.S4.sym).name).s->Sup.len : 0) + 0);
appendString(result, (*(*(*r)._Ukind.S4.sym).name).s);
					}
					LA14_: ;
				}
				LA12_: ;
			}
			LA8_: ;
		}
		goto LA2_;
		LA4_: ;
		{
			{
				if (!!(((*fieldsRecList).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138)))) goto LA22_;
				failedAssertImpl_aDmpBTs9cPuXp0Mp9cfiNeyA(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_289));
			}
			LA22_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* field;
				field = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				{
					NI i;
					NI colontmp_;
					NI i_2;
					i = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(fieldsRecList);
					i_2 = ((NI) 0);
					{
						while (1) {
							if (!(i_2 < colontmp_)) goto LA27;
							i = i_2;
							field = (*fieldsRecList)._Ukind.S6.sons->data[i];
							{
								{
									if (!!(((*field).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA31_;
									goto LA28;
								}
								LA31_: ;
								r = field;
								{
									tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw T35_;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* assignment_2;
									T35_ = 0;
									if (!!(((393216 & (*(*(*r)._Ukind.S4.sym).typ).flags) == T35_))) goto LA36_;
									assignment_2 = locateFieldInInitExpr_A1jnc89cFTLh9bz8KfRFS7Dw(c, (*r)._Ukind.S4.sym, initExpr);
									{
										if (!(assignment_2 == NIM_NIL)) goto LA40_;
										{
											if (!((result ? result->Sup.len : 0) == ((NI) 0))) goto LA44_;
											result = copyString((*(*(*r)._Ukind.S4.sym).name).s);
										}
										goto LA42_;
										LA44_: ;
										{
											result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_137));
											result = resizeString(result, ((*(*(*r)._Ukind.S4.sym).name).s ? (*(*(*r)._Ukind.S4.sym).name).s->Sup.len : 0) + 0);
appendString(result, (*(*(*r)._Ukind.S4.sym).name).s);
										}
										LA42_: ;
									}
									LA40_: ;
								}
								LA36_: ;
							} LA28: ;
							i_2 += ((NI) 1);
						} LA27: ;
					}
				}
			}
		}
		LA2_: ;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, checkForMissingFields_sGvfrG5MpJVJu6tOwt6g2Q)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* recList, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr) {
	NimStringDesc* missing;
	missing = missingMandatoryFields_Itzn66C3O2qVlbXOhavwVw_2(c, recList, initExpr);
	{
		tyArray_nHXaesL0DJZHyVS07ARPRA T5_;
		if (!(((NI) 0) < (missing ? missing->Sup.len : 0))) goto LA3_;
		nimZeroMem((void*)T5_, sizeof(tyArray_nHXaesL0DJZHyVS07ARPRA));
		T5_[0] = copyString(missing);
		localError_J7zC9cOLuc4LIi9ckAAkcM8Q((*(*c).graph).config, (*initExpr).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_295), T5_, 1);
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, pickCaseBranch_QHSyvh6Xa88rl9aAWP3nMRg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* caseExpr, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* matched) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NIM_BOOL endsWithElse;
	NI T1_;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (NI)0;
	T1_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(caseExpr);
	endsWithElse = ((*(*caseExpr)._Ukind.S6.sons->data[(NI)(T1_ - ((NI) 1))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88));
	{
		NI i;
		NI colontmp_;
		NI T3_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T3_ = (NI)0;
		T3_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(caseExpr);
		colontmp_ = (NI)((NI)(T3_ - ((NI) 1)) - ((NI) (endsWithElse)));
		res = ((NI) 1);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA5;
				i = res;
				{
					NIM_BOOL T8_;
					T8_ = (NIM_BOOL)0;
					T8_ = caseBranchMatchesExpr_aV4lPADyuJD9boY9cxzVtVVA((*caseExpr)._Ukind.S6.sons->data[i], matched);
					if (!T8_) goto LA9_;
					result = (*caseExpr)._Ukind.S6.sons->data[i];
					goto BeforeRet_;
				}
				LA9_: ;
				res += ((NI) 1);
			} LA5: ;
		}
	}
	{
		NI T15_;
		if (!endsWithElse) goto LA13_;
		T15_ = (NI)0;
		T15_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(caseExpr);
		result = (*caseExpr)._Ukind.S6.sons->data[(NI)(T15_ - ((NI) 1))];
		goto BeforeRet_;
	}
	LA13_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ, semConstructFields_Fd2g9bi409bTw59cMhOunuWYA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* recNode, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ result;
	result = (tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ)0;
	result = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 0);
	switch ((*recNode).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* field;
			field = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(recNode);
				i_2 = ((NI) 0);
				{
					while (1) {
						tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ status;
						if (!(i_2 < colontmp_)) goto LA5;
						i = i_2;
						field = (*recNode)._Ukind.S6.sons->data[i];
						status = semConstructFields_Fd2g9bi409bTw59cMhOunuWYA(c, field, initExpr, flags);
						mergeInitStatus_vweTYREIAWa53nOKdzM0qA((&result), status);
						i_2 += ((NI) 1);
					} LA5: ;
				}
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* discriminator;
		NI selectedBranch;
		discriminator = (*recNode)._Ukind.S6.sons->data[((NI) 0)];
		{
			NimStringDesc* T11_;
			if (!!(((*discriminator).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA9_;
			T11_ = (NimStringDesc*)0;
			T11_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_285);
			internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T11_);
		}
		LA9_: ;
		selectedBranch = ((NI) -1);
		{
			NI i_3;
			NI colontmp__2;
			NI i_4;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(recNode);
			i_4 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* innerRecords;
					NI T15_;
					tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ status_2;
					if (!(i_4 < colontmp__2)) goto LA14;
					i_3 = i_4;
					T15_ = (NI)0;
					T15_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*recNode)._Ukind.S6.sons->data[i_3]);
					innerRecords = (*(*recNode)._Ukind.S6.sons->data[i_3])._Ukind.S6.sons->data[(NI)(T15_ - ((NI) 1))];
					status_2 = semConstructFields_Fd2g9bi409bTw59cMhOunuWYA(c, innerRecords, initExpr, flags);
					{
						if (!!(((9 &(1U<<((NU)(status_2)&7U)))!=0))) goto LA18_;
						mergeInitStatus_vweTYREIAWa53nOKdzM0qA((&result), status_2);
						{
							NimStringDesc* prevFields;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fields;
							NI T24_;
							NimStringDesc* currentFields;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch_2;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fields_2;
							NI T25_;
							tyArray_Re75IspeoxXy2oCZHwcRrA T26_;
							NimStringDesc* T27_;
							if (!!((selectedBranch == ((NI) -1)))) goto LA22_;
							branch = (*recNode)._Ukind.S6.sons->data[selectedBranch];
							T24_ = (NI)0;
							T24_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(branch);
							fields = (*branch)._Ukind.S6.sons->data[(NI)(T24_ - ((NI) 1))];
							prevFields = fieldsPresentInInitExpr_Itzn66C3O2qVlbXOhavwVw(c, fields, initExpr);
							branch_2 = (*recNode)._Ukind.S6.sons->data[i_3];
							T25_ = (NI)0;
							T25_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(branch_2);
							fields_2 = (*branch_2)._Ukind.S6.sons->data[(NI)(T25_ - ((NI) 1))];
							currentFields = fieldsPresentInInitExpr_Itzn66C3O2qVlbXOhavwVw(c, fields_2, initExpr);
							nimZeroMem((void*)T26_, sizeof(tyArray_Re75IspeoxXy2oCZHwcRrA));
							T26_[0] = copyString(prevFields);
							T26_[1] = copyString(currentFields);
							T27_ = (NimStringDesc*)0;
							T27_ = nsuFormatOpenArray(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_290), T26_, 2);
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*initExpr).info, T27_);
							result = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 4);
						}
						goto LA20_;
						LA22_: ;
						{
							selectedBranch = i_3;
						}
						LA20_: ;
					}
					LA18_: ;
					i_4 += ((NI) 1);
				} LA14: ;
			}
		}
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branchNode;
			tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags_2;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* discriminatorVal;
			if (!!((selectedBranch == ((NI) -1)))) goto LA31_;
			branchNode = (*recNode)._Ukind.S6.sons->data[selectedBranch];
			flags_2 = ((flags & 1024) | 40);
			discriminatorVal = semConstrField_qdVnDJLvcO2ffiH8DKImeg(c, flags_2, (*discriminator)._Ukind.S4.sym, initExpr);
			{
				NimStringDesc* fields_3;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch_3;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fields_4;
				NI T37_;
				tyArray_Re75IspeoxXy2oCZHwcRrA T38_;
				NimStringDesc* T39_;
				if (!(discriminatorVal == NIM_NIL)) goto LA35_;
				branch_3 = (*recNode)._Ukind.S6.sons->data[selectedBranch];
				T37_ = (NI)0;
				T37_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(branch_3);
				fields_4 = (*branch_3)._Ukind.S6.sons->data[(NI)(T37_ - ((NI) 1))];
				fields_3 = fieldsPresentInInitExpr_Itzn66C3O2qVlbXOhavwVw(c, fields_4, initExpr);
				nimZeroMem((void*)T38_, sizeof(tyArray_Re75IspeoxXy2oCZHwcRrA));
				T38_[0] = copyString((*(*(*discriminator)._Ukind.S4.sym).name).s);
				T38_[1] = copyString(fields_3);
				T39_ = (NimStringDesc*)0;
				T39_ = nsuFormatOpenArray(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_293), T38_, 2);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*initExpr).info, T39_);
				mergeInitStatus_vweTYREIAWa53nOKdzM0qA((&result), ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 3));
			}
			goto LA33_;
			LA35_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* discriminatorVal_2;
				discriminatorVal_2 = skipHidden_6rsSLwtlU9c53a6w69be5JlQ_2(discriminatorVal);
				{
					if (!!(((*branchNode).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88)))) goto LA43_;
					{
						NIM_BOOL T47_;
						NimStringDesc* fields_5;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch_4;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fields_6;
						NI T50_;
						tyArray_24KAM9afIUgUaqBaEBB6r9bg T51_;
						T47_ = (NIM_BOOL)0;
						T47_ = caseBranchMatchesExpr_aV4lPADyuJD9boY9cxzVtVVA(branchNode, discriminatorVal_2);
						if (!!(T47_)) goto LA48_;
						branch_4 = (*recNode)._Ukind.S6.sons->data[selectedBranch];
						T50_ = (NI)0;
						T50_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(branch_4);
						fields_6 = (*branch_4)._Ukind.S6.sons->data[(NI)(T50_ - ((NI) 1))];
						fields_5 = fieldsPresentInInitExpr_Itzn66C3O2qVlbXOhavwVw(c, fields_6, initExpr);
						nimZeroMem((void*)T51_, sizeof(tyArray_24KAM9afIUgUaqBaEBB6r9bg));
						T51_[0] = copyString((*(*(*discriminator)._Ukind.S4.sym).name).s);
						T51_[1] = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(discriminatorVal_2, 0);
						T51_[2] = copyString(fields_5);
						localError_J7zC9cOLuc4LIi9ckAAkcM8Q((*(*c).graph).config, (*initExpr).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_294), T51_, 3);
					}
					LA48_: ;
				}
				goto LA41_;
				LA43_: ;
				{
					{
						NI i_5;
						NI colontmp__3;
						NI T54_;
						NI res;
						i_5 = (NI)0;
						colontmp__3 = (NI)0;
						T54_ = (NI)0;
						T54_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(recNode);
						colontmp__3 = (NI)(T54_ - ((NI) 2));
						res = ((NI) 1);
						{
							while (1) {
								if (!(res <= colontmp__3)) goto LA56;
								i_5 = res;
								{
									NIM_BOOL T59_;
									NimStringDesc* fields_7;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch_5;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fields_8;
									NI T62_;
									tyArray_24KAM9afIUgUaqBaEBB6r9bg T63_;
									T59_ = (NIM_BOOL)0;
									T59_ = caseBranchMatchesExpr_aV4lPADyuJD9boY9cxzVtVVA((*recNode)._Ukind.S6.sons->data[i_5], discriminatorVal_2);
									if (!T59_) goto LA60_;
									branch_5 = (*recNode)._Ukind.S6.sons->data[i_5];
									T62_ = (NI)0;
									T62_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(branch_5);
									fields_8 = (*branch_5)._Ukind.S6.sons->data[(NI)(T62_ - ((NI) 1))];
									fields_7 = fieldsPresentInInitExpr_Itzn66C3O2qVlbXOhavwVw(c, fields_8, initExpr);
									nimZeroMem((void*)T63_, sizeof(tyArray_24KAM9afIUgUaqBaEBB6r9bg));
									T63_[0] = copyString((*(*(*discriminator)._Ukind.S4.sym).name).s);
									T63_[1] = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(discriminatorVal_2, 0);
									T63_[2] = copyString(fields_7);
									localError_J7zC9cOLuc4LIi9ckAAkcM8Q((*(*c).graph).config, (*initExpr).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_294), T63_, 3);
									goto LA53;
								}
								LA60_: ;
								res += ((NI) 1);
							} LA56: ;
						}
					} LA53: ;
				}
				LA41_: ;
			}
			LA33_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fields_9;
				NI T68_;
				if (!(result == ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 2))) goto LA66_;
				T68_ = (NI)0;
				T68_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(branchNode);
				fields_9 = (*branchNode)._Ukind.S6.sons->data[(NI)(T68_ - ((NI) 1))];
				checkForMissingFields_sGvfrG5MpJVJu6tOwt6g2Q(c, fields_9, initExpr);
			}
			LA66_: ;
		}
		goto LA29_;
		LA31_: ;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* discriminatorVal_3;
			result = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 3);
			discriminatorVal_3 = semConstrField_qdVnDJLvcO2ffiH8DKImeg(c, (flags | 16), (*discriminator)._Ukind.S4.sym, initExpr);
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* matchedBranch;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T74_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fields_10;
				NI T75_;
				if (!(discriminatorVal_3 == NIM_NIL)) goto LA72_;
				T74_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T74_ = newIntLit_TuFlkTIoJNHT6fCcycYtSw((*c).graph, (*initExpr).info, IL64(0));
				matchedBranch = pickCaseBranch_QHSyvh6Xa88rl9aAWP3nMRg(recNode, T74_);
				T75_ = (NI)0;
				T75_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(matchedBranch);
				fields_10 = (*matchedBranch)._Ukind.S6.sons->data[(NI)(T75_ - ((NI) 1))];
				checkForMissingFields_sGvfrG5MpJVJu6tOwt6g2Q(c, fields_10, initExpr);
			}
			goto LA70_;
			LA72_: ;
			{
				result = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 2);
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* matchedBranch_2;
					if (!((*discriminatorVal_3).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6))) goto LA79_;
					matchedBranch_2 = pickCaseBranch_QHSyvh6Xa88rl9aAWP3nMRg(recNode, discriminatorVal_3);
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fields_11;
						NI T85_;
						if (!!((matchedBranch_2 == NIM_NIL))) goto LA83_;
						T85_ = (NI)0;
						T85_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(matchedBranch_2);
						fields_11 = (*matchedBranch_2)._Ukind.S6.sons->data[(NI)(T85_ - ((NI) 1))];
						checkForMissingFields_sGvfrG5MpJVJu6tOwt6g2Q(c, fields_11, initExpr);
					}
					LA83_: ;
				}
				goto LA77_;
				LA79_: ;
				{
					{
						NI i_6;
						NI colontmp__4;
						NI i_7;
						i_6 = (NI)0;
						colontmp__4 = (NI)0;
						colontmp__4 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(recNode);
						i_7 = ((NI) 1);
						{
							while (1) {
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fields_12;
								NI T90_;
								if (!(i_7 < colontmp__4)) goto LA89;
								i_6 = i_7;
								T90_ = (NI)0;
								T90_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*recNode)._Ukind.S6.sons->data[i_6]);
								fields_12 = (*(*recNode)._Ukind.S6.sons->data[i_6])._Ukind.S6.sons->data[(NI)(T90_ - ((NI) 1))];
								checkForMissingFields_sGvfrG5MpJVJu6tOwt6g2Q(c, fields_12, initExpr);
								i_7 += ((NI) 1);
							} LA89: ;
						}
					}
				}
				LA77_: ;
			}
			LA70_: ;
		}
		LA29_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field_2;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e;
		field_2 = (*recNode)._Ukind.S4.sym;
		e = semConstrField_qdVnDJLvcO2ffiH8DKImeg(c, flags, field_2, initExpr);
		{
			if (!!((e == NIM_NIL))) goto LA94_;
			result = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 1);
		}
		goto LA92_;
		LA94_: ;
		{
			result = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 3);
		}
		LA92_: ;
	}
	break;
	default:
	{
		{
			NimStringDesc* T102_;
			if (!NIM_TRUE) goto LA100_;
			T102_ = (NimStringDesc*)0;
			T102_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_296);
			internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T102_);
		}
		LA100_: ;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ, semConstructType_DUCJbMThkL5yV1A9aSqewkA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* initExpr, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t_2;
	result = (tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ)0;
	t_2 = t;
	result = ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 0);
	{
		while (1) {
			tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ status;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
			status = semConstructFields_Fd2g9bi409bTw59cMhOunuWYA(c, (*t_2).n, initExpr, flags);
			mergeInitStatus_vweTYREIAWa53nOKdzM0qA((&result), status);
			{
				if (!((13 &(1U<<((NU)(status)&7U)))!=0)) goto LA5_;
				checkForMissingFields_sGvfrG5MpJVJu6tOwt6g2Q(c, (*t_2).n, initExpr);
			}
			LA5_: ;
			base = (*t_2).sons->data[((NI) 0)];
			{
				if (!(base == NIM_NIL)) goto LA9_;
				goto LA1;
			}
			LA9_: ;
			t_2 = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(base, IL64(36239903266179344));
		}
	} LA1: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semObjConstr_k2Lin9a76VyrWz9b8OoRC9apg_13)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ initResult;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	t = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
	result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 38), (*n).info, t);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* child;
		child = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA4;
					i = i_2;
					child = (*n)._Ukind.S6.sons->data[i];
					add_gCCf68XrWL79bKes6htzFjQ(result, child);
					i_2 += ((NI) 1);
				} LA4: ;
			}
		}
	}
	{
		if (!(t == NIM_NIL)) goto LA7_;
		localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_284));
		goto BeforeRet_;
	}
	LA7_: ;
	t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(t, IL64(70368744179728));
	{
		if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22))) goto LA11_;
		t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*t).sons->data[((NI) 0)], IL64(70368744179728));
	}
	LA11_: ;
	{
		if (!!(((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17)))) goto LA15_;
		localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_284));
		goto BeforeRet_;
	}
	LA15_: ;
	initResult = semConstructType_DUCJbMThkL5yV1A9aSqewkA(c, result, t, flags);
	{
		NIM_BOOL T19_;
		T19_ = (NIM_BOOL)0;
		T19_ = (((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 18))&63U)))!=0);
		if (!(T19_)) goto LA20_;
		T19_ = !((initResult == ((tyEnum_InitStatus_smZpQZ1Iq7YmllUO9aDjzwQ) 1)));
		LA20_: ;
		if (!T19_) goto LA21_;
	}
	LA21_: ;
	{
		NI i_3;
		NI colontmp__2;
		NI i_4;
		i_3 = (NI)0;
		colontmp__2 = (NI)0;
		colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
		i_4 = ((NI) 1);
		{
			while (1) {
				if (!(i_4 < colontmp__2)) goto LA25;
				i_3 = i_4;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* field;
					field = (*result)._Ukind.S6.sons->data[i_3];
					{
						tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* id;
						NimStringDesc* T43_;
						if (!!((((*field).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 7))&31U)))!=0))) goto LA29_;
						{
							if (!!(((*field).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34)))) goto LA33_;
							invalidObjConstr_wkwHEj6zZnYo2DMZys6jnA_7(c, field);
							goto LA26;
						}
						LA33_: ;
						id = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*field)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
						{
							NI j;
							NI i_5;
							j = (NI)0;
							i_5 = ((NI) 1);
							{
								while (1) {
									tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* prevId;
									if (!(i_5 < i_3)) goto LA37;
									j = i_5;
									prevId = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*(*result)._Ukind.S6.sons->data[j])._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
									{
										NimStringDesc* T42_;
										if (!((*prevId).Sup.id == (*id).Sup.id)) goto LA40_;
										T42_ = (NimStringDesc*)0;
										T42_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_297), (*id).s);
										localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*field).info, T42_);
										goto BeforeRet_;
									}
									LA40_: ;
									i_5 += ((NI) 1);
								} LA37: ;
							}
						}
						T43_ = (NimStringDesc*)0;
						T43_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_206), (*id).s);
						localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*field).info, T43_);
						goto BeforeRet_;
					}
					LA29_: ;
				} LA26: ;
				i_4 += ((NI) 1);
			} LA25: ;
		}
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, lookUpForDefined_o9caJu5fKCWYveiCPs9aq1eA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* i, NIM_BOOL onlyCurrentScope) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		if (!onlyCurrentScope) goto LA3_;
		result = localSearchInScope_xnVjAYTNrHOYQvPVqwg14w_2(c, i);
	}
	goto LA1_;
	LA3_: ;
	{
		result = searchInScopes_xnVjAYTNrHOYQvPVqwg14w(c, i);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, lookUpForDefined_yjrNXMmFJKKoCFs4JxJVGw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL onlyCurrentScope) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
{	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	{
		result = lookUpForDefined_o9caJu5fKCWYveiCPs9aq1eA(c, (*n)._Ukind.S5.ident, onlyCurrentScope);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m;
		result = NIM_NIL;
		{
			if (!onlyCurrentScope) goto LA5_;
			goto BeforeRet_;
		}
		LA5_: ;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
		m = lookUpForDefined_yjrNXMmFJKKoCFs4JxJVGw(c, (*n)._Ukind.S6.sons->data[((NI) 0)], onlyCurrentScope);
		{
			NIM_BOOL T9_;
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
			T9_ = (NIM_BOOL)0;
			T9_ = !((m == NIM_NIL));
			if (!(T9_)) goto LA10_;
			T9_ = ((*m).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6));
			LA10_: ;
			if (!T9_) goto LA11_;
			ident = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], n);
			{
				if (!(m == (*c).module)) goto LA15_;
				result = strTableGet_0xgFDJUQtGGr2e0Sq9aLIhA((*(*c).topLevelScope).symbols, ident);
			}
			goto LA13_;
			LA15_: ;
			{
				result = strTableGet_0xgFDJUQtGGr2e0Sq9aLIhA((*m)._Ukind.S3.tab, ident);
			}
			LA13_: ;
		}
		LA11_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T19_;
		T19_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T19_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, n, NIM_NIL);
		result = lookUpForDefined_o9caJu5fKCWYveiCPs9aq1eA(c, T19_, onlyCurrentScope);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		result = (*n)._Ukind.S4.sym;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 57):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56):
	{
		result = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
	}
	break;
	default:
	{
		NimStringDesc* T23_;
		NimStringDesc* T24_;
		T23_ = (NimStringDesc*)0;
		T24_ = (NimStringDesc*)0;
		T24_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 0);
		T23_ = rawNewString((T24_ ? T24_->Sup.len : 0) + 30);
appendString(T23_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_299));
appendString(T23_, T24_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T23_);
		result = NIM_NIL;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semDefined_Mr0uHCtBea07Z9bi1nS1OpQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL onlyCurrentScope) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
	result = newIntNode_v2VGJAZNfKPVngZCqEXQtA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(0));
	{
		NIM_BOOL T3_;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T5_;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* d;
		NIM_BOOL T8_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(onlyCurrentScope);
		if (!(T3_)) goto LA4_;
		T5_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T5_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], n);
		T3_ = eqStrings((*T5_).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_298));
		LA4_: ;
		if (!T3_) goto LA6_;
		d = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], n);
		T8_ = (NIM_BOOL)0;
		T8_ = isDefined_TeEHxEj0zXnJc9aUarshH9aA((*(*c).graph).config, (*d).s);
		(*result)._Ukind.S1.intVal = ((NI64) (T8_));
	}
	goto LA1_;
	LA6_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T10_;
		T10_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T10_ = lookUpForDefined_yjrNXMmFJKKoCFs4JxJVGw(c, (*n)._Ukind.S6.sons->data[((NI) 1)], onlyCurrentScope);
		if (!!((T10_ == NIM_NIL))) goto LA11_;
		(*result)._Ukind.S1.intVal = IL64(1);
	}
	goto LA1_;
	LA11_: ;
	LA1_: ;
	(*result).info = (*n).info;
	asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1)));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, setMs_HxQrSJkCS7p8gVuHUd0Mfg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(s));
	(*(*n)._Ukind.S6.sons->data[((NI) 0)]).info = (*n).info;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tryExpr_k2Lin9a76VyrWz9b8OoRC9apg_16)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* volatile result;
	NI oldErrorCount;
	NI oldErrorMax;
	NI oldCompilesId;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* oldScope;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	NI oldOwnerLen;
	NI T2_;
	tySequence_jWKvSdankQPoT5bw9cBU9aiw* oldGenerics;
	tySet_tyEnum_TErrorOutput_fBf8Teueoz9aAkO5cXaxrpA oldErrorOutputs;
	NI oldContextLen;
	NI oldInGenericContext;
	NI oldInUnrolledContext;
	NI oldInGenericInst;
	NI oldInStaticContext;
	tyObject_TProcCon_s5jyYR8yL1QmFqiHICzU9aQ* oldProcCon;
	NimStringDesc* err;
	TSafePoint TM_rF9caJawfOjYTjsgLVUSGFA_300;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	oldErrorCount = (*(*(*c).graph).config).errorCounter;
	oldErrorMax = (*(*(*c).graph).config).errorMax;
	oldCompilesId = (*c).compilesContextId;
	(*c).compilesContextIdGenerator += ((NI) 1);
	(*c).compilesContextId = (*c).compilesContextIdGenerator;
	(*(*(*c).graph).config).errorMax = ((NI) 2147483647);
	oldScope = (*c).currentScope;
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	T2_ = ((*(*c).graph).owners ? (*(*c).graph).owners->Sup.len : 0);
	oldOwnerLen = T2_;
	oldGenerics = (*c).generics;
	oldErrorOutputs = (*(*(*c).graph).config).m.errorOutputs;
	{
		if (!!(((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))&31U)))!=0))) goto LA5_;
		(*(*(*c).graph).config).m.errorOutputs = 0;
	}
	LA5_: ;
	oldContextLen = getInfoContextLen_i4TL6lhQkdfTCMQPkAA29bQ((*(*c).graph).config);
	oldInGenericContext = (*c).inGenericContext;
	oldInUnrolledContext = (*c).inUnrolledContext;
	oldInGenericInst = (*c).inGenericInst;
	oldInStaticContext = (*c).inStaticContext;
	oldProcCon = (*c).p;
	if ((*c).generics) { nimGCunrefNoCycle((*c).generics); (*c).generics = NIM_NIL; }
	err = (NimStringDesc*)0;
	pushSafePoint(&TM_rF9caJawfOjYTjsgLVUSGFA_300);
	TM_rF9caJawfOjYTjsgLVUSGFA_300.status = setjmp(TM_rF9caJawfOjYTjsgLVUSGFA_300.context);
	if (TM_rF9caJawfOjYTjsgLVUSGFA_300.status == 0) {
		result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, n, flags);
		{
			if (!!(((*(*(*c).graph).config).errorCounter == oldErrorCount))) goto LA10_;
			result = NIM_NIL;
		}
		LA10_: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI_AQaBoN9cWXPQJGaPX5hY5PQ_))) {
			TM_rF9caJawfOjYTjsgLVUSGFA_300.status = 0;
			popCurrentException();
		}
	}
	if (TM_rF9caJawfOjYTjsgLVUSGFA_300.status != 0) reraiseException();
	(*c).compilesContextId = oldCompilesId;
	genericSeqAssign((&(*c).generics), oldGenerics, (&NTI_jWKvSdankQPoT5bw9cBU9aiw_));
	(*c).inGenericContext = oldInGenericContext;
	(*c).inUnrolledContext = oldInUnrolledContext;
	(*c).inGenericInst = oldInGenericInst;
	(*c).inStaticContext = oldInStaticContext;
	asgnRef((void**) (&(*c).p), oldProcCon);
	setInfoContextLen_VesEIs1bHpks19b5m8CmDOw((*(*c).graph).config, oldContextLen);
	asgnRefNoCycle((void**) (&(*(*c).graph).owners), (tySequence_DfgJFJEYoj4YBAHLZPl5lQ*) setLengthSeqV2(&((*(*c).graph).owners)->Sup, (&NTI_DfgJFJEYoj4YBAHLZPl5lQ_), ((NI) (oldOwnerLen))));
	asgnRef((void**) (&(*c).currentScope), oldScope);
	(*(*(*c).graph).config).m.errorOutputs = oldErrorOutputs;
	(*(*(*c).graph).config).errorCounter = oldErrorCount;
	(*(*(*c).graph).config).errorMax = oldErrorMax;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semCompiles_k2Lin9a76VyrWz9b8OoRC9apg_15)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!!((T3_ == ((NI) 2)))) goto LA4_;
		result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, flags);
		goto BeforeRet_;
	}
	LA4_: ;
	T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T6_ = tryExpr_k2Lin9a76VyrWz9b8OoRC9apg_16(c, (*n)._Ukind.S6.sons->data[((NI) 1)], flags);
	result = newIntNode_v2VGJAZNfKPVngZCqEXQtA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), ((NI64) (!((T6_ == NIM_NIL)))));
	(*result).info = (*n).info;
	asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1)));
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semSizeof_U3qPBy54f1PkCP8vmFMCRA_31)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI T3_;
		NimStringDesc* T6_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!!((T3_ == ((NI) 2)))) goto LA4_;
		T6_ = (NimStringDesc*)0;
		T6_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_171), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_301));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T6_);
	}
	goto LA1_;
	LA4_: ;
	{
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 1)], 256));
	}
	LA1_: ;
	asgnRefNoCycle((void**) (&(*n).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31)));
	result = n;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, fixupStaticType_VTnsivFjadOFCMuOynUlbw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T5_;
		tySequence_Ef05srmQTDulnBdXR4Ja6Q* T6_;
		if (!!(((*(*n).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60)))) goto LA3_;
		T5_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T5_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
		T6_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
		T6_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
		asgnRefNoCycle((void**) (&T6_->data[0]), (*n).typ);
		asgnRefNoCycle((void**) (&(*n).typ), newTypeWithSons_9bMWuh2Si4sNtAnCubzpXcA(T5_, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60), T6_));
		asgnRefNoCycle((void**) (&(*(*n).typ).n), n);
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, isOpImpl_k2Lin9a76VyrWz9b8OoRC9apg_18)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NIM_BOOL res;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t1;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t2;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		NI T5_;
		NimStringDesc* T10_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T5_ = (NI)0;
		T5_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		T4_ = (T5_ == ((NI) 3));
		if (!(T4_)) goto LA6_;
		T4_ = !(((*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ == NIM_NIL));
		LA6_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA7_;
		T3_ = ((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20) && (*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 22) || (*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4));
		LA7_: ;
		if (!!(T3_)) goto LA8_;
		T10_ = (NimStringDesc*)0;
		T10_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_303);
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T10_);
	}
	LA8_: ;
	res = NIM_FALSE;
	t1 = (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ;
	t2 = (*(*n)._Ukind.S6.sons->data[((NI) 2)]).typ;
	{
		NIM_BOOL T13_;
		T13_ = (NIM_BOOL)0;
		T13_ = ((*t1).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
		if (!(T13_)) goto LA14_;
		T13_ = !(((*t2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8)));
		LA14_: ;
		if (!T13_) goto LA15_;
		t1 = base_BFFuB9cFDZ89c6QWZqEFAtdA(t1);
	}
	LA15_: ;
	{
		NimStringDesc* T21_;
		if (!((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20) && (*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 22))) goto LA19_;
		T21_ = (NimStringDesc*)0;
		T21_ = nsuNormalize((*(*n)._Ukind.S6.sons->data[((NI) 2)])._Ukind.S3.strVal);
		if (eqStrings(T21_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_304))) goto LA22_;
		if (eqStrings(T21_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_305))) goto LA23_;
		goto LA24_;
		LA22_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
			NIM_BOOL T27_;
			NIM_BOOL T28_;
			t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(t1, IL64(36099165764233488));
			T27_ = (NIM_BOOL)0;
			T28_ = (NIM_BOOL)0;
			T28_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25));
			if (!(T28_)) goto LA29_;
			T28_ = ((*t).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
			LA29_: ;
			T27_ = T28_;
			if (!(T27_)) goto LA30_;
			T27_ = !((((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 15))&63U)))!=0));
			LA30_: ;
			res = T27_;
		}
		goto LA25_;
		LA23_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t_2;
			NIM_BOOL T32_;
			NIM_BOOL T33_;
			t_2 = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(t1, IL64(36099165764233488));
			T32_ = (NIM_BOOL)0;
			T33_ = (NIM_BOOL)0;
			T33_ = ((*t_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25));
			if (!(T33_)) goto LA34_;
			T33_ = ((*t_2).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
			LA34_: ;
			T32_ = T33_;
			if (!(T32_)) goto LA35_;
			T32_ = (((*t_2).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 15))&63U)))!=0);
			LA35_: ;
			res = T32_;
		}
		goto LA25_;
		LA24_: ;
		{
			res = NIM_FALSE;
		}
		LA25_: ;
	}
	goto LA17_;
	LA19_: ;
	{
		tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA m;
		tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ r;
		maybeLiftType_T3CMuM9cllXYTybk03hCyKA(&t2, c, (*n).info);
		nimZeroMem((void*)(&m), sizeof(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA));
		initCandidate_al6D1MtFq9bIwSvVxpct8pw(c, (&m), t2);
		{
			if (!((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))&31U)))!=0)) goto LA40_;
			m.diagnostics = NIM_NIL;
			m.diagnosticsEnabled = NIM_TRUE;
		}
		LA40_: ;
		r = typeRelImpl_3a3tkQB9aY8V2J9acM5cZ6nA((&m), t2, t1, 0);
		res = (((tyEnum_TTypeRelation_1IMf5P083XuEtWGxYaIXyQ) 3) <= r);
	}
	LA17_: ;
	result = newIntNode_v2VGJAZNfKPVngZCqEXQtA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), ((NI64) (res)));
	asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semIs_k2Lin9a76VyrWz9b8OoRC9apg_17)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* boolType;
	NIM_BOOL liftLhs;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lhsType;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!!((T3_ == ((NI) 3)))) goto LA4_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_302));
	}
	LA4_: ;
	boolType = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1));
	result = n;
	asgnRefNoCycle((void**) (&(*n).typ), boolType);
	liftLhs = NIM_TRUE;
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 1)], 258));
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t2;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20) && (*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 22)))) goto LA8_;
		t2 = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 2)], NIM_NIL);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 2)]), newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4), (*(*n)._Ukind.S6.sons->data[((NI) 2)]).info, t2));
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* evaluated;
			if (!((*t2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60))) goto LA12_;
			evaluated = tryConstExpr_U3qPBy54f1PkCP8vmFMCRA_30(c, (*n)._Ukind.S6.sons->data[((NI) 1)]);
			{
				if (!!((evaluated == NIM_NIL))) goto LA16_;
				fixupStaticType_VTnsivFjadOFCMuOynUlbw(c, evaluated);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), evaluated);
			}
			goto LA14_;
			LA16_: ;
			{
				result = newIntNode_v2VGJAZNfKPVngZCqEXQtA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(0));
				asgnRefNoCycle((void**) (&(*result).typ), boolType);
				goto BeforeRet_;
			}
			LA14_: ;
		}
		goto LA10_;
		LA12_: ;
		{
			NIM_BOOL T20_;
			NIM_BOOL T22_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T23_;
			T20_ = (NIM_BOOL)0;
			T20_ = ((*t2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
			if (!(T20_)) goto LA21_;
			T22_ = (NIM_BOOL)0;
			T23_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T23_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(t2);
			T22_ = ((*T23_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0));
			if (T22_) goto LA24_;
			T22_ = (((*t2).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 28))&63U)))!=0);
			LA24_: ;
			T20_ = T22_;
			LA21_: ;
			if (!T20_) goto LA25_;
			liftLhs = NIM_FALSE;
		}
		goto LA10_;
		LA25_: ;
		LA10_: ;
	}
	goto LA6_;
	LA8_: ;
	{
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 2)]), semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 2)], 0));
	}
	LA6_: ;
	lhsType = (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ;
	{
		if (!!(((*lhsType).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8)))) goto LA30_;
		{
			if (!liftLhs) goto LA34_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), makeTypeSymNode_4Ic49c9aaGM26Rha89b6zEWGg(c, lhsType, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info));
			lhsType = (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ;
		}
		LA34_: ;
	}
	goto LA28_;
	LA30_: ;
	{
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T39_;
			T39_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T39_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(lhsType);
			if (!((*T39_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0))) goto LA40_;
			goto BeforeRet_;
		}
		LA40_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T44_;
			NIM_BOOL T45_;
			T44_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T44_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(lhsType);
			T45_ = (NIM_BOOL)0;
			T45_ = containsGenericType_YPjOkGV9axAnGR3UfLeWZ1g(T44_);
			if (!T45_) goto LA46_;
			goto BeforeRet_;
		}
		LA46_: ;
	}
	LA28_: ;
	result = isOpImpl_k2Lin9a76VyrWz9b8OoRC9apg_18(c, n, flags);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExpandToAst_U3qPBy54f1PkCP8vmFMCRA_32)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* macroCall;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	macroCall = (*n)._Ukind.S6.sons->data[((NI) 1)];
	{
		NIM_BOOL T3_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* headSymbol;
		NI cands;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* cand;
		tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ o;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* symx;
		T3_ = (NIM_BOOL)0;
		T3_ = isCallExpr_63pt39coF5C8JoG0utNnwWg(macroCall);
		if (!T3_) goto LA4_;
		{
			NI i;
			NI colontmp_;
			NI T7_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T7_ = (NI)0;
			T7_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(macroCall);
			colontmp_ = (NI)(T7_ - ((NI) 1));
			res = ((NI) 1);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA9;
					i = res;
					asgnRefNoCycle((void**) (&(*macroCall)._Ukind.S6.sons->data[i]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*macroCall)._Ukind.S6.sons->data[i], 0));
					res += ((NI) 1);
				} LA9: ;
			}
		}
		headSymbol = (*macroCall)._Ukind.S6.sons->data[((NI) 0)];
		cands = ((NI) 0);
		cand = NIM_NIL;
		nimZeroMem((void*)(&o), sizeof(tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ));
		symx = initOverloadIter_5E8M4x8tMAW3KCmti57FUA((&o), c, headSymbol);
		{
			while (1) {
				if (!!((symx == NIM_NIL))) goto LA11;
				{
					NIM_BOOL T14_;
					NI T16_;
					NI T17_;
					T14_ = (NIM_BOOL)0;
					T14_ = ((393216 &(1U<<((NU)((*symx).kind)&31U)))!=0);
					if (!(T14_)) goto LA15_;
					T16_ = (NI)0;
					T16_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*symx).typ);
					T17_ = (NI)0;
					T17_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(macroCall);
					T14_ = (T16_ == T17_);
					LA15_: ;
					if (!T14_) goto LA18_;
					cand = symx;
					cands += ((NI) 1);
				}
				LA18_: ;
				symx = nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2((&o), c, headSymbol);
			} LA11: ;
		}
		{
			NimStringDesc* T24_;
			NI T25_;
			NimStringDesc* T26_;
			if (!(cands == ((NI) 0))) goto LA22_;
			T24_ = (NimStringDesc*)0;
			T25_ = (NI)0;
			T25_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(macroCall);
			T26_ = (NimStringDesc*)0;
			T26_ = nimIntToStr((NI)(T25_ - ((NI) 1)));
			T24_ = rawNewString((T26_ ? T26_->Sup.len : 0) + 41);
appendString(T24_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_306));
appendString(T24_, T26_);
appendString(T24_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_307));
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T24_);
		}
		goto LA20_;
		LA22_: ;
		{
			NimStringDesc* T30_;
			NimStringDesc* T31_;
			if (!(((NI) 2) <= cands)) goto LA28_;
			T30_ = (NimStringDesc*)0;
			T31_ = (NimStringDesc*)0;
			T31_ = dollar__qX5C9b0n9bOP7jk69amC8dA7A(macroCall);
			T30_ = rawNewString((T31_ ? T31_->Sup.len : 0) + 38);
appendString(T30_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_308));
appendString(T30_, T31_);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T30_);
		}
		goto LA20_;
		LA28_: ;
		{
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
			info = (*(*macroCall)._Ukind.S6.sons->data[((NI) 0)]).info;
			asgnRefNoCycle((void**) (&(*macroCall)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(cand, info));
			markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, info, cand, &(*(*c).graph).usageSym);
		}
		LA20_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		NimStringDesc* T34_;
		NimStringDesc* T35_;
		T34_ = (NimStringDesc*)0;
		T35_ = (NimStringDesc*)0;
		T35_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 0);
		T34_ = rawNewString((T35_ ? T35_->Sup.len : 0) + 29);
appendString(T34_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_309));
appendString(T34_, T35_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T34_);
	}
	LA1_: ;
	{
		NimStringDesc* T40_;
		if (!!(((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 25)))) goto LA38_;
		T40_ = (NimStringDesc*)0;
		T40_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_310);
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T40_);
	}
	LA38_: ;
	{
		NIM_BOOL T43_;
		NI T45_;
		T43_ = (NIM_BOOL)0;
		T43_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115));
		if (!(T43_)) goto LA44_;
		T45_ = (NI)0;
		T45_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		T43_ = (T45_ == ((NI) 1));
		LA44_: ;
		if (!T43_) goto LA46_;
		result = (*n)._Ukind.S6.sons->data[((NI) 0)];
	}
	goto LA41_;
	LA46_: ;
	{
		result = n;
	}
	LA41_: ;
	asgnRefNoCycle((void**) (&(*result).typ), sysTypeFromName_tS9cwSHSUZLgy9baxOcGRlCQ((*c).graph, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_45)));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExpandToAst_Y2UrrUliAmkw9c9cYffF3NkQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* magicSym, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 2))) goto LA4_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(magicSym, (*n).info));
		result = semExpandToAst_U3qPBy54f1PkCP8vmFMCRA_32(c, n);
	}
	goto LA1_;
	LA4_: ;
	{
		result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, flags);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, expectString_elgQGRXRdZY9cugwHxJNdJA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NimStringDesc* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
{	result = (NimStringDesc*)0;
	n_2 = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, n);
	{
		if (!((*n_2).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20) && (*n_2).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 22))) goto LA3_;
		result = copyString((*n_2)._Ukind.S3.strVal);
		goto BeforeRet_;
	}
	goto LA1_;
	LA3_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n_2).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_175));
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, processQuotations_pJS9b4mS9a8f5U2XwkAvXsRQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** n, NimStringDesc* op, tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ** quotes, tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ** ids) {
{	{
		if (!((*(*n)).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30))) goto LA3_;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw((*n), ((NI) 2), (*(*c).graph).config);
		{
			NimStringDesc* examinedOp;
			if (!((*(*(*n))._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA7_;
			examinedOp = copyString((*(*(*(*n))._Ukind.S6.sons->data[((NI) 0)])._Ukind.S5.ident).s);
			{
				NI T13_;
				NI T14_;
				NimStringDesc* T15_;
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T16_;
				NI T17_;
				if (!eqStrings(examinedOp, op)) goto LA11_;
				unsureAsgnRef((void**) (&(*quotes)), (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3(&((*quotes))->Sup, (&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
				T13_ = (*quotes)->Sup.len++;
				asgnRefNoCycle((void**) (&(*quotes)->data[T13_]), (*(*n))._Ukind.S6.sons->data[((NI) 1)]);
				T14_ = ((*quotes) ? (*quotes)->Sup.len : 0);
				T15_ = (NimStringDesc*)0;
				T15_ = nimIntToStr(T14_);
				T16_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T16_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, T15_);
				unsureAsgnRef((void**) (&(*n)), newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T16_, (*(*n)).info));
				unsureAsgnRef((void**) (&(*ids)), (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3(&((*ids))->Sup, (&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
				T17_ = (*ids)->Sup.len++;
				asgnRefNoCycle((void**) (&(*ids)->data[T17_]), (*n));
				goto BeforeRet_;
			}
			goto LA9_;
			LA11_: ;
			{
				NIM_BOOL T19_;
				NimStringDesc* T22_;
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T23_;
				T19_ = (NIM_BOOL)0;
				T19_ = nsuStartsWith(examinedOp, op);
				if (!T19_) goto LA20_;
				T22_ = (NimStringDesc*)0;
				T22_ = substr_9bUFQ4OV1temcDF0GZp317g(examinedOp, (op ? op->Sup.len : 0));
				T23_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T23_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, T22_);
				asgnRefNoCycle((void**) (&(*(*n))._Ukind.S6.sons->data[((NI) 0)]), newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T23_, (*(*n)).info));
			}
			goto LA9_;
			LA20_: ;
			LA9_: ;
		}
		LA7_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T25_;
		NI T29_;
		NI T30_;
		NimStringDesc* T31_;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T32_;
		NI T33_;
		T25_ = (NIM_BOOL)0;
		T25_ = ((*(*n)).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53));
		if (!(T25_)) goto LA26_;
		T25_ = eqStrings(op, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_312));
		LA26_: ;
		if (!T25_) goto LA27_;
		unsureAsgnRef((void**) (&(*quotes)), (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3(&((*quotes))->Sup, (&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
		T29_ = (*quotes)->Sup.len++;
		asgnRefNoCycle((void**) (&(*quotes)->data[T29_]), (*(*n))._Ukind.S6.sons->data[((NI) 0)]);
		T30_ = ((*quotes) ? (*quotes)->Sup.len : 0);
		T31_ = (NimStringDesc*)0;
		T31_ = nimIntToStr(T30_);
		T32_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T32_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, T31_);
		unsureAsgnRef((void**) (&(*n)), newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T32_, (*(*n)).info));
		unsureAsgnRef((void**) (&(*ids)), (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3(&((*ids))->Sup, (&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
		T33_ = (*ids)->Sup.len++;
		asgnRefNoCycle((void**) (&(*ids)->data[T33_]), (*n));
		goto BeforeRet_;
	}
	goto LA1_;
	LA27_: ;
	LA1_: ;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer((*n));
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA36;
				i = i_2;
				processQuotations_pJS9b4mS9a8f5U2XwkAvXsRQ(c, &(*(*n))._Ukind.S6.sons->data[i], op, quotes, ids);
				i_2 += ((NI) 1);
			} LA36: ;
		}
	}
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newAnonSym_Om9cr60hOT7Cr9a5PkQCTB9ag)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T1_;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
	result = newSym_ZQfOwiQo63qLga19cuF5r9cQ(kind, (*(*c).cache).idAnon, T1_, info, 0);
	(*result).flags = IL64(4294967296);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplBodyDirty_DuioLh4uofptxEKissr2sw_3)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA4_;
			{
				NIM_BOOL T8_;
				T8_ = (NIM_BOOL)0;
				T8_ = ((*s).owner == (*c).owner);
				if (!(T8_)) goto LA9_;
				T8_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
				LA9_: ;
				if (!T8_) goto LA10_;
				result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
			}
			goto LA6_;
			LA10_: ;
			{
				NIM_BOOL T13_;
				T13_ = (NIM_BOOL)0;
				T13_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).toBind), (*s).Sup.id);
				if (!T13_) goto LA14_;
				result = symChoice_e9ckn59a48lY35fHaH19c0xsw((*c).c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
			}
			goto LA6_;
			LA14_: ;
			LA6_: ;
		}
		LA4_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 55):
	{
		result = semTemplBodyDirty_DuioLh4uofptxEKissr2sw_3(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 122):
	{
		result = semBindStmt_7Gad7eXdiknA9a8oMyCe5VQ((*c).c, n, (&(*c).toBind));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 24):
	{
	}
	break;
	default:
	{
		{
			NIM_BOOL T22_;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_2;
			T22_ = (NIM_BOOL)0;
			T22_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45));
			if (T22_) goto LA23_;
			T22_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53));
			LA23_: ;
			if (!T22_) goto LA24_;
			s_2 = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA((*c).c, n, 0);
			{
				NIM_BOOL T28_;
				T28_ = (NIM_BOOL)0;
				T28_ = !((s_2 == NIM_NIL));
				if (!(T28_)) goto LA29_;
				T28_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).toBind), (*s_2).Sup.id);
				LA29_: ;
				if (!T28_) goto LA30_;
				result = symChoice_e9ckn59a48lY35fHaH19c0xsw((*c).c, n, s_2, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
				goto BeforeRet_;
			}
			LA30_: ;
		}
		LA24_: ;
		result = n;
		{
			NI i;
			NI colontmp_;
			NI T33_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T33_ = (NI)0;
			T33_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp_ = (NI)(T33_ - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA35;
					i = res;
					asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i]), semTemplBodyDirty_DuioLh4uofptxEKissr2sw_3(c, (*n)._Ukind.S6.sons->data[i]));
					res += ((NI) 1);
				} LA35: ;
			}
		}
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplSymbol_xZiYClCxIP6FwnrTC88utQ_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
	switch ((*s).kind) {
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 0):
	{
		result = n;
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6):
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12) ... ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
	{
		result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 1));
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 4):
	{
		result = newSymNodeTypeDesc_LBSKfJWN58S5YV9bDMBn6bQ(s, (*n).info);
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3):
	{
		result = n;
	}
	break;
	case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7):
	{
		result = newSymNodeTypeDesc_LBSKfJWN58S5YV9bDMBn6bQ(s, (*n).info);
	}
	break;
	default:
	{
		result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplBodySons_DuioLh4uofptxEKissr2sw_5)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[i]));
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, openScope_0Es23PZ9cl46kbzD1369aKcw)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c) {
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ((*c).c);
}

N_LIB_PRIVATE N_NIMCALL(void, closeScope_v8rOnBcZIF3O8b3uSd4HeA)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c) {
	closeScope_q62Ixzqzx2R5yeGMamw81g((*c).c);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplBodyScope_DuioLh4uofptxEKissr2sw_6)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	openScope_0Es23PZ9cl46kbzD1369aKcw(c);
	result = semTemplBody_DuioLh4uofptxEKissr2sw_4(c, n);
	closeScope_v8rOnBcZIF3O8b3uSd4HeA(c);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw, symBinding_NA0Thw35VzKPau46ha9a0iA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw result;
{	result = (tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw)0;
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* key;
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				it = (*n)._Ukind.S6.sons->data[i];
				{
					if (!((*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34))) goto LA7_;
					key = (*it)._Ukind.S6.sons->data[((NI) 0)];
				}
				goto LA5_;
				LA7_: ;
				{
					key = it;
				}
				LA5_: ;
				{
					tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw T14_;
					if (!((*key).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA12_;
					T14_ = (tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw)0;
					T14_ = whichKeyword_6Crk8YhMgh1FqDtsVJsurA((*key)._Ukind.S5.ident);
					switch (T14_) {
					case ((tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw) 188):
					{
						result = ((tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw) 1);
						goto BeforeRet_;
					}
					break;
					case ((tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw) 189):
					{
						result = ((tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw) 2);
						goto BeforeRet_;
					}
					break;
					default:
					{
					}
					break;
					}
				}
				LA12_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, onlyReplaceParams_DuioLh4uofptxEKissr2sw_7)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA3_;
		s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA7_;
			{
				NIM_BOOL T11_;
				T11_ = (NIM_BOOL)0;
				T11_ = ((*s).owner == (*c).owner);
				if (!(T11_)) goto LA12_;
				T11_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
				LA12_: ;
				if (!T11_) goto LA13_;
				(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
				result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
			}
			LA13_: ;
		}
		LA7_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA18;
					i = i_2;
					asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i]), onlyReplaceParams_DuioLh4uofptxEKissr2sw_7(c, (*n)._Ukind.S6.sons->data[i]));
					i_2 += ((NI) 1);
				} LA18: ;
			}
		}
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getIdentNode_DuioLh4uofptxEKissr2sw_8)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31):
	{
		result = getIdentNode_DuioLh4uofptxEKissr2sw_8(c, (*n)._Ukind.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43):
	{
		result = getIdentNode_DuioLh4uofptxEKissr2sw_8(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		result = n;
		s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA6_;
			{
				NIM_BOOL T10_;
				T10_ = (NIM_BOOL)0;
				T10_ = ((*s).owner == (*c).owner);
				if (!(T10_)) goto LA11_;
				T10_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
				LA11_: ;
				if (!T10_) goto LA12_;
				result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
			}
			LA12_: ;
		}
		LA6_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		result = n;
	}
	break;
	default:
	{
		illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*(*c).c).graph).config);
		result = n;
	}
	break;
	}
	return result;
}

static N_INLINE(NIM_BOOL, isTemplParam_hvqHvanyIpU9arLUwYZORaAsem)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T2_;
	NIM_BOOL T3_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T2_ = (NIM_BOOL)0;
	T3_ = (NIM_BOOL)0;
	T3_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
	if (!(T3_)) goto LA4_;
	T3_ = ((*(*n)._Ukind.S4.sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
	LA4_: ;
	T2_ = T3_;
	if (!(T2_)) goto LA5_;
	T2_ = ((*(*n)._Ukind.S4.sym).owner == (*c).owner);
	LA5_: ;
	T1_ = T2_;
	if (!(T1_)) goto LA6_;
	T1_ = !((((*(*n)._Ukind.S4.sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0));
	LA6_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, replaceIdentBySym_uF9b3XfWiPjk2FdRSI9bmPUg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s) {
	switch ((*(*n)).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31):
	{
		replaceIdentBySym_uF9b3XfWiPjk2FdRSI9bmPUg(c, &(*(*n))._Ukind.S6.sons->data[((NI) 1)], s);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43):
	{
		replaceIdentBySym_uF9b3XfWiPjk2FdRSI9bmPUg(c, &(*(*n))._Ukind.S6.sons->data[((NI) 0)], s);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		unsureAsgnRef((void**) (&(*n)), s);
	}
	break;
	default:
	{
		illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw((*n), (*(*c).graph).config);
	}
	break;
	}
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newGenSym_pZY5bxiuLRGzLAtcZwPJyQ)(tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w((*c).c, n, NIM_NIL);
	result = newSym_ZQfOwiQo63qLga19cuF5r9cQ(kind, T1_, (*c).owner, (*n).info, 0);
	(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))%(sizeof(NU64)*8));
	(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 22))%(sizeof(NU64)*8));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addLocalDecl_w8tQ2g9cGJTRX1sc4tPkZhw)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw k) {
{	{
		NIM_BOOL T3_;
		tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw T5_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ident;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*(*n)).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43));
		if (!(T3_)) goto LA4_;
		T5_ = (tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw)0;
		T5_ = symBinding_NA0Thw35VzKPau46ha9a0iA((*(*n))._Ukind.S6.sons->data[((NI) 1)]);
		T3_ = (T5_ == ((tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw) 2));
		LA4_: ;
		if (!T3_) goto LA6_;
		x = (*(*n))._Ukind.S6.sons->data[((NI) 0)];
		{
			while (1) {
				switch ((*x).kind) {
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31):
				{
					x = (*x)._Ukind.S6.sons->data[((NI) 1)];
				}
				break;
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43):
				{
					x = (*x)._Ukind.S6.sons->data[((NI) 0)];
				}
				break;
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
				{
					goto LA8;
				}
				break;
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
				{
					unsureAsgnRef((void**) (&(*n)), onlyReplaceParams_DuioLh4uofptxEKissr2sw_7(c, (*n)));
					goto BeforeRet_;
				}
				break;
				default:
				{
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(x, (*(*(*c).c).graph).config);
				}
				break;
				}
			}
		} LA8: ;
		ident = getIdentNode_DuioLh4uofptxEKissr2sw_8(c, x);
		{
			NIM_BOOL T17_;
			T17_ = (NIM_BOOL)0;
			T17_ = isTemplParam_hvqHvanyIpU9arLUwYZORaAsem((&(*c)), ident);
			if (!!(T17_)) goto LA18_;
			incl_iUpE9bYmIR0fROyJskQwN8g((&(*c).toInject), (*(*x)._Ukind.S5.ident).Sup.id);
		}
		goto LA15_;
		LA18_: ;
		{
			replaceIdentBySym_uF9b3XfWiPjk2FdRSI9bmPUg((*c).c, n, ident);
		}
		LA15_: ;
	}
	goto LA1_;
	LA6_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ident_2;
		ident_2 = getIdentNode_DuioLh4uofptxEKissr2sw_8(c, (*n));
		{
			NIM_BOOL T24_;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T27_;
			T24_ = (NIM_BOOL)0;
			T24_ = isTemplParam_hvqHvanyIpU9arLUwYZORaAsem((&(*c)), ident_2);
			if (!!(T24_)) goto LA25_;
			T27_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T27_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w((*c).c, ident_2, NIM_NIL);
			s = localSearchInScope_xnVjAYTNrHOYQvPVqwg14w_2((*c).c, T27_);
			{
				NIM_BOOL T30_;
				NIM_BOOL T31_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T36_;
				T30_ = (NIM_BOOL)0;
				T31_ = (NIM_BOOL)0;
				T31_ = !((s == NIM_NIL));
				if (!(T31_)) goto LA32_;
				T31_ = ((*s).owner == (*c).owner);
				LA32_: ;
				T30_ = T31_;
				if (!(T30_)) goto LA33_;
				T30_ = (((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0);
				LA33_: ;
				if (!T30_) goto LA34_;
				T36_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T36_ = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*(*n)).info);
				replaceIdentBySym_uF9b3XfWiPjk2FdRSI9bmPUg((*c).c, n, T36_);
			}
			goto LA28_;
			LA34_: ;
			{
				NIM_BOOL T38_;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* local;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T46_;
				T38_ = (NIM_BOOL)0;
				T38_ = ((*(*n)).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
				if (!(T38_)) goto LA39_;
				T38_ = (((*(*(*n))._Ukind.S4.sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0);
				LA39_: ;
				if (!!(T38_)) goto LA40_;
				local = newGenSym_pZY5bxiuLRGzLAtcZwPJyQ(k, ident_2, c);
				addPrelimDecl_uYeViz1Olm4OBLjqZ4nggg((*c).c, local);
				{
					if (!(((*(*(*(*c).c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA44_;
					nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*(*c).c).graph).config, (*(*n)).info, local, (*local).kind);
				}
				LA44_: ;
				T46_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T46_ = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(local, (*(*n)).info);
				replaceIdentBySym_uF9b3XfWiPjk2FdRSI9bmPUg((*c).c, n, T46_);
			}
			goto LA28_;
			LA40_: ;
			LA28_: ;
		}
		goto LA22_;
		LA25_: ;
		{
			replaceIdentBySym_uF9b3XfWiPjk2FdRSI9bmPUg((*c).c, n, ident_2);
		}
		LA22_: ;
	}
	LA1_: ;
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, semTemplSomeDecl_7l8P1u9cbRbmxfIqmTswe6Q)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw symKind, NI start) {
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = start;
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					NI L;
					a = (*n)._Ukind.S6.sons->data[i];
					{
						if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA8_;
						goto LA5;
					}
					LA8_: ;
					{
						NIM_BOOL T12_;
						T12_ = (NIM_BOOL)0;
						T12_ = !(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35)));
						if (!(T12_)) goto LA13_;
						T12_ = !(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36)));
						LA13_: ;
						if (!T12_) goto LA14_;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a, (*(*(*c).c).graph).config);
					}
					LA14_: ;
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a, ((NI) 3), (*(*(*c).c).graph).config);
					L = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a);
					asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*a)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))]));
					asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[(NI)(L - ((NI) 1))]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*a)._Ukind.S6.sons->data[(NI)(L - ((NI) 1))]));
					{
						NI j;
						NI colontmp__2;
						NI res_2;
						j = (NI)0;
						colontmp__2 = (NI)0;
						colontmp__2 = (NI)(L - ((NI) 3));
						res_2 = ((NI) 0);
						{
							while (1) {
								if (!(res_2 <= colontmp__2)) goto LA18;
								j = res_2;
								addLocalDecl_w8tQ2g9cGJTRX1sc4tPkZhw(c, &(*a)._Ukind.S6.sons->data[j], symKind);
								res_2 += ((NI) 1);
							} LA18: ;
						}
					}
				} LA5: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semRoutineInTemplName_DuioLh4uofptxEKissr2sw_9)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA3_;
		s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA7_;
			{
				NIM_BOOL T11_;
				NIM_BOOL T13_;
				T11_ = (NIM_BOOL)0;
				T11_ = ((*s).owner == (*c).owner);
				if (!(T11_)) goto LA12_;
				T13_ = (NIM_BOOL)0;
				T13_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
				if (T13_) goto LA14_;
				T13_ = (((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0);
				LA14_: ;
				T11_ = T13_;
				LA12_: ;
				if (!T11_) goto LA15_;
				(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
				result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
			}
			LA15_: ;
		}
		LA7_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		{
			NI i;
			NI colontmp_;
			NI T19_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T19_ = (NI)0;
			T19_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
			colontmp_ = (NI)(T19_ - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA21;
					i = res;
					asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i]), semRoutineInTemplName_DuioLh4uofptxEKissr2sw_9(c, (*n)._Ukind.S6.sons->data[i]));
					res += ((NI) 1);
				} LA21: ;
			}
		}
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semRoutineInTemplBody_tZ0y3BLqy4d0VbZugMb29cw)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw k) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 7), (*(*(*c).c).graph).config);
	{
		NIM_BOOL T3_;
		tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw T5_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ident;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52)));
		if (!(T3_)) goto LA4_;
		T5_ = (tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw)0;
		T5_ = symBinding_NA0Thw35VzKPau46ha9a0iA((*n)._Ukind.S6.sons->data[((NI) 4)]);
		T3_ = (T5_ == ((tyEnum_TSymBinding_djea3jD0GJNy3LfTycW4Gw) 1));
		LA4_: ;
		if (!T3_) goto LA6_;
		ident = getIdentNode_DuioLh4uofptxEKissr2sw_8(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
		{
			NIM_BOOL T10_;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
			T10_ = (NIM_BOOL)0;
			T10_ = isTemplParam_hvqHvanyIpU9arLUwYZORaAsem((&(*c)), ident);
			if (!!(T10_)) goto LA11_;
			s = newGenSym_pZY5bxiuLRGzLAtcZwPJyQ(k, ident, c);
			asgnRefNoCycle((void**) (&(*s).ast), n);
			addPrelimDecl_uYeViz1Olm4OBLjqZ4nggg((*c).c, s);
			{
				if (!(((*(*(*(*c).c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA15_;
				nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*(*c).c).graph).config, (*n).info, s, (*s).kind);
			}
			LA15_: ;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info));
		}
		goto LA8_;
		LA11_: ;
		{
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), ident);
		}
		LA8_: ;
	}
	goto LA1_;
	LA6_: ;
	{
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semRoutineInTemplName_DuioLh4uofptxEKissr2sw_9(c, (*n)._Ukind.S6.sons->data[((NI) 0)]));
	}
	LA1_: ;
	openScope_0Es23PZ9cl46kbzD1369aKcw(c);
	{
		NI i;
		NI res;
		i = (NI)0;
		res = ((NI) 1);
		{
			while (1) {
				if (!(res <= ((NI) 5))) goto LA21;
				i = res;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[i]));
				res += ((NI) 1);
			} LA21: ;
		}
	}
	(*c).scopeN += ((NI) 1);
	openScope_0Es23PZ9cl46kbzD1369aKcw(c);
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[((NI) 6)]));
	closeScope_v8rOnBcZIF3O8b3uSd4HeA(c);
	(*c).scopeN -= ((NI) 1);
	closeScope_v8rOnBcZIF3O8b3uSd4HeA(c);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplBody_DuioLh4uofptxEKissr2sw_4)(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		{
			NIM_BOOL T4_;
			T4_ = (NIM_BOOL)0;
			T4_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).toInject), (*(*n)._Ukind.S5.ident).Sup.id);
			if (!T4_) goto LA5_;
			result = n;
			goto BeforeRet_;
		}
		LA5_: ;
		s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA9_;
			{
				NIM_BOOL T13_;
				T13_ = (NIM_BOOL)0;
				T13_ = ((*s).owner == (*c).owner);
				if (!(T13_)) goto LA14_;
				T13_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
				LA14_: ;
				if (!T13_) goto LA15_;
				(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
				result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
			}
			goto LA11_;
			LA15_: ;
			{
				NIM_BOOL T18_;
				T18_ = (NIM_BOOL)0;
				T18_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).toBind), (*s).Sup.id);
				if (!T18_) goto LA19_;
				result = symChoice_e9ckn59a48lY35fHaH19c0xsw((*c).c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
			}
			goto LA11_;
			LA19_: ;
			{
				NIM_BOOL T22_;
				T22_ = (NIM_BOOL)0;
				T22_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).toMixin), (*(*s).name).Sup.id);
				if (!T22_) goto LA23_;
				result = symChoice_e9ckn59a48lY35fHaH19c0xsw((*c).c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 2));
			}
			goto LA11_;
			LA23_: ;
			{
				NIM_BOOL T26_;
				T26_ = (NIM_BOOL)0;
				T26_ = ((*s).owner == (*c).owner);
				if (!(T26_)) goto LA27_;
				T26_ = (((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0);
				LA27_: ;
				if (!T26_) goto LA28_;
				(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
				result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
			}
			goto LA11_;
			LA28_: ;
			{
				result = semTemplSymbol_xZiYClCxIP6FwnrTC88utQ_4((*c).c, n, s);
			}
			LA11_: ;
		}
		LA9_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 55):
	{
		result = semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 122):
	{
		result = semBindStmt_7Gad7eXdiknA9a8oMyCe5VQ((*c).c, n, (&(*c).toBind));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 123):
	{
		{
			if (!(((NI) 0) < (*c).scopeN)) goto LA36_;
			result = semTemplBodySons_DuioLh4uofptxEKissr2sw_5(c, n);
		}
		goto LA34_;
		LA36_: ;
		{
			result = semMixinStmt_Xu89a7SlP4MtnEygilKypgQ((*c).c, n, (&(*c).toMixin));
		}
		LA34_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 24):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92):
	{
		{
			NI i;
			NI colontmp_;
			NI T42_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T42_ = (NI)0;
			T42_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp_ = (NI)(T42_ - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
					if (!(res <= colontmp_)) goto LA44;
					i = res;
					it = (*n)._Ukind.S6.sons->data[i];
					{
						NI T47_;
						T47_ = (NI)0;
						T47_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(it);
						if (!(T47_ == ((NI) 2))) goto LA48_;
						openScope_0Es23PZ9cl46kbzD1369aKcw(c);
						asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[((NI) 0)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*it)._Ukind.S6.sons->data[((NI) 0)]));
						asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[((NI) 1)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*it)._Ukind.S6.sons->data[((NI) 1)]));
						closeScope_v8rOnBcZIF3O8b3uSd4HeA(c);
					}
					goto LA45_;
					LA48_: ;
					{
						asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), semTemplBodyScope_DuioLh4uofptxEKissr2sw_6(c, it));
					}
					LA45_: ;
					res += ((NI) 1);
				} LA44: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96):
	{
		openScope_0Es23PZ9cl46kbzD1369aKcw(c);
		{
			NI i_2;
			NI colontmp__2;
			NI T53_;
			NI res_2;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			T53_ = (NI)0;
			T53_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__2 = (NI)(T53_ - ((NI) 1));
			res_2 = ((NI) 0);
			{
				while (1) {
					if (!(res_2 <= colontmp__2)) goto LA55;
					i_2 = res_2;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_2]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[i_2]));
					res_2 += ((NI) 1);
				} LA55: ;
			}
		}
		closeScope_v8rOnBcZIF3O8b3uSd4HeA(c);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 97):
	{
		openScope_0Es23PZ9cl46kbzD1369aKcw(c);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[((NI) 0)]));
		{
			NI i_3;
			NI colontmp__3;
			NI T58_;
			NI res_3;
			i_3 = (NI)0;
			colontmp__3 = (NI)0;
			T58_ = (NI)0;
			T58_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__3 = (NI)(T58_ - ((NI) 1));
			res_3 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					NI L;
					if (!(res_3 <= colontmp__3)) goto LA60;
					i_3 = res_3;
					a = (*n)._Ukind.S6.sons->data[i_3];
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a, ((NI) 1), (*(*(*c).c).graph).config);
					L = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a);
					{
						NI j;
						NI colontmp__4;
						NI res_4;
						j = (NI)0;
						colontmp__4 = (NI)0;
						colontmp__4 = (NI)(L - ((NI) 2));
						res_4 = ((NI) 0);
						{
							while (1) {
								if (!(res_4 <= colontmp__4)) goto LA63;
								j = res_4;
								asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[j]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*a)._Ukind.S6.sons->data[j]));
								res_4 += ((NI) 1);
							} LA63: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[(NI)(L - ((NI) 1))]), semTemplBodyScope_DuioLh4uofptxEKissr2sw_6(c, (*a)._Ukind.S6.sons->data[(NI)(L - ((NI) 1))]));
					res_3 += ((NI) 1);
				} LA60: ;
			}
		}
		closeScope_v8rOnBcZIF3O8b3uSd4HeA(c);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 94):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 95):
	{
		NI L_2;
		L_2 = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		openScope_0Es23PZ9cl46kbzD1369aKcw(c);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[(NI)(L_2 - ((NI) 2))]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[(NI)(L_2 - ((NI) 2))]));
		{
			NI i_4;
			NI colontmp__5;
			NI res_5;
			i_4 = (NI)0;
			colontmp__5 = (NI)0;
			colontmp__5 = (NI)(L_2 - ((NI) 3));
			res_5 = ((NI) 0);
			{
				while (1) {
					if (!(res_5 <= colontmp__5)) goto LA67;
					i_4 = res_5;
					addLocalDecl_w8tQ2g9cGJTRX1sc4tPkZhw(c, &(*n)._Ukind.S6.sons->data[i_4], ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 21));
					res_5 += ((NI) 1);
				} LA67: ;
			}
		}
		openScope_0Es23PZ9cl46kbzD1369aKcw(c);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[(NI)(L_2 - ((NI) 1))]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[(NI)(L_2 - ((NI) 1))]));
		closeScope_v8rOnBcZIF3O8b3uSd4HeA(c);
		closeScope_v8rOnBcZIF3O8b3uSd4HeA(c);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 127):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 129):
	{
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*(*c).c).graph).config);
		openScope_0Es23PZ9cl46kbzD1369aKcw(c);
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA71_;
			addLocalDecl_w8tQ2g9cGJTRX1sc4tPkZhw(c, &(*n)._Ukind.S6.sons->data[((NI) 0)], ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 22));
		}
		LA71_: ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[((NI) 1)]));
		closeScope_v8rOnBcZIF3O8b3uSd4HeA(c);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 106):
	{
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 2), (*(*(*c).c).graph).config);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semTemplBodyScope_DuioLh4uofptxEKissr2sw_6(c, (*n)._Ukind.S6.sons->data[((NI) 0)]));
		{
			NI i_5;
			NI colontmp__6;
			NI T75_;
			NI res_6;
			i_5 = (NI)0;
			colontmp__6 = (NI)0;
			T75_ = (NI)0;
			T75_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__6 = (NI)(T75_ - ((NI) 1));
			res_6 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_2;
					NI L_3;
					if (!(res_6 <= colontmp__6)) goto LA77;
					i_5 = res_6;
					a_2 = (*n)._Ukind.S6.sons->data[i_5];
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a_2, ((NI) 1), (*(*(*c).c).graph).config);
					L_3 = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a_2);
					openScope_0Es23PZ9cl46kbzD1369aKcw(c);
					{
						NI j_2;
						NI colontmp__7;
						NI res_7;
						j_2 = (NI)0;
						colontmp__7 = (NI)0;
						colontmp__7 = (NI)(L_3 - ((NI) 2));
						res_7 = ((NI) 0);
						{
							while (1) {
								if (!(res_7 <= colontmp__7)) goto LA80;
								j_2 = res_7;
								{
									NIM_BOOL T83_;
									T83_ = (NIM_BOOL)0;
									T83_ = isInfixAs_63pt39coF5C8JoG0utNnwWg_2((*a_2)._Ukind.S6.sons->data[j_2]);
									if (!T83_) goto LA84_;
									addLocalDecl_w8tQ2g9cGJTRX1sc4tPkZhw(c, &(*(*a_2)._Ukind.S6.sons->data[j_2])._Ukind.S6.sons->data[((NI) 2)], ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 9));
									asgnRefNoCycle((void**) (&(*(*a_2)._Ukind.S6.sons->data[j_2])._Ukind.S6.sons->data[((NI) 1)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*(*a_2)._Ukind.S6.sons->data[j_2])._Ukind.S6.sons->data[((NI) 1)]));
								}
								goto LA81_;
								LA84_: ;
								{
									asgnRefNoCycle((void**) (&(*a_2)._Ukind.S6.sons->data[j_2]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*a_2)._Ukind.S6.sons->data[j_2]));
								}
								LA81_: ;
								res_7 += ((NI) 1);
							} LA80: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a_2)._Ukind.S6.sons->data[(NI)(L_3 - ((NI) 1))]), semTemplBodyScope_DuioLh4uofptxEKissr2sw_6(c, (*a_2)._Ukind.S6.sons->data[(NI)(L_3 - ((NI) 1))]));
					closeScope_v8rOnBcZIF3O8b3uSd4HeA(c);
					res_6 += ((NI) 1);
				} LA77: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99):
	{
		semTemplSomeDecl_7l8P1u9cbRbmxfIqmTswe6Q(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 8), ((NI) 0));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 100):
	{
		semTemplSomeDecl_7l8P1u9cbRbmxfIqmTswe6Q(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 9), ((NI) 0));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 76):
	{
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 1), (*(*(*c).c).graph).config);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[((NI) 0)]));
		semTemplSomeDecl_7l8P1u9cbRbmxfIqmTswe6Q(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3), ((NI) 1));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 101):
	{
		{
			NI i_6;
			NI colontmp__8;
			NI T92_;
			NI res_8;
			i_6 = (NI)0;
			colontmp__8 = (NI)0;
			T92_ = (NI)0;
			T92_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__8 = (NI)(T92_ - ((NI) 1));
			res_8 = ((NI) 0);
			{
				while (1) {
					if (!(res_8 <= colontmp__8)) goto LA94;
					i_6 = res_8;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_3;
						a_3 = (*n)._Ukind.S6.sons->data[i_6];
						{
							if (!((*a_3).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA98_;
							goto LA95;
						}
						LA98_: ;
						{
							if (!!(((*a_3).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 102)))) goto LA102_;
							illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a_3, (*(*(*c).c).graph).config);
						}
						LA102_: ;
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(a_3, ((NI) 3), (*(*(*c).c).graph).config);
						addLocalDecl_w8tQ2g9cGJTRX1sc4tPkZhw(c, &(*a_3)._Ukind.S6.sons->data[((NI) 0)], ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 10));
						asgnRefNoCycle((void**) (&(*a_3)._Ukind.S6.sons->data[((NI) 1)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*a_3)._Ukind.S6.sons->data[((NI) 1)]));
						asgnRefNoCycle((void**) (&(*a_3)._Ukind.S6.sons->data[((NI) 2)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*a_3)._Ukind.S6.sons->data[((NI) 2)]));
					} LA95: ;
					res_8 += ((NI) 1);
				} LA94: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	{
		{
			NI i_7;
			NI colontmp__9;
			NI T106_;
			NI res_9;
			i_7 = (NI)0;
			colontmp__9 = (NI)0;
			T106_ = (NI)0;
			T106_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__9 = (NI)(T106_ - ((NI) 1));
			res_9 = ((NI) 0);
			{
				while (1) {
					if (!(res_9 <= colontmp__9)) goto LA108;
					i_7 = res_9;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_4;
						a_4 = (*n)._Ukind.S6.sons->data[i_7];
						{
							if (!((*a_4).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA112_;
							goto LA109;
						}
						LA112_: ;
						{
							if (!!(((*a_4).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 103)))) goto LA116_;
							illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a_4, (*(*(*c).c).graph).config);
						}
						LA116_: ;
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(a_4, ((NI) 3), (*(*(*c).c).graph).config);
						addLocalDecl_w8tQ2g9cGJTRX1sc4tPkZhw(c, &(*a_4)._Ukind.S6.sons->data[((NI) 0)], ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7));
					} LA109: ;
					res_9 += ((NI) 1);
				} LA108: ;
			}
		}
		{
			NI i_8;
			NI colontmp__10;
			NI T119_;
			NI res_10;
			i_8 = (NI)0;
			colontmp__10 = (NI)0;
			T119_ = (NI)0;
			T119_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__10 = (NI)(T119_ - ((NI) 1));
			res_10 = ((NI) 0);
			{
				while (1) {
					if (!(res_10 <= colontmp__10)) goto LA121;
					i_8 = res_10;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_5;
						a_5 = (*n)._Ukind.S6.sons->data[i_8];
						{
							if (!((*a_5).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA125_;
							goto LA122;
						}
						LA125_: ;
						{
							if (!!(((*a_5).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 103)))) goto LA129_;
							illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a_5, (*(*(*c).c).graph).config);
						}
						LA129_: ;
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw(a_5, ((NI) 3), (*(*(*c).c).graph).config);
						{
							if (!!(((*(*a_5)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA133_;
							openScope_0Es23PZ9cl46kbzD1369aKcw(c);
							asgnRefNoCycle((void**) (&(*a_5)._Ukind.S6.sons->data[((NI) 1)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*a_5)._Ukind.S6.sons->data[((NI) 1)]));
							asgnRefNoCycle((void**) (&(*a_5)._Ukind.S6.sons->data[((NI) 2)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*a_5)._Ukind.S6.sons->data[((NI) 2)]));
							closeScope_v8rOnBcZIF3O8b3uSd4HeA(c);
						}
						goto LA131_;
						LA133_: ;
						{
							asgnRefNoCycle((void**) (&(*a_5)._Ukind.S6.sons->data[((NI) 2)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*a_5)._Ukind.S6.sons->data[((NI) 2)]));
						}
						LA131_: ;
					} LA122: ;
					res_10 += ((NI) 1);
				} LA121: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	{
		result = semRoutineInTemplBody_tZ0y3BLqy4d0VbZugMb29cw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
		result = semRoutineInTemplBody_tZ0y3BLqy4d0VbZugMb29cw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 13));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 80):
	{
		result = semRoutineInTemplBody_tZ0y3BLqy4d0VbZugMb29cw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	{
		result = semRoutineInTemplBody_tZ0y3BLqy4d0VbZugMb29cw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83):
	{
		result = semRoutineInTemplBody_tZ0y3BLqy4d0VbZugMb29cw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 82):
	{
		result = semRoutineInTemplBody_tZ0y3BLqy4d0VbZugMb29cw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	{
		result = semRoutineInTemplBody_tZ0y3BLqy4d0VbZugMb29cw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 16));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43):
	{
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[((NI) 0)]));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31):
	{
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[((NI) 1)]));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 90):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
			x = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i_9;
				NI colontmp__11;
				NI i_10;
				i_9 = (NI)0;
				colontmp__11 = (NI)0;
				colontmp__11 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
				i_10 = ((NI) 0);
				{
					while (1) {
						if (!(i_10 < colontmp__11)) goto LA149;
						i_9 = i_10;
						x = (*n)._Ukind.S6.sons->data[i_9];
						{
							if (!((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34))) goto LA152_;
							asgnRefNoCycle((void**) (&(*x)._Ukind.S6.sons->data[((NI) 1)]), semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*x)._Ukind.S6.sons->data[((NI) 1)]));
						}
						LA152_: ;
						i_10 += ((NI) 1);
					} LA149: ;
				}
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T155_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T156_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n0;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
		T155_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T155_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*c).c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_15));
		T156_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T156_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T155_, (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(result, T156_);
		{
			NI i_11;
			NI colontmp__12;
			NI i_12;
			i_11 = (NI)0;
			colontmp__12 = (NI)0;
			colontmp__12 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_12 = ((NI) 0);
			{
				while (1) {
					if (!(i_12 < colontmp__12)) goto LA159;
					i_11 = i_12;
					add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[i_11]);
					i_12 += ((NI) 1);
				} LA159: ;
			}
		}
		n0 = semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
		result = semTemplBodySons_DuioLh4uofptxEKissr2sw_5(c, result);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 40):
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T161_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T162_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
		T161_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T161_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*c).c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_61));
		T162_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T162_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T161_, (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(result, T162_);
		{
			NI i_13;
			NI colontmp__13;
			NI i_14;
			i_13 = (NI)0;
			colontmp__13 = (NI)0;
			colontmp__13 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_14 = ((NI) 0);
			{
				while (1) {
					if (!(i_14 < colontmp__13)) goto LA165;
					i_13 = i_14;
					add_gCCf68XrWL79bKes6htzFjQ(result, (*n)._Ukind.S6.sons->data[i_13]);
					i_14 += ((NI) 1);
				} LA165: ;
			}
		}
		result = semTemplBodySons_DuioLh4uofptxEKissr2sw_5(c, result);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 74):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a_6;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
		tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw k;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*(*c).c).graph).config);
		a_6 = (*n)._Ukind.S6.sons->data[((NI) 0)];
		b = (*n)._Ukind.S6.sons->data[((NI) 1)];
		k = (*a_6).kind;
		switch (k) {
		case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
		{
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T168_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T169_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a0;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
			T168_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T168_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*c).c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_63));
			T169_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T169_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T168_, (*n).info);
			add_gCCf68XrWL79bKes6htzFjQ(result, T169_);
			{
				NI i_15;
				NI colontmp__14;
				NI i_16;
				i_15 = (NI)0;
				colontmp__14 = (NI)0;
				colontmp__14 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a_6);
				i_16 = ((NI) 0);
				{
					while (1) {
						if (!(i_16 < colontmp__14)) goto LA172;
						i_15 = i_16;
						add_gCCf68XrWL79bKes6htzFjQ(result, (*a_6)._Ukind.S6.sons->data[i_15]);
						i_16 += ((NI) 1);
					} LA172: ;
				}
			}
			add_gCCf68XrWL79bKes6htzFjQ(result, b);
			a0 = semTemplBody_DuioLh4uofptxEKissr2sw_4(c, (*a_6)._Ukind.S6.sons->data[((NI) 0)]);
			result = semTemplBodySons_DuioLh4uofptxEKissr2sw_5(c, result);
		}
		break;
		case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 40):
		{
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T174_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T175_;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
			T174_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T174_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*c).c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_62));
			T175_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T175_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T174_, (*n).info);
			add_gCCf68XrWL79bKes6htzFjQ(result, T175_);
			{
				NI i_17;
				NI colontmp__15;
				NI i_18;
				i_17 = (NI)0;
				colontmp__15 = (NI)0;
				colontmp__15 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a_6);
				i_18 = ((NI) 0);
				{
					while (1) {
						if (!(i_18 < colontmp__15)) goto LA178;
						i_17 = i_18;
						add_gCCf68XrWL79bKes6htzFjQ(result, (*a_6)._Ukind.S6.sons->data[i_17]);
						i_18 += ((NI) 1);
					} LA178: ;
				}
			}
			add_gCCf68XrWL79bKes6htzFjQ(result, b);
			result = semTemplBodySons_DuioLh4uofptxEKissr2sw_5(c, result);
		}
		break;
		default:
		{
			result = semTemplBodySons_DuioLh4uofptxEKissr2sw_5(c, n);
		}
		break;
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32):
	{
		result = semTemplBodySons_DuioLh4uofptxEKissr2sw_5(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_2;
		s_2 = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA((*c).c, n, 0);
		{
			if (!!((s_2 == NIM_NIL))) goto LA184_;
			{
				NIM_BOOL T188_;
				NIM_BOOL T189_;
				NIM_BOOL T190_;
				NI T194_;
				T188_ = (NIM_BOOL)0;
				T189_ = (NIM_BOOL)0;
				T190_ = (NIM_BOOL)0;
				T190_ = ((*s_2).owner == (*c).owner);
				if (!(T190_)) goto LA191_;
				T190_ = ((*s_2).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
				LA191_: ;
				T189_ = T190_;
				if (!(T189_)) goto LA192_;
				T189_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53));
				LA192_: ;
				T188_ = T189_;
				if (!(T188_)) goto LA193_;
				T194_ = (NI)0;
				T194_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
				T188_ = (T194_ == ((NI) 1));
				LA193_: ;
				if (!T188_) goto LA195_;
				(*s_2).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
				result = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s_2, (*n).info);
				goto BeforeRet_;
			}
			goto LA186_;
			LA195_: ;
			{
				NIM_BOOL T198_;
				T198_ = (NIM_BOOL)0;
				T198_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).toBind), (*s_2).Sup.id);
				if (!T198_) goto LA199_;
				result = symChoice_e9ckn59a48lY35fHaH19c0xsw((*c).c, n, s_2, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
				goto BeforeRet_;
			}
			goto LA186_;
			LA199_: ;
			{
				NIM_BOOL T202_;
				T202_ = (NIM_BOOL)0;
				T202_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).toMixin), (*(*s_2).name).Sup.id);
				if (!T202_) goto LA203_;
				result = symChoice_e9ckn59a48lY35fHaH19c0xsw((*c).c, n, s_2, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 2));
				goto BeforeRet_;
			}
			goto LA186_;
			LA203_: ;
			{
				result = symChoice_e9ckn59a48lY35fHaH19c0xsw((*c).c, n, s_2, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 1));
				goto BeforeRet_;
			}
			LA186_: ;
		}
		LA184_: ;
		result = semTemplBodySons_DuioLh4uofptxEKissr2sw_5(c, n);
	}
	break;
	default:
	{
		result = semTemplBodySons_DuioLh4uofptxEKissr2sw_5(c, n);
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTemplateDef_U3qPBy54f1PkCP8vmFMCRA_34)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T11_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gp;
	NIM_BOOL allUntyped;
	tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw ctx;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* proto;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	s = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
		if (!T3_) goto LA4_;
		s = semIdentVis_w0c4409bd9b4T2DSbUAAqpNA_2(c, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18), (*n)._Ukind.S6.sons->data[((NI) 0)], 2);
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 3))%(sizeof(NU64)*8));
	}
	goto LA1_;
	LA4_: ;
	{
		s = semIdentVis_w0c4409bd9b4T2DSbUAAqpNA_2(c, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18), (*n)._Ukind.S6.sons->data[((NI) 0)], 0);
	}
	LA1_: ;
	{
		if (!(((*(*(*c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA9_;
		nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*c).graph).config, (*s).info, s, (*s).kind);
	}
	LA9_: ;
	pushOwner_Wu2m3sh279aYfWNXavlKecA(c, s);
	T11_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T11_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info));
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 4)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA14_;
		pragma_av9bQYmoLtJKLA6ueIgHxoA(c, s, (*n)._Ukind.S6.sons->data[((NI) 4)], TM_rF9caJawfOjYTjsgLVUSGFA_316);
	}
	LA14_: ;
	gp = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA18_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 2)]), semGenericParamList_JC2xPAEU5XROw7xR66txZg(c, (*n)._Ukind.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n)._Ukind.S6.sons->data[((NI) 2)];
	}
	goto LA16_;
	LA18_: ;
	{
		gp = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 75), (*n).info);
	}
	LA16_: ;
	allUntyped = NIM_TRUE;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 3)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA23_;
		semParamList_1K4lBiaKx6f704AxKCVBWw(c, (*n)._Ukind.S6.sons->data[((NI) 3)], gp, s);
		{
			NI i;
			NI colontmp_;
			NI T26_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T26_ = (NI)0;
			T26_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*(*s).typ).n);
			colontmp_ = (NI)(T26_ - ((NI) 1));
			res = ((NI) 1);
			{
				while (1) {
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param;
					if (!(res <= colontmp_)) goto LA28;
					i = res;
					param = (*(*(*(*s).typ).n)._Ukind.S6.sons->data[i])._Ukind.S4.sym;
					(*param).flags &= ~(((NU64)1) << ((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32)) % (sizeof(NU64)*8)));
					{
						if (!!(((*(*param).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6)))) goto LA31_;
						allUntyped = NIM_FALSE;
					}
					LA31_: ;
					res += ((NI) 1);
				} LA28: ;
			}
		}
		{
			NI T35_;
			T35_ = (NI)0;
			T35_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(gp);
			if (!(((NI) 0) < T35_)) goto LA36_;
			{
				if (!((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA40_;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 2)]), gp);
			}
			LA40_: ;
		}
		LA36_: ;
		{
			if (!((*(*(*n)._Ukind.S6.sons->data[((NI) 3)])._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA44_;
			asgnRefNoCycle((void**) (&(*(*s).typ).sons->data[((NI) 0)]), newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7), c));
			asgnRefNoCycle((void**) (&(*(*(*s).typ).n)._Ukind.S6.sons->data[((NI) 0)]), newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4), (*n).info, (*(*s).typ).sons->data[((NI) 0)]));
		}
		LA44_: ;
	}
	goto LA21_;
	LA23_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T47_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T48_;
		asgnRefNoCycle((void**) (&(*s).typ), newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25), c));
		asgnRefNoCycle((void**) (&(*(*s).typ).n), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 76), (*n).info));
		T47_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T47_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7), c);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*s).typ, T47_);
		T48_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T48_ = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4), (*n).info, (*(*s).typ).sons->data[((NI) 0)]);
		addSon_gCCf68XrWL79bKes6htzFjQ_2((*(*s).typ).n, T48_);
	}
	LA21_: ;
	{
		if (!allUntyped) goto LA51_;
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 7))%(sizeof(NU64)*8));
	}
	LA51_: ;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA55_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), semPattern_U3qPBy54f1PkCP8vmFMCRA_8(c, (*n)._Ukind.S6.sons->data[((NI) 1)]));
	}
	LA55_: ;
	nimZeroMem((void*)(&ctx), sizeof(tyObject_TemplCtx_nh9bf8hW4pDvkirLeE4rmdw));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&ctx.toBind));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&ctx.toMixin));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&ctx.toInject));
	ctx.c = c;
	ctx.owner = s;
	{
		if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 9))&63U)))!=0)) goto LA59_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), semTemplBodyDirty_DuioLh4uofptxEKissr2sw_3((&ctx), (*n)._Ukind.S6.sons->data[((NI) 6)]));
	}
	goto LA57_;
	LA59_: ;
	{
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), semTemplBody_DuioLh4uofptxEKissr2sw_4((&ctx), (*n)._Ukind.S6.sons->data[((NI) 6)]));
	}
	LA57_: ;
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw(c);
	asgnRefNoCycle((void**) (&(*s).ast), n);
	result = n;
	{
		if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 8))&63U)))!=0)) goto LA64_;
		{
			NimStringDesc* T70_;
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 6)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA68_;
			T70_ = (NimStringDesc*)0;
			T70_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_114), (*(*s).name).s);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 6)]).info, T70_);
		}
		LA68_: ;
	}
	goto LA62_;
	LA64_: ;
	{
		NimStringDesc* T74_;
		if (!((*(*n)._Ukind.S6.sons->data[((NI) 6)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA72_;
		T74_ = (NimStringDesc*)0;
		T74_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_199), (*(*s).name).s);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T74_);
	}
	goto LA62_;
	LA72_: ;
	LA62_: ;
	proto = searchForProc_uVWu21csPbNmiy7yDLzlNA(c, (*c).currentScope, s);
	{
		if (!(proto == NIM_NIL)) goto LA77_;
		addInterfaceOverloadableSymAt_AlLnlK2NPVlmdvcGAsINdQ(c, (*c).currentScope, s);
	}
	goto LA75_;
	LA77_: ;
	{
		symTabReplace_wGPXB9a8gjWCCq7YQ5Bgu6w((&(*(*c).currentScope).symbols), proto, s);
	}
	LA75_: ;
	{
		NI T84_;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA82_;
		asgnRefNoCycle((void**) (&(*c).patterns), (tySequence_DfgJFJEYoj4YBAHLZPl5lQ*) incrSeqV3(&((*c).patterns)->Sup, (&NTI_DfgJFJEYoj4YBAHLZPl5lQ_)));
		T84_ = (*c).patterns->Sup.len++;
		asgnRefNoCycle((void**) (&(*c).patterns->data[T84_]), s);
	}
	LA82_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semQuoteAst_U3qPBy54f1PkCP8vmFMCRA_33)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* quotedBlock;
	NI T10_;
	NimStringDesc* op;
	tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* quotes;
	tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* ids;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* dummyTemplate;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T21_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T22_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tmpl;
	tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* T35_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T36_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NI T4_;
		NI T6_;
		NimStringDesc* T9_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NI)0;
		T4_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		T3_ = (T4_ == ((NI) 2));
		if (T3_) goto LA5_;
		T6_ = (NI)0;
		T6_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		T3_ = (T6_ == ((NI) 3));
		LA5_: ;
		if (!!(T3_)) goto LA7_;
		T9_ = (NimStringDesc*)0;
		T9_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_311);
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T9_);
	}
	LA7_: ;
	T10_ = (NI)0;
	T10_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
	quotedBlock = (*n)._Ukind.S6.sons->data[(NI)(T10_ - ((NI) 1))];
	{
		NI T13_;
		T13_ = (NI)0;
		T13_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		if (!(T13_ == ((NI) 3))) goto LA14_;
		op = expectString_elgQGRXRdZY9cugwHxJNdJA(c, (*n)._Ukind.S6.sons->data[((NI) 1)]);
	}
	goto LA11_;
	LA14_: ;
	{
		op = copyString(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_312));
	}
	LA11_: ;
	quotes = newSeq_kRt1ZLhQ6puUVenSqCOflw(((NI) 1));
	ids = newSeq_kRt1ZLhQ6puUVenSqCOflw(((NI) 0));
	{
		if (!!(((*quotedBlock).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115)))) goto LA19_;
		localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 4), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_313));
	}
	LA19_: ;
	processQuotations_pJS9b4mS9a8f5U2XwkAvXsRQ(c, &quotedBlock, op, (&quotes), (&ids));
	T21_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T21_ = newAnonSym_Om9cr60hOT7Cr9a5PkQCTB9ag(c, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18), (*n).info);
	T22_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T22_ = newSymNode_UWZXukHA5As9aCftRHbafBg(T21_);
	dummyTemplate = newProcNode_Z1yyaAwEC9b9b62F39alzYZFw(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83), (*quotedBlock).info, quotedBlock, (*(*c).graph).emptyNode, T22_, (*(*c).graph).emptyNode, (*(*c).graph).emptyNode, (*(*c).graph).emptyNode, (*(*c).graph).emptyNode);
	{
		NI T25_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T28_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T29_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T30_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T31_;
		NI T32_;
		NI T33_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T34_;
		T25_ = (ids ? ids->Sup.len : 0);
		if (!(((NI) 0) < T25_)) goto LA26_;
		asgnRefNoCycle((void**) (&(*dummyTemplate)._Ukind.S6.sons->data[((NI) 3)]), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 76), (*n).info));
		T28_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T28_ = getSysSym_9bvw79ck1FDiWpnBYh88rEfw((*c).graph, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_314));
		T29_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T29_ = newSymNode_UWZXukHA5As9aCftRHbafBg(T28_);
		add_gCCf68XrWL79bKes6htzFjQ((*dummyTemplate)._Ukind.S6.sons->data[((NI) 3)], T29_);
		T30_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T30_ = getSysSym_9bvw79ck1FDiWpnBYh88rEfw((*c).graph, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_315));
		T31_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T31_ = newSymNode_UWZXukHA5As9aCftRHbafBg(T30_);
		ids = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3(&(ids)->Sup, (&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_));
		T32_ = ids->Sup.len++;
		asgnRefNoCycle((void**) (&ids->data[T32_]), T31_);
		ids = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3(&(ids)->Sup, (&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_));
		T33_ = ids->Sup.len++;
		asgnRefNoCycle((void**) (&ids->data[T33_]), (*(*c).graph).emptyNode);
		T34_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T34_ = newNode_sa9bwmR1oPRYm27rlMD66CQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35), (*n).info, ids, NIM_NIL);
		add_gCCf68XrWL79bKes6htzFjQ((*dummyTemplate)._Ukind.S6.sons->data[((NI) 3)], T34_);
	}
	LA26_: ;
	tmpl = semTemplateDef_U3qPBy54f1PkCP8vmFMCRA_34(c, dummyTemplate);
	asgnRefNoCycle((void**) (&quotes->data[((NI) 0)]), (*tmpl)._Ukind.S6.sons->data[((NI) 0)]);
	T35_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
	T35_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) newSeq((&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_), 2);
	T36_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T36_ = createMagic_wGa7y1oybLUFG1rIAeCr1A((*c).graph, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_317), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 25));
	asgnRefNoCycle((void**) (&T35_->data[0]), newSymNode_UWZXukHA5As9aCftRHbafBg(T36_));
	asgnRefNoCycle((void**) (&T35_->data[1]), newNode_sa9bwmR1oPRYm27rlMD66CQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, quotes, NIM_NIL));
	result = newNode_sa9bwmR1oPRYm27rlMD66CQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, T35_, NIM_NIL);
	result = semExpandToAst_U3qPBy54f1PkCP8vmFMCRA_32(c, result);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, createFlowVar_18LOqksd2EtrLOlAAuufRg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T1_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9), (*c).module);
	T1_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = getCompilerProc_Z9bI8j6Vv57IyOO09a8fpp3g((*c).graph, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_319));
	addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, (*T1_).typ);
	addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(result, t);
	result = instGenericContainer_pqNRK9bvN0hfgmWeHuyytbQ(c, info, result, NIM_FALSE);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, instantiateCreateFlowVarCall_fJrrM8fh0M9ay1UihVTCWkg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
	tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q bindings;
	tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA* T5_;
	RootObj* T6_;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	sym = getCompilerProc_Z9bI8j6Vv57IyOO09a8fpp3g((*c).graph, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_320));
	{
		if (!(sym == NIM_NIL)) goto LA3_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_321));
	}
	LA3_: ;
	nimZeroMem((void*)(&bindings), sizeof(tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q));
	initIdTable_9cUS2oaKn1IFXKjLdglPZHQ((&bindings));
	T5_ = (tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA*)0;
	T5_ = &(*(*(*(*sym).ast)._Ukind.S6.sons->data[((NI) 2)])._Ukind.S6.sons->data[((NI) 0)]).typ->Sup;
	T6_ = (RootObj*)0;
	T6_ = &t->Sup.Sup;
	idTablePut_Xhv7unnxpOqdw7OJsXRnRg((&bindings), T5_, T6_);
	result = (*c).semGenerateInstance.ClE_0? (*c).semGenerateInstance.ClP_0(c, sym, bindings, info, (*c).semGenerateInstance.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_322)((*c).semGenerateInstance.ClP_0))(c, sym, bindings, info);
	{
		if (!(((*result).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 16))&63U)))!=0)) goto LA9_;
		(*result).flags = ((*result).flags & ~ 65632);
		asgnRefNoCycle((void**) (&(*result).loc.r), NIM_NIL);
	}
	LA9_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semMagic_WEWIesXiEJLD5SbxNPgOfA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*s).magic) {
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 13):
	{
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
		result = semAddr_9a0tqA9cvykbsNlTYkUMQoBw(c, (*n)._Ukind.S6.sons->data[((NI) 1)], eqStrings((*(*s).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_129)));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 15):
	{
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
		result = semTypeOf_U3qPBy54f1PkCP8vmFMCRA_14(c, (*n)._Ukind.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 1):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T4_;
		T4_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T4_ = setMs_HxQrSJkCS7p8gVuHUd0Mfg(n, s);
		result = semDefined_Mr0uHCtBea07Z9bi1nS1OpQ(c, T4_, NIM_FALSE);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 2):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
		T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = setMs_HxQrSJkCS7p8gVuHUd0Mfg(n, s);
		result = semDefined_Mr0uHCtBea07Z9bi1nS1OpQ(c, T6_, NIM_TRUE);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 3):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T8_;
		T8_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T8_ = setMs_HxQrSJkCS7p8gVuHUd0Mfg(n, s);
		result = semCompiles_k2Lin9a76VyrWz9b8OoRC9apg_15(c, T8_, flags);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 9):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T10_;
		T10_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T10_ = setMs_HxQrSJkCS7p8gVuHUd0Mfg(n, s);
		result = semSizeof_U3qPBy54f1PkCP8vmFMCRA_31(c, T10_);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 11):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T12_;
		T12_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T12_ = setMs_HxQrSJkCS7p8gVuHUd0Mfg(n, s);
		result = semIs_k2Lin9a76VyrWz9b8OoRC9apg_17(c, T12_, flags);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 19):
	{
		result = semShallowCopy_k2Lin9a76VyrWz9b8OoRC9apg_11(c, n, flags);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 25):
	{
		result = semExpandToAst_Y2UrrUliAmkw9c9cYffF3NkQ(c, n, s, flags);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 26):
	{
		result = semQuoteAst_U3qPBy54f1PkCP8vmFMCRA_33(c, n);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 157):
	{
		NimStringDesc* T17_;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
		T17_ = (NimStringDesc*)0;
		T17_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA((*n)._Ukind.S6.sons->data[((NI) 1)], 4);
		result = newStrNodeT_WT9aAnGjbhNgDuVvAUcXPaA(T17_, n, (*c).graph);
		asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28)));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 158):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
		{
			if (!!((((*c).features &(1U<<((NU)(((tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ) 3))&15U)))!=0))) goto LA21_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_318));
		}
		LA21_: ;
		result = setMs_HxQrSJkCS7p8gVuHUd0Mfg(n, s);
		x = lastSon_esDJA7239bJDiq4UrX9aHCjg(n);
		{
			if (!((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52))) goto LA25_;
			x = (*x)._Ukind.S6.sons->data[((NI) 6)];
		}
		LA25_: ;
		(*c).inParallelStmt += ((NI) 1);
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3(c, x, 0));
		(*c).inParallelStmt -= ((NI) 1);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 214):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
		NI T31_;
		result = setMs_HxQrSJkCS7p8gVuHUd0Mfg(n, s);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_2 = ((NI) 1);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA30;
					i = i_2;
					asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i]), semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[i], 0));
					i_2 += ((NI) 1);
				} LA30: ;
			}
		}
		T31_ = (NI)0;
		T31_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
		typ = (*(*result)._Ukind.S6.sons->data[(NI)(T31_ - ((NI) 1))]).typ;
		{
			NIM_BOOL T34_;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T43_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T44_;
			T34_ = (NIM_BOOL)0;
			T34_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen(typ);
			if (!!(T34_)) goto LA35_;
			{
				tyEnum_TSpawnResult_Dm2bUaaIicBfyW7KwReaLQ T39_;
				T39_ = (tyEnum_TSpawnResult_Dm2bUaaIicBfyW7KwReaLQ)0;
				T39_ = spawnResult_KL3DWxYISouH5DivR9clX7A(typ, (((NI) 0) < (*c).inParallelStmt));
				if (!(T39_ == ((tyEnum_TSpawnResult_Dm2bUaaIicBfyW7KwReaLQ) 1))) goto LA40_;
				asgnRefNoCycle((void**) (&(*result).typ), createFlowVar_18LOqksd2EtrLOlAAuufRg(c, typ, (*n).info));
			}
			goto LA37_;
			LA40_: ;
			{
				asgnRefNoCycle((void**) (&(*result).typ), typ);
			}
			LA37_: ;
			T43_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
			T43_ = instantiateCreateFlowVarCall_fJrrM8fh0M9ay1UihVTCWkg(c, typ, (*n).info);
			T44_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T44_ = newSymNode_UWZXukHA5As9aCftRHbafBg(T43_);
			add_gCCf68XrWL79bKes6htzFjQ(result, T44_);
		}
		goto LA32_;
		LA35_: ;
		{
			add_gCCf68XrWL79bKes6htzFjQ(result, (*(*c).graph).emptyNode);
		}
		LA32_: ;
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 219):
	{
		result = setMs_HxQrSJkCS7p8gVuHUd0Mfg(n, s);
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 1)], 0));
		asgnRefNoCycle((void**) (&(*result).typ), (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 17):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig;
		nOrig = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
		result = semOverloadedCallAnalyseEffects_tlHRnlepD3lWks2ZTgSoRg(c, n, nOrig, flags);
		{
			if (!(result == NIM_NIL)) goto LA50_;
			result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
		}
		goto LA48_;
		LA50_: ;
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* callee;
			callee = (*(*result)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
			{
				if (!((*callee).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0))) goto LA55_;
				semFinishOperands_b9a16o9ajKKf77bS9bhmwr4LA(c, result);
			}
			LA55_: ;
			activate_9aKmRFIRmowmJXCJbF9aObuQ_3(c, result);
			fixAbstractType_wkwHEj6zZnYo2DMZys6jnA_4(c, result);
			analyseIfAddressTakenInCall_wkwHEj6zZnYo2DMZys6jnA_5(c, result);
			{
				if (!!(((*callee).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0)))) goto LA59_;
				result = magicsAfterOverloadResolution_k2Lin9a76VyrWz9b8OoRC9apg_6(c, result, flags);
			}
			LA59_: ;
		}
		LA48_: ;
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 283):
	{
		{
			NIM_BOOL T64_;
			NIM_BOOL T65_;
			NI T67_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T69_;
			T64_ = (NIM_BOOL)0;
			T65_ = (NIM_BOOL)0;
			T65_ = ((*(*(*c).graph).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 8));
			if (!(T65_)) goto LA66_;
			T67_ = (NI)0;
			T67_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			T65_ = (((NI) 2) <= T67_);
			LA66_: ;
			T64_ = T65_;
			if (!(T64_)) goto LA68_;
			T69_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T69_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(n);
			T64_ = ((*T69_).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115));
			LA68_: ;
			if (!T64_) goto LA70_;
			result = setMs_HxQrSJkCS7p8gVuHUd0Mfg(n, s);
		}
		goto LA62_;
		LA70_: ;
		{
			result = (*(*c).graph).emptyNode;
		}
		LA62_: ;
	}
	break;
	default:
	{
		result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, flags);
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, bracketedMacro_9cp0DDH84sSKypsK7p9bXmBQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		NIM_BOOL T3_;
		NI T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NI)0;
		T4_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		T3_ = (((NI) 1) <= T4_);
		if (!(T3_)) goto LA5_;
		T3_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		LA5_: ;
		if (!T3_) goto LA6_;
		result = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
		{
			if (!!(((393216 &(1U<<((NU)((*result).kind)&31U)))!=0))) goto LA10_;
			result = NIM_NIL;
		}
		LA10_: ;
	}
	LA6_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, setGenericParams_wkwHEj6zZnYo2DMZys6jnA_8)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		i_2 = ((NI) 1);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[i]).typ), semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[i], NIM_NIL));
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(void, resolveIndirectCall_kcBwitGDLG5fs5xyZw0iJg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA* Result) {
	genericReset((void*)Result, (&NTI_B8Gf2sSWgQ79bLZ9bYWrLHaA_));
	initCandidate_al6D1MtFq9bIwSvVxpct8pw(c, Result, t);
	matches_PbP19b36C8eDxA2wQt6exGQ_2(c, n, nOrig, Result);
	{
		if (!!(((*Result).state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1)))) goto LA3_;
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = (((*c).features &(1U<<((NU)(((tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ) 0))&15U)))!=0);
			if (!(T7_)) goto LA8_;
			T7_ = canDeref_kR3j4BVoX6LmX0p7IycneQ_2sem(n);
			LA8_: ;
			if (!T7_) goto LA9_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), tryDeref_nRsa9acFWDI6GmzVZLXX3CQ_2((*n)._Ukind.S6.sons->data[((NI) 1)]));
			initCandidate_al6D1MtFq9bIwSvVxpct8pw(c, Result, t);
			matches_PbP19b36C8eDxA2wQt6exGQ_2(c, n, nOrig, Result);
		}
		LA9_: ;
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, overloadedCallOpr_U3qPBy54f1PkCP8vmFMCRA_35)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* par;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	par = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_47));
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T3_;
		T3_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T3_ = searchInScopes_xnVjAYTNrHOYQvPVqwg14w(c, par);
		if (!(T3_ == NIM_NIL)) goto LA4_;
		result = NIM_NIL;
	}
	goto LA1_;
	LA4_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T7_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
		T7_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T7_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(par, (*n).info);
		addSon_gCCf68XrWL79bKes6htzFjQ_2(result, T7_);
		{
			NI i;
			NI colontmp_;
			NI T9_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T9_ = (NI)0;
			T9_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp_ = (NI)(T9_ - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA11;
					i = res;
					addSon_gCCf68XrWL79bKes6htzFjQ_2(result, (*n)._Ukind.S6.sons->data[i]);
					res += ((NI) 1);
				} LA11: ;
			}
		}
		result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, result, 0);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semIndirectOp_k2Lin9a76VyrWz9b8OoRC9apg_19)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* prc;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nOrig;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t_2;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = NIM_NIL;
	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 1), (*(*c).graph).config);
	prc = (*n)._Ukind.S6.sons->data[((NI) 0)];
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n0;
		if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45))) goto LA3_;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw((*n)._Ukind.S6.sons->data[((NI) 0)], ((NI) 2), (*(*c).graph).config);
		n0 = semFieldAccess_k2Lin9a76VyrWz9b8OoRC9apg_12(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0);
		{
			if (!((*n0).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 25))) goto LA7_;
			result = n0;
			(*result).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27);
			(*result).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 11))%(sizeof(NU32)*8));
			{
				NI i;
				NI colontmp_;
				NI T10_;
				NI res;
				i = (NI)0;
				colontmp_ = (NI)0;
				T10_ = (NI)0;
				T10_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
				colontmp_ = (NI)(T10_ - ((NI) 1));
				res = ((NI) 1);
				{
					while (1) {
						if (!(res <= colontmp_)) goto LA12;
						i = res;
						addSon_gCCf68XrWL79bKes6htzFjQ_2(result, (*n)._Ukind.S6.sons->data[i]);
						res += ((NI) 1);
					} LA12: ;
				}
			}
			result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, result, flags);
			goto BeforeRet_;
		}
		goto LA5_;
		LA7_: ;
		{
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), n0);
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 32768));
		t = (*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ;
		{
			NIM_BOOL T17_;
			T17_ = (NIM_BOOL)0;
			T17_ = !((t == NIM_NIL));
			if (!(T17_)) goto LA18_;
			T17_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47));
			LA18_: ;
			if (!T17_) goto LA19_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newDeref_HtAG89bn1UDHEhRcS27NOXQlocals((*n)._Ukind.S6.sons->data[((NI) 0)]));
		}
		goto LA15_;
		LA19_: ;
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42))) goto LA22_;
			s = bracketedMacro_9cp0DDH84sSKypsK7p9bXmBQ((*n)._Ukind.S6.sons->data[((NI) 0)]);
			{
				if (!!((s == NIM_NIL))) goto LA26_;
				setGenericParams_wkwHEj6zZnYo2DMZys6jnA_8(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
				result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, flags);
				goto BeforeRet_;
			}
			LA26_: ;
		}
		goto LA15_;
		LA22_: ;
		LA15_: ;
	}
	LA1_: ;
	nOrig = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
	semOpAux_wkwHEj6zZnYo2DMZys6jnA_2(c, n);
	t_2 = NIM_NIL;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ == NIM_NIL))) goto LA30_;
		t_2 = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ, IL64(36099165763184656));
	}
	LA30_: ;
	{
		NIM_BOOL T34_;
		tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA m;
		T34_ = (NIM_BOOL)0;
		T34_ = !((t_2 == NIM_NIL));
		if (!(T34_)) goto LA35_;
		T34_ = ((*t_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25));
		LA35_: ;
		if (!T34_) goto LA36_;
		nimZeroMem((void*)(&m), sizeof(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA));
		resolveIndirectCall_kcBwitGDLG5fs5xyZw0iJg(c, n, nOrig, t_2, (&m));
		{
			if (!!((m.state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1)))) goto LA40_;
			{
				if (!((*(*(*c).graph).config).m.errorOutputs == 0)) goto LA44_;
				globalError_NF6kBGchnhQYPbCedyefVA_2((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_17));
				result = (*(*c).graph).emptyNode;
				goto BeforeRet_;
			}
			goto LA42_;
			LA44_: ;
			{
				NIM_BOOL hasErrorType;
				NimStringDesc* msg;
				hasErrorType = NIM_FALSE;
				msg = copyString(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_149));
				{
					NI i_2;
					NI colontmp__2;
					NI T48_;
					NI res_2;
					i_2 = (NI)0;
					colontmp__2 = (NI)0;
					T48_ = (NI)0;
					T48_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
					colontmp__2 = (NI)(T48_ - ((NI) 1));
					res_2 = ((NI) 1);
					{
						while (1) {
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* nt;
							NimStringDesc* T55_;
							if (!(res_2 <= colontmp__2)) goto LA50;
							i_2 = res_2;
							{
								if (!(((NI) 1) < i_2)) goto LA53_;
								msg = resizeString(msg, 2);
appendString(msg, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_137));
							}
							LA53_: ;
							nt = (*(*n)._Ukind.S6.sons->data[i_2]).typ;
							T55_ = (NimStringDesc*)0;
							T55_ = typeToString_QlvraUan7WbHowhAbvDvdA(nt, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
							msg = resizeString(msg, (T55_ ? T55_->Sup.len : 0) + 0);
appendString(msg, T55_);
							{
								if (!((*nt).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50))) goto LA58_;
								hasErrorType = NIM_TRUE;
								goto LA47;
							}
							LA58_: ;
							res_2 += ((NI) 1);
						} LA50: ;
					}
				} LA47: ;
				{
					NimStringDesc* T64_;
					NimStringDesc* T65_;
					if (!!(hasErrorType)) goto LA62_;
					T64_ = (NimStringDesc*)0;
					T65_ = (NimStringDesc*)0;
					T65_ = typeToString_QlvraUan7WbHowhAbvDvdA((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
					T64_ = rawNewString((T65_ ? T65_->Sup.len : 0) + 24);
appendString(T64_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_323));
appendString(T64_, T65_);
					msg = resizeString(msg, (T64_ ? T64_->Sup.len : 0) + 0);
appendString(msg, T64_);
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, msg);
				}
				LA62_: ;
				result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
				goto BeforeRet_;
			}
			LA42_: ;
			result = NIM_NIL;
		}
		goto LA38_;
		LA40_: ;
		{
			result = m.call;
			instGenericConvertersSons_aGJ9cjJ0NUF4TmTcXr43xlw(c, result, (&m));
		}
		LA38_: ;
	}
	goto LA32_;
	LA36_: ;
	{
		NIM_BOOL T68_;
		T68_ = (NIM_BOOL)0;
		T68_ = !((t_2 == NIM_NIL));
		if (!(T68_)) goto LA69_;
		T68_ = ((*t_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
		LA69_: ;
		if (!T68_) goto LA70_;
		{
			NI T74_;
			T74_ = (NI)0;
			T74_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			if (!(T74_ == ((NI) 1))) goto LA75_;
			result = semObjConstr_k2Lin9a76VyrWz9b8OoRC9apg_13(c, n, flags);
			goto BeforeRet_;
		}
		LA75_: ;
		result = semConv_U3qPBy54f1PkCP8vmFMCRA_28(c, n);
		goto BeforeRet_;
	}
	goto LA32_;
	LA70_: ;
	{
		result = overloadedCallOpr_U3qPBy54f1PkCP8vmFMCRA_35(c, n);
		{
			if (!(result == NIM_NIL)) goto LA80_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), prc);
			asgnRefNoCycle((void**) (&(*nOrig)._Ukind.S6.sons->data[((NI) 0)]), prc);
			(*n).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 12))%(sizeof(NU32)*8));
			result = semOverloadedCallAnalyseEffects_tlHRnlepD3lWks2ZTgSoRg(c, n, nOrig, flags);
			{
				if (!(result == NIM_NIL)) goto LA84_;
				result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
				goto BeforeRet_;
			}
			LA84_: ;
		}
		goto LA78_;
		LA80_: ;
		{
			if (!!(((*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)))) goto LA87_;
			goto BeforeRet_;
		}
		goto LA78_;
		LA87_: ;
		LA78_: ;
	}
	LA32_: ;
	{
		if (!((*(*result)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA91_;
		result = afterCallActions_GgyyrWN39a1O9c0p79aeR9aJkw(c, result, nOrig, flags);
	}
	goto LA89_;
	LA91_: ;
	{
		fixAbstractType_wkwHEj6zZnYo2DMZys6jnA_4(c, result);
		analyseIfAddressTakenInCall_wkwHEj6zZnYo2DMZys6jnA_5(c, result);
	}
	LA89_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, shouldBeBracketExpr_J6cfuIanCXYEsLNE8M8o9cQ_5)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
{	result = (NIM_BOOL)0;
	a = (*n)._Ukind.S6.sons->data[((NI) 0)];
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
		if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32))) goto LA3_;
		b = (*a)._Ukind.S6.sons->data[((NI) 0)];
		{
			if (!((*b).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56) || (*b).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 57))) goto LA7_;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(b);
				i_2 = ((NI) 0);
				{
					while (1) {
						if (!(i_2 < colontmp_)) goto LA11;
						i = i_2;
						{
							NIM_BOOL T14_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* be;
							T14_ = (NIM_BOOL)0;
							T14_ = ((*(*b)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
							if (!(T14_)) goto LA15_;
							T14_ = ((*(*(*b)._Ukind.S6.sons->data[i])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 4));
							LA15_: ;
							if (!T14_) goto LA16_;
							be = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), (*n).info);
							{
								NI i_3;
								NI colontmp__2;
								NI i_4;
								i_3 = (NI)0;
								colontmp__2 = (NI)0;
								colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
								i_4 = ((NI) 1);
								{
									while (1) {
										if (!(i_4 < colontmp__2)) goto LA20;
										i_3 = i_4;
										add_gCCf68XrWL79bKes6htzFjQ(be, (*a)._Ukind.S6.sons->data[i_3]);
										i_4 += ((NI) 1);
									} LA20: ;
								}
							}
							asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), be);
							result = NIM_TRUE;
							goto BeforeRet_;
						}
						LA16_: ;
						i_2 += ((NI) 1);
					} LA11: ;
				}
			}
		}
		LA7_: ;
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semArrayAccess_k2Lin9a76VyrWz9b8OoRC9apg_20)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = semSubscript_k2Lin9a76VyrWz9b8OoRC9apg_8(c, n, flags);
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T5_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
		if (!(result == NIM_NIL)) goto LA3_;
		T5_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T5_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_15));
		T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = buildOverloadedSubscripts_vzb67e0e3FoItZbupP4kXw(n, T5_);
		result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, T6_, 0);
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg, checkPar_DvJLKuffhnf89a8TOUWgNFw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg result;
	NI length;
{	result = (tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg)0;
	length = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
	{
		if (!(length == ((NI) 0))) goto LA3_;
		result = ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 3);
	}
	goto LA1_;
	LA3_: ;
	{
		if (!(length == ((NI) 1))) goto LA6_;
		{
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34))) goto LA10_;
			result = ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 2);
		}
		goto LA8_;
		LA10_: ;
		{
			if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160))) goto LA13_;
			result = ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 3);
		}
		goto LA8_;
		LA13_: ;
		{
			result = ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 1);
		}
		LA8_: ;
	}
	goto LA1_;
	LA6_: ;
	{
		{
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34))) goto LA19_;
			result = ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 2);
		}
		goto LA17_;
		LA19_: ;
		{
			result = ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 3);
		}
		LA17_: ;
		{
			NI i;
			NI colontmp_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = (NI)(length - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA24;
					i = res;
					{
						if (!(result == ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 2))) goto LA27_;
						{
							NIM_BOOL T31_;
							T31_ = (NIM_BOOL)0;
							T31_ = !(((*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34)));
							if (T31_) goto LA32_;
							T31_ = !(((*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3) || (*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2)));
							LA32_: ;
							if (!T31_) goto LA33_;
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[i]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_324));
							result = ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 0);
							goto BeforeRet_;
						}
						LA33_: ;
					}
					goto LA25_;
					LA27_: ;
					{
						{
							if (!((*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34))) goto LA38_;
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[i]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_325));
							result = ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 0);
							goto BeforeRet_;
						}
						LA38_: ;
					}
					LA25_: ;
					res += ((NI) 1);
				} LA24: ;
			}
		}
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTuplePositionsConstr_k2Lin9a76VyrWz9b8OoRC9apg_21)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	(*result).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160);
	typ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18), c);
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[i], (flags & 1024)));
				addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A(typ, (*(*n)._Ukind.S6.sons->data[i]).typ);
				res += ((NI) 1);
			} LA4: ;
		}
	}
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTupleType_J6cfuIanCXYEsLNE8M8o9cQ_6)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		if (!(T3_ == ((NI) 0))) goto LA4_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA4_: ;
	{
		NI i;
		NI colontmp_;
		NI T7_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T7_ = (NI)0;
		T7_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		colontmp_ = (NI)(T7_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA9;
				i = res;
				{
					NIM_BOOL T12_;
					T12_ = (NIM_BOOL)0;
					T12_ = ((*(*n)._Ukind.S6.sons->data[i]).typ == NIM_NIL);
					if (T12_) goto LA13_;
					T12_ = !(((*(*(*n)._Ukind.S6.sons->data[i]).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8)));
					LA13_: ;
					if (!T12_) goto LA14_;
					result = NIM_FALSE;
					goto BeforeRet_;
				}
				LA14_: ;
				res += ((NI) 1);
			} LA9: ;
		}
	}
	result = NIM_TRUE;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTupleFieldsConstr_k2Lin9a76VyrWz9b8OoRC9apg_22)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
	tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg ids;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160), (*n).info);
	typ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18), c);
	asgnRefNoCycle((void**) (&(*typ).n), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138), (*n).info));
	nimZeroMem((void*)(&ids), sizeof(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&ids));
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* id;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* f;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T22_;
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					NIM_BOOL T7_;
					T7_ = (NIM_BOOL)0;
					T7_ = !(((*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34)));
					if (T7_) goto LA8_;
					T7_ = !(((*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3) || (*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2)));
					LA8_: ;
					if (!T7_) goto LA9_;
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw((*n)._Ukind.S6.sons->data[i], (*(*c).graph).config);
				}
				LA9_: ;
				id = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				{
					if (!((*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA13_;
					id = (*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)])._Ukind.S5.ident;
				}
				goto LA11_;
				LA13_: ;
				{
					id = (*(*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name;
				}
				LA11_: ;
				{
					NIM_BOOL T18_;
					NimStringDesc* T21_;
					T18_ = (NIM_BOOL)0;
					T18_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg((&ids), (*id).Sup.id);
					if (!T18_) goto LA19_;
					T21_ = (NimStringDesc*)0;
					T21_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_297), (*id).s);
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[i]).info, T21_);
				}
				LA19_: ;
				asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 1)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 1)], (flags & 1024)));
				f = newSymS_sxL9bg3I9cVytmWlUkzsHDaA_2(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 19), (*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)], c);
				asgnRefNoCycle((void**) (&(*f).typ), skipIntLit_7SeREq19a8pkSCOuiHcpHnwsigmatch((*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 1)]).typ));
				(*f).position = i;
				rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(typ, (*f).typ);
				T22_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T22_ = newSymNode_UWZXukHA5As9aCftRHbafBg(f);
				addSon_gCCf68XrWL79bKes6htzFjQ_2((*typ).n, T22_);
				asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(f));
				addSon_gCCf68XrWL79bKes6htzFjQ_2(result, (*n)._Ukind.S6.sons->data[i]);
				res += ((NI) 1);
			} LA4: ;
		}
	}
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semSetConstr_U3qPBy54f1PkCP8vmFMCRA_36)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 39), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19), c));
	{
		NI T3_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T6_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 0))) goto LA4_;
		T6_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T6_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 3), c);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*result).typ, T6_);
	}
	goto LA1_;
	LA4_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
		typ = NIM_NIL;
		{
			NI i;
			NI colontmp_;
			NI T9_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T9_ = (NI)0;
			T9_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp_ = (NI)(T9_ - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA11;
					i = res;
					{
						NIM_BOOL T14_;
						T14_ = (NIM_BOOL)0;
						T14_ = isRange_GZCDL1KLeVpc9b7cG4gxP7Asem((*n)._Ukind.S6.sons->data[i]);
						if (!T14_) goto LA15_;
						checkSonsLen_EezdXeDvu4rB7fR84AJZgw((*n)._Ukind.S6.sons->data[i], ((NI) 3), (*(*c).graph).config);
						asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 1)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 1)], 0));
						asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 2)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 2)], 0));
						{
							if (!(typ == NIM_NIL)) goto LA19_;
							typ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 1)]).typ, IL64(211106240956432));
						}
						LA19_: ;
						asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[i]).typ), (*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 2)]).typ);
					}
					goto LA12_;
					LA15_: ;
					{
						if (!((*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 44))) goto LA22_;
						{
							if (!(typ == NIM_NIL)) goto LA26_;
							typ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)]).typ, IL64(211106240956432));
						}
						LA26_: ;
					}
					goto LA12_;
					LA22_: ;
					{
						asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[i], 0));
						{
							if (!(typ == NIM_NIL)) goto LA31_;
							typ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[i]).typ, IL64(211106240956432));
						}
						LA31_: ;
					}
					LA12_: ;
					res += ((NI) 1);
				} LA11: ;
			}
		}
		{
			NIM_BOOL T35_;
			T35_ = (NIM_BOOL)0;
			T35_ = isOrdinalType_tcejMcLGk6ut4jAKBig68w(typ, NIM_TRUE);
			if (!!(T35_)) goto LA36_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_167));
			typ = makeRangeType_J365P9cgI1ESa4FCAHPtZbA(c, IL64(0), IL64(65535), (*n).info, NIM_NIL);
		}
		goto LA33_;
		LA36_: ;
		{
			NI64 T39_;
			T39_ = (NI64)0;
			T39_ = lengthOrd_4cSIntenL9aBXY6LAFsvXdQ_2((*(*c).graph).config, typ);
			if (!(IL64(65536) < T39_)) goto LA40_;
			typ = makeRangeType_J365P9cgI1ESa4FCAHPtZbA(c, IL64(0), IL64(65535), (*n).info, NIM_NIL);
		}
		goto LA33_;
		LA40_: ;
		LA33_: ;
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A((*result).typ, typ);
		{
			NI i_2;
			NI colontmp__2;
			NI T43_;
			NI res_2;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			T43_ = (NI)0;
			T43_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__2 = (NI)(T43_ - ((NI) 1));
			res_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* m;
					tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
					if (!(res_2 <= colontmp__2)) goto LA45;
					i_2 = res_2;
					m = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					info = (*(*n)._Ukind.S6.sons->data[i_2]).info;
					{
						NIM_BOOL T48_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T51_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T52_;
						T48_ = (NIM_BOOL)0;
						T48_ = isRange_GZCDL1KLeVpc9b7cG4gxP7Asem((*n)._Ukind.S6.sons->data[i_2]);
						if (!T48_) goto LA49_;
						m = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 44), info);
						T51_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T51_ = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, (*(*n)._Ukind.S6.sons->data[i_2])._Ukind.S6.sons->data[((NI) 1)], info);
						addSon_gCCf68XrWL79bKes6htzFjQ_2(m, T51_);
						T52_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T52_ = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, (*(*n)._Ukind.S6.sons->data[i_2])._Ukind.S6.sons->data[((NI) 2)], info);
						addSon_gCCf68XrWL79bKes6htzFjQ_2(m, T52_);
					}
					goto LA46_;
					LA49_: ;
					{
						if (!((*(*n)._Ukind.S6.sons->data[i_2]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 44))) goto LA54_;
						m = (*n)._Ukind.S6.sons->data[i_2];
					}
					goto LA46_;
					LA54_: ;
					{
						m = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, (*n)._Ukind.S6.sons->data[i_2], info);
					}
					LA46_: ;
					addSon_gCCf68XrWL79bKes6htzFjQ_2(result, m);
					res_2 += ((NI) 1);
				} LA45: ;
			}
		}
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semArrayConstr_k2Lin9a76VyrWz9b8OoRC9apg_23)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI T34_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16), c));
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*result).typ, NIM_NIL);
	{
		NI T3_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T6_;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		if (!(T3_ == ((NI) 0))) goto LA4_;
		T6_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T6_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 3), c);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*result).typ, T6_);
	}
	goto LA1_;
	LA4_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
		NI64 lastIndex;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* indexType;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* yy;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
		x = (*n)._Ukind.S6.sons->data[((NI) 0)];
		lastIndex = IL64(0);
		indexType = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31));
		{
			NIM_BOOL T10_;
			NI T12_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* idx;
			T10_ = (NIM_BOOL)0;
			T10_ = ((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34));
			if (!(T10_)) goto LA11_;
			T12_ = (NI)0;
			T12_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(x);
			T10_ = (T12_ == ((NI) 2));
			LA11_: ;
			if (!T10_) goto LA13_;
			idx = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, (*x)._Ukind.S6.sons->data[((NI) 0)]);
			lastIndex = getOrdValue_k4X4XP9cdVXYioHD9akA9bVbQ(idx);
			indexType = (*idx).typ;
			x = (*x)._Ukind.S6.sons->data[((NI) 1)];
		}
		LA13_: ;
		yy = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, x, 0);
		typ = (*yy).typ;
		addSon_gCCf68XrWL79bKes6htzFjQ_2(result, yy);
		{
			NI i;
			NI colontmp_;
			NI T16_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T16_ = (NI)0;
			T16_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp_ = (NI)(T16_ - ((NI) 1));
			res = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* xx;
					if (!(res <= colontmp_)) goto LA18;
					i = res;
					x = (*n)._Ukind.S6.sons->data[i];
					{
						NIM_BOOL T21_;
						NI T23_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* idx_2;
						T21_ = (NIM_BOOL)0;
						T21_ = ((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34));
						if (!(T21_)) goto LA22_;
						T23_ = (NI)0;
						T23_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(x);
						T21_ = (T23_ == ((NI) 2));
						LA22_: ;
						if (!T21_) goto LA24_;
						idx_2 = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, (*x)._Ukind.S6.sons->data[((NI) 0)]);
						idx_2 = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, indexType, idx_2, (*x).info);
						{
							NI64 T28_;
							T28_ = (NI64)0;
							T28_ = getOrdValue_k4X4XP9cdVXYioHD9akA9bVbQ(idx_2);
							if (!!(((NI64)(lastIndex + IL64(1)) == T28_))) goto LA29_;
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*x).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_326));
						}
						LA29_: ;
						x = (*x)._Ukind.S6.sons->data[((NI) 1)];
					}
					LA24_: ;
					xx = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, x, (flags & 1024));
					add_gCCf68XrWL79bKes6htzFjQ(result, xx);
					typ = commonType_hfwrZ5ThSx8sbABQFEwdHg(typ, (*xx).typ);
					lastIndex += ((NI) 1);
					res += ((NI) 1);
				} LA18: ;
			}
		}
		addSonSkipIntLit_IsUgUD6jUR9cHf7wFXGXH2A((*result).typ, typ);
		{
			NI i_2;
			NI colontmp__2;
			NI i_3;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
			i_3 = ((NI) 0);
			{
				while (1) {
					if (!(i_3 < colontmp__2)) goto LA33;
					i_2 = i_3;
					asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i_2]), fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, (*result)._Ukind.S6.sons->data[i_2], (*(*result)._Ukind.S6.sons->data[i_2]).info));
					i_3 += ((NI) 1);
				} LA33: ;
			}
		}
	}
	LA1_: ;
	T34_ = (NI)0;
	T34_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(result);
	asgnRefNoCycle((void**) (&(*(*result).typ).sons->data[((NI) 0)]), makeRangeType_J365P9cgI1ESa4FCAHPtZbA(c, IL64(0), ((NI64) ((NI)(T34_ - ((NI) 1)))), (*n).info, NIM_NIL));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semLambda_k2Lin9a76VyrWz9b8OoRC9apg_24)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T11_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gp;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = semProcAnnotation_HKvmn9cXyuMLnGdyw4BNd9cw(c, n, TM_rF9caJawfOjYTjsgLVUSGFA_327);
	{
		if (!!((result == NIM_NIL))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	result = n;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 7), (*(*c).graph).config);
	s = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T9_;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA7_;
		T9_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T9_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
		s = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12), (*(*c).cache).idAnon, T9_, (*n).info, 0);
		asgnRefNoCycle((void**) (&(*s).ast), n);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(s));
	}
	goto LA5_;
	LA7_: ;
	{
		s = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
	}
	LA5_: ;
	pushOwner_Wu2m3sh279aYfWNXavlKecA(c, s);
	T11_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T11_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	gp = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA14_;
		gp = setGenericParamsMisc_U3qPBy54f1PkCP8vmFMCRA_5(c, n);
	}
	goto LA12_;
	LA14_: ;
	{
		gp = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 75), (*n).info);
	}
	LA12_: ;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 3)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA19_;
		semParamList_1K4lBiaKx6f704AxKCVBWw(c, (*n)._Ukind.S6.sons->data[((NI) 3)], gp, s);
		{
			NIM_BOOL T23_;
			NI T24_;
			T23_ = (NIM_BOOL)0;
			T24_ = (NI)0;
			T24_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(gp);
			T23_ = (((NI) 0) < T24_);
			if (!(T23_)) goto LA25_;
			T23_ = ((*(*n)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
			LA25_: ;
			if (!T23_) goto LA26_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 2)]), gp);
		}
		LA26_: ;
	}
	goto LA17_;
	LA19_: ;
	{
		asgnRefNoCycle((void**) (&(*s).typ), newProcType_xLsbVleCb74T7Vl9aPE528w(c, (*n).info, NIM_NIL));
	}
	LA17_: ;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 4)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA31_;
		pragma_av9bQYmoLtJKLA6ueIgHxoA(c, s, (*n)._Ukind.S6.sons->data[((NI) 4)], TM_rF9caJawfOjYTjsgLVUSGFA_327);
	}
	LA31_: ;
	(*s).options = (*(*(*c).graph).config).options;
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 6)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA35_;
		{
			NimStringDesc* T41_;
			if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 5))&63U)))!=0)) goto LA39_;
			T41_ = (NimStringDesc*)0;
			T41_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_114), (*(*s).name).s);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 6)]).info, T41_);
		}
		LA39_: ;
		{
			NIM_BOOL T44_;
			NI T45_;
			NIM_BOOL T47_;
			NI T48_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* semBody;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T52_;
			T44_ = (NIM_BOOL)0;
			T45_ = (NI)0;
			T45_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(gp);
			T44_ = (T45_ == ((NI) 0));
			if (T44_) goto LA46_;
			T47_ = (NIM_BOOL)0;
			T48_ = (NI)0;
			T48_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(gp);
			T47_ = (T48_ == ((NI) 1));
			if (!(T47_)) goto LA49_;
			T47_ = (((*(*(*gp)._Ukind.S6.sons->data[((NI) 0)]).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 11))&63U)))!=0);
			LA49_: ;
			T44_ = T47_;
			LA46_: ;
			if (!T44_) goto LA50_;
			pushProcCon_rlp4YNQ9cuQQzIjJRzZxqsA_3(c, s);
			addResult_VjjspC9bBTueJBUiTQeKIpQ(c, (*(*s).typ).sons->data[((NI) 0)], (*n).info, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12));
			addResultNode_9aKmRFIRmowmJXCJbF9aObuQ_2(c, n);
			T52_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T52_ = semProcBody_U3qPBy54f1PkCP8vmFMCRA_4(c, (*n)._Ukind.S6.sons->data[((NI) 6)]);
			semBody = hloBody_U3qPBy54f1PkCP8vmFMCRA_9(c, T52_);
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 6)]), transformBody_80mJDJ8hRZ7Zm2rfDijiOQ((*c).graph, (*c).module, semBody, s));
			popProcCon_SSNSh333Y0csrmTQnH74tQsem(c);
		}
		goto LA42_;
		LA50_: ;
		{
			if (!!(((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 12))&31U)))!=0))) goto LA54_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_328));
		}
		goto LA42_;
		LA54_: ;
		LA42_: ;
		sideEffectsCheck_grUXOQ5yIYTIh9cBH5o3wgA(c, s);
	}
	goto LA33_;
	LA35_: ;
	{
		NimStringDesc* T57_;
		T57_ = (NimStringDesc*)0;
		T57_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_199), (*(*s).name).s);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T57_);
	}
	LA33_: ;
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw(c);
	asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isCastable_RrUSf4OJ4Rybj6aC0XqcHA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* dst, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* src) {
	NIM_BOOL result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* src_2;
	NI64 dstSize;
	NI64 srcSize;
{	result = (NIM_BOOL)0;
	src_2 = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(src, IL64(13510798882111488));
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T3_;
		T3_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T3_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(dst, IL64(36099165763184912));
		if (!((*T3_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27))) goto LA4_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA4_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T8_;
		T8_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T8_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(src_2, IL64(36099165763184656));
		if (!((*T8_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8))) goto LA9_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA9_: ;
	dstSize = (NI64)0;
	srcSize = (NI64)0;
	dstSize = computeSize_vCG1GF2Iu043oALVyuJfOw_2(conf, dst);
	srcSize = computeSize_vCG1GF2Iu043oALVyuJfOw_2(conf, src_2);
	{
		if (!(dstSize < IL64(0))) goto LA13_;
		result = NIM_FALSE;
	}
	goto LA11_;
	LA13_: ;
	{
		if (!(srcSize < IL64(0))) goto LA16_;
		result = NIM_FALSE;
	}
	goto LA11_;
	LA16_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T19_;
		T19_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T19_ = typeAllowed_l66YrquEyj20orz2a4YbTw(dst, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3), 0);
		if (!!((T19_ == NIM_NIL))) goto LA20_;
		result = NIM_FALSE;
	}
	goto LA11_;
	LA20_: ;
	{
		NIM_BOOL T23_;
		NIM_BOOL T27_;
		T23_ = (NIM_BOOL)0;
		T23_ = ((*dst).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25));
		if (!(T23_)) goto LA24_;
		T23_ = ((*dst).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA24_: ;
		if (!T23_) goto LA25_;
		T27_ = (NIM_BOOL)0;
		T27_ = ((*src_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25));
		if (!(T27_)) goto LA28_;
		T27_ = ((*src_2).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA28_: ;
		result = T27_;
	}
	goto LA11_;
	LA25_: ;
	{
		NIM_BOOL T30_;
		NIM_BOOL T31_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T33_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T35_;
		T30_ = (NIM_BOOL)0;
		T31_ = (NIM_BOOL)0;
		T31_ = (srcSize <= dstSize);
		if (T31_) goto LA32_;
		T33_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T33_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(dst, IL64(36099165763184912));
		T31_ = ((*T33_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1) || (*T33_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14) || (*T33_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2) || (*T33_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) && (*T33_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44));
		LA32_: ;
		T30_ = T31_;
		if (T30_) goto LA34_;
		T35_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T35_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(src_2, IL64(36099165763184656));
		T30_ = ((*T35_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1) || (*T35_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14) || (*T35_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2) || (*T35_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) && (*T35_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44));
		LA34_: ;
		result = T30_;
	}
	LA11_: ;
	{
		NIM_BOOL T38_;
		T38_ = (NIM_BOOL)0;
		T38_ = result;
		if (!(T38_)) goto LA39_;
		T38_ = ((*src_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5));
		LA39_: ;
		if (!T38_) goto LA40_;
		result = ((*dst).size <= ((NI64) ((*conf).target.ptrSize)));
	}
	LA40_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semCast_U3qPBy54f1PkCP8vmFMCRA_37)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* targetType;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* castedExpr;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T19_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
	targetType = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
	castedExpr = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 1)], 0);
	{
		NimStringDesc* T5_;
		NimStringDesc* T6_;
		if (!(((*targetType).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 20))&63U)))!=0)) goto LA3_;
		T5_ = (NimStringDesc*)0;
		T5_ = typeToString_QlvraUan7WbHowhAbvDvdA(targetType, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		T6_ = (NimStringDesc*)0;
		T6_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_329), T5_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, T6_);
	}
	LA3_: ;
	{
		NIM_BOOL T9_;
		NimStringDesc* tar;
		NimStringDesc* alt;
		NimStringDesc* msg;
		NimStringDesc* T18_;
		T9_ = (NIM_BOOL)0;
		T9_ = isCastable_RrUSf4OJ4Rybj6aC0XqcHA((*(*c).graph).config, targetType, (*castedExpr).typ);
		if (!!(T9_)) goto LA10_;
		tar = typeToString_QlvraUan7WbHowhAbvDvdA(targetType, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		alt = typeToString_QlvraUan7WbHowhAbvDvdA(targetType, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 1));
		{
			NimStringDesc* T16_;
			if (!!(eqStrings(tar, alt))) goto LA14_;
			T16_ = (NimStringDesc*)0;
			T16_ = rawNewString((tar ? tar->Sup.len : 0) + (alt ? alt->Sup.len : 0) + 1);
appendString(T16_, tar);
appendString(T16_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_96));
appendString(T16_, alt);
			msg = T16_;
		}
		goto LA12_;
		LA14_: ;
		{
			msg = tar;
		}
		LA12_: ;
		T18_ = (NimStringDesc*)0;
		T18_ = rawNewString((msg ? msg->Sup.len : 0) + 29);
appendString(T18_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_330));
appendString(T18_, msg);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T18_);
	}
	LA10_: ;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 61), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), targetType);
	T19_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T19_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*n)._Ukind.S6.sons->data[((NI) 0)]);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(result, T19_);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(result, castedExpr);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprBranch_k2Lin9a76VyrWz9b8OoRC9apg_26)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, n, flags);
	{
		if (!!(((*result).typ == NIM_NIL))) goto LA3_;
		{
			if (!((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47))) goto LA7_;
			result = newDeref_HtAG89bn1UDHEhRcS27NOXQlocals(result);
		}
		LA7_: ;
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, endsInNoReturn_J6cfuIanCXYEsLNE8M8o9cQ_7)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
	NIM_BOOL T6_;
	NIM_BOOL T8_;
	NIM_BOOL T9_;
	result = (NIM_BOOL)0;
	it = n;
	{
		while (1) {
			NIM_BOOL T3_;
			NI T5_;
			T3_ = (NIM_BOOL)0;
			T3_ = ((*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115) || (*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126));
			if (!(T3_)) goto LA4_;
			T5_ = (NI)0;
			T5_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(it);
			T3_ = (((NI) 0) < T5_);
			LA4_: ;
			if (!T3_) goto LA2;
			it = lastSon_esDJA7239bJDiq4UrX9aHCjg(it);
		} LA2: ;
	}
	T6_ = (NIM_BOOL)0;
	T6_ = ((*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 108));
	if (T6_) goto LA7_;
	T8_ = (NIM_BOOL)0;
	T9_ = (NIM_BOOL)0;
	T9_ = ((*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32));
	if (!(T9_)) goto LA10_;
	T9_ = ((*(*it)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
	LA10_: ;
	T8_ = T9_;
	if (!(T8_)) goto LA11_;
	T8_ = (((*(*(*it)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 14))&63U)))!=0);
	LA11_: ;
	T6_ = T8_;
	LA7_: ;
	result = T6_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, commonType_wEK756YRi9c3lsyIxi9aFXSg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* y) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
{	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = endsInNoReturn_J6cfuIanCXYEsLNE8M8o9cQ_7(y);
		if (!T3_) goto LA4_;
		result = x;
		goto BeforeRet_;
	}
	LA4_: ;
	result = commonType_hfwrZ5ThSx8sbABQFEwdHg(x, (*y).typ);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprBranchScope_U3qPBy54f1PkCP8vmFMCRA_38)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	result = semExprBranch_k2Lin9a76VyrWz9b8OoRC9apg_26(c, n, 0);
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semIf_k2Lin9a76VyrWz9b8OoRC9apg_25)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	NIM_BOOL hasElse;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) newObj((&NTI_AgIT5feFR9a9aoVjv9cx2rOtg_), sizeof(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ));
	(*T1_).Sup.Sup.m_type = (&NTI_v9ae2Dpu13OW2ZJ2U9bNMd9cQ_);
	(*T1_).kind = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6);
	typ = T1_;
	hasElse = NIM_FALSE;
	{
		NI i;
		NI colontmp_;
		NI T3_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T3_ = (NI)0;
		T3_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T3_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
				if (!(res <= colontmp_)) goto LA5;
				i = res;
				it = (*n)._Ukind.S6.sons->data[i];
				{
					NI T8_;
					tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T11_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T12_;
					T8_ = (NI)0;
					T8_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(it);
					if (!(T8_ == ((NI) 2))) goto LA9_;
					T11_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
					T11_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
					T12_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T12_ = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*it)._Ukind.S6.sons->data[((NI) 0)], 0);
					asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[((NI) 0)]), forceBool_U3qPBy54f1PkCP8vmFMCRA_3(c, T12_));
					asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[((NI) 1)]), semExprBranch_k2Lin9a76VyrWz9b8OoRC9apg_26(c, (*it)._Ukind.S6.sons->data[((NI) 1)], 0));
					typ = commonType_wEK756YRi9c3lsyIxi9aFXSg(typ, (*it)._Ukind.S6.sons->data[((NI) 1)]);
					closeScope_q62Ixzqzx2R5yeGMamw81g(c);
				}
				goto LA6_;
				LA9_: ;
				{
					NI T14_;
					T14_ = (NI)0;
					T14_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(it);
					if (!(T14_ == ((NI) 1))) goto LA15_;
					hasElse = NIM_TRUE;
					asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[((NI) 0)]), semExprBranchScope_U3qPBy54f1PkCP8vmFMCRA_38(c, (*it)._Ukind.S6.sons->data[((NI) 0)]));
					typ = commonType_wEK756YRi9c3lsyIxi9aFXSg(typ, (*it)._Ukind.S6.sons->data[((NI) 0)]);
				}
				goto LA6_;
				LA15_: ;
				{
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(it, (*(*c).graph).config);
				}
				LA6_: ;
				res += ((NI) 1);
			} LA5: ;
		}
	}
	{
		NIM_BOOL T20_;
		NIM_BOOL T21_;
		NIM_BOOL T24_;
		T20_ = (NIM_BOOL)0;
		T21_ = (NIM_BOOL)0;
		T21_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen(typ);
		if (T21_) goto LA22_;
		T21_ = ((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5) || (*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6));
		LA22_: ;
		T20_ = T21_;
		if (T20_) goto LA23_;
		T24_ = (NIM_BOOL)0;
		T24_ = !(hasElse);
		if (!(T24_)) goto LA25_;
		T24_ = !(((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 2))&31U)))!=0));
		LA25_: ;
		T20_ = T24_;
		LA23_: ;
		if (!T20_) goto LA26_;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it_2;
			it_2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i_2;
				NI colontmp__2;
				NI i_3;
				i_2 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
				i_3 = ((NI) 0);
				{
					while (1) {
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T32_;
						if (!(i_3 < colontmp__2)) goto LA31;
						i_2 = i_3;
						it_2 = (*n)._Ukind.S6.sons->data[i_2];
						T32_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T32_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(it_2);
						discardCheck_1gYGSG6NjOPkINqwm7joJg(c, T32_, flags);
						i_3 += ((NI) 1);
					} LA31: ;
				}
			}
		}
		(*result).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92);
		{
			if (!(typ == (*c).enforceVoidContext)) goto LA35_;
			asgnRefNoCycle((void**) (&(*result).typ), (*c).enforceVoidContext);
		}
		LA35_: ;
	}
	goto LA18_;
	LA26_: ;
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it_3;
			it_3 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i_4;
				NI colontmp__3;
				NI i_5;
				i_4 = (NI)0;
				colontmp__3 = (NI)0;
				colontmp__3 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
				i_5 = ((NI) 0);
				{
					while (1) {
						NI j;
						NI T42_;
						if (!(i_5 < colontmp__3)) goto LA41;
						i_4 = i_5;
						it_3 = (*n)._Ukind.S6.sons->data[i_4];
						T42_ = (NI)0;
						T42_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(it_3);
						j = (NI)(T42_ - ((NI) 1));
						{
							NIM_BOOL T45_;
							T45_ = (NIM_BOOL)0;
							T45_ = endsInNoReturn_J6cfuIanCXYEsLNE8M8o9cQ_7((*it_3)._Ukind.S6.sons->data[j]);
							if (!!(T45_)) goto LA46_;
							asgnRefNoCycle((void**) (&(*it_3)._Ukind.S6.sons->data[j]), fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, (*it_3)._Ukind.S6.sons->data[j], (*(*it_3)._Ukind.S6.sons->data[j]).info));
						}
						LA46_: ;
						i_5 += ((NI) 1);
					} LA41: ;
				}
			}
		}
		(*result).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 48);
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA18_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTableConstr_U3qPBy54f1PkCP8vmFMCRA_39)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI lastKey;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41), (*n).info);
	lastKey = ((NI) 0);
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				x = (*n)._Ukind.S6.sons->data[i];
				{
					NIM_BOOL T7_;
					NI T9_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pair_2;
					T7_ = (NIM_BOOL)0;
					T7_ = ((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34));
					if (!(T7_)) goto LA8_;
					T9_ = (NI)0;
					T9_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(x);
					T7_ = (T9_ == ((NI) 2));
					LA8_: ;
					if (!T7_) goto LA10_;
					{
						NI j;
						NI colontmp__2;
						NI res_2;
						j = (NI)0;
						colontmp__2 = (NI)0;
						colontmp__2 = (NI)(i - ((NI) 1));
						res_2 = lastKey;
						{
							while (1) {
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pair;
								if (!(res_2 <= colontmp__2)) goto LA14;
								j = res_2;
								pair = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160), (*x).info);
								add_gCCf68XrWL79bKes6htzFjQ(pair, (*n)._Ukind.S6.sons->data[j]);
								add_gCCf68XrWL79bKes6htzFjQ(pair, (*x)._Ukind.S6.sons->data[((NI) 1)]);
								add_gCCf68XrWL79bKes6htzFjQ(result, pair);
								res_2 += ((NI) 1);
							} LA14: ;
						}
					}
					pair_2 = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160), (*x).info);
					add_gCCf68XrWL79bKes6htzFjQ(pair_2, (*x)._Ukind.S6.sons->data[((NI) 0)]);
					add_gCCf68XrWL79bKes6htzFjQ(pair_2, (*x)._Ukind.S6.sons->data[((NI) 1)]);
					add_gCCf68XrWL79bKes6htzFjQ(result, pair_2);
					lastKey = (NI)(i + ((NI) 1));
				}
				LA10_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NI T17_;
		T17_ = (NI)0;
		T17_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		if (!!((lastKey == T17_))) goto LA18_;
		illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
	}
	LA18_: ;
	result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, result, 0);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semBlock_k2Lin9a76VyrWz9b8OoRC9apg_27)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	(*(*c).p).nestedBlockCounter += ((NI) 1);
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* labl;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA4_;
		labl = newSymG_sxL9bg3I9cVytmWlUkzsHDaA(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 22), (*n)._Ukind.S6.sons->data[((NI) 0)], c);
		{
			if (!!((((*labl).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0))) goto LA8_;
			addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, labl);
		}
		LA8_: ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(labl, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info));
		suggestSym_nUjK9c6nUBlRnsyc9a0Rm4jQsem((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, labl, &(*(*c).graph).usageSym, NIM_TRUE);
		{
			if (!(((*(*(*c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA12_;
			nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*c).graph).config, (*labl).info, labl, (*labl).kind);
		}
		LA12_: ;
	}
	LA4_: ;
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 1)], flags));
	asgnRefNoCycle((void**) (&(*n).typ), (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ);
	{
		NIM_BOOL T16_;
		T16_ = (NIM_BOOL)0;
		T16_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*n).typ);
		if (!T16_) goto LA17_;
		(*n).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112);
	}
	goto LA14_;
	LA17_: ;
	{
		(*n).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 127);
	}
	LA14_: ;
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	(*(*c).p).nestedBlockCounter -= ((NI) 1);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, inferConceptStaticParam_ltNnA8OHGiJuU3z5jcilEw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* inferred, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* res;
	typ = (*inferred).typ;
	res = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, n);
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T3_;
		NIM_BOOL T4_;
		tyArray_24KAM9afIUgUaqBaEBB6r9bg T7_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T8_;
		T3_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T3_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(typ);
		T4_ = (NIM_BOOL)0;
		T4_ = sameType_3isNyHKb0U1OCnClmflXSg((*res).typ, T3_, 0);
		if (!!(T4_)) goto LA5_;
		nimZeroMem((void*)T7_, sizeof(tyArray_24KAM9afIUgUaqBaEBB6r9bg));
		T7_[0] = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(inferred, 0);
		T7_[1] = typeToString_QlvraUan7WbHowhAbvDvdA((*res).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		T8_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T8_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(typ);
		T7_[2] = typeToString_QlvraUan7WbHowhAbvDvdA(T8_, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		localError_J7zC9cOLuc4LIi9ckAAkcM8Q((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_332), T7_, 3);
	}
	LA5_: ;
	asgnRefNoCycle((void**) (&(*typ).n), res);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semStmtList_k2Lin9a76VyrWz9b8OoRC9apg_28)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI length;
	NIM_BOOL voidContext;
	NI last;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	(*result).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115);
	length = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
	voidContext = NIM_FALSE;
	last = (NI)(length - ((NI) 1));
	{
		NI i;
		NI colontmp_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = (NI)(length - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA3;
				i = res;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* expr;
					expr = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[i], flags);
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), expr);
					{
						NIM_BOOL T7_;
						NIM_BOOL T8_;
						NIM_BOOL T11_;
						T7_ = (NIM_BOOL)0;
						T8_ = (NIM_BOOL)0;
						T8_ = !(((*c).matchedConcept == NIM_NIL));
						if (!(T8_)) goto LA9_;
						T8_ = !(((*expr).typ == NIM_NIL));
						LA9_: ;
						T7_ = T8_;
						if (!(T7_)) goto LA10_;
						T11_ = (NIM_BOOL)0;
						T11_ = !((((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 16))&31U)))!=0));
						if (T11_) goto LA12_;
						T11_ = !((i == last));
						LA12_: ;
						T7_ = T11_;
						LA10_: ;
						if (!T7_) goto LA13_;
						switch ((*(*expr).typ).kind) {
						case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1):
						{
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* verdict;
							{
								NIM_BOOL T18_;
								NIM_BOOL T19_;
								T18_ = (NIM_BOOL)0;
								T19_ = (NIM_BOOL)0;
								T19_ = ((*expr).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29));
								if (!(T19_)) goto LA20_;
								T19_ = ((*(*expr)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
								LA20_: ;
								T18_ = T19_;
								if (!(T18_)) goto LA21_;
								T18_ = eqStrings((*(*(*(*expr)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_331));
								LA21_: ;
								if (!T18_) goto LA22_;
								{
									NIM_BOOL T26_;
									T26_ = (NIM_BOOL)0;
									T26_ = isUnresolvedStatic_NWFc8X9b4Zx0NtXP3Cp2fnw_2((*(*expr)._Ukind.S6.sons->data[((NI) 1)]).typ);
									if (!T26_) goto LA27_;
									inferConceptStaticParam_ltNnA8OHGiJuU3z5jcilEw(c, (*expr)._Ukind.S6.sons->data[((NI) 1)], (*expr)._Ukind.S6.sons->data[((NI) 2)]);
									goto LA4;
								}
								goto LA24_;
								LA27_: ;
								{
									NIM_BOOL T30_;
									T30_ = (NIM_BOOL)0;
									T30_ = isUnresolvedStatic_NWFc8X9b4Zx0NtXP3Cp2fnw_2((*(*expr)._Ukind.S6.sons->data[((NI) 2)]).typ);
									if (!T30_) goto LA31_;
									inferConceptStaticParam_ltNnA8OHGiJuU3z5jcilEw(c, (*expr)._Ukind.S6.sons->data[((NI) 2)], (*expr)._Ukind.S6.sons->data[((NI) 1)]);
									goto LA4;
								}
								goto LA24_;
								LA31_: ;
								LA24_: ;
							}
							LA22_: ;
							verdict = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, (*n)._Ukind.S6.sons->data[i]);
							{
								if (!((*verdict)._Ukind.S1.intVal == IL64(0))) goto LA35_;
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*result).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_333));
							}
							LA35_: ;
						}
						break;
						case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61):
						{
							goto LA4;
						}
						break;
						default:
						{
						}
						break;
						}
					}
					LA13_: ;
					{
						if (!((*(*n)._Ukind.S6.sons->data[i]).typ == (*c).enforceVoidContext)) goto LA41_;
						voidContext = NIM_TRUE;
						asgnRefNoCycle((void**) (&(*n).typ), (*c).enforceVoidContext);
					}
					LA41_: ;
					{
						NIM_BOOL T45_;
						NIM_BOOL T47_;
						T45_ = (NIM_BOOL)0;
						T45_ = (i == last);
						if (!(T45_)) goto LA46_;
						T47_ = (NIM_BOOL)0;
						T47_ = (length == ((NI) 1));
						if (T47_) goto LA48_;
						T47_ = !(((2052 & flags) == 0));
						LA48_: ;
						T45_ = T47_;
						LA46_: ;
						if (!T45_) goto LA49_;
						asgnRefNoCycle((void**) (&(*n).typ), (*(*n)._Ukind.S6.sons->data[i]).typ);
						{
							NIM_BOOL T53_;
							T53_ = (NIM_BOOL)0;
							T53_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*n).typ);
							if (!!(T53_)) goto LA54_;
							(*n).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126);
						}
						LA54_: ;
					}
					goto LA43_;
					LA49_: ;
					{
						NIM_BOOL T57_;
						T57_ = (NIM_BOOL)0;
						T57_ = !((i == last));
						if (T57_) goto LA58_;
						T57_ = voidContext;
						LA58_: ;
						if (!T57_) goto LA59_;
						discardCheck_1gYGSG6NjOPkINqwm7joJg(c, (*n)._Ukind.S6.sons->data[i], flags);
					}
					goto LA43_;
					LA59_: ;
					{
						asgnRefNoCycle((void**) (&(*n).typ), (*(*n)._Ukind.S6.sons->data[i]).typ);
						{
							NIM_BOOL T64_;
							T64_ = (NIM_BOOL)0;
							T64_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*n).typ);
							if (!!(T64_)) goto LA65_;
							(*n).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126);
						}
						LA65_: ;
					}
					LA43_: ;
					{
						NIM_BOOL T69_;
						NIM_BOOL T71_;
						NIM_BOOL T72_;
						T69_ = (NIM_BOOL)0;
						T69_ = ((*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 108) || (*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 109) || (*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 110) || (*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 111));
						if (T69_) goto LA70_;
						T71_ = (NIM_BOOL)0;
						T72_ = (NIM_BOOL)0;
						T72_ = ((*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32));
						if (!(T72_)) goto LA73_;
						T72_ = ((*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
						LA73_: ;
						T71_ = T72_;
						if (!(T71_)) goto LA74_;
						T71_ = (((*(*(*(*n)._Ukind.S6.sons->data[i])._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 14))&63U)))!=0);
						LA74_: ;
						T69_ = T71_;
						LA70_: ;
						if (!T69_) goto LA75_;
						{
							NI j;
							NI colontmp__2;
							NI colontmp__3;
							NI res_2;
							j = (NI)0;
							colontmp__2 = (NI)0;
							colontmp__3 = (NI)0;
							colontmp__2 = (NI)(i + ((NI) 1));
							colontmp__3 = (NI)(length - ((NI) 1));
							res_2 = colontmp__2;
							{
								while (1) {
									if (!(res_2 <= colontmp__3)) goto LA79;
									j = res_2;
									switch ((*(*n)._Ukind.S6.sons->data[j]).kind) {
									case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 90):
									case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
									case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
									case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1):
									case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 127):
									case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112):
									case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 157):
									{
									}
									break;
									default:
									{
										localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[j]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_334));
									}
									break;
									}
									res_2 += ((NI) 1);
								} LA79: ;
							}
						}
					}
					goto LA67_;
					LA75_: ;
					{
					}
					LA67_: ;
				} LA4: ;
				res += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NIM_BOOL T85_;
		NIM_BOOL T86_;
		NIM_BOOL T87_;
		NI T88_;
		T85_ = (NIM_BOOL)0;
		T86_ = (NIM_BOOL)0;
		T87_ = (NIM_BOOL)0;
		T88_ = (NI)0;
		T88_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
		T87_ = (T88_ == ((NI) 1));
		if (!(T87_)) goto LA89_;
		T87_ = ((*c).matchedConcept == NIM_NIL);
		LA89_: ;
		T86_ = T87_;
		if (!(T86_)) goto LA90_;
		T86_ = !((((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 15))&31U)))!=0));
		LA90_: ;
		T85_ = T86_;
		if (!(T85_)) goto LA91_;
		T85_ = !(((*(*result)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 105)));
		LA91_: ;
		if (!T85_) goto LA92_;
		result = (*result)._Ukind.S6.sons->data[((NI) 0)];
	}
	LA92_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semRaise_U3qPBy54f1PkCP8vmFMCRA_40)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 1), (*(*c).graph).config);
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA3_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0));
		typ = (*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ;
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = isImportedException_ziFZ9chCaA06nUtpwM9aqMyQ(typ, (*(*c).graph).config);
			if (!!(T7_)) goto LA8_;
			{
				NIM_BOOL T12_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T14_;
				T12_ = (NIM_BOOL)0;
				T12_ = !(((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22)));
				if (T12_) goto LA13_;
				T14_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T14_ = lastSon_ab52xel9cFebv9am0xV04xXA(typ);
				T12_ = !(((*T14_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17)));
				LA13_: ;
				if (!T12_) goto LA15_;
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_335));
			}
			LA15_: ;
			{
				NIM_BOOL T19_;
				NI T20_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T22_;
				NIM_BOOL T23_;
				tyArray_nHXaesL0DJZHyVS07ARPRA T26_;
				T19_ = (NIM_BOOL)0;
				T20_ = (NI)0;
				T20_ = len_SWFNCiWYB89bTUPh5KptkvA_2(typ);
				T19_ = (((NI) 0) < T20_);
				if (!(T19_)) goto LA21_;
				T22_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T22_ = lastSon_ab52xel9cFebv9am0xV04xXA(typ);
				T23_ = (NIM_BOOL)0;
				T23_ = isException_NWFc8X9b4Zx0NtXP3Cp2fnw_3(T22_);
				T19_ = !(T23_);
				LA21_: ;
				if (!T19_) goto LA24_;
				nimZeroMem((void*)T26_, sizeof(tyArray_nHXaesL0DJZHyVS07ARPRA));
				T26_[0] = typeToString_QlvraUan7WbHowhAbvDvdA(typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
				localError_J7zC9cOLuc4LIi9ckAAkcM8Q((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_336), T26_, 1);
			}
			LA24_: ;
		}
		LA8_: ;
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasEmpty_z2e9adVXglgr6c9bZnL16WwQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T5_;
		if (!((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24) || (*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16) || (*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19))) goto LA3_;
		T5_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T5_ = lastSon_ab52xel9cFebv9am0xV04xXA(typ);
		result = ((*T5_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 3));
	}
	goto LA1_;
	LA3_: ;
	{
		if (!((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18))) goto LA7_;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* s;
			tySequence_Ef05srmQTDulnBdXR4Ja6Q* colontmp_;
			NI i;
			NI L;
			NI T10_;
			s = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			colontmp_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
			colontmp_ = (*typ).sons;
			i = ((NI) 0);
			T10_ = (colontmp_ ? colontmp_->Sup.len : 0);
			L = T10_;
			{
				while (1) {
					NIM_BOOL T13_;
					if (!(i < L)) goto LA12;
					s = colontmp_->data[i];
					T13_ = (NIM_BOOL)0;
					T13_ = result;
					if (T13_) goto LA14_;
					T13_ = hasEmpty_z2e9adVXglgr6c9bZnL16WwQ(s);
					LA14_: ;
					result = T13_;
					i += ((NI) 1);
				} LA12: ;
			}
		}
	}
	goto LA1_;
	LA7_: ;
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addToVarSection_JtkcK7WZtMcCOyvaWsJaLg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* identDefs) {
	NI L;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* value;
	L = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(identDefs);
	value = (*identDefs)._Ukind.S6.sons->data[(NI)(L - ((NI) 1))];
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* o;
		if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115))) goto LA3_;
		o = copyNode_lz8T1F9c0YwEOpUnrAUYgjg(orig);
		add_gCCf68XrWL79bKes6htzFjQ(o, identDefs);
		add_gCCf68XrWL79bKes6htzFjQ(result, o);
	}
	goto LA1_;
	LA3_: ;
	{
		add_gCCf68XrWL79bKes6htzFjQ(result, identDefs);
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, fillPartialObject_4JRYkLnkU3NAqCoEhWZ9ajg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	{
		NI T3_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* y;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj;
		T3_ = (NI)0;
		T3_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		if (!(T3_ == ((NI) 2))) goto LA4_;
		x = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0);
		y = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*n)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
		obj = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*x).typ, IL64(36239903266220304));
		{
			NIM_BOOL T8_;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field;
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T12_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T13_;
			T8_ = (NIM_BOOL)0;
			T8_ = ((*obj).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17));
			if (!(T8_)) goto LA9_;
			T8_ = (((*obj).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 16))&63U)))!=0);
			LA9_: ;
			if (!T8_) goto LA10_;
			T12_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T12_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, (*y).s);
			field = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 19), T12_, (*obj).sym, (*(*n)._Ukind.S6.sons->data[((NI) 1)]).info, 0);
			asgnRefNoCycle((void**) (&(*field).typ), skipIntLit_7SeREq19a8pkSCOuiHcpHnwsigmatch(typ));
			(*field).position = sonsLen_qPWPHw7WgJeEVYUdcaRIig((*obj).n);
			T13_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T13_ = newSymNode_UWZXukHA5As9aCftRHbafBg(field);
			addSon_gCCf68XrWL79bKes6htzFjQ_2((*obj).n, T13_);
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), makeDeref_nRsa9acFWDI6GmzVZLXX3CQ(x));
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), newSymNode_UWZXukHA5As9aCftRHbafBg(field));
			asgnRefNoCycle((void**) (&(*n).typ), (*field).typ);
		}
		goto LA6_;
		LA10_: ;
		{
			NimStringDesc* T15_;
			NimStringDesc* T16_;
			T15_ = (NimStringDesc*)0;
			T16_ = (NimStringDesc*)0;
			T16_ = typeToString_QlvraUan7WbHowhAbvDvdA(obj, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T15_ = rawNewString((T16_ ? T16_->Sup.len : 0) + 71);
appendString(T15_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_342));
appendString(T15_, T16_);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T15_);
		}
		LA6_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_343));
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isDiscardUnderscore_yufYcNWVPQdYTTqovY22lA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		if (!eqStrings((*(*v).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_344))) goto LA3_;
		(*v).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))%(sizeof(NU64)*8));
		result = NIM_TRUE;
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, findShadowedVar_W9ag6zFa44z9aMukiqTZ5T5Q)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
{	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* scope;
		tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* colontmp_;
		tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* current;
		scope = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
		colontmp_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
		colontmp_ = (*(*c).currentScope).parent;
		current = colontmp_;
		{
			while (1) {
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* shadowed;
				if (!!((current == NIM_NIL))) goto LA3;
				scope = current;
				{
					if (!(scope == (*c).topLevelScope)) goto LA6_;
					goto LA1;
				}
				LA6_: ;
				shadowed = strTableGet_0xgFDJUQtGGr2e0Sq9aLIhA((*scope).symbols, (*v).name);
				{
					NIM_BOOL T10_;
					T10_ = (NIM_BOOL)0;
					T10_ = !((shadowed == NIM_NIL));
					if (!(T10_)) goto LA11_;
					T10_ = ((2099976 &(1U<<((NU)((*shadowed).kind)&31U)))!=0);
					LA11_: ;
					if (!T10_) goto LA12_;
					result = shadowed;
					goto BeforeRet_;
				}
				LA12_: ;
				current = (*current).parent;
			} LA3: ;
		}
	} LA1: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, identWithin_8VRqkPf8FGAPxvuvnEZciA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* s) {
	NIM_BOOL result;
	NIM_BOOL T10_;
{	result = (NIM_BOOL)0;
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					NIM_BOOL T7_;
					T7_ = (NIM_BOOL)0;
					T7_ = identWithin_8VRqkPf8FGAPxvuvnEZciA((*n)._Ukind.S6.sons->data[i], s);
					if (!T7_) goto LA8_;
					result = NIM_TRUE;
					goto BeforeRet_;
				}
				LA8_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	T10_ = (NIM_BOOL)0;
	T10_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
	if (!(T10_)) goto LA11_;
	T10_ = ((*(*(*n)._Ukind.S4.sym).name).Sup.id == (*s).Sup.id);
	LA11_: ;
	result = T10_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, setVarType_TtC9aPrZPdZj6gfXYarxLaw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	{
		NIM_BOOL T3_;
		NIM_BOOL T5_;
		NimStringDesc* T8_;
		NimStringDesc* T9_;
		NimStringDesc* T10_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*v).typ == NIM_NIL));
		if (!(T3_)) goto LA4_;
		T5_ = (NIM_BOOL)0;
		T5_ = sameTypeOrNil_3isNyHKb0U1OCnClmflXSg_2((*v).typ, typ, 0);
		T3_ = !(T5_);
		LA4_: ;
		if (!T3_) goto LA6_;
		T8_ = (NimStringDesc*)0;
		T9_ = (NimStringDesc*)0;
		T9_ = typeToString_QlvraUan7WbHowhAbvDvdA((*v).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		T10_ = (NimStringDesc*)0;
		T10_ = typeToString_QlvraUan7WbHowhAbvDvdA(typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		T8_ = rawNewString(((*(*v).name).s ? (*(*v).name).s->Sup.len : 0) + (T9_ ? T9_->Sup.len : 0) + (T10_ ? T10_->Sup.len : 0) + 82);
appendString(T8_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_346));
appendString(T8_, (*(*v).name).s);
appendString(T8_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_347));
appendString(T8_, T9_);
appendString(T8_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_348));
appendString(T8_, T10_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*v).info, T8_);
	}
	LA6_: ;
	asgnRefNoCycle((void**) (&(*v).typ), typ);
}

N_LIB_PRIVATE N_NIMCALL(void, checkNilable_N5AsKc2p9cRacaeRZJlgnLw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((40 & (*v).flags) == 8);
		if (!(T3_)) goto LA4_;
		T3_ = !(((393216 & (*(*v).typ).flags) == 0));
		LA4_: ;
		if (!T3_) goto LA5_;
		{
			if (!((*v).ast == 0)) goto LA9_;
			message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*v).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 30), (*(*v).name).s);
		}
		goto LA7_;
		LA9_: ;
		{
			NIM_BOOL T12_;
			T12_ = (NIM_BOOL)0;
			T12_ = (((*(*v).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 17))&63U)))!=0);
			if (!(T12_)) goto LA13_;
			T12_ = !((((*(*(*v).ast).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 17))&63U)))!=0));
			LA13_: ;
			if (!T12_) goto LA14_;
			message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*v).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 30), (*(*v).name).s);
		}
		goto LA7_;
		LA14_: ;
		LA7_: ;
	}
	LA5_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semVarOrLet_I9cBPmta6MGSAD7D9bx6dHLA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw symkind) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
	NIM_BOOL hasCompileTime;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	b = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = copyNode_lz8T1F9c0YwEOpUnrAUYgjg(n);
	hasCompileTime = NIM_FALSE;
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					NI length;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* def;
					tySet_tyEnum_TTypeAllowedFlag_wySCBkY0DFkxIXMhoVC4cw T75_;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tup;
					a = (*n)._Ukind.S6.sons->data[i];
					{
						if (!((*(*(*c).graph).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 14))) goto LA8_;
						suggestStmt_utpC2gr4BrwN59bDcE4of4w_3(c, a);
					}
					LA8_: ;
					{
						if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA12_;
						goto LA5;
					}
					LA12_: ;
					{
						if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35) || (*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36) || (*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 102)))) goto LA16_;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a, (*(*c).graph).config);
					}
					LA16_: ;
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a, ((NI) 3), (*(*c).graph).config);
					length = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a);
					typ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					{
						if (!!(((*(*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA20_;
						typ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
					}
					goto LA18_;
					LA20_: ;
					{
						typ = NIM_NIL;
					}
					LA18_: ;
					def = (*(*c).graph).emptyNode;
					{
						if (!!(((*(*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA25_;
						def = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))], 1024);
						{
							NIM_BOOL T29_;
							T29_ = (NIM_BOOL)0;
							T29_ = ((*(*def).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8));
							if (!(T29_)) goto LA30_;
							T29_ = !(((*(*(*c).p).owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17)));
							LA30_: ;
							if (!T29_) goto LA31_;
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*def).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_337));
							asgnRefNoCycle((void**) (&(*def).typ), errorType_5olHzpuoNS9asyp0iz7j62Q(c));
						}
						LA31_: ;
						{
							if (!!((typ == NIM_NIL))) goto LA35_;
							{
								NIM_BOOL T39_;
								T39_ = (NIM_BOOL)0;
								T39_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw(typ);
								if (!T39_) goto LA40_;
								def = inferWithMetatype_Q9bYZoySevMBqJgfPwQRyew(c, typ, def, NIM_FALSE);
								typ = (*def).typ;
							}
							goto LA37_;
							LA40_: ;
							{
								def = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, def, (*def).info);
							}
							LA37_: ;
						}
						goto LA33_;
						LA35_: ;
						{
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T44_;
							T44_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
							T44_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*def).typ, IL64(1152921504606846976));
							typ = skipIntLit_7SeREq19a8pkSCOuiHcpHnwsigmatch(T44_);
							{
								NIM_BOOL T47_;
								T47_ = (NIM_BOOL)0;
								T47_ = ((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52) || (*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53));
								if (!(T47_)) goto LA48_;
								T47_ = (((*typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0);
								LA48_: ;
								if (!T47_) goto LA49_;
								typ = lastSon_ab52xel9cFebv9am0xV04xXA(typ);
							}
							LA49_: ;
							{
								NIM_BOOL T53_;
								NimStringDesc* T56_;
								NimStringDesc* T57_;
								NimStringDesc* T58_;
								T53_ = (NIM_BOOL)0;
								T53_ = hasEmpty_z2e9adVXglgr6c9bZnL16WwQ(typ);
								if (!T53_) goto LA54_;
								T56_ = (NimStringDesc*)0;
								T56_ = substr_9bUFQ4OV1temcDF0GZp317g(reprEnum((NI)(*typ).kind, (&NTI_9a3YiReNVD0IJHWFKgXRe9ag_)), ((NI) 2));
								T57_ = (NimStringDesc*)0;
								T57_ = nsuToLowerAsciiStr(T56_);
								T58_ = (NimStringDesc*)0;
								T58_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_338), T57_);
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*def).info, T58_);
							}
							goto LA51_;
							LA54_: ;
							{
								NIM_BOOL T60_;
								NimStringDesc* T64_;
								NimStringDesc* T65_;
								T60_ = (NIM_BOOL)0;
								T60_ = ((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25));
								if (!(T60_)) goto LA61_;
								T60_ = (((*typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0);
								LA61_: ;
								if (!T60_) goto LA62_;
								T64_ = (NimStringDesc*)0;
								T64_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(def, 0);
								T65_ = (NimStringDesc*)0;
								T65_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_339), T64_);
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*def).info, T65_);
							}
							goto LA51_;
							LA62_: ;
							LA51_: ;
						}
						LA33_: ;
					}
					goto LA23_;
					LA25_: ;
					{
						{
							if (!(symkind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 9))) goto LA69_;
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_340));
						}
						LA69_: ;
					}
					LA23_: ;
					{
						if (!(typ == NIM_NIL)) goto LA73_;
						goto LA5;
					}
					LA73_: ;
					{
						if (!!(((*c).matchedConcept == NIM_NIL))) goto LA78_;
						T75_ = 4;
					}
					goto LA76_;
					LA78_: ;
					{
						T75_ = 0;
					}
					LA76_: ;
					typeAllowedCheck_OJXIxi4fH0HgKVBUkO49a7w((*(*c).graph).config, (*a).info, typ, symkind, T75_);
					liftTypeBoundOps_loja41ceALuHLYIaYdWs2A(c, typ, (*a).info);
					tup = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(typ, IL64(70368744179728));
					{
						if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36))) goto LA83_;
						{
							if (!!(((*tup).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18)))) goto LA87_;
							localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*a).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 4), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_341));
						}
						goto LA85_;
						LA87_: ;
						{
							NI T90_;
							T90_ = (NI)0;
							T90_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(tup);
							if (!!(((NI)(length - ((NI) 2)) == T90_))) goto LA91_;
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_272));
						}
						goto LA85_;
						LA91_: ;
						LA85_: ;
						b = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36), (*a).info);
						newSons_W9cZG9c5PyHYZPzxHXuunFyQ(b, length);
						asgnRefNoCycle((void**) (&(*b)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]), (*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]);
						asgnRefNoCycle((void**) (&(*b)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))]), def);
						addToVarSection_JtkcK7WZtMcCOyvaWsJaLg(c, result, n, b);
					}
					goto LA81_;
					LA83_: ;
					{
						NIM_BOOL T94_;
						NIM_BOOL T95_;
						NIM_BOOL T96_;
						NI T100_;
						T94_ = (NIM_BOOL)0;
						T95_ = (NIM_BOOL)0;
						T96_ = (NIM_BOOL)0;
						T96_ = ((*tup).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18));
						if (!(T96_)) goto LA97_;
						T96_ = ((*def).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37) || (*def).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160));
						LA97_: ;
						T95_ = T96_;
						if (!(T95_)) goto LA98_;
						T95_ = ((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35));
						LA98_: ;
						T94_ = T95_;
						if (!(T94_)) goto LA99_;
						T100_ = (NI)0;
						T100_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
						T94_ = (((NI) 3) < T100_);
						LA99_: ;
						if (!T94_) goto LA101_;
						message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*a).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 28), ((NimStringDesc*) NIM_NIL));
					}
					goto LA81_;
					LA101_: ;
					LA81_: ;
					{
						NI j;
						NI colontmp__2;
						NI res_2;
						j = (NI)0;
						colontmp__2 = (NI)0;
						colontmp__2 = (NI)(length - ((NI) 3));
						res_2 = ((NI) 0);
						{
							while (1) {
								if (!(res_2 <= colontmp__2)) goto LA105;
								j = res_2;
								{
									tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v;
									{
										tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T111_;
										if (!((*(*a)._Ukind.S6.sons->data[j]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45))) goto LA109_;
										T111_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
										{
											if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36)))) goto LA114_;
											T111_ = typ;
										}
										goto LA112_;
										LA114_: ;
										{
											T111_ = (*tup).sons->data[j];
										}
										LA112_: ;
										fillPartialObject_4JRYkLnkU3NAqCoEhWZ9ajg(c, (*a)._Ukind.S6.sons->data[j], T111_);
										addToVarSection_JtkcK7WZtMcCOyvaWsJaLg(c, result, n, a);
										goto LA106;
									}
									LA109_: ;
									v = semIdentDef_xo9cgbfYKVVrrYTXCTptvbQ(c, (*a)._Ukind.S6.sons->data[j], symkind);
									{
										NIM_BOOL T119_;
										NIM_BOOL T121_;
										T119_ = (NIM_BOOL)0;
										T119_ = !((((*v).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0));
										if (!(T119_)) goto LA120_;
										T121_ = (NIM_BOOL)0;
										T121_ = isDiscardUnderscore_yufYcNWVPQdYTTqovY22lA(v);
										T119_ = !(T121_);
										LA120_: ;
										if (!T119_) goto LA122_;
										addInterfaceDecl_iUv8DpVEGQp9aUuNG4lxujA_2(c, v);
									}
									LA122_: ;
									{
										if (!(((NI) 0) < (*c).inUnrolledContext)) goto LA126_;
										(*v).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 22))%(sizeof(NU64)*8));
									}
									goto LA124_;
									LA126_: ;
									{
										tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* shadowed;
										shadowed = findShadowedVar_W9ag6zFa44z9aMukiqTZ5T5Q(c, v);
										{
											if (!!((shadowed == NIM_NIL))) goto LA131_;
											(*shadowed).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 22))%(sizeof(NU64)*8));
											{
												NIM_BOOL T135_;
												T135_ = (NIM_BOOL)0;
												T135_ = ((*shadowed).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 11));
												if (!(T135_)) goto LA136_;
												T135_ = !((((*v).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0));
												LA136_: ;
												if (!T135_) goto LA137_;
												message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*a).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 39), ((NimStringDesc*) NIM_NIL));
											}
											LA137_: ;
											{
												NIM_BOOL T141_;
												NIM_BOOL T143_;
												T141_ = (NIM_BOOL)0;
												T141_ = (((*(*(*c).graph).config).notes &((NU64)1<<((NU)((((tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg) 29)- 11))&63U)))!=0);
												if (!(T141_)) goto LA142_;
												T143_ = (NIM_BOOL)0;
												T143_ = identWithin_8VRqkPf8FGAPxvuvnEZciA(def, (*v).name);
												T141_ = !(T143_);
												LA142_: ;
												if (!T141_) goto LA144_;
												message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*a).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 29), (*(*v).name).s);
											}
											LA144_: ;
										}
										LA131_: ;
									}
									LA124_: ;
									{
										tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T164_;
										tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T165_;
										if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36)))) goto LA148_;
										{
											if (!!(((*def).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA152_;
											asgnRefNoCycle((void**) (&(*v).ast), def);
											{
												if (!(((*v).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 23))&63U)))!=0)) goto LA156_;
												localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*def).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_345));
											}
											LA156_: ;
										}
										LA152_: ;
										setVarType_TtC9aPrZPdZj6gfXYarxLaw(c, v, typ);
										b = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35), (*a).info);
										{
											NIM_BOOL T160_;
											NimStringDesc* T163_;
											T160_ = (NIM_BOOL)0;
											T160_ = importantComments_6aU0ZBrns2mWNHTDUbDERQsem((*(*c).graph).config);
											if (!T160_) goto LA161_;
											T163_ = (NimStringDesc*)0;
											T163_ = (*b).comment; (*b).comment = copyStringRC1((*a).comment);
											if (T163_) nimGCunrefNoCycle(T163_);
										}
										LA161_: ;
										T164_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
										T164_ = newSymNode_UWZXukHA5As9aCftRHbafBg(v);
										addSon_gCCf68XrWL79bKes6htzFjQ_2(b, T164_);
										addSon_gCCf68XrWL79bKes6htzFjQ_2(b, (*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]);
										T165_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
										T165_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(def);
										addSon_gCCf68XrWL79bKes6htzFjQ_2(b, T165_);
										addToVarSection_JtkcK7WZtMcCOyvaWsJaLg(c, result, n, b);
									}
									goto LA146_;
									LA148_: ;
									{
										{
											if (!((*def).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37) || (*def).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160))) goto LA169_;
											asgnRefNoCycle((void**) (&(*v).ast), (*def)._Ukind.S6.sons->data[j]);
										}
										LA169_: ;
										{
											if (!((*tup).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18))) goto LA173_;
											setVarType_TtC9aPrZPdZj6gfXYarxLaw(c, v, (*tup).sons->data[j]);
										}
										goto LA171_;
										LA173_: ;
										{
											asgnRefNoCycle((void**) (&(*v).typ), tup);
										}
										LA171_: ;
										asgnRefNoCycle((void**) (&(*b)._Ukind.S6.sons->data[j]), newSymNode_UWZXukHA5As9aCftRHbafBg(v));
									}
									LA146_: ;
									checkNilable_N5AsKc2p9cRacaeRZJlgnLw(c, v);
									{
										if (!(((*v).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 24))&63U)))!=0)) goto LA178_;
										hasCompileTime = NIM_TRUE;
									}
									LA178_: ;
									{
										if (!(((*v).flags & 8388616) == 8)) goto LA182_;
										message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*v).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 66), ((NimStringDesc*) NIM_NIL));
									}
									LA182_: ;
								} LA106: ;
								res_2 += ((NI) 1);
							} LA105: ;
						}
					}
				} LA5: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	{
		if (!hasCompileTime) goto LA186_;
		setupCompileTimeVar_zQ7dn9aEDgIq1IbBIE9cxsxg((*c).module, (*c).graph, result);
	}
	LA186_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, fitRemoveHiddenConv_IThxSRXMvPsDgyzovn2CRQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, n, (*n).info);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* r1;
		if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59))) goto LA3_;
		r1 = (*result)._Ukind.S6.sons->data[((NI) 1)];
		{
			NIM_BOOL T7_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T9_;
			T7_ = (NIM_BOOL)0;
			T7_ = ((*r1).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*r1).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 15));
			if (!(T7_)) goto LA8_;
			T9_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T9_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(typ, IL64(36099165764233488));
			T7_ = ((*T9_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 36) && (*T9_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 39));
			LA8_: ;
			if (!T7_) goto LA10_;
			result = newFloatNode_TjQAA1fOcrmI6Hb9bZNtixw(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 16), ((NF) ((*r1)._Ukind.S1.intVal)));
			(*result).info = (*n).info;
			asgnRefNoCycle((void**) (&(*result).typ), typ);
		}
		goto LA5_;
		LA10_: ;
		{
			changeType_lfrCL9bscHIcnkZmm1gdmUg(c, r1, typ, NIM_TRUE);
			result = r1;
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T14_;
		T14_ = (NIM_BOOL)0;
		T14_ = sameType_3isNyHKb0U1OCnClmflXSg((*result).typ, typ, 0);
		if (!!(T14_)) goto LA15_;
		changeType_lfrCL9bscHIcnkZmm1gdmUg(c, result, typ, NIM_FALSE);
	}
	goto LA1_;
	LA15_: ;
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConst_U3qPBy54f1PkCP8vmFMCRA_41)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = copyNode_lz8T1F9c0YwEOpUnrAUYgjg(n);
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* def;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T54_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T55_;
					a = (*n)._Ukind.S6.sons->data[i];
					{
						if (!((*(*(*c).graph).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 14))) goto LA8_;
						suggestStmt_utpC2gr4BrwN59bDcE4of4w_3(c, a);
					}
					LA8_: ;
					{
						if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA12_;
						goto LA5;
					}
					LA12_: ;
					{
						if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 102)))) goto LA16_;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a, (*(*c).graph).config);
					}
					LA16_: ;
					checkSonsLen_EezdXeDvu4rB7fR84AJZgw(a, ((NI) 3), (*(*c).graph).config);
					v = semIdentDef_xo9cgbfYKVVrrYTXCTptvbQ(c, (*a)._Ukind.S6.sons->data[((NI) 0)], ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 10));
					typ = NIM_NIL;
					{
						if (!!(((*(*a)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA20_;
						typ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*a)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
					}
					LA20_: ;
					def = semConstExpr_U3qPBy54f1PkCP8vmFMCRA(c, (*a)._Ukind.S6.sons->data[((NI) 2)]);
					{
						if (!(def == NIM_NIL)) goto LA24_;
						localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*a)._Ukind.S6.sons->data[((NI) 2)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_176));
						goto LA5;
					}
					LA24_: ;
					{
						if (!!((typ == NIM_NIL))) goto LA28_;
						def = fitRemoveHiddenConv_IThxSRXMvPsDgyzovn2CRQ(c, typ, def);
					}
					goto LA26_;
					LA28_: ;
					{
						typ = (*def).typ;
					}
					LA26_: ;
					{
						if (!(typ == NIM_NIL)) goto LA33_;
						localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*a)._Ukind.S6.sons->data[((NI) 2)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_176));
						goto LA5;
					}
					LA33_: ;
					{
						NIM_BOOL T37_;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T38_;
						NimStringDesc* T42_;
						NimStringDesc* T43_;
						T37_ = (NIM_BOOL)0;
						T38_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
						T38_ = typeAllowed_l66YrquEyj20orz2a4YbTw(typ, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 10), 0);
						T37_ = !((T38_ == NIM_NIL));
						if (!(T37_)) goto LA39_;
						T37_ = !(((*def).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23)));
						LA39_: ;
						if (!T37_) goto LA40_;
						T42_ = (NimStringDesc*)0;
						T43_ = (NimStringDesc*)0;
						T43_ = typeToString_QlvraUan7WbHowhAbvDvdA(typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
						T42_ = rawNewString((T43_ ? T43_->Sup.len : 0) + 24);
appendString(T42_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_349));
appendString(T42_, T43_);
						localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, T42_);
						goto LA5;
					}
					LA40_: ;
					setVarType_TtC9aPrZPdZj6gfXYarxLaw(c, v, typ);
					asgnRefNoCycle((void**) (&(*v).ast), def);
					{
						if (!!((((*v).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0))) goto LA46_;
						addInterfaceDecl_iUv8DpVEGQp9aUuNG4lxujA_2(c, v);
					}
					LA46_: ;
					b = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 102), (*a).info);
					{
						NIM_BOOL T50_;
						NimStringDesc* T53_;
						T50_ = (NIM_BOOL)0;
						T50_ = importantComments_6aU0ZBrns2mWNHTDUbDERQsem((*(*c).graph).config);
						if (!T50_) goto LA51_;
						T53_ = (NimStringDesc*)0;
						T53_ = (*b).comment; (*b).comment = copyStringRC1((*a).comment);
						if (T53_) nimGCunrefNoCycle(T53_);
					}
					LA51_: ;
					T54_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T54_ = newSymNode_UWZXukHA5As9aCftRHbafBg(v);
					addSon_gCCf68XrWL79bKes6htzFjQ_2(b, T54_);
					addSon_gCCf68XrWL79bKes6htzFjQ_2(b, (*a)._Ukind.S6.sons->data[((NI) 1)]);
					T55_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T55_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(def);
					addSon_gCCf68XrWL79bKes6htzFjQ_2(b, T55_);
					addSon_gCCf68XrWL79bKes6htzFjQ_2(result, b);
				} LA5: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, typeSectionLeftSidePass_wkwHEj6zZnYo2DMZys6jnA_9)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* name;
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
					a = (*n)._Ukind.S6.sons->data[i];
					{
						if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA8_;
						goto LA5;
					}
					LA8_: ;
					{
						if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 103)))) goto LA12_;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a, (*(*c).graph).config);
					}
					LA12_: ;
					checkSonsLen_EezdXeDvu4rB7fR84AJZgw(a, ((NI) 3), (*(*c).graph).config);
					name = (*a)._Ukind.S6.sons->data[((NI) 0)];
					s = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
					{
						NIM_BOOL T16_;
						tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* pkgName;
						tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* typName;
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* pkg;
						T16_ = (NIM_BOOL)0;
						T16_ = ((*name).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45));
						if (!(T16_)) goto LA17_;
						T16_ = ((*(*a)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 133));
						LA17_: ;
						if (!T16_) goto LA18_;
						pkgName = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*name)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
						typName = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*name)._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
						pkg = strTableGet_0xgFDJUQtGGr2e0Sq9aLIhA((*(*c).graph).packageSyms, pkgName);
						{
							NIM_BOOL T22_;
							NimStringDesc* T26_;
							T22_ = (NIM_BOOL)0;
							T22_ = (pkg == 0);
							if (T22_) goto LA23_;
							T22_ = !(((*pkg).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 24)));
							LA23_: ;
							if (!T22_) goto LA24_;
							T26_ = (NimStringDesc*)0;
							T26_ = rawNewString(((*pkgName).s ? (*pkgName).s->Sup.len : 0) + 22);
appendString(T26_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_350));
appendString(T26_, (*pkgName).s);
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*name).info, T26_);
						}
						goto LA20_;
						LA24_: ;
						{
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* typsym;
							typsym = strTableGet_0xgFDJUQtGGr2e0Sq9aLIhA((*pkg)._Ukind.S3.tab, typName);
							{
								if (!(typsym == 0)) goto LA30_;
								s = semIdentDef_xo9cgbfYKVVrrYTXCTptvbQ(c, (*name)._Ukind.S6.sons->data[((NI) 1)], ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7));
								asgnRefNoCycle((void**) (&(*s).typ), newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17), c));
								asgnRefNoCycle((void**) (&(*(*s).typ).sym), s);
								(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 4))%(sizeof(NU64)*8));
								strTableAdd_bNTI8uh3GP35hzyXvGA8Xg((&(*pkg)._Ukind.S3.tab), s);
								addInterfaceDecl_iUv8DpVEGQp9aUuNG4lxujA_2(c, s);
							}
							goto LA28_;
							LA30_: ;
							{
								NIM_BOOL T33_;
								T33_ = (NIM_BOOL)0;
								T33_ = ((*typsym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7));
								if (!(T33_)) goto LA34_;
								T33_ = (((*typsym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 4))&63U)))!=0);
								LA34_: ;
								if (!T33_) goto LA35_;
								s = typsym;
								addInterfaceDecl_iUv8DpVEGQp9aUuNG4lxujA_2(c, s);
							}
							goto LA28_;
							LA35_: ;
							{
								NimStringDesc* T38_;
								T38_ = (NimStringDesc*)0;
								T38_ = rawNewString(((*(*typsym).name).s ? (*(*typsym).name).s->Sup.len : 0) + 36);
appendString(T38_, (*(*typsym).name).s);
appendString(T38_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_351));
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*name).info, T38_);
								s = typsym;
							}
							LA28_: ;
						}
						LA20_: ;
					}
					goto LA14_;
					LA18_: ;
					{
						s = semIdentDef_xo9cgbfYKVVrrYTXCTptvbQ(c, name, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7));
						asgnRefNoCycle((void**) (&(*s).typ), newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 30), c));
						asgnRefNoCycle((void**) (&(*(*s).typ).sym), s);
						{
							if (!((*name).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43))) goto LA42_;
							pragma_av9bQYmoLtJKLA6ueIgHxoA(c, s, (*name)._Ukind.S6.sons->data[((NI) 1)], TM_rF9caJawfOjYTjsgLVUSGFA_268);
						}
						LA42_: ;
						{
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* pkg_2;
							if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 4))&63U)))!=0)) goto LA46_;
							pkg_2 = (*(*c).module).owner;
							{
								NIM_BOOL T50_;
								NIM_BOOL T51_;
								T50_ = (NIM_BOOL)0;
								T51_ = (NIM_BOOL)0;
								T51_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
								T50_ = !(T51_);
								if (T50_) goto LA52_;
								T50_ = (pkg_2 == 0);
								LA52_: ;
								if (!T50_) goto LA53_;
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*name).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_352));
							}
							goto LA48_;
							LA53_: ;
							{
								tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* typsym_2;
								typsym_2 = strTableGet_0xgFDJUQtGGr2e0Sq9aLIhA((*pkg_2)._Ukind.S3.tab, (*s).name);
								{
									if (!!((typsym_2 == NIM_NIL))) goto LA58_;
									{
										NIM_BOOL T62_;
										T62_ = (NIM_BOOL)0;
										T62_ = !((((*typsym_2).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 4))&63U)))!=0));
										if (T62_) goto LA63_;
										T62_ = !((((*typsym_2).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 8))&63U)))!=0));
										LA63_: ;
										if (!T62_) goto LA64_;
										(*typsym_2).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 8))%(sizeof(NU64)*8));
										(*typsym_2).info = (*s).info;
									}
									goto LA60_;
									LA64_: ;
									{
										NimStringDesc* T67_;
										NimStringDesc* T68_;
										T67_ = (NimStringDesc*)0;
										T68_ = (NimStringDesc*)0;
										T68_ = dollar__tduYJIZOMabvcOCb9bVwWCA_2((*(*c).graph).config, (*typsym_2).info);
										T67_ = rawNewString(((*(*s).name).s ? (*(*s).name).s->Sup.len : 0) + (T68_ ? T68_->Sup.len : 0) + 66);
appendString(T67_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_353));
appendString(T67_, (*(*s).name).s);
appendString(T67_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_354));
appendString(T67_, T68_);
										localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*name).info, T67_);
									}
									LA60_: ;
									s = typsym_2;
								}
								LA58_: ;
							}
							LA48_: ;
						}
						LA46_: ;
						{
							if (!!((((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0))) goto LA71_;
							addInterfaceDecl_iUv8DpVEGQp9aUuNG4lxujA_2(c, s);
						}
						LA71_: ;
					}
					LA14_: ;
					{
						if (!((*name).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43))) goto LA75_;
						asgnRefNoCycle((void**) (&(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(s));
					}
					goto LA73_;
					LA75_: ;
					{
						asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(s));
					}
					LA73_: ;
				} LA5: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, typeSectionTypeName_U3qPBy54f1PkCP8vmFMCRA_43)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43))) goto LA3_;
		{
			NI T7_;
			T7_ = (NI)0;
			T7_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			if (!(T7_ == ((NI) 0))) goto LA8_;
			illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
		}
		LA8_: ;
		result = (*n)._Ukind.S6.sons->data[((NI) 0)];
	}
	goto LA1_;
	LA3_: ;
	{
		result = n;
	}
	LA1_: ;
	{
		if (!!(((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)))) goto LA13_;
		illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
	}
	LA13_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, setMagicType_jT5AzlKBfQYbqUbGoALfbQ)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, NI size) {
	(*(*m).typ).kind = kind;
	(*(*m).typ).size = ((NI64) (size));
	(*(*m).typ).align = ((NI16) (size));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*conf).target.targetCPU == ((tyEnum_TSystemCPU_XYDt7D1G3qcClFyZy1Ky9ag) 1));
		if (!(T3_)) goto LA4_;
		T3_ = (size == ((NI) 8));
		LA4_: ;
		if (!T3_) goto LA5_;
		{
			NIM_BOOL T9_;
			T9_ = (NIM_BOOL)0;
			T9_ = (kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 38) || kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 36));
			if (!(T9_)) goto LA10_;
			T9_ = ((4202000 &(1U<<((NU)((*conf).target.targetOS)&31U)))!=0);
			LA10_: ;
			if (!T9_) goto LA11_;
			(*(*m).typ).align = ((NI16) 4);
		}
		goto LA7_;
		LA11_: ;
		{
			if (!(kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) || kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 40) || kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 35) || kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44))) goto LA14_;
			(*(*m).typ).align = ((NI16) 4);
		}
		goto LA7_;
		LA14_: ;
		LA7_: ;
	}
	goto LA1_;
	LA5_: ;
	{
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, processMagicType_pBTGCEi9ayDcEjzg1wCHeEw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m) {
	switch ((*m).magic) {
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 184):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31), (*(*(*c).graph).config).target.intSize);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 185):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 32), ((NI) 1));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 186):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 33), ((NI) 2));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 187):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 34), ((NI) 4));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 188):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 35), ((NI) 8));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 189):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 40), (*(*(*c).graph).config).target.intSize);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 190):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 41), ((NI) 1));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 191):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 42), ((NI) 2));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 192):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 43), ((NI) 4));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 193):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44), ((NI) 8));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 194):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 36), (*(*(*c).graph).config).target.floatSize);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 195):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 37), ((NI) 4));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 196):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 38), ((NI) 8));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 197):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 39), ((NI) 16));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 198):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1), ((NI) 1));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 199):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2), ((NI) 1));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 200):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T18_;
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28), (*(*(*c).graph).config).target.ptrSize);
		T18_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T18_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*m).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2));
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*m).typ, T18_);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 201):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T20_;
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 29), (*(*(*c).graph).config).target.ptrSize);
		T20_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T20_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*m).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2));
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*m).typ, T20_);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 202):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 26), (*(*(*c).graph).config).target.ptrSize);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 203):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T23_;
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19), ((NI) 1));
		T23_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T23_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 3), c);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*m).typ, T23_);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 204):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20), (*(*(*c).graph).config).target.intSize);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 205):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5), (*(*(*c).graph).config).target.ptrSize);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 206):
	{
		{
			if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_355))) goto LA29_;
			setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 59), ((NI) 0));
		}
		goto LA27_;
		LA29_: ;
		{
			setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6), ((NI) 0));
			{
				if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_356))) goto LA34_;
				(*(*m).typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 0))%(sizeof(NU64)*8));
			}
			LA34_: ;
		}
		LA27_: ;
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 207):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7), ((NI) 0));
		{
			if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_357))) goto LA39_;
			(*(*m).typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 0))%(sizeof(NU64)*8));
		}
		LA39_: ;
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 208):
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 14):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T42_;
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8), ((NI) 0));
		T42_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T42_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0), c);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*m).typ, T42_);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 22):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T44_;
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60), ((NI) 0));
		T44_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T44_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0), c);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*m).typ, T44_);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 209):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63), ((NI) 0));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 170):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16), ((NI) 0));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 171):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27), ((NI) 0));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 176):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 48), ((NI) 0));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 172):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T50_;
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20), ((NI) 0));
		T50_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T50_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0), c);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*m).typ, T50_);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 173):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19), ((NI) 0));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 174):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24), ((NI) 0));
		{
			if (!((*(*(*c).graph).config).selectedGC == ((tyEnum_TGCMode_tkz389aDYNd8ykeZszCuBSw) 5))) goto LA55_;
			(*(*m).typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 30))%(sizeof(NU64)*8));
		}
		LA55_: ;
		asgnRefNoCycle((void**) (&(*(*c).graph).sysTypes[(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24))- 0]), (*m).typ);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 175):
	{
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 62), ((NI) 0));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 183):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T59_;
		setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 15), ((NI) 0));
		T59_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T59_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0), c);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*m).typ, T59_);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 210):
	{
		(*(*m).typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 32))%(sizeof(NU64)*8));
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 284):
	{
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 285):
	{
		if (eqStrings((*(*m).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_358))) goto LA63_;
		if (eqStrings((*(*m).name).s, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_359))) goto LA64_;
		goto LA65_;
		LA63_: ;
		{
			setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47), (*(*(*c).graph).config).target.ptrSize);
		}
		goto LA66_;
		LA64_: ;
		{
			setMagicType_jT5AzlKBfQYbqUbGoALfbQ((*(*c).graph).config, m, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46), ((NI) 0));
		}
		goto LA66_;
		LA65_: ;
		{
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*m).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
		}
		LA66_: ;
	}
	break;
	default:
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*m).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_14));
	}
	break;
	}
}
static N_NIMCALL(void, Marker_tyRef_liIRLuc03y8EzQLMfRQvEQ)(void* p, NI op) {
	tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A* a;
	a = (tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A*)p;
	nimGCvisit((void*)(*a).genericType1, op);
}

N_LIB_PRIVATE N_CLOSURE(NIM_BOOL, traverseSubTypes_EEBJFz42NmnackczUIr3EA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, void* ClE_0) {
	NIM_BOOL result;
	tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A* colonenvP_;
{	result = (NIM_BOOL)0;
	colonenvP_ = (tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A*) ClE_0;
	result = NIM_FALSE;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12):
	{
		(*t).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 35))%(sizeof(NU64)*8));
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* field;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* colontmp_;
			field = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			colontmp_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			colontmp_ = (*t).n;
			{
				NI i;
				NI colontmp__2;
				NI i_2;
				i = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(colontmp_);
				i_2 = ((NI) 0);
				{
					while (1) {
						NIM_BOOL sub;
						tyProc_eCtpGoGVTJwOjFybsf76cg T7_;
						NIM_BOOL T8_;
						if (!(i_2 < colontmp__2)) goto LA6;
						i = i_2;
						field = (*colontmp_)._Ukind.S6.sons->data[i];
						nimZeroMem((void*)(&T7_), sizeof(tyProc_eCtpGoGVTJwOjFybsf76cg));
						T7_.ClP_0 = traverseSubTypes_EEBJFz42NmnackczUIr3EA; T7_.ClE_0 = colonenvP_;
						sub = T7_.ClE_0? T7_.ClP_0(c, (*field).typ, T7_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_361)(T7_.ClP_0))(c, (*field).typ);
						T8_ = (NIM_BOOL)0;
						T8_ = result;
						if (T8_) goto LA9_;
						T8_ = sub;
						LA9_: ;
						result = T8_;
						i_2 += ((NI) 1);
					} LA6: ;
				}
			}
		}
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16):
	{
		tyProc_eCtpGoGVTJwOjFybsf76cg T11_;
		nimZeroMem((void*)(&T11_), sizeof(tyProc_eCtpGoGVTJwOjFybsf76cg));
		T11_.ClP_0 = traverseSubTypes_EEBJFz42NmnackczUIr3EA; T11_.ClE_0 = colonenvP_;
		result = T11_.ClE_0? T11_.ClP_0(c, (*t).sons->data[((NI) 1)], T11_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_362)(T11_.ClP_0))(c, (*t).sons->data[((NI) 1)]);
		goto BeforeRet_;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25):
	{
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* subType;
			tySequence_Ef05srmQTDulnBdXR4Ja6Q* colontmp__3;
			NI i_3;
			NI L;
			NI T14_;
			subType = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			colontmp__3 = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
			colontmp__3 = (*t).sons;
			i_3 = ((NI) 0);
			T14_ = (colontmp__3 ? colontmp__3->Sup.len : 0);
			L = T14_;
			{
				while (1) {
					if (!(i_3 < L)) goto LA16;
					subType = colontmp__3->data[i_3];
					{
						NIM_BOOL sub_2;
						tyProc_eCtpGoGVTJwOjFybsf76cg T21_;
						NIM_BOOL T22_;
						if (!!((subType == NIM_NIL))) goto LA19_;
						nimZeroMem((void*)(&T21_), sizeof(tyProc_eCtpGoGVTJwOjFybsf76cg));
						T21_.ClP_0 = traverseSubTypes_EEBJFz42NmnackczUIr3EA; T21_.ClE_0 = colonenvP_;
						sub_2 = T21_.ClE_0? T21_.ClP_0(c, subType, T21_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_363)(T21_.ClP_0))(c, subType);
						T22_ = (NIM_BOOL)0;
						T22_ = result;
						if (T22_) goto LA23_;
						T22_ = sub_2;
						LA23_: ;
						result = T22_;
					}
					LA19_: ;
					i_3 += ((NI) 1);
				} LA16: ;
			}
		}
		{
			NimStringDesc* T28_;
			NimStringDesc* T29_;
			if (!result) goto LA26_;
			T28_ = (NimStringDesc*)0;
			T29_ = (NimStringDesc*)0;
			T29_ = typeToString_QlvraUan7WbHowhAbvDvdA(t, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
			T28_ = rawNewString((T29_ ? T29_->Sup.len : 0) + 46);
appendString(T28_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_364));
appendString(T28_, T29_);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*(*colonenvP_).genericType1).sym).info, T28_);
		}
		LA26_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24):
	{
		tyProc_eCtpGoGVTJwOjFybsf76cg T31_;
		nimZeroMem((void*)(&T31_), sizeof(tyProc_eCtpGoGVTJwOjFybsf76cg));
		T31_.ClP_0 = traverseSubTypes_EEBJFz42NmnackczUIr3EA; T31_.ClE_0 = colonenvP_;
		result = T31_.ClE_0? T31_.ClP_0(c, (*t).sons->data[((NI) 0)], T31_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_365)(T31_.ClP_0))(c, (*t).sons->data[((NI) 0)]);
		goto BeforeRet_;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* targetBody;
		targetBody = (*t).sons->data[((NI) 0)];
		{
			NI i_4;
			NI colontmp__4;
			NI i_5;
			i_4 = (NI)0;
			colontmp__4 = (NI)0;
			colontmp__4 = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
			i_5 = ((NI) 1);
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* param;
					if (!(i_5 < colontmp__4)) goto LA35;
					i_4 = i_5;
					param = (*t).sons->data[i_4];
					{
						if (!((*param).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12))) goto LA38_;
						{
							tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw formalFlags;
							if (!(((*param).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 34))&63U)))!=0)) goto LA42_;
							formalFlags = (*(*targetBody).sons->data[(NI)(i_4 - ((NI) 1))]).flags;
							{
								NimStringDesc* T48_;
								if (!!(((formalFlags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 34))&63U)))!=0))) goto LA46_;
								T48_ = (NimStringDesc*)0;
								T48_ = rawNewString(((*(*(*param).sym).name).s ? (*(*(*param).sym).name).s->Sup.len : 0) + 51);
appendString(T48_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_366));
appendString(T48_, (*(*(*param).sym).name).s);
appendString(T48_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_367));
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*(*colonenvP_).genericType1).sym).info, T48_);
							}
							goto LA44_;
							LA46_: ;
							{
								if (!((formalFlags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 35))&63U)))!=0)) goto LA50_;
								(*param).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 35))%(sizeof(NU64)*8));
							}
							goto LA44_;
							LA50_: ;
							LA44_: ;
							result = NIM_TRUE;
						}
						goto LA40_;
						LA42_: ;
						{
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* formalParam;
							if (!(((*param).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 36))&63U)))!=0)) goto LA53_;
							formalParam = (*(*targetBody).sons->data[(NI)(i_4 - ((NI) 1))]).sym;
							{
								NimStringDesc* T59_;
								if (!!((((*(*formalParam).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 36))&63U)))!=0))) goto LA57_;
								T59_ = (NimStringDesc*)0;
								T59_ = rawNewString(((*(*(*param).sym).name).s ? (*(*(*param).sym).name).s->Sup.len : 0) + 59);
appendString(T59_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_368));
appendString(T59_, (*(*(*param).sym).name).s);
appendString(T59_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_369));
								localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*(*colonenvP_).genericType1).sym).info, T59_);
							}
							LA57_: ;
							result = NIM_TRUE;
						}
						goto LA40_;
						LA53_: ;
						LA40_: ;
					}
					goto LA36_;
					LA38_: ;
					{
						NIM_BOOL sub_3;
						tyProc_eCtpGoGVTJwOjFybsf76cg T61_;
						NIM_BOOL T62_;
						nimZeroMem((void*)(&T61_), sizeof(tyProc_eCtpGoGVTJwOjFybsf76cg));
						T61_.ClP_0 = traverseSubTypes_EEBJFz42NmnackczUIr3EA; T61_.ClE_0 = colonenvP_;
						sub_3 = T61_.ClE_0? T61_.ClP_0(c, param, T61_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_370)(T61_.ClP_0))(c, param);
						T62_ = (NIM_BOOL)0;
						T62_ = result;
						if (T62_) goto LA63_;
						T62_ = sub_3;
						LA63_: ;
						result = T62_;
					}
					LA36_: ;
					i_5 += ((NI) 1);
				} LA35: ;
			}
		}
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 56):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 57):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 58):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 51):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54):
	{
		NimStringDesc* T65_;
		NimStringDesc* T66_;
		T65_ = (NimStringDesc*)0;
		T66_ = (NimStringDesc*)0;
		T66_ = typeToString_QlvraUan7WbHowhAbvDvdA(t, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		T65_ = rawNewString((T66_ ? T66_->Sup.len : 0) + 63);
appendString(T65_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_371));
appendString(T65_, T66_);
appendString(T65_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_51));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*(*colonenvP_).genericType1).sym).info, T65_);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53):
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*(*colonenvP_).genericType1).sym).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_372));
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* fieldType;
			tySequence_Ef05srmQTDulnBdXR4Ja6Q* colontmp__5;
			NI i_6;
			NI L_2;
			NI T70_;
			fieldType = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			colontmp__5 = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
			colontmp__5 = (*t).sons;
			i_6 = ((NI) 0);
			T70_ = (colontmp__5 ? colontmp__5->Sup.len : 0);
			L_2 = T70_;
			{
				while (1) {
					NIM_BOOL sub_4;
					tyProc_eCtpGoGVTJwOjFybsf76cg T73_;
					NIM_BOOL T74_;
					if (!(i_6 < L_2)) goto LA72;
					fieldType = colontmp__5->data[i_6];
					nimZeroMem((void*)(&T73_), sizeof(tyProc_eCtpGoGVTJwOjFybsf76cg));
					T73_.ClP_0 = traverseSubTypes_EEBJFz42NmnackczUIr3EA; T73_.ClE_0 = colonenvP_;
					sub_4 = T73_.ClE_0? T73_.ClP_0(c, fieldType, T73_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_373)(T73_.ClP_0))(c, fieldType);
					T74_ = (NIM_BOOL)0;
					T74_ = result;
					if (T74_) goto LA75_;
					T74_ = sub_4;
					LA75_: ;
					result = T74_;
					i_6 += ((NI) 1);
				} LA72: ;
			}
		}
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47):
	{
		tyProc_eCtpGoGVTJwOjFybsf76cg T82_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T83_;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T79_;
			T79_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T79_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(t);
			if (!((*T79_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12))) goto LA80_;
			result = NIM_TRUE;
			goto BeforeRet_;
		}
		LA80_: ;
		nimZeroMem((void*)(&T82_), sizeof(tyProc_eCtpGoGVTJwOjFybsf76cg));
		T82_.ClP_0 = traverseSubTypes_EEBJFz42NmnackczUIr3EA; T82_.ClE_0 = colonenvP_;
		T83_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T83_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(t);
		result = T82_.ClE_0? T82_.ClP_0(c, T83_, T82_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_374)(T82_.ClP_0))(c, T83_);
		goto BeforeRet_;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46):
	{
		tyProc_eCtpGoGVTJwOjFybsf76cg T85_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T86_;
		nimZeroMem((void*)(&T85_), sizeof(tyProc_eCtpGoGVTJwOjFybsf76cg));
		T85_.ClP_0 = traverseSubTypes_EEBJFz42NmnackczUIr3EA; T85_.ClE_0 = colonenvP_;
		T86_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T86_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
		result = T85_.ClE_0? T85_.ClP_0(c, T86_, T85_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_375)(T85_.ClP_0))(c, T86_);
		goto BeforeRet_;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11):
	{
		{
			NimStringDesc* T92_;
			if (!NIM_TRUE) goto LA90_;
			T92_ = (NimStringDesc*)0;
			T92_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_376);
			internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T92_);
		}
		LA90_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, checkCovariantParamsUsages_mA6iFcjdE0PjK2oVxtyD5g)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* genericType) {
	tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A* colonenv_;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* body;
	NI T1_;
	tyProc_eCtpGoGVTJwOjFybsf76cg T2_;
	NIM_BOOL T3_;
	colonenv_ = (tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A*)0;
	colonenv_ = (tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A*) newObj((&NTI_liIRLuc03y8EzQLMfRQvEQ_), sizeof(tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A));
	(*colonenv_).Sup.m_type = (&NTI_9aPUbdmiIQPbS6xJxlnbe3A_);
	asgnRefNoCycle((void**) (&(*colonenv_).genericType1), genericType);
	T1_ = (NI)0;
	T1_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*colonenv_).genericType1);
	body = (*(*colonenv_).genericType1).sons->data[(NI)(T1_ - ((NI) 1))];
	nimZeroMem((void*)(&T2_), sizeof(tyProc_eCtpGoGVTJwOjFybsf76cg));
	T2_.ClP_0 = traverseSubTypes_EEBJFz42NmnackczUIr3EA; T2_.ClE_0 = colonenv_;
	T3_ = (NIM_BOOL)0;
	T3_ = T2_.ClE_0? T2_.ClP_0(c, body, T2_.ClE_0):((TM_rF9caJawfOjYTjsgLVUSGFA_378)(T2_.ClP_0))(c, body);
	T3_;
}

N_LIB_PRIVATE N_NIMCALL(void, typeSectionRightSidePass_wkwHEj6zZnYo2DMZys6jnA_10)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* name;
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* aa;
					a = (*n)._Ukind.S6.sons->data[i];
					{
						if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA8_;
						goto LA5;
					}
					LA8_: ;
					{
						if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 103)))) goto LA12_;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a, (*(*c).graph).config);
					}
					LA12_: ;
					checkSonsLen_EezdXeDvu4rB7fR84AJZgw(a, ((NI) 3), (*(*c).graph).config);
					name = typeSectionTypeName_U3qPBy54f1PkCP8vmFMCRA_43(c, (*a)._Ukind.S6.sons->data[((NI) 0)]);
					s = (*name)._Ukind.S4.sym;
					{
						NIM_BOOL T16_;
						NimStringDesc* T20_;
						T16_ = (NIM_BOOL)0;
						T16_ = ((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0));
						if (!(T16_)) goto LA17_;
						T16_ = ((*(*a)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
						LA17_: ;
						if (!T16_) goto LA18_;
						T20_ = (NimStringDesc*)0;
						T20_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_199), (*(*s).name).s);
						localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, T20_);
					}
					LA18_: ;
					{
						if (!!(((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0)))) goto LA23_;
						processMagicType_pBTGCEi9ayDcEjzg1wCHeEw(c, s);
					}
					LA23_: ;
					{
						tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T29_;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T34_;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* body;
						if (!!(((*(*a)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA27_;
						T29_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
						T29_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
						pushOwner_Wu2m3sh279aYfWNXavlKecA(c, s);
						{
							if (!((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0))) goto LA32_;
							(*(*s).typ).kind = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10);
						}
						LA32_: ;
						asgnRefNoCycle((void**) (&(*(*s).typ).n), semGenericParamList_JC2xPAEU5XROw7xR66txZg(c, (*a)._Ukind.S6.sons->data[((NI) 1)], (*s).typ));
						asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[((NI) 1)]), (*(*s).typ).n);
						(*(*s).typ).size = IL64(-1);
						T34_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
						T34_ = newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0), c);
						rawAddSon_uZzh0IWnWErsZbQ8YFaRRA((*s).typ, T34_);
						asgnRefNoCycle((void**) (&(*s).ast), a);
						(*c).inGenericContext += ((NI) 1);
						body = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*a)._Ukind.S6.sons->data[((NI) 2)], NIM_NIL);
						(*c).inGenericContext -= ((NI) 1);
						{
							NI T39_;
							if (!!((body == NIM_NIL))) goto LA37_;
							asgnRefNoCycle((void**) (&(*body).sym), s);
							(*body).size = IL64(-1);
							T39_ = (NI)0;
							T39_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA((*s).typ);
							asgnRefNoCycle((void**) (&(*(*s).typ).sons->data[(NI)(T39_ - ((NI) 1))]), body);
							{
								if (!(((*(*s).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 34))&63U)))!=0)) goto LA42_;
								checkCovariantParamsUsages_mA6iFcjdE0PjK2oVxtyD5g(c, (*s).typ);
								{
									tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* body_2;
									if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 5))&63U)))!=0)) goto LA46_;
									body_2 = lastSon_ab52xel9cFebv9am0xV04xXA((*s).typ);
									{
										if (!((*body_2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA50_;
										if ((*(*body_2).n)._Ukind.S6.sons) { nimGCunrefNoCycle((*(*body_2).n)._Ukind.S6.sons); (*(*body_2).n)._Ukind.S6.sons = NIM_NIL; }
									}
									LA50_: ;
								}
								LA46_: ;
							}
							LA42_: ;
						}
						LA37_: ;
						popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw(c);
						closeScope_q62Ixzqzx2R5yeGMamw81g(c);
					}
					goto LA25_;
					LA27_: ;
					{
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
						if (!!(((*(*a)._Ukind.S6.sons->data[((NI) 2)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA53_;
						pushOwner_Wu2m3sh279aYfWNXavlKecA(c, s);
						t = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*a)._Ukind.S6.sons->data[((NI) 2)], (*s).typ);
						{
							if (!((*s).typ == NIM_NIL)) goto LA57_;
							asgnRefNoCycle((void**) (&(*s).typ), t);
						}
						goto LA55_;
						LA57_: ;
						{
							NIM_BOOL T60_;
							NIM_BOOL T62_;
							T60_ = (NIM_BOOL)0;
							T60_ = !((t == (*s).typ));
							if (!(T60_)) goto LA61_;
							T62_ = (NIM_BOOL)0;
							T62_ = ((*s).typ == NIM_NIL);
							if (T62_) goto LA63_;
							T62_ = !(((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4)));
							LA63_: ;
							T60_ = T62_;
							LA61_: ;
							if (!T60_) goto LA64_;
							assignType_z2malisaD2RKFo0cGpXWvQ((*s).typ, t);
						}
						goto LA55_;
						LA64_: ;
						LA55_: ;
						asgnRefNoCycle((void**) (&(*s).ast), a);
						popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw(c);
					}
					goto LA25_;
					LA53_: ;
					LA25_: ;
					aa = (*a)._Ukind.S6.sons->data[((NI) 2)];
					{
						NIM_BOOL T68_;
						NIM_BOOL T69_;
						NI T71_;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* st;
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* obj;
						NimStringDesc* T90_;
						tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T91_;
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T92_;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T93_;
						T68_ = (NIM_BOOL)0;
						T69_ = (NIM_BOOL)0;
						T69_ = ((*aa).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 141) || (*aa).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 142));
						if (!(T69_)) goto LA70_;
						T71_ = (NI)0;
						T71_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(aa);
						T69_ = (T71_ == ((NI) 1));
						LA70_: ;
						T68_ = T69_;
						if (!(T68_)) goto LA72_;
						T68_ = ((*(*aa)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 133));
						LA72_: ;
						if (!T68_) goto LA73_;
						st = (*s).typ;
						{
							if (!((*st).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10))) goto LA77_;
							st = lastSon_ab52xel9cFebv9am0xV04xXA(st);
						}
						LA77_: ;
						{
							NimStringDesc* T83_;
							if (!!(((*st).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21) || (*st).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22)))) goto LA81_;
							T83_ = (NimStringDesc*)0;
							T83_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_379);
							internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T83_);
						}
						LA81_: ;
						{
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T86_;
							NimStringDesc* T89_;
							T86_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
							T86_ = lastSon_ab52xel9cFebv9am0xV04xXA(st);
							if (!!(((*T86_).sym == NIM_NIL))) goto LA87_;
							T89_ = (NimStringDesc*)0;
							T89_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_380);
							internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T89_);
						}
						LA87_: ;
						(*st).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 33))%(sizeof(NU64)*8));
						T90_ = (NimStringDesc*)0;
						T90_ = rawNewString(((*(*s).name).s ? (*(*s).name).s->Sup.len : 0) + 11);
appendString(T90_, (*(*s).name).s);
appendString(T90_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_381));
						T91_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
						T91_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, T90_);
						T92_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
						T92_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
						obj = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7), T91_, T92_, (*s).info, 0);
						asgnRefNoCycle((void**) (&(*obj).typ), lastSon_ab52xel9cFebv9am0xV04xXA(st));
						T93_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
						T93_ = lastSon_ab52xel9cFebv9am0xV04xXA(st);
						asgnRefNoCycle((void**) (&(*T93_).sym), obj);
					}
					LA73_: ;
				} LA5: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(void, checkForMetaFields_wkwHEj6zZnYo2DMZys6jnA_12)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
{	{
		if (!(n == 0)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s;
			s = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
				i_2 = ((NI) 0);
				{
					while (1) {
						if (!(i_2 < colontmp_)) goto LA9;
						i = i_2;
						s = (*n)._Ukind.S6.sons->data[i];
						checkForMetaFields_wkwHEj6zZnYo2DMZys6jnA_12(c, s);
						i_2 += ((NI) 1);
					} LA9: ;
				}
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
		T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T11_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(n);
		checkForMetaFields_wkwHEj6zZnYo2DMZys6jnA_12(c, T11_);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
		t = (*(*n)._Ukind.S4.sym).typ;
		switch ((*t).kind) {
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4):
		case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46):
		{
			NI start;
			start = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9) || (*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11));
			{
				NI i_3;
				NI colontmp__2;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
				i_4 = start;
				{
					while (1) {
						if (!(i_4 < colontmp__2)) goto LA16;
						i_3 = i_4;
						{
							NIM_BOOL T19_;
							NIM_BOOL T20_;
							NimStringDesc* T25_;
							NimStringDesc* T26_;
							T19_ = (NIM_BOOL)0;
							T20_ = (NIM_BOOL)0;
							T20_ = !(((*t).sons->data[i_3] == NIM_NIL));
							if (!(T20_)) goto LA21_;
							T20_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw((*t).sons->data[i_3]);
							LA21_: ;
							T19_ = T20_;
							if (!(T19_)) goto LA22_;
							T19_ = !((((*(*t).sons->data[i_3]).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 24))&63U)))!=0));
							LA22_: ;
							if (!T19_) goto LA23_;
							T25_ = (NimStringDesc*)0;
							T25_ = typeToString_QlvraUan7WbHowhAbvDvdA((*t).sons->data[i_3], ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
							T26_ = (NimStringDesc*)0;
							T26_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_224), T25_);
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T26_);
						}
						LA23_: ;
						i_4 += ((NI) 1);
					} LA16: ;
				}
			}
		}
		break;
		default:
		{
			{
				NIM_BOOL T30_;
				NIM_BOOL T31_;
				NimStringDesc* T36_;
				NimStringDesc* T37_;
				T30_ = (NIM_BOOL)0;
				T31_ = (NIM_BOOL)0;
				T31_ = !((t == NIM_NIL));
				if (!(T31_)) goto LA32_;
				T31_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw(t);
				LA32_: ;
				T30_ = T31_;
				if (!(T30_)) goto LA33_;
				T30_ = !((((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 24))&63U)))!=0));
				LA33_: ;
				if (!T30_) goto LA34_;
				T36_ = (NimStringDesc*)0;
				T36_ = typeToString_QlvraUan7WbHowhAbvDvdA(t, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
				T37_ = (NimStringDesc*)0;
				T37_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_224), T36_);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T37_);
			}
			LA34_: ;
		}
		break;
		}
	}
	break;
	default:
	{
		{
			NimStringDesc* T43_;
			if (!NIM_TRUE) goto LA41_;
			T43_ = (NimStringDesc*)0;
			T43_ = dollar__E5ya0OOlyISUCw4ENFn9bLA(TM_rF9caJawfOjYTjsgLVUSGFA_382);
			internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*c).graph).config, T43_);
		}
		LA41_: ;
	}
	break;
	}
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, typeSectionFinalPass_wkwHEj6zZnYo2DMZys6jnA_11)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* name;
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
					a = (*n)._Ukind.S6.sons->data[i];
					{
						if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA8_;
						goto LA5;
					}
					LA8_: ;
					name = typeSectionTypeName_U3qPBy54f1PkCP8vmFMCRA_43(c, (*a)._Ukind.S6.sons->data[((NI) 0)]);
					s = (*name)._Ukind.S4.sym;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
						if (!((*(*a)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA12_;
						x = (*a)._Ukind.S6.sons->data[((NI) 2)];
						{
							while (1) {
								NIM_BOOL T16_;
								NI T18_;
								T16_ = (NIM_BOOL)0;
								T16_ = ((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115) || (*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126));
								if (!(T16_)) goto LA17_;
								T18_ = (NI)0;
								T18_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(x);
								T16_ = (((NI) 0) < T18_);
								LA17_: ;
								if (!T16_) goto LA15;
								x = lastSon_esDJA7239bJDiq4UrX9aHCjg(x);
							} LA15: ;
						}
						{
							NIM_BOOL T21_;
							tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
							T21_ = (NIM_BOOL)0;
							T21_ = !(((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 133) || (*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 146) || (*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 150) || (*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)));
							if (!(T21_)) goto LA22_;
							T21_ = !(((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17) || (*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14)));
							LA22_: ;
							if (!T21_) goto LA23_;
							t = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, x, NIM_NIL);
							{
								NIM_BOOL T27_;
								T27_ = (NIM_BOOL)0;
								T27_ = !(((*s).typ == NIM_NIL));
								if (!(T27_)) goto LA28_;
								T27_ = !(((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4) || (*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46)));
								LA28_: ;
								if (!T27_) goto LA29_;
								{
									NIM_BOOL T33_;
									NIM_BOOL T35_;
									T33_ = (NIM_BOOL)0;
									T33_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25) || (*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11));
									if (!(T33_)) goto LA34_;
									T35_ = (NIM_BOOL)0;
									T35_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw(t);
									T33_ = !(T35_);
									LA34_: ;
									if (!T33_) goto LA36_;
									assignType_z2malisaD2RKFo0cGpXWvQ((*s).typ, t);
									(*(*s).typ).Sup.id = (*t).Sup.id;
								}
								goto LA31_;
								LA36_: ;
								{
									if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17) || (*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14) || (*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13))) goto LA39_;
									assignType_z2malisaD2RKFo0cGpXWvQ((*s).typ, t);
									(*(*s).typ).Sup.id = (*t).Sup.id;
								}
								goto LA31_;
								LA39_: ;
								LA31_: ;
							}
							LA29_: ;
						}
						LA23_: ;
						checkConstructedType_09chTcGpP9cwUssGPOfkWIGw((*(*c).graph).config, (*s).info, (*s).typ);
						{
							NIM_BOOL T43_;
							T43_ = (NIM_BOOL)0;
							T43_ = ((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17) || (*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18));
							if (!(T43_)) goto LA44_;
							T43_ = !(((*(*s).typ).n == 0));
							LA44_: ;
							if (!T43_) goto LA45_;
							checkForMetaFields_wkwHEj6zZnYo2DMZys6jnA_12(c, (*(*s).typ).n);
						}
						LA45_: ;
					}
					LA12_: ;
				} LA5: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	instAllTypeBoundOp_QvnfHbdpOPBouSkW8SHxDQ(c, (*n).info);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTypeSection_U3qPBy54f1PkCP8vmFMCRA_42)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !((((*(*c).module).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 8))&63U)))!=0));
		if (T3_) goto LA4_;
		T3_ = !((((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 7))&31U)))!=0));
		LA4_: ;
		if (!T3_) goto LA5_;
		(*c).inTypeContext += ((NI) 1);
		typeSectionLeftSidePass_wkwHEj6zZnYo2DMZys6jnA_9(c, n);
		typeSectionRightSidePass_wkwHEj6zZnYo2DMZys6jnA_10(c, n);
		typeSectionFinalPass_wkwHEj6zZnYo2DMZys6jnA_11(c, n);
		(*c).inTypeContext -= ((NI) 1);
	}
	LA5_: ;
	result = n;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semDiscard_U3qPBy54f1PkCP8vmFMCRA_44)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 1), (*(*c).graph).config);
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA3_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0));
		{
			NIM_BOOL T7_;
			NIM_BOOL T8_;
			T7_ = (NIM_BOOL)0;
			T8_ = (NIM_BOOL)0;
			T8_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ);
			if (T8_) goto LA9_;
			T8_ = ((*(*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0));
			LA9_: ;
			T7_ = T8_;
			if (T7_) goto LA10_;
			T7_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 132));
			LA10_: ;
			if (!T7_) goto LA11_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_383));
		}
		LA11_: ;
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semWhile_k2Lin9a76VyrWz9b8OoRC9apg_29)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0);
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), forceBool_U3qPBy54f1PkCP8vmFMCRA_3(c, T2_));
	(*(*c).p).nestedLoopCounter += ((NI) 1);
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3(c, (*n)._Ukind.S6.sons->data[((NI) 1)], flags));
	(*(*c).p).nestedLoopCounter -= ((NI) 1);
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	{
		if (!((*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ == (*c).enforceVoidContext)) goto LA5_;
		asgnRefNoCycle((void**) (&(*result).typ), (*c).enforceVoidContext);
	}
	goto LA3_;
	LA5_: ;
	{
		if (!((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 2))&31U)))!=0)) goto LA8_;
		asgnRefNoCycle((void**) (&(*result).typ), (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ);
	}
	goto LA3_;
	LA8_: ;
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semTry_k2Lin9a76VyrWz9b8OoRC9apg_30)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg check;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	NI last;
	NI T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&check), sizeof(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&check));
	result = n;
	(*(*c).p).inTryStmt += ((NI) 1);
	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 2), (*(*c).graph).config);
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) newObj((&NTI_AgIT5feFR9a9aoVjv9cx2rOtg_), sizeof(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ));
	(*T1_).Sup.Sup.m_type = (&NTI_v9ae2Dpu13OW2ZJ2U9bNMd9cQ_);
	(*T1_).kind = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6);
	typ = T1_;
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semExprBranchScope_U3qPBy54f1PkCP8vmFMCRA_38(c, (*n)._Ukind.S6.sons->data[((NI) 0)]));
	typ = commonType_hfwrZ5ThSx8sbABQFEwdHg(typ, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ);
	T2_ = (NI)0;
	T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
	last = (NI)(T2_ - ((NI) 1));
	{
		NI i;
		NI res;
		i = (NI)0;
		res = ((NI) 1);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T6_;
				NI T80_;
				NI T81_;
				if (!(res <= last)) goto LA5;
				i = res;
				a = (*n)._Ukind.S6.sons->data[i];
				checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a, ((NI) 1), (*(*c).graph).config);
				T6_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
				T6_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
				{
					if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 87))) goto LA9_;
					{
						NIM_BOOL T13_;
						NI T14_;
						tyObject_HSlice_EE5dzjqoOrHT6HJhIPXAvA T18_;
						T13_ = (NIM_BOOL)0;
						T14_ = (NI)0;
						T14_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
						T13_ = (T14_ == ((NI) 2));
						if (!(T13_)) goto LA15_;
						T13_ = ((*(*a)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41));
						LA15_: ;
						if (!T13_) goto LA16_;
						T18_ = dotdot__gZc19czncDHf5RCNZiquNrQnimblecmd(((NI) 0), ((NI) 0));
						X5BX5Deq__qp0QnTj4n9bRuO69cX64g09bw((&(*a)._Ukind.S6.sons), T18_, (*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data, ((*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons ? (*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->Sup.len : 0));
					}
					LA16_: ;
					{
						NIM_BOOL T21_;
						NI T22_;
						NIM_BOOL is_imported;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ_2;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T26_;
						NIM_BOOL is_imported_2;
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* symbol;
						T21_ = (NIM_BOOL)0;
						T22_ = (NI)0;
						T22_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
						T21_ = (T22_ == ((NI) 2));
						if (!(T21_)) goto LA23_;
						T21_ = isInfixAs_63pt39coF5C8JoG0utNnwWg_2((*a)._Ukind.S6.sons->data[((NI) 0)]);
						LA23_: ;
						if (!T21_) goto LA24_;
						T26_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
						T26_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)], NIM_NIL);
						typ_2 = toObject_Qb5tZSfa49cIgn8emzhkaBg(T26_);
						is_imported_2 = NIM_FALSE;
						{
							NIM_BOOL T29_;
							T29_ = (NIM_BOOL)0;
							T29_ = isImportedException_ziFZ9chCaA06nUtpwM9aqMyQ(typ_2, (*(*c).graph).config);
							if (!T29_) goto LA30_;
							is_imported_2 = NIM_TRUE;
						}
						goto LA27_;
						LA30_: ;
						{
							NIM_BOOL T33_;
							T33_ = (NIM_BOOL)0;
							T33_ = isException_NWFc8X9b4Zx0NtXP3Cp2fnw_3(typ_2);
							if (!!(T33_)) goto LA34_;
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_335));
						}
						goto LA27_;
						LA34_: ;
						LA27_: ;
						{
							NIM_BOOL T38_;
							T38_ = (NIM_BOOL)0;
							T38_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg((&check), (*typ_2).Sup.id);
							if (!T38_) goto LA39_;
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_384));
						}
						LA39_: ;
						asgnRefNoCycle((void**) (&(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)]), newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4), (*(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)]).info, typ_2));
						is_imported = is_imported_2;
						symbol = newSymG_sxL9bg3I9cVytmWlUkzsHDaA(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 9), (*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 2)], c);
						{
							if (!is_imported) goto LA43_;
							asgnRefNoCycle((void**) (&(*symbol).typ), (*(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)]).typ);
						}
						goto LA41_;
						LA43_: ;
						{
							asgnRefNoCycle((void**) (&(*symbol).typ), toRef_8R9avjYyycssCC6XgFWpNDA_2((*(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)]).typ));
						}
						LA41_: ;
						addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, symbol);
						asgnRefNoCycle((void**) (&(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 2)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(symbol, (*(*(*a)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 2)]).info));
					}
					goto LA19_;
					LA24_: ;
					{
						NIM_BOOL is_native;
						NIM_BOOL is_imported_3;
						is_native = (NIM_BOOL)0;
						is_imported_3 = (NIM_BOOL)0;
						{
							NI j;
							NI colontmp_;
							NI T48_;
							NI res_2;
							j = (NI)0;
							colontmp_ = (NI)0;
							T48_ = (NI)0;
							T48_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
							colontmp_ = (NI)(T48_ - ((NI) 2));
							res_2 = ((NI) 0);
							{
								while (1) {
									NIM_BOOL tmp;
									tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ_3;
									tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T51_;
									NIM_BOOL is_imported_4;
									if (!(res_2 <= colontmp_)) goto LA50;
									j = res_2;
									T51_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
									T51_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*a)._Ukind.S6.sons->data[j], NIM_NIL);
									typ_3 = toObject_Qb5tZSfa49cIgn8emzhkaBg(T51_);
									is_imported_4 = NIM_FALSE;
									{
										NIM_BOOL T54_;
										T54_ = (NIM_BOOL)0;
										T54_ = isImportedException_ziFZ9chCaA06nUtpwM9aqMyQ(typ_3, (*(*c).graph).config);
										if (!T54_) goto LA55_;
										is_imported_4 = NIM_TRUE;
									}
									goto LA52_;
									LA55_: ;
									{
										NIM_BOOL T58_;
										T58_ = (NIM_BOOL)0;
										T58_ = isException_NWFc8X9b4Zx0NtXP3Cp2fnw_3(typ_3);
										if (!!(T58_)) goto LA59_;
										localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*a)._Ukind.S6.sons->data[j]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_335));
									}
									goto LA52_;
									LA59_: ;
									LA52_: ;
									{
										NIM_BOOL T63_;
										T63_ = (NIM_BOOL)0;
										T63_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg((&check), (*typ_3).Sup.id);
										if (!T63_) goto LA64_;
										localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*a)._Ukind.S6.sons->data[j]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_384));
									}
									LA64_: ;
									asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[j]), newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4), (*(*a)._Ukind.S6.sons->data[j]).info, typ_3));
									tmp = is_imported_4;
									{
										if (!tmp) goto LA68_;
										is_imported_3 = NIM_TRUE;
									}
									goto LA66_;
									LA68_: ;
									{
										is_native = NIM_TRUE;
									}
									LA66_: ;
									res_2 += ((NI) 1);
								} LA50: ;
							}
						}
						{
							NIM_BOOL T73_;
							T73_ = (NIM_BOOL)0;
							T73_ = is_native;
							if (!(T73_)) goto LA74_;
							T73_ = is_imported_3;
							LA74_: ;
							if (!T73_) goto LA75_;
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*a)._Ukind.S6.sons->data[((NI) 0)]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_385));
						}
						LA75_: ;
					}
					LA19_: ;
				}
				goto LA7_;
				LA9_: ;
				{
					if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 107)))) goto LA78_;
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
				}
				goto LA7_;
				LA78_: ;
				LA7_: ;
				T80_ = (NI)0;
				T80_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
				T81_ = (NI)0;
				T81_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
				asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[(NI)(T80_ - ((NI) 1))]), semExprBranchScope_U3qPBy54f1PkCP8vmFMCRA_38(c, (*a)._Ukind.S6.sons->data[(NI)(T81_ - ((NI) 1))]));
				{
					NI T86_;
					if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 107)))) goto LA84_;
					T86_ = (NI)0;
					T86_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(a);
					typ = commonType_wEK756YRi9c3lsyIxi9aFXSg(typ, (*a)._Ukind.S6.sons->data[(NI)(T86_ - ((NI) 1))]);
				}
				goto LA82_;
				LA84_: ;
				{
					last -= ((NI) 1);
				}
				LA82_: ;
				closeScope_q62Ixzqzx2R5yeGMamw81g(c);
				res += ((NI) 1);
			} LA5: ;
		}
	}
	(*(*c).p).inTryStmt -= ((NI) 1);
	{
		NIM_BOOL T90_;
		T90_ = (NIM_BOOL)0;
		T90_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen(typ);
		if (T90_) goto LA91_;
		T90_ = ((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5) || (*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6));
		LA91_: ;
		if (!T90_) goto LA92_;
		discardCheck_1gYGSG6NjOPkINqwm7joJg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], flags);
		{
			NI i_2;
			NI colontmp__2;
			NI T95_;
			NI res_3;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			T95_ = (NI)0;
			T95_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			colontmp__2 = (NI)(T95_ - ((NI) 1));
			res_3 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T98_;
					if (!(res_3 <= colontmp__2)) goto LA97;
					i_2 = res_3;
					T98_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T98_ = lastSon_esDJA7239bJDiq4UrX9aHCjg((*n)._Ukind.S6.sons->data[i_2]);
					discardCheck_1gYGSG6NjOPkINqwm7joJg(c, T98_, flags);
					res_3 += ((NI) 1);
				} LA97: ;
			}
		}
		{
			if (!(typ == (*c).enforceVoidContext)) goto LA101_;
			asgnRefNoCycle((void**) (&(*result).typ), (*c).enforceVoidContext);
		}
		LA101_: ;
	}
	goto LA88_;
	LA92_: ;
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T106_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T109_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T110_;
			T106_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T106_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(n);
			if (!((*T106_).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 107))) goto LA107_;
			T109_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T109_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(n);
			T110_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T110_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(T109_);
			discardCheck_1gYGSG6NjOPkINqwm7joJg(c, T110_, flags);
		}
		LA107_: ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, (*n)._Ukind.S6.sons->data[((NI) 0)], (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info));
		{
			NI i_3;
			NI res_4;
			i_3 = (NI)0;
			res_4 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
					NI j_2;
					NI T114_;
					if (!(res_4 <= last)) goto LA113;
					i_3 = res_4;
					it = (*n)._Ukind.S6.sons->data[i_3];
					T114_ = (NI)0;
					T114_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(it);
					j_2 = (NI)(T114_ - ((NI) 1));
					asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[j_2]), fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, (*it)._Ukind.S6.sons->data[j_2], (*(*it)._Ukind.S6.sons->data[j_2]).info));
					res_4 += ((NI) 1);
				} LA113: ;
			}
		}
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA88_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semBreakOrContinue_U3qPBy54f1PkCP8vmFMCRA_45)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 1), (*(*c).graph).config);
	{
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA3_;
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
			if (!!(((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 111)))) goto LA7_;
			s = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
			switch ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind) {
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
			{
				s = lookUp_2lqvMm9cf9bZrSA2I9a9cHb8ag_2(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
			}
			break;
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
			{
				s = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
			}
			break;
			default:
			{
				illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
			}
			break;
			}
			s = getGenSym_9cHGgeaz0zI8z6eWnyHP7Bg(c, s);
			{
				NIM_BOOL T14_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
				T14_ = (NIM_BOOL)0;
				T14_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 22));
				if (!(T14_)) goto LA15_;
				T14_ = ((*(*s).owner).Sup.id == (*(*(*c).p).owner).Sup.id);
				LA15_: ;
				if (!T14_) goto LA16_;
				x = newSymNode_UWZXukHA5As9aCftRHbafBg(s);
				(*x).info = (*n).info;
				(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), x);
				suggestSym_nUjK9c6nUBlRnsyc9a0Rm4jQsem((*(*c).graph).config, (*x).info, s, &(*(*c).graph).usageSym, NIM_TRUE);
			}
			goto LA12_;
			LA16_: ;
			{
				NimStringDesc* T19_;
				T19_ = (NimStringDesc*)0;
				T19_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_386), (*(*s).name).s);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T19_);
			}
			LA12_: ;
		}
		goto LA5_;
		LA7_: ;
		{
			localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_387));
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T22_;
		NimStringDesc* T26_;
		NimStringDesc* T27_;
		T22_ = (NIM_BOOL)0;
		T22_ = ((*(*c).p).nestedLoopCounter <= ((NI) 0));
		if (!(T22_)) goto LA23_;
		T22_ = ((*(*c).p).nestedBlockCounter <= ((NI) 0));
		LA23_: ;
		if (!T22_) goto LA24_;
		T26_ = (NimStringDesc*)0;
		T26_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 4);
		T27_ = (NimStringDesc*)0;
		T27_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_386), T26_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T27_);
	}
	goto LA1_;
	LA24_: ;
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, handleStmtMacro_gy2ufmOYPtqyp8I9aqr8KWw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* selector, NimStringDesc* magicType) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* maType;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* headSymbol;
		tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ o;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* match;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* symx;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* callExpr;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T33_;
		if (!((*selector).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*selector).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*selector).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*selector).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*selector).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*selector).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*selector).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32))) goto LA3_;
		maType = getCompilerProc_Z9bI8j6Vv57IyOO09a8fpp3g((*c).graph, magicType);
		{
			if (!(maType == NIM_NIL)) goto LA7_;
			goto BeforeRet_;
		}
		LA7_: ;
		headSymbol = (*selector)._Ukind.S6.sons->data[((NI) 0)];
		nimZeroMem((void*)(&o), sizeof(tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ));
		match = NIM_NIL;
		symx = initOverloadIter_5E8M4x8tMAW3KCmti57FUA((&o), c, headSymbol);
		{
			while (1) {
				if (!!((symx == NIM_NIL))) goto LA10;
				{
					if (!((393216 &(1U<<((NU)((*symx).kind)&31U)))!=0)) goto LA13_;
					{
						NIM_BOOL T17_;
						NI T18_;
						T17_ = (NIM_BOOL)0;
						T18_ = (NI)0;
						T18_ = len_SWFNCiWYB89bTUPh5KptkvA_2((*symx).typ);
						T17_ = (T18_ == ((NI) 2));
						if (!(T17_)) goto LA19_;
						T17_ = ((*(*symx).typ).sons->data[((NI) 1)] == (*maType).typ);
						LA19_: ;
						if (!T17_) goto LA20_;
						{
							if (!(match == NIM_NIL)) goto LA24_;
							match = symx;
						}
						goto LA22_;
						LA24_: ;
						{
							tyArray_24KAM9afIUgUaqBaEBB6r9bg T27_;
							NimStringDesc* T28_;
							nimZeroMem((void*)T27_, sizeof(tyArray_24KAM9afIUgUaqBaEBB6r9bg));
							T27_[0] = getProcHeader_7eB0wVYzPcmlKQ3zrnnOsA((*(*c).graph).config, match, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
							T27_[1] = getProcHeader_7eB0wVYzPcmlKQ3zrnnOsA((*(*c).graph).config, symx, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
							T27_[2] = dollar__qX5C9b0n9bOP7jk69amC8dA7A(selector);
							T28_ = (NimStringDesc*)0;
							T28_ = nsuFormatOpenArray(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_210), T27_, 3);
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T28_);
						}
						LA22_: ;
					}
					LA20_: ;
				}
				LA13_: ;
				symx = nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2((&o), c, headSymbol);
			} LA10: ;
		}
		{
			if (!(match == NIM_NIL)) goto LA31_;
			goto BeforeRet_;
		}
		LA31_: ;
		callExpr = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
		T33_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T33_ = newSymNode_UWZXukHA5As9aCftRHbafBg(match);
		add_gCCf68XrWL79bKes6htzFjQ(callExpr, T33_);
		add_gCCf68XrWL79bKes6htzFjQ(callExpr, n);
		switch ((*match).kind) {
		case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17):
		{
			result = semMacroExpr_9bmxDHTa4eojLns652LIkJw(c, callExpr, callExpr, match, 0);
		}
		break;
		case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
		{
			result = semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA(c, callExpr, match, 0);
		}
		break;
		default:
		{
			result = NIM_NIL;
		}
		break;
		}
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, handleForLoopMacro_U3qPBy54f1PkCP8vmFMCRA_46)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (NI)0;
	T1_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
	result = handleStmtMacro_gy2ufmOYPtqyp8I9aqr8KWw(c, n, (*n)._Ukind.S6.sons->data[(NI)(T1_ - ((NI) 2))], ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_388));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprNoDeref_k2Lin9a76VyrWz9b8OoRC9apg_32)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, n, flags);
	{
		if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA3_;
		result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
	}
	LA3_: ;
	{
		NimStringDesc* T9_;
		NimStringDesc* T10_;
		if (!((*result).typ == NIM_NIL)) goto LA7_;
		T9_ = (NimStringDesc*)0;
		T9_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(result, 4);
		T10_ = (NimStringDesc*)0;
		T10_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_389), T9_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T10_);
		asgnRefNoCycle((void**) (&(*result).typ), errorType_5olHzpuoNS9asyp0iz7j62Q(c));
	}
	LA7_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTrivalStmtExpr_J6cfuIanCXYEsLNE8M8o9cQ_8)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		colontmp_ = (NI)(T2_ - ((NI) 2));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					if (!!(((*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) || (*(*n)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125)))) goto LA7_;
					result = NIM_FALSE;
					goto BeforeRet_;
				}
				LA7_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	result = NIM_TRUE;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, symForVar_0bGgbY2vzd9cI8DrFDXzH9aA_4)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* m;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43))) goto LA3_;
		m = (*n)._Ukind.S6.sons->data[((NI) 0)];
	}
	goto LA1_;
	LA3_: ;
	{
		m = n;
	}
	LA1_: ;
	result = newSymG_sxL9bg3I9cVytmWlUkzsHDaA(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 21), m, c);
	{
		if (!(((*(*(*c).graph).config).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw) 13))&63U)))!=0)) goto LA8_;
		nep1CheckDefImpl_6AhukMkhQSFShlHi9bHQBWw((*(*c).graph).config, (*result).info, result, (*result).kind);
	}
	LA8_: ;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43))) goto LA12_;
		pragma_av9bQYmoLtJKLA6ueIgHxoA(c, result, (*n)._Ukind.S6.sons->data[((NI) 1)], TM_rF9caJawfOjYTjsgLVUSGFA_390);
	}
	LA12_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addForVarDecl_N5AsKc2p9cRacaeRZJlgnLw_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v) {
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* shadowed;
		if (!(((*(*(*c).graph).config).notes &((NU64)1<<((NU)((((tyEnum_TMsgKind_ZQWti4neSCb9bXB2tK1JcKg) 29)- 11))&63U)))!=0)) goto LA3_;
		shadowed = findShadowedVar_W9ag6zFa44z9aMukiqTZ5T5Q(c, v);
		{
			if (!!((shadowed == NIM_NIL))) goto LA7_;
			message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*v).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 29), (*(*v).name).s);
		}
		LA7_: ;
	}
	LA3_: ;
	addDecl_iUv8DpVEGQp9aUuNG4lxujA(c, v);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semForVars_k2Lin9a76VyrWz9b8OoRC9apg_33)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI length;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* iterBase;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* iter;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T41_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	length = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
	iterBase = (*(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]).typ;
	iter = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(iterBase, IL64(70368744179728));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*iter).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18)));
		if (T3_) goto LA4_;
		T3_ = (length == ((NI) 3));
		LA4_: ;
		if (!T3_) goto LA5_;
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v;
			if (!(length == ((NI) 3))) goto LA9_;
			v = symForVar_0bGgbY2vzd9cI8DrFDXzH9aA_4(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
			{
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T13_;
				T13_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
				T13_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
				if (!((*T13_).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6))) goto LA14_;
				(*v).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 3))%(sizeof(NU64)*8));
			}
			LA14_: ;
			asgnRefNoCycle((void**) (&(*v).typ), iterBase);
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(v));
			{
				if (!!((((*v).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0))) goto LA18_;
				addForVarDecl_N5AsKc2p9cRacaeRZJlgnLw_2(c, v);
			}
			LA18_: ;
		}
		goto LA7_;
		LA9_: ;
		{
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_272));
		}
		LA7_: ;
	}
	goto LA1_;
	LA5_: ;
	{
		NI T22_;
		T22_ = (NI)0;
		T22_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(iter);
		if (!!(((NI)(length - ((NI) 2)) == T22_))) goto LA23_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_272));
	}
	goto LA1_;
	LA23_: ;
	{
		{
			NI i;
			NI colontmp_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = (NI)(length - ((NI) 3));
			res = ((NI) 0);
			{
				while (1) {
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v_2;
					if (!(res <= colontmp_)) goto LA28;
					i = res;
					v_2 = symForVar_0bGgbY2vzd9cI8DrFDXzH9aA_4(c, (*n)._Ukind.S6.sons->data[i]);
					{
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T31_;
						T31_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
						T31_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
						if (!((*T31_).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6))) goto LA32_;
						(*v_2).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 3))%(sizeof(NU64)*8));
					}
					LA32_: ;
					asgnRefNoCycle((void**) (&(*v_2).typ), (*iter).sons->data[i]);
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), newSymNode_UWZXukHA5As9aCftRHbafBg(v_2));
					{
						NIM_BOOL T36_;
						NIM_BOOL T38_;
						T36_ = (NIM_BOOL)0;
						T36_ = !((((*v_2).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 32))&63U)))!=0));
						if (!(T36_)) goto LA37_;
						T38_ = (NIM_BOOL)0;
						T38_ = isDiscardUnderscore_yufYcNWVPQdYTTqovY22lA(v_2);
						T36_ = !(T38_);
						LA37_: ;
						if (!T36_) goto LA39_;
						addForVarDecl_N5AsKc2p9cRacaeRZJlgnLw_2(c, v_2);
					}
					LA39_: ;
					res += ((NI) 1);
				} LA28: ;
			}
		}
	}
	LA1_: ;
	(*(*c).p).nestedLoopCounter += ((NI) 1);
	T41_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T41_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))]), semExprBranch_k2Lin9a76VyrWz9b8OoRC9apg_26(c, (*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))], flags));
	{
		if (!!(((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 2))&31U)))!=0))) goto LA44_;
		discardCheck_1gYGSG6NjOPkINqwm7joJg(c, (*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))], flags);
	}
	LA44_: ;
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	(*(*c).p).nestedLoopCounter -= ((NI) 1);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, instFieldLoopBody_NWigU6dr5apz5g827GjO4w)(tyObject_TFieldInstCtx_GtjfcSJJiOiQ0USEydDBBA c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* forLoop) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
		result = n;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
		NI L;
		result = n;
		ident = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c.c, n, NIM_NIL);
		L = sonsLen_qPWPHw7WgJeEVYUdcaRIig(forLoop);
		{
			if (!c.replaceByFieldName) goto LA5_;
			{
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T9_;
				NimStringDesc* fieldName;
				T9_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T9_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c.c, (*forLoop)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
				if (!((*ident).Sup.id == (*T9_).Sup.id)) goto LA10_;
				{
					if (!(c.tupleType == 0)) goto LA14_;
					fieldName = (*(*c.field).name).s;
				}
				goto LA12_;
				LA14_: ;
				{
					NimStringDesc* T19_;
					NimStringDesc* T20_;
					if (!((*c.tupleType).n == 0)) goto LA17_;
					T19_ = (NimStringDesc*)0;
					T20_ = (NimStringDesc*)0;
					T20_ = nimIntToStr(c.tupleIndex);
					T19_ = rawNewString((T20_ ? T20_->Sup.len : 0) + 5);
appendString(T19_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_394));
appendString(T19_, T20_);
					fieldName = T19_;
				}
				goto LA12_;
				LA17_: ;
				{
					fieldName = (*(*(*(*(*c.tupleType).n)._Ukind.S6.sons->data[c.tupleIndex])._Ukind.S4.sym).name).s;
				}
				LA12_: ;
				result = newStrNode_8GaTnuPqpzGLNcerzDOURQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20), fieldName);
				goto BeforeRet_;
			}
			LA10_: ;
		}
		LA5_: ;
		{
			NI i;
			NI colontmp_;
			NI colontmp__2;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp__2 = (NI)0;
			colontmp_ = c.replaceByFieldName;
			colontmp__2 = (NI)(L - ((NI) 3));
			res = colontmp_;
			{
				while (1) {
					if (!(res <= colontmp__2)) goto LA24;
					i = res;
					{
						tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T27_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tupl;
						T27_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
						T27_ = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c.c, (*forLoop)._Ukind.S6.sons->data[i], NIM_NIL);
						if (!((*ident).Sup.id == (*T27_).Sup.id)) goto LA28_;
						call = (*forLoop)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))];
						tupl = (*call)._Ukind.S6.sons->data[(NI)((NI)(i + ((NI) 1)) - c.replaceByFieldName)];
						{
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T34_;
							if (!(c.field == 0)) goto LA32_;
							result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), (*n).info);
							add_gCCf68XrWL79bKes6htzFjQ(result, tupl);
							T34_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T34_ = newIntNode_v2VGJAZNfKPVngZCqEXQtA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), ((NI64) (c.tupleIndex)));
							add_gCCf68XrWL79bKes6htzFjQ(result, T34_);
						}
						goto LA30_;
						LA32_: ;
						{
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T36_;
							result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45), (*n).info);
							add_gCCf68XrWL79bKes6htzFjQ(result, tupl);
							T36_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T36_ = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(c.field, (*n).info);
							add_gCCf68XrWL79bKes6htzFjQ(result, T36_);
						}
						LA30_: ;
						goto LA22;
					}
					LA28_: ;
					res += ((NI) 1);
				} LA24: ;
			}
		} LA22: ;
	}
	break;
	default:
	{
		NI T42_;
		{
			if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 111))) goto LA40_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c.c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_395));
		}
		LA40_: ;
		result = copyNode_lz8T1F9c0YwEOpUnrAUYgjg(n);
		T42_ = (NI)0;
		T42_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		newSons_W9cZG9c5PyHYZPzxHXuunFyQ(result, T42_);
		{
			NI i_2;
			NI colontmp__3;
			NI T44_;
			NI res_2;
			i_2 = (NI)0;
			colontmp__3 = (NI)0;
			T44_ = (NI)0;
			T44_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
			colontmp__3 = (NI)(T44_ - ((NI) 1));
			res_2 = ((NI) 0);
			{
				while (1) {
					if (!(res_2 <= colontmp__3)) goto LA46;
					i_2 = res_2;
					asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[i_2]), instFieldLoopBody_NWigU6dr5apz5g827GjO4w(c, (*n)._Ukind.S6.sons->data[i_2], forLoop));
					res_2 += ((NI) 1);
				} LA46: ;
			}
		}
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, semForObjectFields_QePBJ9bHaUde9cnkvf6xqUYQ)(tyObject_TFieldsCtx_Oumniq9anVI0B7eyXhL1U9cw c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* typ, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* forLoop, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father) {
{	switch ((*typ).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		tyObject_TFieldInstCtx_GtjfcSJJiOiQ0USEydDBBA fc;
		tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T2_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T3_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T4_;
		nimZeroMem((void*)(&fc), sizeof(tyObject_TFieldInstCtx_GtjfcSJJiOiQ0USEydDBBA));
		fc.c = c.c;
		fc.field = (*typ)._Ukind.S4.sym;
		fc.replaceByFieldName = (c.m == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 145));
		T2_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
		T2_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c.c);
		(*c.c).inUnrolledContext += ((NI) 1);
		T3_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T3_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(forLoop);
		body = instFieldLoopBody_NWigU6dr5apz5g827GjO4w(fc, T3_, forLoop);
		T4_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T4_ = semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3(c.c, body, 0);
		add_gCCf68XrWL79bKes6htzFjQ(father, T4_);
		(*c.c).inUnrolledContext -= ((NI) 1);
		closeScope_q62Ixzqzx2R5yeGMamw81g(c.c);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		NI L;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* caseStmt;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* access;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T12_;
		L = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(forLoop);
		call = (*forLoop)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))];
		{
			NI T9_;
			T9_ = (NI)0;
			T9_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(call);
			if (!(((NI) 2) < T9_)) goto LA10_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c.c).graph).config, (*forLoop).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_396));
			goto BeforeRet_;
		}
		LA10_: ;
		semForObjectFields_QePBJ9bHaUde9cnkvf6xqUYQ(c, (*typ)._Ukind.S6.sons->data[((NI) 0)], forLoop, father);
		caseStmt = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 97), (*forLoop).info);
		access = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45), (*forLoop).info, ((NI) 2));
		asgnRefNoCycle((void**) (&(*access)._Ukind.S6.sons->data[((NI) 0)]), (*call)._Ukind.S6.sons->data[((NI) 1)]);
		asgnRefNoCycle((void**) (&(*access)._Ukind.S6.sons->data[((NI) 1)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ((*(*typ)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym, (*forLoop).info));
		T12_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T12_ = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c.c, access, 0);
		add_gCCf68XrWL79bKes6htzFjQ(caseStmt, T12_);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(typ);
			i_2 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch;
					NI L_2;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T16_;
					if (!(i_2 < colontmp_)) goto LA15;
					i = i_2;
					branch = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*typ)._Ukind.S6.sons->data[i]);
					L_2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(branch);
					asgnRefNoCycle((void**) (&(*branch)._Ukind.S6.sons->data[(NI)(L_2 - ((NI) 1))]), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*forLoop).info));
					T16_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T16_ = lastSon_esDJA7239bJDiq4UrX9aHCjg((*typ)._Ukind.S6.sons->data[i]);
					semForObjectFields_QePBJ9bHaUde9cnkvf6xqUYQ(c, T16_, forLoop, (*branch)._Ukind.S6.sons->data[(NI)(L_2 - ((NI) 1))]);
					add_gCCf68XrWL79bKes6htzFjQ(caseStmt, branch);
					i_2 += ((NI) 1);
				} LA15: ;
			}
		}
		add_gCCf68XrWL79bKes6htzFjQ(father, caseStmt);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* t;
			t = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i_3;
				NI colontmp__2;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(typ);
				i_4 = ((NI) 0);
				{
					while (1) {
						if (!(i_4 < colontmp__2)) goto LA21;
						i_3 = i_4;
						t = (*typ)._Ukind.S6.sons->data[i_3];
						semForObjectFields_QePBJ9bHaUde9cnkvf6xqUYQ(c, t, forLoop, father);
						i_4 += ((NI) 1);
					} LA21: ;
				}
			}
		}
	}
	break;
	default:
	{
		illFormedAstLocal_aOnJJ9cXkOooTyUuLmnc09bw_2(typ, (*(*c.c).graph).config);
	}
	break;
	}
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semForFields_EW5X9akTyzsjElSah59cM0MA_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* trueSymbol;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* stmts;
	NI length;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tupleTypeA;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96), (*n).info, ((NI) 2));
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_391));
	trueSymbol = strTableGet_0xgFDJUQtGGr2e0Sq9aLIhA((*(*(*c).graph).systemModule)._Ukind.S3.tab, T1_);
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T6_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T7_;
		if (!(trueSymbol == NIM_NIL)) goto LA4_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_392));
		T6_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T6_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_391));
		T7_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T7_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
		trueSymbol = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 0), T6_, T7_, (*n).info, 0);
		asgnRefNoCycle((void**) (&(*trueSymbol).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1)));
	}
	LA4_: ;
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(trueSymbol, (*n).info));
	stmts = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), stmts);
	length = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
	call = (*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))];
	{
		NI T10_;
		T10_ = (NI)0;
		T10_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(call);
		if (!!(((NI)(length - ((NI) 2)) == (NI)((NI)(T10_ - ((NI) 1)) + (m == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 145)))))) goto LA11_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_272));
		goto BeforeRet_;
	}
	LA11_: ;
	tupleTypeA = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*call)._Ukind.S6.sons->data[((NI) 1)]).typ, IL64(49750702142040080));
	{
		if (!!(((*tupleTypeA).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18) || (*tupleTypeA).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17)))) goto LA15_;
		localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_393));
		goto BeforeRet_;
	}
	LA15_: ;
	{
		NI i;
		NI colontmp_;
		NI T18_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T18_ = (NI)0;
		T18_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(call);
		colontmp_ = (NI)(T18_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tupleTypeB;
				if (!(res <= colontmp_)) goto LA20;
				i = res;
				tupleTypeB = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*call)._Ukind.S6.sons->data[i]).typ, IL64(49750702142040080));
				{
					NIM_BOOL T23_;
					T23_ = (NIM_BOOL)0;
					T23_ = sameType_3isNyHKb0U1OCnClmflXSg(tupleTypeA, tupleTypeB, 0);
					if (!!(T23_)) goto LA24_;
					typeMismatch_1xxyFIws27lai2cG4n31Ow((*(*c).graph).config, (*(*call)._Ukind.S6.sons->data[i]).info, tupleTypeA, tupleTypeB);
				}
				LA24_: ;
				res += ((NI) 1);
			} LA20: ;
		}
	}
	(*(*c).p).nestedLoopCounter += ((NI) 1);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* loopBody;
		if (!((*tupleTypeA).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18))) goto LA28_;
		loopBody = (*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))];
		{
			NI i_2;
			NI colontmp__2;
			NI T31_;
			NI res_2;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			T31_ = (NI)0;
			T31_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(tupleTypeA);
			colontmp__2 = (NI)(T31_ - ((NI) 1));
			res_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T34_;
					tyObject_TFieldInstCtx_GtjfcSJJiOiQ0USEydDBBA fc;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T35_;
					if (!(res_2 <= colontmp__2)) goto LA33;
					i_2 = res_2;
					T34_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
					T34_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
					nimZeroMem((void*)(&fc), sizeof(tyObject_TFieldInstCtx_GtjfcSJJiOiQ0USEydDBBA));
					fc.tupleType = tupleTypeA;
					fc.tupleIndex = i_2;
					fc.c = c;
					fc.replaceByFieldName = (m == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 145));
					body = instFieldLoopBody_NWigU6dr5apz5g827GjO4w(fc, loopBody, n);
					(*c).inUnrolledContext += ((NI) 1);
					T35_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T35_ = semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3(c, body, 0);
					add_gCCf68XrWL79bKes6htzFjQ(stmts, T35_);
					(*c).inUnrolledContext -= ((NI) 1);
					closeScope_q62Ixzqzx2R5yeGMamw81g(c);
					res_2 += ((NI) 1);
				} LA33: ;
			}
		}
	}
	goto LA26_;
	LA28_: ;
	{
		tyObject_TFieldsCtx_Oumniq9anVI0B7eyXhL1U9cw fc_2;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
		nimZeroMem((void*)(&fc_2), sizeof(tyObject_TFieldsCtx_Oumniq9anVI0B7eyXhL1U9cw));
		fc_2.m = m;
		fc_2.c = c;
		t = tupleTypeA;
		{
			while (1) {
				if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA38;
				semForObjectFields_QePBJ9bHaUde9cnkvf6xqUYQ(fc_2, (*t).n, n, stmts);
				{
					if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA41_;
					goto LA37;
				}
				LA41_: ;
				t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*t).sons->data[((NI) 0)], IL64(36239903266179344));
			} LA38: ;
		} LA37: ;
	}
	LA26_: ;
	(*(*c).p).nestedLoopCounter -= ((NI) 1);
	{
		NIM_BOOL T45_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T48_;
		T45_ = (NIM_BOOL)0;
		T45_ = containsNode_vtJbTerB9bjOPfqY2DqeCGA(stmts, TM_rF9caJawfOjYTjsgLVUSGFA_397);
		if (!T45_) goto LA46_;
		b = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 110), (*n).info);
		T48_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T48_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(b, T48_);
		add_gCCf68XrWL79bKes6htzFjQ(stmts, b);
	}
	goto LA43_;
	LA46_: ;
	{
		result = stmts;
	}
	LA43_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, implicitIterator_9a6gGkMjHF816m9bU2vs9cGiw)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, NimStringDesc* it, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*arg).info);
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, it);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T1_, (*arg).info);
	add_gCCf68XrWL79bKes6htzFjQ(result, T2_);
	{
		NIM_BOOL T5_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T9_;
		T5_ = (NIM_BOOL)0;
		T5_ = !(((*arg).typ == NIM_NIL));
		if (!(T5_)) goto LA6_;
		T5_ = ((*(*arg).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*(*arg).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47));
		LA6_: ;
		if (!T5_) goto LA7_;
		T9_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T9_ = newDeref_HtAG89bn1UDHEhRcS27NOXQlocals(arg);
		add_gCCf68XrWL79bKes6htzFjQ(result, T9_);
	}
	goto LA3_;
	LA7_: ;
	{
		add_gCCf68XrWL79bKes6htzFjQ(result, arg);
	}
	LA3_: ;
	result = semExprNoDeref_k2Lin9a76VyrWz9b8OoRC9apg_32(c, result, 2);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semFor_k2Lin9a76VyrWz9b8OoRC9apg_31)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI length;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T9_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call;
	NIM_BOOL isCallExpr;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 3), (*(*c).graph).config);
	length = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
	{
		if (!(((*c).features &(1U<<((NU)(((tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ) 7))&15U)))!=0)) goto LA3_;
		result = handleForLoopMacro_U3qPBy54f1PkCP8vmFMCRA_46(c, n);
		{
			if (!!((result == NIM_NIL))) goto LA7_;
			goto BeforeRet_;
		}
		LA7_: ;
	}
	LA3_: ;
	T9_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T9_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	result = n;
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]), semExprNoDeref_k2Lin9a76VyrWz9b8OoRC9apg_32(c, (*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))], 2));
	call = (*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))];
	{
		NIM_BOOL T12_;
		T12_ = (NIM_BOOL)0;
		T12_ = ((*call).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126));
		if (!(T12_)) goto LA13_;
		T12_ = isTrivalStmtExpr_J6cfuIanCXYEsLNE8M8o9cQ_8(call);
		LA13_: ;
		if (!T12_) goto LA14_;
		call = lastSon_esDJA7239bJDiq4UrX9aHCjg(call);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]), call);
	}
	LA14_: ;
	isCallExpr = ((*call).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*call).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*call).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*call).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*call).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*call).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*call).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32));
	{
		NIM_BOOL T18_;
		NIM_BOOL T19_;
		T18_ = (NIM_BOOL)0;
		T19_ = (NIM_BOOL)0;
		T19_ = isCallExpr;
		if (!(T19_)) goto LA20_;
		T19_ = ((*(*call)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		LA20_: ;
		T18_ = T19_;
		if (!(T18_)) goto LA21_;
		T18_ = ((*(*(*call)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 144) || (*(*(*call)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 145) || (*(*(*call)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 146));
		LA21_: ;
		if (!T18_) goto LA22_;
		{
			if (!((*(*(*call)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 146))) goto LA26_;
			result = semForVars_k2Lin9a76VyrWz9b8OoRC9apg_33(c, n, flags);
			(*result).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 95);
		}
		goto LA24_;
		LA26_: ;
		{
			result = semForFields_EW5X9akTyzsjElSah59cM0MA_2(c, n, (*(*(*call)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic);
		}
		LA24_: ;
	}
	goto LA16_;
	LA22_: ;
	{
		NIM_BOOL T30_;
		NIM_BOOL T31_;
		T30_ = (NIM_BOOL)0;
		T31_ = (NIM_BOOL)0;
		T31_ = isCallExpr;
		if (!(T31_)) goto LA32_;
		T31_ = ((*(*(*call)._Ukind.S6.sons->data[((NI) 0)]).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA32_: ;
		T30_ = T31_;
		if (!(T30_)) goto LA33_;
		T30_ = (((*(*(*call)._Ukind.S6.sons->data[((NI) 0)]).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 15))&63U)))!=0);
		LA33_: ;
		if (!T30_) goto LA34_;
		result = semForVars_k2Lin9a76VyrWz9b8OoRC9apg_33(c, n, flags);
	}
	goto LA16_;
	LA34_: ;
	{
		NIM_BOOL T37_;
		NIM_BOOL T38_;
		T37_ = (NIM_BOOL)0;
		T38_ = (NIM_BOOL)0;
		T38_ = !(isCallExpr);
		if (T38_) goto LA39_;
		T38_ = !(((*(*call)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)));
		LA39_: ;
		T37_ = T38_;
		if (T37_) goto LA40_;
		T37_ = !(((*(*(*call)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15)));
		LA40_: ;
		if (!T37_) goto LA41_;
		{
			if (!(length == ((NI) 3))) goto LA45_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]), implicitIterator_9a6gGkMjHF816m9bU2vs9cGiw(c, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_398), (*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]));
		}
		goto LA43_;
		LA45_: ;
		{
			if (!(length == ((NI) 4))) goto LA48_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]), implicitIterator_9a6gGkMjHF816m9bU2vs9cGiw(c, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_399), (*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]));
		}
		goto LA43_;
		LA48_: ;
		{
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_400));
		}
		LA43_: ;
		result = semForVars_k2Lin9a76VyrWz9b8OoRC9apg_33(c, n, flags);
	}
	goto LA16_;
	LA41_: ;
	{
		result = semForVars_k2Lin9a76VyrWz9b8OoRC9apg_33(c, n, flags);
	}
	LA16_: ;
	{
		if (!((*(*n)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))]).typ == (*c).enforceVoidContext)) goto LA54_;
		asgnRefNoCycle((void**) (&(*result).typ), (*c).enforceVoidContext);
	}
	goto LA52_;
	LA54_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T59_;
		if (!((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 2))&31U)))!=0)) goto LA57_;
		T59_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T59_ = lastSon_esDJA7239bJDiq4UrX9aHCjg(result);
		asgnRefNoCycle((void**) (&(*result).typ), (*T59_).typ);
	}
	goto LA52_;
	LA57_: ;
	LA52_: ;
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, handleCaseStmtMacro_U3qPBy54f1PkCP8vmFMCRA_47)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* toResolve;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	tySequence_0dpGN6F4ocevqUQGsaf41w* errors;
	tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA r;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	toResolve = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_401));
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T1_, (*n).info);
	add_gCCf68XrWL79bKes6htzFjQ(toResolve, T2_);
	add_gCCf68XrWL79bKes6htzFjQ(toResolve, (*n)._Ukind.S6.sons->data[((NI) 0)]);
	errors = (tySequence_0dpGN6F4ocevqUQGsaf41w*)0;
	nimZeroMem((void*)(&r), sizeof(tyObject_TCandidate_B8Gf2sSWgQ79bLZ9bYWrLHaA));
	resolveOverloads_B3gtjSNpYjtA6RUxTTCoJA(c, toResolve, toResolve, 393216, 0, (&errors), NIM_FALSE, (&r));
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* match;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* toExpand;
		if (!(r.state == ((tyEnum_TCandidateState_C8RXb59bvbxaTzDOqx49aVVg) 1))) goto LA5_;
		match = r.calleeSym;
		markUsed_6hg0JhEmQNoQRUGJJom2vw((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, match, &(*(*c).graph).usageSym);
		asgnRefNoCycle((void**) (&(*r.call)._Ukind.S6.sons->data[((NI) 1)]), n);
		toExpand = semResolvedCall_iRpWWdN2e9bG9aWWSScrOemw(c, (&r), r.call, 0);
		switch ((*match).kind) {
		case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17):
		{
			result = semMacroExpr_9bmxDHTa4eojLns652LIkJw(c, toExpand, toExpand, match, 0);
		}
		break;
		case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
		{
			result = semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA(c, toExpand, match, 0);
		}
		break;
		default:
		{
			result = NIM_NIL;
		}
		break;
		}
	}
	LA5_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NI64, toCover_7T009agak9aowf7iyCV6zRoQ)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NI64 result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t2;
	result = (NI64)0;
	t2 = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(t, IL64(36099165772621840));
	{
		NIM_BOOL T3_;
		NI T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*t2).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14));
		if (!(T3_)) goto LA4_;
		T3_ = enumHasHoles_oBaRrNx0TwrublbZIUKenA_2(t2);
		LA4_: ;
		if (!T3_) goto LA5_;
		T7_ = (NI)0;
		T7_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig((*t2).n);
		result = ((NI64) (T7_));
	}
	goto LA1_;
	LA5_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T9_;
		T9_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T9_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(t, IL64(36239903259928592));
		result = lengthOrd_4cSIntenL9aBXY6LAFsvXdQ_2((*(*c).graph).config, T9_);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semCase_k2Lin9a76VyrWz9b8OoRC9apg_34)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	NIM_BOOL chckCovered;
	NI64 covered;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T2_;
	NIM_BOOL hasElse;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* caseTyp;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 2), (*(*c).graph).config);
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0));
	chckCovered = NIM_FALSE;
	covered = IL64(0);
	T2_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T2_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) newObj((&NTI_AgIT5feFR9a9aoVjv9cx2rOtg_), sizeof(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ));
	(*T2_).Sup.Sup.m_type = (&NTI_v9ae2Dpu13OW2ZJ2U9bNMd9cQ_);
	(*T2_).kind = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6);
	typ = T2_;
	hasElse = NIM_FALSE;
	caseTyp = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ, IL64(36099165772621840));
	switch ((*caseTyp).kind) {
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 35):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 40) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 43):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1):
	{
		chckCovered = NIM_TRUE;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 36) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 39):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50):
	{
	}
	break;
	default:
	{
		{
			if (!(((*c).features &(1U<<((NU)(((tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ) 8))&15U)))!=0)) goto LA8_;
			result = handleCaseStmtMacro_U3qPBy54f1PkCP8vmFMCRA_47(c, n);
			{
				if (!!((result == NIM_NIL))) goto LA12_;
				goto BeforeRet_;
			}
			LA12_: ;
		}
		LA8_: ;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_402));
		goto BeforeRet_;
	}
	break;
	}
	{
		NI i;
		NI colontmp_;
		NI T15_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T15_ = (NI)0;
		T15_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T15_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
				if (!(res <= colontmp_)) goto LA17;
				i = res;
				x = (*n)._Ukind.S6.sons->data[i];
				switch ((*x).kind) {
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85):
				{
					NI last;
					NI T19_;
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(x, ((NI) 2), (*(*c).graph).config);
					semCaseBranch_qifAUGxpq0PltMRr0U3F5w(c, n, x, i, (&covered));
					T19_ = (NI)0;
					T19_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(x);
					last = (NI)(T19_ - ((NI) 1));
					asgnRefNoCycle((void**) (&(*x)._Ukind.S6.sons->data[last]), semExprBranchScope_U3qPBy54f1PkCP8vmFMCRA_38(c, (*x)._Ukind.S6.sons->data[last]));
					typ = commonType_wEK756YRi9c3lsyIxi9aFXSg(typ, (*x)._Ukind.S6.sons->data[last]);
				}
				break;
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86):
				{
					tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T21_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T22_;
					chckCovered = NIM_FALSE;
					checkSonsLen_EezdXeDvu4rB7fR84AJZgw(x, ((NI) 2), (*(*c).graph).config);
					T21_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
					T21_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
					T22_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T22_ = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*x)._Ukind.S6.sons->data[((NI) 0)], 0);
					asgnRefNoCycle((void**) (&(*x)._Ukind.S6.sons->data[((NI) 0)]), forceBool_U3qPBy54f1PkCP8vmFMCRA_3(c, T22_));
					asgnRefNoCycle((void**) (&(*x)._Ukind.S6.sons->data[((NI) 1)]), semExprBranch_k2Lin9a76VyrWz9b8OoRC9apg_26(c, (*x)._Ukind.S6.sons->data[((NI) 1)], 0));
					typ = commonType_wEK756YRi9c3lsyIxi9aFXSg(typ, (*x)._Ukind.S6.sons->data[((NI) 1)]);
					closeScope_q62Ixzqzx2R5yeGMamw81g(c);
				}
				break;
				case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
				{
					chckCovered = NIM_FALSE;
					checkSonsLen_EezdXeDvu4rB7fR84AJZgw(x, ((NI) 1), (*(*c).graph).config);
					asgnRefNoCycle((void**) (&(*x)._Ukind.S6.sons->data[((NI) 0)]), semExprBranchScope_U3qPBy54f1PkCP8vmFMCRA_38(c, (*x)._Ukind.S6.sons->data[((NI) 0)]));
					typ = commonType_wEK756YRi9c3lsyIxi9aFXSg(typ, (*x)._Ukind.S6.sons->data[((NI) 0)]);
					hasElse = NIM_TRUE;
				}
				break;
				default:
				{
					illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(x, (*(*c).graph).config);
				}
				break;
				}
				res += ((NI) 1);
			} LA17: ;
		}
	}
	{
		if (!chckCovered) goto LA27_;
		{
			NI64 T31_;
			T31_ = (NI64)0;
			T31_ = toCover_7T009agak9aowf7iyCV6zRoQ(c, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ);
			if (!(covered == T31_)) goto LA32_;
			hasElse = NIM_TRUE;
		}
		goto LA29_;
		LA32_: ;
		{
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_259));
		}
		LA29_: ;
	}
	LA27_: ;
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	{
		NIM_BOOL T37_;
		NIM_BOOL T38_;
		NIM_BOOL T41_;
		T37_ = (NIM_BOOL)0;
		T38_ = (NIM_BOOL)0;
		T38_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen(typ);
		if (T38_) goto LA39_;
		T38_ = ((*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5) || (*typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6));
		LA39_: ;
		T37_ = T38_;
		if (T37_) goto LA40_;
		T41_ = (NIM_BOOL)0;
		T41_ = !(hasElse);
		if (!(T41_)) goto LA42_;
		T41_ = !(((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 2))&31U)))!=0));
		LA42_: ;
		T37_ = T41_;
		LA40_: ;
		if (!T37_) goto LA43_;
		{
			NI i_2;
			NI colontmp__2;
			NI T46_;
			NI res_2;
			i_2 = (NI)0;
			colontmp__2 = (NI)0;
			T46_ = (NI)0;
			T46_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			colontmp__2 = (NI)(T46_ - ((NI) 1));
			res_2 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T49_;
					if (!(res_2 <= colontmp__2)) goto LA48;
					i_2 = res_2;
					T49_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T49_ = lastSon_esDJA7239bJDiq4UrX9aHCjg((*n)._Ukind.S6.sons->data[i_2]);
					discardCheck_1gYGSG6NjOPkINqwm7joJg(c, T49_, flags);
					res_2 += ((NI) 1);
				} LA48: ;
			}
		}
		{
			if (!(typ == (*c).enforceVoidContext)) goto LA52_;
			asgnRefNoCycle((void**) (&(*result).typ), (*c).enforceVoidContext);
		}
		LA52_: ;
	}
	goto LA35_;
	LA43_: ;
	{
		{
			NI i_3;
			NI colontmp__3;
			NI T56_;
			NI res_3;
			i_3 = (NI)0;
			colontmp__3 = (NI)0;
			T56_ = (NI)0;
			T56_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			colontmp__3 = (NI)(T56_ - ((NI) 1));
			res_3 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
					NI j;
					NI T59_;
					if (!(res_3 <= colontmp__3)) goto LA58;
					i_3 = res_3;
					it = (*n)._Ukind.S6.sons->data[i_3];
					T59_ = (NI)0;
					T59_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(it);
					j = (NI)(T59_ - ((NI) 1));
					{
						NIM_BOOL T62_;
						T62_ = (NIM_BOOL)0;
						T62_ = endsInNoReturn_J6cfuIanCXYEsLNE8M8o9cQ_7((*it)._Ukind.S6.sons->data[j]);
						if (!!(T62_)) goto LA63_;
						asgnRefNoCycle((void**) (&(*it)._Ukind.S6.sons->data[j]), fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, typ, (*it)._Ukind.S6.sons->data[j], (*(*it)._Ukind.S6.sons->data[j]).info));
					}
					LA63_: ;
					res_3 += ((NI) 1);
				} LA58: ;
			}
		}
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA35_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semReturn_U3qPBy54f1PkCP8vmFMCRA_48)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 1), (*(*c).graph).config);
	{
		NIM_BOOL T3_;
		NIM_BOOL T5_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((225280 &(1U<<((NU)((*(*(*c).p).owner).kind)&31U)))!=0);
		if (T3_) goto LA4_;
		T5_ = (NIM_BOOL)0;
		T5_ = ((*(*(*c).p).owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
		if (!(T5_)) goto LA6_;
		T5_ = ((*(*(*(*c).p).owner).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA6_: ;
		T3_ = T5_;
		LA4_: ;
		if (!T3_) goto LA7_;
		{
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA11_;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T17_;
				if (!!(((*(*c).p).resultSym == NIM_NIL))) goto LA15_;
				a = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info);
				T17_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T17_ = newSymNode_UWZXukHA5As9aCftRHbafBg((*(*c).p).resultSym);
				addSon_gCCf68XrWL79bKes6htzFjQ_2(a, T17_);
				addSon_gCCf68XrWL79bKes6htzFjQ_2(a, (*n)._Ukind.S6.sons->data[((NI) 0)]);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semAsgn_mYOjn9apkbeBan9ajgaE2iOg(c, a, ((tyEnum_SemAsgnMode_e9aTobe3zFbbfTs9bHC7XMIQ) 0)));
				{
					NIM_BOOL T20_;
					T20_ = (NIM_BOOL)0;
					T20_ = ((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
					if (!(T20_)) goto LA21_;
					T20_ = ((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)])._Ukind.S4.sym == (*(*c).p).resultSym);
					LA21_: ;
					if (!T20_) goto LA22_;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), (*(*c).graph).emptyNode);
				}
				LA22_: ;
			}
			goto LA13_;
			LA15_: ;
			{
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_403));
			}
			LA13_: ;
		}
		LA11_: ;
	}
	goto LA1_;
	LA7_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_404));
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semUsing_U3qPBy54f1PkCP8vmFMCRA_49)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = (*(*c).graph).emptyNode;
	{
		NIM_BOOL T3_;
		NimStringDesc* T6_;
		T3_ = (NIM_BOOL)0;
		T3_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
		if (!!(T3_)) goto LA4_;
		T6_ = (NimStringDesc*)0;
		T6_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_52), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_405));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T6_);
	}
	LA4_: ;
	{
		NI i;
		NI colontmp_;
		NI T8_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T8_ = (NI)0;
		T8_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T8_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA10;
				i = res;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
					NI length;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* def;
					a = (*n)._Ukind.S6.sons->data[i];
					{
						if (!((*(*(*c).graph).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 14))) goto LA14_;
						suggestStmt_utpC2gr4BrwN59bDcE4of4w_3(c, a);
					}
					LA14_: ;
					{
						if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA18_;
						goto LA11;
					}
					LA18_: ;
					{
						if (!!(((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35) || (*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36) || (*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 102)))) goto LA22_;
						illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(a, (*(*c).graph).config);
					}
					LA22_: ;
					checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(a, ((NI) 3), (*(*c).graph).config);
					length = sonsLen_qPWPHw7WgJeEVYUdcaRIig(a);
					{
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
						if (!!(((*(*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA26_;
						typ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, (*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
						{
							NI j;
							NI colontmp__2;
							NI res_2;
							j = (NI)0;
							colontmp__2 = (NI)0;
							colontmp__2 = (NI)(length - ((NI) 3));
							res_2 = ((NI) 0);
							{
								while (1) {
									tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v;
									NIM_BOOL T31_;
									if (!(res_2 <= colontmp__2)) goto LA30;
									j = res_2;
									v = semIdentDef_xo9cgbfYKVVrrYTXCTptvbQ(c, (*a)._Ukind.S6.sons->data[j], ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
									asgnRefNoCycle((void**) (&(*v).typ), typ);
									T31_ = (NIM_BOOL)0;
									T31_ = strTableIncl_S7UP2gjoSg4O9bJhVmIWbPw((&(*c).signatures), v, NIM_FALSE);
									res_2 += ((NI) 1);
								} LA30: ;
							}
						}
					}
					goto LA24_;
					LA26_: ;
					{
						localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_406));
					}
					LA24_: ;
					def = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					{
						if (!!(((*(*a)._Ukind.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA35_;
						localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*a).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_407));
					}
					LA35_: ;
				} LA11: ;
				res += ((NI) 1);
			} LA10: ;
		}
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAsm_U3qPBy54f1PkCP8vmFMCRA_50)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NIM_CHAR marker;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
	marker = pragmaAsm_9aXIOq2nJv9anrHpPdCVumMQ(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
	{
		if (!((NU8)(marker) == (NU8)(0))) goto LA3_;
		marker = 96;
	}
	LA3_: ;
	result = semAsmOrEmit_ipixv6uXJQPmGNI0vRitVg(c, n, marker);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, semYieldVarResult_VClwzeP3TbkDW2v2LBPE3Q)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* restype) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	t = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(restype, IL64(70368744179728));
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47):
	{
		{
			if (!((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23))) goto LA4_;
			(*t).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 19))%(sizeof(NU64)*8));
		}
		LA4_: ;
		{
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58) || (*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59))) goto LA8_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)]);
		}
		LA8_: ;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), takeImplicitAddr_9bHhZwt4fwhJLlgtCh1ak2w(c, (*n)._Ukind.S6.sons->data[((NI) 0)], ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47))));
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(t);
			i_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* e;
					if (!(i_2 < colontmp_)) goto LA13;
					i = i_2;
					e = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*t).sons->data[i], IL64(70368744179728));
					{
						if (!((*e).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*e).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47))) goto LA16_;
						{
							if (!((*e).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23))) goto LA20_;
							(*e).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 19))%(sizeof(NU64)*8));
						}
						LA20_: ;
						{
							if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37) || (*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160))) goto LA24_;
							asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[i]), takeImplicitAddr_9bHhZwt4fwhJLlgtCh1ak2w(c, (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[i], ((*e).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47))));
						}
						goto LA22_;
						LA24_: ;
						{
							NIM_BOOL T27_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
							T27_ = (NIM_BOOL)0;
							T27_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58) || (*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59));
							if (!(T27_)) goto LA28_;
							T27_ = ((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37) || (*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160));
							LA28_: ;
							if (!T27_) goto LA29_;
							a = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)];
							asgnRefNoCycle((void**) (&(*a)._Ukind.S6.sons->data[i]), takeImplicitAddr_9bHhZwt4fwhJLlgtCh1ak2w(c, (*a)._Ukind.S6.sons->data[i], NIM_FALSE));
						}
						goto LA22_;
						LA29_: ;
						{
							localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 4), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_410));
						}
						LA22_: ;
					}
					LA16_: ;
					i_2 += ((NI) 1);
				} LA13: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semYield_U3qPBy54f1PkCP8vmFMCRA_51)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 1), (*(*c).graph).config);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*(*c).p).owner == NIM_NIL);
		if (T3_) goto LA4_;
		T3_ = !(((*(*(*c).p).owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15)));
		LA4_: ;
		if (!T3_) goto LA5_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_408));
	}
	goto LA1_;
	LA5_: ;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* iterType;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* restype;
		if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA8_;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0));
		iterType = (*(*(*c).p).owner).typ;
		restype = (*iterType).sons->data[((NI) 0)];
		{
			if (!!((restype == NIM_NIL))) goto LA12_;
			{
				if (!!(((*restype).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6)))) goto LA16_;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), fitNode_cbdjd0Pb6fS1ZKYC9aKZCqA(c, restype, (*n)._Ukind.S6.sons->data[((NI) 0)], (*n).info));
			}
			LA16_: ;
			{
				if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ == NIM_NIL)) goto LA20_;
				internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_409));
			}
			LA20_: ;
			{
				NIM_BOOL T24_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* inferred;
				T24_ = (NIM_BOOL)0;
				T24_ = isMetaType_NWFc8X9b4Zx0NtXP3Cp2fnw(restype);
				if (!(T24_)) goto LA25_;
				T24_ = !(((*restype).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8)));
				LA25_: ;
				if (!T24_) goto LA26_;
				inferred = (*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ;
				asgnRefNoCycle((void**) (&(*iterType).sons->data[((NI) 0)]), inferred);
			}
			LA26_: ;
			semYieldVarResult_VClwzeP3TbkDW2v2LBPE3Q(c, n, restype);
		}
		goto LA10_;
		LA12_: ;
		{
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_411));
		}
		LA10_: ;
	}
	goto LA1_;
	LA8_: ;
	{
		if (!!(((*(*(*(*c).p).owner).typ).sons->data[((NI) 0)] == NIM_NIL))) goto LA30_;
		localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_412));
	}
	goto LA1_;
	LA30_: ;
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semIterator_U3qPBy54f1PkCP8vmFMCRA_52)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NIM_BOOL isAnon;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	isAnon = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
	{
		if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA3_;
		asgnRefNoCycle((void**) (&(*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).owner), getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c));
		(*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).kind = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15);
	}
	LA3_: ;
	result = semProcAux_HYGotOQX5pnodBI9cpMJqTw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15), TM_rF9caJawfOjYTjsgLVUSGFA_414, ((tyEnum_TProcCompilationSteps_2LY1MARGn5z4Y5kU8eJFMg) 0));
	{
		if (!!(((*result).kind == (*n).kind))) goto LA7_;
		goto BeforeRet_;
	}
	LA7_: ;
	s = (*(*result)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
	t = (*s).typ;
	{
		NIM_BOOL T11_;
		T11_ = (NIM_BOOL)0;
		T11_ = ((*t).sons->data[((NI) 0)] == NIM_NIL);
		if (!(T11_)) goto LA12_;
		T11_ = !(((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8)));
		LA12_: ;
		if (!T11_) goto LA13_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_415));
	}
	LA13_: ;
	{
		NIM_BOOL T17_;
		T17_ = (NIM_BOOL)0;
		T17_ = isAnon;
		if (!(T17_)) goto LA18_;
		T17_ = ((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 5));
		LA18_: ;
		if (!T17_) goto LA19_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_416));
	}
	LA19_: ;
	{
		if (!((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8))) goto LA23_;
		(*(*s).typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 12))%(sizeof(NU64)*8));
	}
	goto LA21_;
	LA23_: ;
	{
		(*(*s).typ).callConv = ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 5);
	}
	LA21_: ;
	{
		NIM_BOOL T28_;
		NimStringDesc* T32_;
		T28_ = (NIM_BOOL)0;
		T28_ = ((*(*n)._Ukind.S6.sons->data[((NI) 6)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
		if (!(T28_)) goto LA29_;
		T28_ = ((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0));
		LA29_: ;
		if (!T28_) goto LA30_;
		T32_ = (NimStringDesc*)0;
		T32_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_199), (*(*s).name).s);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T32_);
	}
	LA30_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semProc_U3qPBy54f1PkCP8vmFMCRA_53)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = semProcAux_HYGotOQX5pnodBI9cpMJqTw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12), TM_rF9caJawfOjYTjsgLVUSGFA_417, ((tyEnum_TProcCompilationSteps_2LY1MARGn5z4Y5kU8eJFMg) 0));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semFunc_U3qPBy54f1PkCP8vmFMCRA_54)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = semProcAux_HYGotOQX5pnodBI9cpMJqTw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 13), TM_rF9caJawfOjYTjsgLVUSGFA_417, ((tyEnum_TProcCompilationSteps_2LY1MARGn5z4Y5kU8eJFMg) 0));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semMethod_U3qPBy54f1PkCP8vmFMCRA_55)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* disp;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NimStringDesc* T6_;
		T3_ = (NIM_BOOL)0;
		T3_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
		if (!!(T3_)) goto LA4_;
		T6_ = (NimStringDesc*)0;
		T6_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_52), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_418));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T6_);
	}
	LA4_: ;
	result = semProcAux_HYGotOQX5pnodBI9cpMJqTw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14), TM_rF9caJawfOjYTjsgLVUSGFA_419, ((tyEnum_TProcCompilationSteps_2LY1MARGn5z4Y5kU8eJFMg) 0));
	{
		NI T9_;
		T9_ = (NI)0;
		T9_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(result);
		if (!(T9_ <= ((NI) 0))) goto LA10_;
		goto BeforeRet_;
	}
	LA10_: ;
	{
		if (!!(((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 80)))) goto LA14_;
		goto BeforeRet_;
	}
	LA14_: ;
	s = (*(*result)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
	disp = getDispatcher_qMVVit6V09a5B5VK0hDzcWw(s);
	{
		NIM_BOOL T18_;
		NIM_BOOL T19_;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* ret;
		T18_ = (NIM_BOOL)0;
		T19_ = (NIM_BOOL)0;
		T19_ = !((disp == NIM_NIL));
		if (!(T19_)) goto LA20_;
		T19_ = !(((*(*disp).typ).sons->data[((NI) 0)] == NIM_NIL));
		LA20_: ;
		T18_ = T19_;
		if (!(T18_)) goto LA21_;
		T18_ = ((*(*(*disp).typ).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6));
		LA21_: ;
		if (!T18_) goto LA22_;
		ret = (*(*s).typ).sons->data[((NI) 0)];
		asgnRefNoCycle((void**) (&(*(*disp).typ).sons->data[((NI) 0)]), ret);
		{
			if (!((*(*(*disp).ast)._Ukind.S6.sons->data[((NI) 7)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA26_;
			{
				NIM_BOOL T30_;
				T30_ = (NIM_BOOL)0;
				T30_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen(ret);
				if (!T30_) goto LA31_;
				asgnRefNoCycle((void**) (&(*(*disp).ast)._Ukind.S6.sons->data[((NI) 7)]), (*(*c).graph).emptyNode);
			}
			goto LA28_;
			LA31_: ;
			{
				asgnRefNoCycle((void**) (&(*(*(*(*disp).ast)._Ukind.S6.sons->data[((NI) 7)])._Ukind.S4.sym).typ), ret);
			}
			LA28_: ;
		}
		LA26_: ;
	}
	LA22_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConverterDef_U3qPBy54f1PkCP8vmFMCRA_56)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NimStringDesc* T6_;
		T3_ = (NIM_BOOL)0;
		T3_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
		if (!!(T3_)) goto LA4_;
		T6_ = (NimStringDesc*)0;
		T6_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_52), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_420));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T6_);
	}
	LA4_: ;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 7), (*(*c).graph).config);
	result = semProcAux_HYGotOQX5pnodBI9cpMJqTw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 16), TM_rF9caJawfOjYTjsgLVUSGFA_417, ((tyEnum_TProcCompilationSteps_2LY1MARGn5z4Y5kU8eJFMg) 0));
	{
		NI T9_;
		T9_ = (NI)0;
		T9_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(result);
		if (!(T9_ <= ((NI) 0))) goto LA10_;
		goto BeforeRet_;
	}
	LA10_: ;
	{
		if (!!(((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81)))) goto LA14_;
		goto BeforeRet_;
	}
	LA14_: ;
	s = (*(*result)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
	t = (*s).typ;
	{
		NimStringDesc* T20_;
		if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA18_;
		T20_ = (NimStringDesc*)0;
		T20_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_421), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_420));
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T20_);
	}
	LA18_: ;
	{
		NI T23_;
		T23_ = (NI)0;
		T23_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(t);
		if (!!((T23_ == ((NI) 2)))) goto LA24_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_422));
	}
	LA24_: ;
	addConverter_9csQR19b9chEi840Usa403azw(c, s);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semMacroDef_U3qPBy54f1PkCP8vmFMCRA_57)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	NIM_BOOL allUntyped;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 7), (*(*c).graph).config);
	result = semProcAux_HYGotOQX5pnodBI9cpMJqTw(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17), TM_rF9caJawfOjYTjsgLVUSGFA_423, ((tyEnum_TProcCompilationSteps_2LY1MARGn5z4Y5kU8eJFMg) 0));
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(result);
		if (!(T3_ <= ((NI) 0))) goto LA4_;
		goto BeforeRet_;
	}
	LA4_: ;
	{
		if (!!(((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 82)))) goto LA8_;
		goto BeforeRet_;
	}
	LA8_: ;
	s = (*(*result)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
	t = (*s).typ;
	allUntyped = NIM_TRUE;
	{
		NI i;
		NI colontmp_;
		NI T11_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T11_ = (NI)0;
		T11_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*t).n);
		colontmp_ = (NI)(T11_ - ((NI) 1));
		res = ((NI) 1);
		{
			while (1) {
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param;
				if (!(res <= colontmp_)) goto LA13;
				i = res;
				param = (*(*(*t).n)._Ukind.S6.sons->data[i])._Ukind.S4.sym;
				{
					if (!!(((*(*param).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6)))) goto LA16_;
					allUntyped = NIM_FALSE;
				}
				LA16_: ;
				res += ((NI) 1);
			} LA13: ;
		}
	}
	{
		if (!allUntyped) goto LA20_;
		(*s).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 7))%(sizeof(NU64)*8));
	}
	LA20_: ;
	{
		if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA24_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_424));
	}
	LA24_: ;
	{
		NimStringDesc* T30_;
		if (!((*(*n)._Ukind.S6.sons->data[((NI) 6)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA28_;
		T30_ = (NimStringDesc*)0;
		T30_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_199), (*(*s).name).s);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T30_);
	}
	LA28_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, evalInclude_U3qPBy54f1PkCP8vmFMCRA_58)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(result, n);
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (NI)0;
		T2_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig(n);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				NI32 f;
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				f = checkModuleName_fDy39b69bb9cFVEyPkMJp3GTg((*(*c).graph).config, (*n)._Ukind.S6.sons->data[i], NIM_TRUE);
				{
					if (!!((f == ((NI32) -1)))) goto LA7_;
					{
						NIM_BOOL T11_;
						NimStringDesc* T14_;
						NimStringDesc* T22_;
						T11_ = (NIM_BOOL)0;
						T11_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg((&(*c).includedFiles), ((NI) (f)));
						if (!T11_) goto LA12_;
						T14_ = (NimStringDesc*)0;
						{
							NIM_BOOL T17_;
							T17_ = (NIM_BOOL)0;
							T17_ = (f < ((NI32) 0));
							if (T17_) goto LA18_;
							T17_ = ((*(*c).graph).config == NIM_NIL);
							LA18_: ;
							if (!T17_) goto LA19_;
							T14_ = copyString(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_166));
						}
						goto LA15_;
						LA19_: ;
						{
							T14_ = copyString((*(*(*c).graph).config).m.fileInfos->data[f].projPath);
						}
						LA15_: ;
						T22_ = (NimStringDesc*)0;
						T22_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_5), T14_);
						localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T22_);
					}
					goto LA9_;
					LA12_: ;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T24_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T25_;
						T24_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T24_ = (*(*c).graph).includeFileCallback((*c).graph, (*c).module, f);
						T25_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T25_ = semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3(c, T24_, 0);
						addSon_gCCf68XrWL79bKes6htzFjQ_2(result, T25_);
						excl_iUpE9bYmIR0fROyJskQwN8g_2((&(*c).includedFiles), ((NI) (f)));
					}
					LA9_: ;
				}
				LA7_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExport_U3qPBy54f1PkCP8vmFMCRA_59)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 118), (*n).info);
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ o;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				a = (*n)._Ukind.S6.sons->data[i];
				nimZeroMem((void*)(&o), sizeof(tyObject_TOverloadIter_5JoRhlHqSIiHe1n9a5m6IAQ));
				s = initOverloadIter_5E8M4x8tMAW3KCmti57FUA((&o), c, a);
				{
					NimStringDesc* T8_;
					NimStringDesc* T9_;
					if (!(s == NIM_NIL)) goto LA6_;
					T8_ = (NimStringDesc*)0;
					T9_ = (NimStringDesc*)0;
					T9_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(a, 0);
					T8_ = rawNewString((T9_ ? T9_->Sup.len : 0) + 15);
appendString(T8_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_427));
appendString(T8_, T9_);
					localError_mMj7lrOf3zBP9bl69amiKu5g_3((*(*c).graph).config, (*a).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 9), T8_);
				}
				goto LA4_;
				LA6_: ;
				{
					tyObject_TTabIter_VYF5VQsIYEVaBL0fKZJkbg ti;
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* it;
					if (!((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6))) goto LA11_;
					strTableAdd_bNTI8uh3GP35hzyXvGA8Xg((&(*(*c).module)._Ukind.S3.tab), s);
					nimZeroMem((void*)(&ti), sizeof(tyObject_TTabIter_VYF5VQsIYEVaBL0fKZJkbg));
					it = initTabIter_MivcR840C8HhD7BQHi3G6A((&ti), (*s)._Ukind.S3.tab);
					{
						while (1) {
							if (!!((it == NIM_NIL))) goto LA14;
							{
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T19_;
								if (!((43513792 &(1U<<((NU)((*it).kind)&31U)))!=0)) goto LA17_;
								strTableAdd_bNTI8uh3GP35hzyXvGA8Xg((&(*(*c).module)._Ukind.S3.tab), it);
								T19_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								T19_ = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(it, (*a).info);
								add_gCCf68XrWL79bKes6htzFjQ(result, T19_);
							}
							LA17_: ;
							it = nextIter_MivcR840C8HhD7BQHi3G6A_2((&ti), (*s)._Ukind.S3.tab);
						} LA14: ;
					}
				}
				goto LA4_;
				LA11_: ;
				{
					{
						while (1) {
							if (!!((s == NIM_NIL))) goto LA22;
							{
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T27_;
								if (!((43513792 &(1U<<((NU)((*s).kind)&31U)))!=0)) goto LA25_;
								T27_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								T27_ = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*a).info);
								add_gCCf68XrWL79bKes6htzFjQ(result, T27_);
								strTableAdd_bNTI8uh3GP35hzyXvGA8Xg((&(*(*c).module)._Ukind.S3.tab), s);
							}
							LA25_: ;
							s = nextOverloadIter_5E8M4x8tMAW3KCmti57FUA_2((&o), c, a);
						} LA22: ;
					}
				}
				LA4_: ;
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExportExcept_U3qPBy54f1PkCP8vmFMCRA_60)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* moduleName;
	tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg exceptSet;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* exported;
	tyObject_TTabIter_VYF5VQsIYEVaBL0fKZJkbg i;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	moduleName = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*moduleName).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3)));
		if (T3_) goto LA4_;
		T3_ = !(((*(*moduleName)._Ukind.S4.sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6)));
		LA4_: ;
		if (!T3_) goto LA5_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_428));
		result = n;
		goto BeforeRet_;
	}
	LA5_: ;
	nimZeroMem((void*)(&exceptSet), sizeof(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg));
	readExceptSet_sl9cge6T9ap5614SUVXe4Fkw(c, n, (&exceptSet));
	exported = (*moduleName)._Ukind.S4.sym;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 118), (*n).info);
	strTableAdd_bNTI8uh3GP35hzyXvGA8Xg((&(*(*c).module)._Ukind.S3.tab), exported);
	nimZeroMem((void*)(&i), sizeof(tyObject_TTabIter_VYF5VQsIYEVaBL0fKZJkbg));
	s = initTabIter_MivcR840C8HhD7BQHi3G6A((&i), (*exported)._Ukind.S3.tab);
	{
		while (1) {
			if (!!((s == NIM_NIL))) goto LA8;
			{
				NIM_BOOL T11_;
				NIM_BOOL T13_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T16_;
				T11_ = (NIM_BOOL)0;
				T11_ = ((43513792 &(1U<<((NU)((*s).kind)&31U)))!=0);
				if (!(T11_)) goto LA12_;
				T13_ = (NIM_BOOL)0;
				T13_ = contains_sYBLNwnPJlAFi0nfWU79awg((&exceptSet), (*(*s).name).Sup.id);
				T11_ = !(T13_);
				LA12_: ;
				if (!T11_) goto LA14_;
				strTableAdd_bNTI8uh3GP35hzyXvGA8Xg((&(*(*c).module)._Ukind.S3.tab), s);
				T16_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T16_ = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(s, (*n).info);
				add_gCCf68XrWL79bKes6htzFjQ(result, T16_);
			}
			LA14_: ;
			s = nextIter_MivcR840C8HhD7BQHi3G6A_2((&i), (*exported)._Ukind.S3.tab);
		} LA8: ;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, setLine_XN1vDJ2wOXm9aCmlvtNKsEQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				setLine_XN1vDJ2wOXm9aCmlvtNKsEQ((*n)._Ukind.S6.sons->data[i], info);
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	(*n).info = info;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semPragmaBlock_U3qPBy54f1PkCP8vmFMCRA_61)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pragmaList;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	pragmaList = (*n)._Ukind.S6.sons->data[((NI) 0)];
	pragma_av9bQYmoLtJKLA6ueIgHxoA(c, NIM_NIL, pragmaList, TM_rF9caJawfOjYTjsgLVUSGFA_429);
	result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 1)], 0);
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), result);
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(pragmaList);
		i_2 = ((NI) 0);
		{
			while (1) {
				tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw T4_;
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				T4_ = (tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw)0;
				T4_ = whichPragma_tadMdqrtQd2cek9aFwyE1XQ((*pragmaList)._Ukind.S6.sons->data[i]);
				switch (T4_) {
				case ((tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw) 116):
				{
					setLine_XN1vDJ2wOXm9aCmlvtNKsEQ(result, (*(*pragmaList)._Ukind.S6.sons->data[i]).info);
				}
				break;
				case ((tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw) 200):
				case ((tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw) 102):
				{
					result = n;
					asgnRefNoCycle((void**) (&(*result).typ), (*(*n)._Ukind.S6.sons->data[((NI) 1)]).typ);
				}
				break;
				case ((tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw) 169):
				{
					(*result).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 6))%(sizeof(NU32)*8));
				}
				break;
				default:
				{
				}
				break;
				}
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semStaticStmt_U3qPBy54f1PkCP8vmFMCRA_62)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	(*c).inStaticContext += ((NI) 1);
	T1_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T1_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	a = semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0);
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	(*c).inStaticContext -= ((NI) 1);
	asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), a);
	evalStaticStmt_4ISne8kQ4QKaNjEY5dqxUg((*c).module, (*c).graph, a, (*(*c).p).owner);
	result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 114), (*n).info, ((NI) 1));
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), (*(*c).graph).emptyNode);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		if (!((*(*(*c).graph).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 14))) goto LA3_;
		suggestExpr_utpC2gr4BrwN59bDcE4of4w(c, n);
	}
	LA3_: ;
	{
		if (!(((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 7))&31U)))!=0)) goto LA7_;
		goto BeforeRet_;
	}
	LA7_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 53):
	{
		tySet_tyEnum_TLookupFlag_ObWMY5GMSl1GiMcrKaAhKQ checks;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		{
			if (!((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 14))&31U)))!=0)) goto LA12_;
			checks = 10;
		}
		goto LA10_;
		LA12_: ;
		{
			if (!((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 15))&31U)))!=0)) goto LA15_;
			checks = 14;
		}
		goto LA10_;
		LA15_: ;
		{
			checks = 15;
		}
		LA10_: ;
		s = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA(c, n, checks);
		{
			if (!((*c).matchedConcept == NIM_NIL)) goto LA20_;
			semCaptureSym_gjv8Bt4Od6mrP2aUY07hoA(s, (*(*c).p).owner);
		}
		LA20_: ;
		result = semSym_XS6IXZ9bx3UuasCvJk5VxKA(c, n, s, flags);
		{
			if (!((126976 &(1U<<((NU)((*s).kind)&31U)))!=0)) goto LA24_;
			result = symChoice_e9ckn59a48lY35fHaH19c0xsw(c, n, s, ((tyEnum_TSymChoiceRule_lH3J6G7FTKg8Ow3uXV36OA) 0));
			{
				if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA28_;
				markIndirect_Cfv6llbTDnhr49bNNRv9cmhgsem(c, (*result)._Ukind.S4.sym);
			}
			LA28_: ;
		}
		LA24_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		result = semSym_XS6IXZ9bx3UuasCvJk5VxKA(c, n, (*n)._Ukind.S4.sym, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 0):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA35_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5)));
		}
		LA35_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA40_;
			setIntLitType_JsZMQGDyZXnGr9cg0jxXW0w((*c).graph, result);
		}
		LA40_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 7):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA45_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 32)));
		}
		LA45_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 8):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA50_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 33)));
		}
		LA50_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 9):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA55_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 34)));
		}
		LA55_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 10):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA60_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 35)));
		}
		LA60_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 11):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA65_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 40)));
		}
		LA65_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 12):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA70_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 41)));
		}
		LA70_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 13):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA75_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 42)));
		}
		LA75_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 14):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA80_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 43)));
		}
		LA80_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 15):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA85_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44)));
		}
		LA85_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 17):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA90_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 37)));
		}
		LA90_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 18):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 16):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA95_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 38)));
		}
		LA95_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 19):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA100_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 39)));
		}
		LA100_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 22):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA105_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28)));
		}
		LA105_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 5):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA110_;
			asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*c).graph, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2)));
		}
		LA110_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45):
	{
		result = semFieldAccess_k2Lin9a76VyrWz9b8OoRC9apg_12(c, n, flags);
		{
			if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 25))) goto LA115_;
			(*result).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27);
			result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, result, flags);
		}
		LA115_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 55):
	{
		message_mMj7lrOf3zBP9bl69amiKu5g((*(*c).graph).config, (*n).info, ((tyEnum_TMsgKind_29cbg2fC1z5iM1PAI28kR5w) 15), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_278));
		result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 0)], flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 132):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 134):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 135):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 141) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 150):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 137):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T139_;
		{
			NIM_BOOL T121_;
			NI T123_;
			tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag modifier;
			T121_ = (NIM_BOOL)0;
			T121_ = !(((*c).matchedConcept == NIM_NIL));
			if (!(T121_)) goto LA122_;
			T123_ = (NI)0;
			T123_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			T121_ = (T123_ == ((NI) 1));
			LA122_: ;
			if (!T121_) goto LA124_;
			switch ((*n).kind) {
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 143):
			{
				modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23);
			}
			break;
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 141):
			{
				modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22);
			}
			break;
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 142):
			{
				modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21);
			}
			break;
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 137):
			{
				modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60);
			}
			break;
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 132):
			{
				modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8);
			}
			break;
			default:
			{
				modifier = ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0);
			}
			break;
			}
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* baseType;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T136_;
				tySequence_Ef05srmQTDulnBdXR4Ja6Q* T137_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T138_;
				if (!!((modifier == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0)))) goto LA134_;
				T136_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T136_ = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0);
				baseType = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*T136_).typ, 256);
				T137_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
				T137_ = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*) newSeq((&NTI_Ef05srmQTDulnBdXR4Ja6Q_), 1);
				asgnRefNoCycle((void**) (&T137_->data[0]), baseType);
				T138_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T138_ = newTypeWithSons_9aJU4B1fwkaTke7gv1KDkuQ(c, modifier, T137_);
				asgnRefNoCycle((void**) (&(*result).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, T138_));
				goto BeforeRet_;
			}
			LA134_: ;
		}
		LA124_: ;
		T139_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T139_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, n, NIM_NIL);
		typ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(T139_, 256);
		asgnRefNoCycle((void**) (&(*result).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, typ));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28):
	{
		tySet_tyEnum_TLookupFlag_ObWMY5GMSl1GiMcrKaAhKQ mode;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s_2;
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 1), (*(*c).graph).config);
		{
			if (!(((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 9))&31U)))!=0)) goto LA143_;
			mode = 0;
		}
		goto LA141_;
		LA143_: ;
		{
			mode = 2;
		}
		LA141_: ;
		s_2 = qualifiedLookUp_u0heBy19ck07eS9a9cArxNtBA(c, (*n)._Ukind.S6.sons->data[((NI) 0)], mode);
		{
			if (!!((s_2 == NIM_NIL))) goto LA148_;
			switch ((*s_2).kind) {
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17):
			{
				{
					if (!!((((*s_2).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 26))&63U)))!=0))) goto LA153_;
					result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, flags);
				}
				goto LA151_;
				LA153_: ;
				{
					result = semMacroExpr_9bmxDHTa4eojLns652LIkJw(c, n, n, s_2, flags);
				}
				LA151_: ;
			}
			break;
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 18):
			{
				{
					if (!!((((*s_2).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 26))&63U)))!=0))) goto LA159_;
					result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, flags);
				}
				goto LA157_;
				LA159_: ;
				{
					result = semTemplateExpr_WEWIesXiEJLD5SbxNPgOfA(c, n, s_2, flags);
				}
				LA157_: ;
			}
			break;
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7):
			{
				{
					NI T165_;
					T165_ = (NI)0;
					T165_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					if (!(T165_ == ((NI) 2))) goto LA166_;
					result = semConv_U3qPBy54f1PkCP8vmFMCRA_28(c, n);
				}
				goto LA163_;
				LA166_: ;
				{
					NIM_BOOL T169_;
					NI T171_;
					T169_ = (NIM_BOOL)0;
					T169_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*c).ambiguousSymbols), (*s_2).Sup.id);
					if (!(T169_)) goto LA170_;
					T171_ = (NI)0;
					T171_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					T169_ = (T171_ == ((NI) 1));
					LA170_: ;
					if (!T169_) goto LA172_;
					errorUseQualifier_Rv9aK9aEqb7vd5si1J3UiI7A(c, (*n).info, s_2);
				}
				goto LA163_;
				LA172_: ;
				{
					NI T175_;
					T175_ = (NI)0;
					T175_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					if (!(T175_ == ((NI) 1))) goto LA176_;
					result = semObjConstr_k2Lin9a76VyrWz9b8OoRC9apg_13(c, n, flags);
				}
				goto LA163_;
				LA176_: ;
				{
					if (!((*s_2).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0))) goto LA179_;
					result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, flags);
				}
				goto LA163_;
				LA179_: ;
				{
					result = semMagic_WEWIesXiEJLD5SbxNPgOfA_2(c, n, s_2, flags);
				}
				LA163_: ;
			}
			break;
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 13):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 14):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 16):
			case ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15):
			{
				{
					if (!((*s_2).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0))) goto LA185_;
					result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, flags);
				}
				goto LA183_;
				LA185_: ;
				{
					result = semMagic_WEWIesXiEJLD5SbxNPgOfA_2(c, n, s_2, flags);
				}
				LA183_: ;
			}
			break;
			default:
			{
				result = semIndirectOp_k2Lin9a76VyrWz9b8OoRC9apg_19(c, n, flags);
			}
			break;
			}
		}
		goto LA146_;
		LA148_: ;
		{
			NIM_BOOL T190_;
			NIM_BOOL T191_;
			T190_ = (NIM_BOOL)0;
			T191_ = (NIM_BOOL)0;
			T191_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42));
			if (T191_) goto LA192_;
			T191_ = shouldBeBracketExpr_J6cfuIanCXYEsLNE8M8o9cQ_5(n);
			LA192_: ;
			T190_ = T191_;
			if (!(T190_)) goto LA193_;
			T190_ = isSymChoice_kR3j4BVoX6LmX0p7IycneQ_3sem((*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 0)]);
			LA193_: ;
			if (!T190_) goto LA194_;
			setGenericParams_wkwHEj6zZnYo2DMZys6jnA_8(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
			result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, flags);
		}
		goto LA146_;
		LA194_: ;
		{
			NIM_BOOL T197_;
			T197_ = (NIM_BOOL)0;
			T197_ = isSymChoice_kR3j4BVoX6LmX0p7IycneQ_3sem((*n)._Ukind.S6.sons->data[((NI) 0)]);
			if (T197_) goto LA198_;
			T197_ = (((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 9))&31U)))!=0);
			LA198_: ;
			if (!T197_) goto LA199_;
			result = semDirectOp_k2Lin9a76VyrWz9b8OoRC9apg_5(c, n, flags);
		}
		goto LA146_;
		LA199_: ;
		{
			result = semIndirectOp_k2Lin9a76VyrWz9b8OoRC9apg_19(c, n, flags);
		}
		LA146_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 93):
	{
		{
			if (!((flags &(1U<<((NU)(((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 6))&31U)))!=0)) goto LA205_;
			result = semWhen_9cFxfe3QuUjcGT0YjtIGZ4g(c, n, NIM_TRUE);
		}
		goto LA203_;
		LA205_: ;
		{
			result = semWhen_9cFxfe3QuUjcGT0YjtIGZ4g(c, n, NIM_FALSE);
			{
				if (!(result == n)) goto LA210_;
				result = semWhen_9cFxfe3QuUjcGT0YjtIGZ4g(c, n, NIM_TRUE);
			}
			goto LA208_;
			LA210_: ;
			{
				result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, result, flags);
			}
			LA208_: ;
		}
		LA203_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
	{
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 1), (*(*c).graph).config);
		result = semArrayAccess_k2Lin9a76VyrWz9b8OoRC9apg_20(c, n, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 40):
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T215_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T216_;
		T215_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T215_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_61));
		T216_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T216_ = buildOverloadedSubscripts_vzb67e0e3FoItZbupP4kXw(n, T215_);
		result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, T216_, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 43):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* expr;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* pragma;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* pragmaName;
		tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags_2;
		tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw T218_;
		expr = (*n)._Ukind.S6.sons->data[((NI) 0)];
		pragma = (*n)._Ukind.S6.sons->data[((NI) 1)];
		pragmaName = considerQuotedIdent_dlJ1cSHMk9aTfy1GKWzvc7w(c, (*pragma)._Ukind.S6.sons->data[((NI) 0)], NIM_NIL);
		flags_2 = flags;
		T218_ = (tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw)0;
		T218_ = whichKeyword_6Crk8YhMgh1FqDtsVJsurA(pragmaName);
		switch (T218_) {
		case ((tyEnum_TSpecialWord_ycbpMCRV6Cd2eBh3X9biEiw) 202):
		{
			flags_2 |= ((NU32)1)<<((((tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ) 9))%(sizeof(NU32)*8));
		}
		break;
		default:
		{
			invalidPragma_1WVlSs3wEY09cBA840p9cW9bw_2(c, n);
		}
		break;
		}
		result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 0)], flags_2);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160):
	{
		tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg T222_;
		T222_ = (tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg)0;
		T222_ = checkPar_DvJLKuffhnf89a8TOUWgNFw(c, n);
		switch (T222_) {
		case ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 0):
		{
			result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
		}
		break;
		case ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 3):
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tupexp;
			tupexp = semTuplePositionsConstr_k2Lin9a76VyrWz9b8OoRC9apg_21(c, n, flags);
			{
				NIM_BOOL T227_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ_2;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T230_;
				T227_ = (NIM_BOOL)0;
				T227_ = isTupleType_J6cfuIanCXYEsLNE8M8o9cQ_6(tupexp);
				if (!T227_) goto LA228_;
				T230_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T230_ = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w(c, n, NIM_NIL);
				typ_2 = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg(T230_, 256);
				asgnRefNoCycle((void**) (&(*result).typ), makeTypeDesc_CGG6f9aDDKwe5XsBhHkrwXQ(c, typ_2));
			}
			goto LA225_;
			LA228_: ;
			{
				result = tupexp;
			}
			LA225_: ;
		}
		break;
		case ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 2):
		{
			result = semTupleFieldsConstr_k2Lin9a76VyrWz9b8OoRC9apg_22(c, n, flags);
		}
		break;
		case ((tyEnum_TParKind_halZ9aqjYDH0l2n5E6sCJdg) 1):
		{
			result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 0)], flags);
		}
		break;
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 39):
	{
		result = semSetConstr_U3qPBy54f1PkCP8vmFMCRA_36(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41):
	{
		result = semArrayConstr_k2Lin9a76VyrWz9b8OoRC9apg_23(c, n, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 38):
	{
		result = semObjConstr_k2Lin9a76VyrWz9b8OoRC9apg_13(c, n, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	{
		result = semLambda_k2Lin9a76VyrWz9b8OoRC9apg_24(c, n, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 47):
	{
		result = semDeref_U3qPBy54f1PkCP8vmFMCRA_15(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 63):
	{
		result = n;
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 1), (*(*c).graph).config);
		result = semAddr_9a0tqA9cvykbsNlTYkUMQoBw(c, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_FALSE);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 64):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65):
	{
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 1), (*(*c).graph).config);
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 0)], flags));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 61):
	{
		result = semCast_U3qPBy54f1PkCP8vmFMCRA_37(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 48):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92):
	{
		result = semIf_k2Lin9a76VyrWz9b8OoRC9apg_25(c, n, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 60):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32):
	{
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 2), (*(*c).graph).config);
		considerGenSyms_JMRw3CfqAItK89bIwCvG68w(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 71):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 72):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 66):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 67):
	{
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 1), (*(*c).graph).config);
		considerGenSyms_JMRw3CfqAItK89bIwCvG68w(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 68):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 69):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 70):
	{
		checkSonsLen_EezdXeDvu4rB7fR84AJZgw(n, ((NI) 3), (*(*c).graph).config);
		considerGenSyms_JMRw3CfqAItK89bIwCvG68w(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 46):
	{
		checkMinSonsLen_EezdXeDvu4rB7fR84AJZgw_2(n, ((NI) 2), (*(*c).graph).config);
		considerGenSyms_JMRw3CfqAItK89bIwCvG68w(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 54):
	{
		result = semTableConstr_U3qPBy54f1PkCP8vmFMCRA_39(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 56):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 57):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 62):
	{
		result = semStaticExpr_U3qPBy54f1PkCP8vmFMCRA_29(c, (*n)._Ukind.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73):
	{
		result = semAsgn_mYOjn9apkbeBan9ajgaE2iOg(c, n, ((tyEnum_SemAsgnMode_e9aTobe3zFbbfTs9bHC7XMIQ) 0));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 127):
	{
		result = semBlock_k2Lin9a76VyrWz9b8OoRC9apg_27(c, n, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126):
	{
		result = semStmtList_k2Lin9a76VyrWz9b8OoRC9apg_28(c, n, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 108):
	{
		result = semRaise_U3qPBy54f1PkCP8vmFMCRA_40(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99):
	{
		result = semVarOrLet_I9cBPmta6MGSAD7D9bx6dHLA(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 8));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 100):
	{
		result = semVarOrLet_I9cBPmta6MGSAD7D9bx6dHLA(c, n, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 9));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 101):
	{
		result = semConst_U3qPBy54f1PkCP8vmFMCRA_41(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	{
		result = semTypeSection_U3qPBy54f1PkCP8vmFMCRA_42(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 114):
	{
		result = semDiscard_U3qPBy54f1PkCP8vmFMCRA_44(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96):
	{
		result = semWhile_k2Lin9a76VyrWz9b8OoRC9apg_29(c, n, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 106):
	{
		result = semTry_k2Lin9a76VyrWz9b8OoRC9apg_30(c, n, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 110):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 111):
	{
		result = semBreakOrContinue_U3qPBy54f1PkCP8vmFMCRA_45(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 94):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 95):
	{
		result = semFor_k2Lin9a76VyrWz9b8OoRC9apg_31(c, n, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 97):
	{
		result = semCase_k2Lin9a76VyrWz9b8OoRC9apg_34(c, n, flags);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 109):
	{
		result = semReturn_U3qPBy54f1PkCP8vmFMCRA_48(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 124):
	{
		result = semUsing_U3qPBy54f1PkCP8vmFMCRA_49(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 89):
	{
		result = semAsm_U3qPBy54f1PkCP8vmFMCRA_50(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 104):
	{
		result = semYield_U3qPBy54f1PkCP8vmFMCRA_51(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 90):
	{
		pragma_av9bQYmoLtJKLA6ueIgHxoA(c, (*(*c).p).owner, n, TM_rF9caJawfOjYTjsgLVUSGFA_413);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	{
		result = semIterator_U3qPBy54f1PkCP8vmFMCRA_52(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79):
	{
		result = semProc_U3qPBy54f1PkCP8vmFMCRA_53(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
		result = semFunc_U3qPBy54f1PkCP8vmFMCRA_54(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 80):
	{
		result = semMethod_U3qPBy54f1PkCP8vmFMCRA_55(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	{
		result = semConverterDef_U3qPBy54f1PkCP8vmFMCRA_56(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 82):
	{
		result = semMacroDef_U3qPBy54f1PkCP8vmFMCRA_57(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83):
	{
		result = semTemplateDef_U3qPBy54f1PkCP8vmFMCRA_34(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 116):
	{
		{
			NimStringDesc* T281_;
			if (!((NI)(((NI) 2) + (*c).compilesContextId) < (*(*c).currentScope).depthLevel)) goto LA279_;
			T281_ = (NimStringDesc*)0;
			T281_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_52), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_425));
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T281_);
		}
		LA279_: ;
		result = evalImport_gCYkvDaBlfo0ipHm82bnAQ(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 117):
	{
		{
			NIM_BOOL T285_;
			NimStringDesc* T288_;
			T285_ = (NIM_BOOL)0;
			T285_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
			if (!!(T285_)) goto LA286_;
			T288_ = (NimStringDesc*)0;
			T288_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_52), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_425));
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T288_);
		}
		LA286_: ;
		result = evalImportExcept_gCYkvDaBlfo0ipHm82bnAQ_3(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 120):
	{
		{
			NIM_BOOL T292_;
			NimStringDesc* T295_;
			T292_ = (NIM_BOOL)0;
			T292_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
			if (!!(T292_)) goto LA293_;
			T295_ = (NimStringDesc*)0;
			T295_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_52), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_426));
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T295_);
		}
		LA293_: ;
		result = evalFrom_gCYkvDaBlfo0ipHm82bnAQ_4(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 121):
	{
		result = evalInclude_U3qPBy54f1PkCP8vmFMCRA_58(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 118):
	{
		{
			NIM_BOOL T300_;
			NimStringDesc* T303_;
			T300_ = (NIM_BOOL)0;
			T300_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
			if (!!(T300_)) goto LA301_;
			T303_ = (NimStringDesc*)0;
			T303_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_52), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_53));
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T303_);
		}
		LA301_: ;
		result = semExport_U3qPBy54f1PkCP8vmFMCRA_59(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 119):
	{
		{
			NIM_BOOL T307_;
			NimStringDesc* T310_;
			T307_ = (NIM_BOOL)0;
			T307_ = isTopLevel_HuH6bLFuQVOB69ctxDCtFwQsem(c);
			if (!!(T307_)) goto LA308_;
			T310_ = (NimStringDesc*)0;
			T310_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_52), ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_53));
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T310_);
		}
		LA308_: ;
		result = semExportExcept_U3qPBy54f1PkCP8vmFMCRA_60(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 91):
	{
		result = semPragmaBlock_U3qPBy54f1PkCP8vmFMCRA_61(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 113):
	{
		result = semStaticStmt_U3qPBy54f1PkCP8vmFMCRA_62(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 105):
	{
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[((NI) 0)], 0));
		{
			NIM_BOOL T316_;
			NIM_BOOL T317_;
			NIM_BOOL T319_;
			T316_ = (NIM_BOOL)0;
			T317_ = (NIM_BOOL)0;
			T317_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*(*n)._Ukind.S6.sons->data[((NI) 0)]).typ);
			T316_ = !(T317_);
			if (!(T316_)) goto LA318_;
			T319_ = (NIM_BOOL)0;
			T319_ = implicitlyDiscardable_J6cfuIanCXYEsLNE8M8o9cQ((*n)._Ukind.S6.sons->data[((NI) 0)]);
			T316_ = !(T319_);
			LA318_: ;
			if (!T316_) goto LA320_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_430));
		}
		LA320_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 157):
	{
		{
			NIM_BOOL T325_;
			NI T326_;
			NI T328_;
			T325_ = (NIM_BOOL)0;
			T326_ = (NI)0;
			T326_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			T325_ = !((T326_ == ((NI) 1)));
			if (!(T325_)) goto LA327_;
			T328_ = (NI)0;
			T328_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			T325_ = !((T328_ == ((NI) 2)));
			LA327_: ;
			if (!T325_) goto LA329_;
			illFormedAst_aOnJJ9cXkOooTyUuLmnc09bw(n, (*(*c).graph).config);
		}
		LA329_: ;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA333;
					i = i_2;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, (*n)._Ukind.S6.sons->data[i], 0));
					i_2 += ((NI) 1);
				} LA333: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 24):
	{
	}
	break;
	default:
	{
		NimStringDesc* T336_;
		NimStringDesc* T337_;
		T336_ = (NimStringDesc*)0;
		T337_ = (NimStringDesc*)0;
		T337_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 4);
		T336_ = rawNewString((T337_ ? T337_->Sup.len : 0) + 20);
appendString(T336_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_431));
appendString(T336_, T337_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T336_);
	}
	break;
	}
	{
		if (!!((result == NIM_NIL))) goto LA340_;
		(*result).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 7))%(sizeof(NU32)*8));
	}
	LA340_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, n, (flags | 2048));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (result == 0);
		if (T3_) goto LA4_;
		T3_ = ((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
	}
	LA5_: ;
	{
		NIM_BOOL T9_;
		NimStringDesc* T13_;
		NimStringDesc* T14_;
		T9_ = (NIM_BOOL)0;
		T9_ = ((*result).typ == NIM_NIL);
		if (T9_) goto LA10_;
		T9_ = ((*result).typ == (*c).enforceVoidContext);
		LA10_: ;
		if (!T9_) goto LA11_;
		T13_ = (NimStringDesc*)0;
		T13_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(result, 4);
		T14_ = (NimStringDesc*)0;
		T14_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_389), T13_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T14_);
		asgnRefNoCycle((void**) (&(*result).typ), errorType_5olHzpuoNS9asyp0iz7j62Q(c));
	}
	goto LA7_;
	LA11_: ;
	{
		{
			if (!((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47))) goto LA18_;
			result = newDeref_HtAG89bn1UDHEhRcS27NOXQlocals(result);
		}
		LA18_: ;
	}
	LA7_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semConstExpr_U3qPBy54f1PkCP8vmFMCRA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	e = semExprWithType_k2Lin9a76VyrWz9b8OoRC9apg(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_176));
		result = n;
		goto BeforeRet_;
	}
	LA3_: ;
	result = getConstExpr_A7gcXCy5E3uGBy5F37NoHA((*c).module, e, (*c).graph);
	{
		if (!(result == NIM_NIL)) goto LA7_;
		result = evalConstExpr_P8uF2QSxl7YdNpBnl0Ybqg((*c).module, (*c).graph, e);
		{
			NIM_BOOL T11_;
			T11_ = (NIM_BOOL)0;
			T11_ = (result == NIM_NIL);
			if (T11_) goto LA12_;
			T11_ = ((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
			LA12_: ;
			if (!T11_) goto LA13_;
			{
				NIM_BOOL T17_;
				T17_ = (NIM_BOOL)0;
				T17_ = eqeq__5bLVfxs9cYu4c49a4GRwvdfw((*e).info, (*n).info);
				if (!!(T17_)) goto LA18_;
				pushInfoContext_jVPMMc4H29cyI52qg0Kp9aUg((*(*c).graph).config, (*n).info);
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*e).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_176));
				popInfoContext_HFVjkUQz7LMV9aOS6uKLckQ((*(*c).graph).config);
			}
			goto LA15_;
			LA18_: ;
			{
				localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*e).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_176));
			}
			LA15_: ;
			result = e;
		}
		goto LA9_;
		LA13_: ;
		{
			result = fixupTypeAfterEval_dGBK19cpTWH2Y7y5AybM0IA(c, result, e);
		}
		LA9_: ;
	}
	LA7_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semOperand_k2Lin9a76VyrWz9b8OoRC9apg_35)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TExprFlag_0WWd9a4ssQWuY7Q6ZKepq9cQ flags) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, n, (flags | 4096));
	{
		if (!!(((*result).typ == NIM_NIL))) goto LA3_;
		{
			NIM_BOOL T7_;
			NimStringDesc* T11_;
			NimStringDesc* T12_;
			T7_ = (NIM_BOOL)0;
			T7_ = ((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25));
			if (!(T7_)) goto LA8_;
			T7_ = (((*(*result).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0);
			LA8_: ;
			if (!T7_) goto LA9_;
			T11_ = (NimStringDesc*)0;
			T11_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(n, 0);
			T12_ = (NimStringDesc*)0;
			T12_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_339), T11_);
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T12_);
		}
		LA9_: ;
		{
			if (!((*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*(*result).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47))) goto LA15_;
			result = newDeref_HtAG89bn1UDHEhRcS27NOXQlocals(result);
		}
		LA15_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		if (!!(((192 & flags) == 0))) goto LA18_;
		asgnRefNoCycle((void**) (&(*result).typ), newTypeS_tLJOzl5Er4FHfvqHLmX9b9bQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63), c));
	}
	goto LA1_;
	LA18_: ;
	{
		NimStringDesc* T21_;
		NimStringDesc* T22_;
		T21_ = (NimStringDesc*)0;
		T21_ = renderTree_ppjdh9aQ5L0SGPF8yz1gZ9cA(result, 4);
		T22_ = (NimStringDesc*)0;
		T22_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_389), T21_);
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T22_);
		asgnRefNoCycle((void**) (&(*result).typ), errorType_5olHzpuoNS9asyp0iz7j62Q(c));
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semInferredLambda_nUolYikDV8g9cImNPfBH3AA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TIdTable_9aiv9bp2t5icFNINcg9c4xi1Q pt, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* original;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params;
	tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw* T9_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* semBody;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T10_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	n_2 = n;
	original = (*(*n_2)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
	s = original;
	n_2 = replaceTypesInBody_i1ETEr6qoyCka9bRoDtUctw(c, pt, n_2, original, NIM_FALSE);
	result = n_2;
	asgnRefNoCycle((void**) (&(*s).ast), result);
	asgnRefNoCycle((void**) (&(*(*n_2)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym), s);
	asgnRefNoCycle((void**) (&(*n_2)._Ukind.S6.sons->data[((NI) 2)]), (*(*c).graph).emptyNode);
	params = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*(*n_2).typ).n);
	asgnRefNoCycle((void**) (&(*n_2)._Ukind.S6.sons->data[((NI) 3)]), params);
	asgnRefNoCycle((void**) (&(*s).typ), (*n_2).typ);
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(params);
		i_2 = ((NI) 1);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				{
					NimStringDesc* T8_;
					if (!((*(*(*params)._Ukind.S6.sons->data[i]).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8) || (*(*(*params)._Ukind.S6.sons->data[i]).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12) || (*(*(*params)._Ukind.S6.sons->data[i]).typ).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 51) && (*(*(*params)._Ukind.S6.sons->data[i]).typ).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54) || (*(*(*params)._Ukind.S6.sons->data[i]).typ).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 56) && (*(*(*params)._Ukind.S6.sons->data[i]).typ).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 59) || (*(*(*params)._Ukind.S6.sons->data[i]).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61))) goto LA6_;
					T8_ = (NimStringDesc*)0;
					T8_ = rawNewString(((*(*(*(*params)._Ukind.S6.sons->data[i])._Ukind.S4.sym).name).s ? (*(*(*(*params)._Ukind.S6.sons->data[i])._Ukind.S4.sym).name).s->Sup.len : 0) + 32);
appendString(T8_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_432));
appendString(T8_, (*(*(*(*params)._Ukind.S6.sons->data[i])._Ukind.S4.sym).name).s);
					localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*(*params)._Ukind.S6.sons->data[i]).info, T8_);
				}
				LA6_: ;
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	T9_ = (tyObject_TScope_1cQRXW6aAknk7ywAwjH3nw*)0;
	T9_ = openScope_I8L4Lnrah88WDc4sPJzbjQ(c);
	pushOwner_Wu2m3sh279aYfWNXavlKecA(c, s);
	addParams_ZGxWSZNSlj0lQFGwU8y5Eg_2(c, params, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12));
	pushProcCon_rlp4YNQ9cuQQzIjJRzZxqsA_3(c, s);
	addResult_VjjspC9bBTueJBUiTQeKIpQ(c, (*(*n_2).typ).sons->data[((NI) 0)], (*n_2).info, ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 12));
	addResultNode_9aKmRFIRmowmJXCJbF9aObuQ_2(c, n_2);
	T10_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T10_ = semProcBody_U3qPBy54f1PkCP8vmFMCRA_4(c, (*n_2)._Ukind.S6.sons->data[((NI) 6)]);
	semBody = hloBody_U3qPBy54f1PkCP8vmFMCRA_9(c, T10_);
	asgnRefNoCycle((void**) (&(*n_2)._Ukind.S6.sons->data[((NI) 6)]), transformBody_80mJDJ8hRZ7Zm2rfDijiOQ((*c).graph, (*c).module, semBody, s));
	popProcCon_SSNSh333Y0csrmTQnH74tQsem(c);
	popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw(c);
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TPassContext_ZmGcnZ1NlGbjfV1h4uuYdw*, myOpen_mimiOrSvurIJ07fII11nTw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module) {
	tyObject_TPassContext_ZmGcnZ1NlGbjfV1h4uuYdw* result;
	tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c;
	tyProc_VLr034hEi5eNsjZoyvf2Xg T5_;
	tyProc_IkMmlSMKq2j1qu5KCaRjEg T6_;
	result = (tyObject_TPassContext_ZmGcnZ1NlGbjfV1h4uuYdw*)0;
	c = newContext_0BKaTX1MtNRievQXkE1rGQ(graph, module);
	{
		if (!!(((*c).p == NIM_NIL))) goto LA3_;
		internalError_yTu5SGHF0j0P9cQrqN7YylA((*graph).config, (*module).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_2));
	}
	LA3_: ;
	(*c).semConstExpr = semConstExpr_U3qPBy54f1PkCP8vmFMCRA;
	(*c).semExpr = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2;
	(*c).semTryExpr = tryExpr_k2Lin9a76VyrWz9b8OoRC9apg_16;
	(*c).semTryConstExpr = tryConstExpr_U3qPBy54f1PkCP8vmFMCRA_30;
	(*c).semOperand = semOperand_k2Lin9a76VyrWz9b8OoRC9apg_35;
	(*c).semConstBoolExpr = semConstBoolExpr_U3qPBy54f1PkCP8vmFMCRA_26;
	(*c).semOverloadedCall = semOverloadedCall_z9bsZfns7wNaCTMF0VgboGQ;
	nimZeroMem((void*)(&T5_), sizeof(tyProc_VLr034hEi5eNsjZoyvf2Xg));
	T5_.ClP_0 = ((TM_rF9caJawfOjYTjsgLVUSGFA_433) (semInferredLambda_nUolYikDV8g9cImNPfBH3AA)); T5_.ClE_0 = NIM_NIL;
	asgnRef((void**) (&(*c).semInferredLambda.ClE_0), T5_.ClE_0);
	(*c).semInferredLambda.ClP_0 = T5_.ClP_0;
	nimZeroMem((void*)(&T6_), sizeof(tyProc_IkMmlSMKq2j1qu5KCaRjEg));
	T6_.ClP_0 = ((TM_rF9caJawfOjYTjsgLVUSGFA_434) (generateInstance_g9b7H3AgWQ9ciaW2dF0vQm9ag)); T6_.ClE_0 = NIM_NIL;
	asgnRef((void**) (&(*c).semGenerateInstance.ClE_0), T6_.ClE_0);
	(*c).semGenerateInstance.ClP_0 = T6_.ClP_0;
	(*c).semTypeNode = semTypeNode_VyBZhWPO9cyRyURhXkNKu7w;
	(*c).instTypeBoundOp = instTypeBoundOp_XFpODcQSqsrMUhuPBJxxXg;
	pushProcCon_rlp4YNQ9cuQQzIjJRzZxqsA_3(c, module);
	pushOwner_Wu2m3sh279aYfWNXavlKecA(c, (*c).module);
	asgnRef((void**) (&(*c).importTable), openScope_I8L4Lnrah88WDc4sPJzbjQ(c));
	strTableAdd_bNTI8uh3GP35hzyXvGA8Xg((&(*(*c).importTable).symbols), module);
	{
		if (!(((*module).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 13))&63U)))!=0)) goto LA9_;
		asgnRefNoCycle((void**) (&(*graph).systemModule), module);
	}
	LA9_: ;
	asgnRef((void**) (&(*c).topLevelScope), openScope_I8L4Lnrah88WDc4sPJzbjQ(c));
	{
		if (!((*(*module).owner).Sup.id == (*(*graph).config).mainPackageId)) goto LA13_;
		(*(*graph).config).notes = (*(*graph).config).mainPackageNotes;
	}
	goto LA11_;
	LA13_: ;
	{
		{
			if (!((*(*graph).config).mainPackageNotes == 0)) goto LA18_;
			(*(*graph).config).mainPackageNotes = (*(*graph).config).notes;
		}
		LA18_: ;
		(*(*graph).config).notes = (*(*graph).config).foreignPackageNotes;
	}
	LA11_: ;
	result = &c->Sup;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isImportSystemStmt_Py1GUj7PccyIa3ac40A6MA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		if (!((*g).systemModule == NIM_NIL)) goto LA3_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA3_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 116):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
			x = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
				i_2 = ((NI) 0);
				{
					while (1) {
						if (!(i_2 < colontmp_)) goto LA9;
						i = i_2;
						x = (*n)._Ukind.S6.sons->data[i];
						{
							NI32 f;
							if (!((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA12_;
							f = checkModuleName_fDy39b69bb9cFVEyPkMJp3GTg((*g).config, x, NIM_FALSE);
							{
								if (!(f == (*(*g).systemModule).info.fileIndex)) goto LA16_;
								result = NIM_TRUE;
								goto BeforeRet_;
							}
							LA16_: ;
						}
						LA12_: ;
						i_2 += ((NI) 1);
					} LA9: ;
				}
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 117):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 120):
	{
		{
			NI32 f_2;
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2))) goto LA21_;
			f_2 = checkModuleName_fDy39b69bb9cFVEyPkMJp3GTg((*g).config, (*n)._Ukind.S6.sons->data[((NI) 0)], NIM_FALSE);
			{
				if (!(f_2 == (*(*g).systemModule).info.fileIndex)) goto LA25_;
				result = NIM_TRUE;
				goto BeforeRet_;
			}
			LA25_: ;
		}
		LA21_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isEmptyTree_J6cfuIanCXYEsLNE8M8o9cQ_9)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
			it = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
				i_2 = ((NI) 0);
				{
					while (1) {
						if (!(i_2 < colontmp_)) goto LA5;
						i = i_2;
						it = (*n)._Ukind.S6.sons->data[i];
						{
							NIM_BOOL T8_;
							T8_ = (NIM_BOOL)0;
							T8_ = isEmptyTree_J6cfuIanCXYEsLNE8M8o9cQ_9(it);
							if (!!(T8_)) goto LA9_;
							result = NIM_FALSE;
							goto BeforeRet_;
						}
						LA9_: ;
						i_2 += ((NI) 1);
					} LA5: ;
				}
			}
		}
		result = NIM_TRUE;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
	{
		result = NIM_TRUE;
	}
	break;
	default:
	{
		result = NIM_FALSE;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, gatherStmts_SHFfWfNEv12ytYRlK6uj3g)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result) {
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 121):
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					NI32 f;
					if (!(i_2 < colontmp_)) goto LA4;
					i = i_2;
					f = checkModuleName_fDy39b69bb9cFVEyPkMJp3GTg((*(*c).graph).config, (*n)._Ukind.S6.sons->data[i], NIM_TRUE);
					{
						if (!!((f == ((NI32) -1)))) goto LA7_;
						{
							NIM_BOOL T11_;
							NimStringDesc* T14_;
							NimStringDesc* T22_;
							T11_ = (NIM_BOOL)0;
							T11_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg((&(*c).includedFiles), ((NI) (f)));
							if (!T11_) goto LA12_;
							T14_ = (NimStringDesc*)0;
							{
								NIM_BOOL T17_;
								T17_ = (NIM_BOOL)0;
								T17_ = (f < ((NI32) 0));
								if (T17_) goto LA18_;
								T17_ = ((*(*c).graph).config == NIM_NIL);
								LA18_: ;
								if (!T17_) goto LA19_;
								T14_ = copyString(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_166));
							}
							goto LA15_;
							LA19_: ;
							{
								T14_ = copyString((*(*(*c).graph).config).m.fileInfos->data[f].projPath);
							}
							LA15_: ;
							T22_ = (NimStringDesc*)0;
							T22_ = nsuFormatSingleElem(((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_5), T14_);
							localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, T22_);
						}
						goto LA9_;
						LA12_: ;
						{
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* code;
							code = (*(*c).graph).includeFileCallback((*c).graph, (*c).module, f);
							gatherStmts_SHFfWfNEv12ytYRlK6uj3g(c, code, result);
							excl_iUpE9bYmIR0fROyJskQwN8g_2((&(*c).includedFiles), ((NI) (f)));
						}
						LA9_: ;
					}
					LA7_: ;
					i_2 += ((NI) 1);
				} LA4: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115):
	{
		{
			NI i_3;
			NI colontmp__2;
			NI i_4;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_4 = ((NI) 0);
			{
				while (1) {
					if (!(i_4 < colontmp__2)) goto LA27;
					i_3 = i_4;
					gatherStmts_SHFfWfNEv12ytYRlK6uj3g(c, (*n)._Ukind.S6.sons->data[i_3], result);
					i_4 += ((NI) 1);
				} LA27: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	{
		(*n).flags |= ((NU32)1)<<((((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 7))%(sizeof(NU32)*8));
		typeSectionLeftSidePass_wkwHEj6zZnYo2DMZys6jnA_9(c, n);
		add_gCCf68XrWL79bKes6htzFjQ(result, n);
	}
	break;
	default:
	{
		add_gCCf68XrWL79bKes6htzFjQ(result, n);
	}
	break;
	}
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semAllTypeSections_U3qPBy54f1PkCP8vmFMCRA_64)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
	gatherStmts_SHFfWfNEv12ytYRlK6uj3g(c, n, result);
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				{
					if (!((*(*result)._Ukind.S6.sons->data[i]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98))) goto LA6_;
					typeSectionRightSidePass_wkwHEj6zZnYo2DMZys6jnA_10(c, (*result)._Ukind.S6.sons->data[i]);
				}
				LA6_: ;
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NI i_3;
		NI colontmp__2;
		NI i_4;
		i_3 = (NI)0;
		colontmp__2 = (NI)0;
		colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
		i_4 = ((NI) 0);
		{
			while (1) {
				if (!(i_4 < colontmp__2)) goto LA10;
				i_3 = i_4;
				{
					if (!((*(*result)._Ukind.S6.sons->data[i_3]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98))) goto LA13_;
					typeSectionFinalPass_wkwHEj6zZnYo2DMZys6jnA_11(c, (*result)._Ukind.S6.sons->data[i_3]);
				}
				LA13_: ;
				i_4 += ((NI) 1);
			} LA10: ;
		}
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, hloStmt_U3qPBy54f1PkCP8vmFMCRA_65)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NI T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = ((*c).patterns ? (*c).patterns->Sup.len : 0);
		T3_ = (T4_ == ((NI) 0));
		if (T3_) goto LA5_;
		T3_ = !((((*(*(*c).graph).config).options &(1U<<((NU)(((tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg) 22))&31U)))!=0));
		LA5_: ;
		if (!T3_) goto LA6_;
		result = n;
		goto BeforeRet_;
	}
	LA6_: ;
	(*c).hloLoopDetector = ((NI) 0);
	result = hlo_U3qPBy54f1PkCP8vmFMCRA_10(c, n);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, buildEchoStmt_U3qPBy54f1PkCP8vmFMCRA_66)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* e;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info);
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*c).cache, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_436));
	e = strTableGet_0xgFDJUQtGGr2e0Sq9aLIhA((*(*(*c).graph).systemModule)._Ukind.S3.tab, T1_);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
		if (!!((e == NIM_NIL))) goto LA4_;
		T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = newSymNode_UWZXukHA5As9aCftRHbafBg(e);
		add_gCCf68XrWL79bKes6htzFjQ(result, T6_);
	}
	goto LA2_;
	LA4_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T8_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_437));
		T8_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T8_ = errorNode_9bxkVMWst1k8EaGgcgRhHwA_2(c, n);
		add_gCCf68XrWL79bKes6htzFjQ(result, T8_);
	}
	LA2_: ;
	add_gCCf68XrWL79bKes6htzFjQ(result, n);
	result = semExpr_k2Lin9a76VyrWz9b8OoRC9apg_2(c, result, 0);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, semStmtAndGenerateGenerics_U3qPBy54f1PkCP8vmFMCRA_63)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 105))) goto LA3_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_435));
	}
	LA3_: ;
	{
		NIM_BOOL T7_;
		NIM_BOOL T9_;
		T7_ = (NIM_BOOL)0;
		T7_ = ((*c).topStmts == ((NI) 0));
		if (!(T7_)) goto LA8_;
		T9_ = (NIM_BOOL)0;
		T9_ = isImportSystemStmt_Py1GUj7PccyIa3ac40A6MA((*c).graph, n);
		T7_ = !(T9_);
		LA8_: ;
		if (!T7_) goto LA10_;
		{
			NIM_BOOL T14_;
			NIM_BOOL T16_;
			T14_ = (NIM_BOOL)0;
			T14_ = !((((*(*c).module).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 13))&63U)))!=0));
			if (!(T14_)) goto LA15_;
			T16_ = (NIM_BOOL)0;
			T16_ = isEmptyTree_J6cfuIanCXYEsLNE8M8o9cQ_9(n);
			T14_ = !(T16_);
			LA15_: ;
			if (!T14_) goto LA17_;
			strTableAdd_bNTI8uh3GP35hzyXvGA8Xg((&(*(*c).importTable).symbols), (*(*c).graph).systemModule);
			importAllSymbols_LCU9aV1qYx9bH8WRDNIJSaMg(c, (*(*c).graph).systemModule);
			(*c).topStmts += ((NI) 1);
		}
		LA17_: ;
	}
	goto LA5_;
	LA10_: ;
	{
		(*c).topStmts += ((NI) 1);
	}
	LA5_: ;
	{
		if (!(((*(*c).module).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 8))&63U)))!=0)) goto LA22_;
		result = semAllTypeSections_U3qPBy54f1PkCP8vmFMCRA_64(c, n);
	}
	goto LA20_;
	LA22_: ;
	{
		result = n;
	}
	LA20_: ;
	result = semStmt_k2Lin9a76VyrWz9b8OoRC9apg_3(c, result, 0);
	result = hloStmt_U3qPBy54f1PkCP8vmFMCRA_65(c, result);
	{
		NIM_BOOL T27_;
		NIM_BOOL T29_;
		T27_ = (NIM_BOOL)0;
		T27_ = ((*(*(*c).graph).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 18));
		if (!(T27_)) goto LA28_;
		T29_ = (NIM_BOOL)0;
		T29_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*result).typ);
		T27_ = !(T29_);
		LA28_: ;
		if (!T27_) goto LA30_;
		result = buildEchoStmt_U3qPBy54f1PkCP8vmFMCRA_66(c, result);
	}
	LA30_: ;
	{
		if (!((*(*(*c).graph).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 14))) goto LA34_;
		appendToModule_ZO6kFegrIXe9bUOHAHOb9cIA((*c).module, result);
	}
	LA34_: ;
	result = transformStmt_o9bTtoSsaDmuiyVzV15dOyg_2((*c).graph, (*c).module, result);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, recoverContext_DVXG9boTvSy4MO1ucqcedLA)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c) {
	asgnRef((void**) (&(*c).currentScope), (*c).topLevelScope);
	{
		while (1) {
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T3_;
			T3_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
			T3_ = getCurrOwner_tcF0JuW5v7GcLQ0Vix7jCg(c);
			if (!!(((*T3_).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6)))) goto LA2;
			popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw(c);
		} LA2: ;
	}
	{
		while (1) {
			NIM_BOOL T6_;
			T6_ = (NIM_BOOL)0;
			T6_ = !(((*c).p == NIM_NIL));
			if (!(T6_)) goto LA7_;
			T6_ = !(((*(*(*c).p).owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6)));
			LA7_: ;
			if (!T6_) goto LA5;
			asgnRef((void**) (&(*c).p), (*(*c).p).next);
		} LA5: ;
	}
}

static N_INLINE(NIM_BOOL, isObjWithCache)(TNimType* obj, TNimType* subclass, TNimType** cache) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		if (!(obj == subclass)) goto LA3_;
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		if (!((*obj).base == subclass)) goto LA7_;
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA7_: ;
	{
		if (!(cache[(((NI) 0))- 0] == obj)) goto LA11_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA11_: ;
	{
		if (!(cache[(((NI) 1))- 0] == obj)) goto LA15_;
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA15_: ;
	result = isObjSlowPath_yEa9cUwzxhGRtg9cspcfCIHg(obj, subclass, cache);
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, myProcess_QU9a71e1BPLMdBI4ZXd9bItQ)(tyObject_TPassContext_ZmGcnZ1NlGbjfV1h4uuYdw* context, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* volatile result;
	tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	c = ((tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA*) (context));
	{
		if (!((*(*(*c).graph).config).errorMax <= ((NI) 1))) goto LA3_;
		result = semStmtAndGenerateGenerics_U3qPBy54f1PkCP8vmFMCRA_63(c, n);
	}
	goto LA1_;
	LA3_: ;
	{
		NI oldContextLen;
		NI oldInGenericInst;
		TSafePoint TM_rF9caJawfOjYTjsgLVUSGFA_438;
		oldContextLen = getInfoContextLen_i4TL6lhQkdfTCMQPkAA29bQ((*(*c).graph).config);
		oldInGenericInst = (*c).inGenericInst;
		pushSafePoint(&TM_rF9caJawfOjYTjsgLVUSGFA_438);
		TM_rF9caJawfOjYTjsgLVUSGFA_438.status = setjmp(TM_rF9caJawfOjYTjsgLVUSGFA_438.context);
		if (TM_rF9caJawfOjYTjsgLVUSGFA_438.status == 0) {
			result = semStmtAndGenerateGenerics_U3qPBy54f1PkCP8vmFMCRA_63(c, n);
			popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(getCurrentException()->Sup.m_type, (&NTI_AQaBoN9cWXPQJGaPX5hY5PQ_))||isObj(getCurrentException()->Sup.m_type, (&NTI_TdMiV9cwBMgh9a9czKts6Kujw_))) {
				TM_rF9caJawfOjYTjsgLVUSGFA_438.status = 0;
				recoverContext_DVXG9boTvSy4MO1ucqcedLA(c);
				(*c).inGenericInst = oldInGenericInst;
				setInfoContextLen_VesEIs1bHpks19b5m8CmDOw((*(*c).graph).config, oldContextLen);
				{
					Exception* T11_;
					T11_ = (Exception*)0;
					T11_ = getCurrentException();
					if (!((T11_) && (isObjWithCache((*T11_).Sup.m_type, (&NTI_TdMiV9cwBMgh9a9czKts6Kujw_), Nim_OfCheck_CACHE440)))) goto LA12_;
					(*c).suggestionsMade = NIM_TRUE;
					result = NIM_NIL;
				}
				goto LA9_;
				LA12_: ;
				{
					result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (*n).info);
				}
				LA9_: ;
				popCurrentException();
			}
		}
		if (TM_rF9caJawfOjYTjsgLVUSGFA_438.status != 0) reraiseException();
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addCodeForGenerics_wkwHEj6zZnYo2DMZys6jnA_13)(tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI T19_;
	{
		NI i;
		NI colontmp_;
		NI colontmp__2;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp__2 = (NI)0;
		colontmp_ = (*c).lastGenericIdx;
		T2_ = ((*c).generics ? (*c).generics->Sup.len : 0);
		colontmp__2 = (NI)(T2_ - ((NI) 1));
		res = colontmp_;
		{
			while (1) {
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* prc;
				if (!(res <= colontmp__2)) goto LA4;
				i = res;
				prc = (*(*c).generics->data[i].inst).sym;
				{
					NIM_BOOL T7_;
					T7_ = (NIM_BOOL)0;
					T7_ = ((94208 &(1U<<((NU)((*prc).kind)&31U)))!=0);
					if (!(T7_)) goto LA8_;
					T7_ = ((*prc).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0));
					LA8_: ;
					if (!T7_) goto LA9_;
					{
						NIM_BOOL T13_;
						NimStringDesc* T17_;
						T13_ = (NIM_BOOL)0;
						T13_ = ((*prc).ast == NIM_NIL);
						if (T13_) goto LA14_;
						T13_ = ((*(*prc).ast)._Ukind.S6.sons->data[((NI) 6)] == NIM_NIL);
						LA14_: ;
						if (!T13_) goto LA15_;
						T17_ = (NimStringDesc*)0;
						T17_ = rawNewString(((*(*prc).name).s ? (*(*prc).name).s->Sup.len : 0) + 12);
appendString(T17_, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_441));
appendString(T17_, (*(*prc).name).s);
						internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*c).graph).config, (*prc).info, T17_);
					}
					goto LA11_;
					LA15_: ;
					{
						addSon_gCCf68XrWL79bKes6htzFjQ_2(n, (*prc).ast);
					}
					LA11_: ;
				}
				LA9_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	T19_ = ((*c).generics ? (*c).generics->Sup.len : 0);
	(*c).lastGenericIdx = T19_;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, myClose_QvgAPxEj2c0gjAL9aY8rNAQ)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TPassContext_ZmGcnZ1NlGbjfV1h4uuYdw* context, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA* c;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	c = ((tyObject_TContext_vTgAc1OsYaFyeD40uCdaWA*) (context));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*(*(*c).graph).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 14));
		if (!(T3_)) goto LA4_;
		T3_ = !((*c).suggestionsMade);
		LA4_: ;
		if (!T3_) goto LA5_;
		suggestSentinel_k8Vr9aa6E5xocVhLYhaVkBw(c);
	}
	LA5_: ;
	closeScope_q62Ixzqzx2R5yeGMamw81g(c);
	rawCloseScope_lTVzF2iZqK9cC9b7k8wNYjzQ(c);
	result = newNode_IgnRxkID5wXTWvTZf9ct0rA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115));
	{
		if (!!((n == NIM_NIL))) goto LA9_;
		internalError_yTu5SGHF0j0P9cQrqN7YylA((*(*c).graph).config, (*n).info, ((NimStringDesc*) &TM_rF9caJawfOjYTjsgLVUSGFA_440));
	}
	LA9_: ;
	addCodeForGenerics_wkwHEj6zZnYo2DMZys6jnA_13(c, result);
	{
		if (!!(((*(*c).module).ast == NIM_NIL))) goto LA13_;
		add_gCCf68XrWL79bKes6htzFjQ(result, (*(*c).module).ast);
	}
	LA13_: ;
	popOwner_DW1sfBGN9aHZ9b7BTAnG4Ppw(c);
	popProcCon_SSNSh333Y0csrmTQnH74tQsem(c);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_semInit000)(void) {
{
	TFrame FR_; FR_.len = 0;
}
}

N_LIB_PRIVATE N_NIMCALL(void, compiler_semDatInit000)(void) {
static TNimNode* TM_rF9caJawfOjYTjsgLVUSGFA_66[4];
static TNimNode* TM_rF9caJawfOjYTjsgLVUSGFA_177[3];
static TNimNode* TM_rF9caJawfOjYTjsgLVUSGFA_203[2];
static TNimNode* TM_rF9caJawfOjYTjsgLVUSGFA_360[2];
static TNimNode TM_rF9caJawfOjYTjsgLVUSGFA_0[15];
NTI_2W3DPUTABI9bVr5s0HjtwQw_.size = sizeof(tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw);
NTI_2W3DPUTABI9bVr5s0HjtwQw_.kind = 17;
NTI_2W3DPUTABI9bVr5s0HjtwQw_.base = (&NTI_ytyiCJqK439aF9cIibuRVpAg_);
TM_rF9caJawfOjYTjsgLVUSGFA_66[0] = &TM_rF9caJawfOjYTjsgLVUSGFA_0[1];
TM_rF9caJawfOjYTjsgLVUSGFA_0[1].kind = 1;
TM_rF9caJawfOjYTjsgLVUSGFA_0[1].offset = offsetof(tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw, colonstate_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[1].typ = (&NTI_xHTZrq9aYs6boc9bCba0JbpQ_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[1].name = ":state";
TM_rF9caJawfOjYTjsgLVUSGFA_66[1] = &TM_rF9caJawfOjYTjsgLVUSGFA_0[2];
TM_rF9caJawfOjYTjsgLVUSGFA_0[2].kind = 1;
TM_rF9caJawfOjYTjsgLVUSGFA_0[2].offset = offsetof(tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw, genericParams1);
TM_rF9caJawfOjYTjsgLVUSGFA_0[2].typ = (&NTI_fKfcLzXYiz5jNu3NH3Tv8Q_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[2].name = "genericParams1";
TM_rF9caJawfOjYTjsgLVUSGFA_66[2] = &TM_rF9caJawfOjYTjsgLVUSGFA_0[3];
TM_rF9caJawfOjYTjsgLVUSGFA_0[3].kind = 1;
TM_rF9caJawfOjYTjsgLVUSGFA_0[3].offset = offsetof(tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw, paramName2);
TM_rF9caJawfOjYTjsgLVUSGFA_0[3].typ = (&NTI_77mFvmsOLKik79ci2hXkHEg_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[3].name = "paramName2";
TM_rF9caJawfOjYTjsgLVUSGFA_66[3] = &TM_rF9caJawfOjYTjsgLVUSGFA_0[4];
TM_rF9caJawfOjYTjsgLVUSGFA_0[4].kind = 1;
TM_rF9caJawfOjYTjsgLVUSGFA_0[4].offset = offsetof(tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw, info3);
TM_rF9caJawfOjYTjsgLVUSGFA_0[4].typ = (&NTI_WGx4rAexNXnczy1Avn646Q_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[4].name = "info3";
TM_rF9caJawfOjYTjsgLVUSGFA_0[0].len = 4; TM_rF9caJawfOjYTjsgLVUSGFA_0[0].kind = 2; TM_rF9caJawfOjYTjsgLVUSGFA_0[0].sons = &TM_rF9caJawfOjYTjsgLVUSGFA_66[0];
NTI_2W3DPUTABI9bVr5s0HjtwQw_.node = &TM_rF9caJawfOjYTjsgLVUSGFA_0[0];
NTI_paG7yT9agkyGNp6RxMDoUcA_.size = sizeof(tyObject_Env_semtypesdotnim__2W3DPUTABI9bVr5s0HjtwQw*);
NTI_paG7yT9agkyGNp6RxMDoUcA_.kind = 22;
NTI_paG7yT9agkyGNp6RxMDoUcA_.base = (&NTI_2W3DPUTABI9bVr5s0HjtwQw_);
NTI_paG7yT9agkyGNp6RxMDoUcA_.marker = Marker_tyRef_paG7yT9agkyGNp6RxMDoUcA;
NTI_ZyVpd6P9cpAD0YrlDyaAD6g_.size = sizeof(tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g);
NTI_ZyVpd6P9cpAD0YrlDyaAD6g_.kind = 17;
NTI_ZyVpd6P9cpAD0YrlDyaAD6g_.base = (&NTI_ytyiCJqK439aF9cIibuRVpAg_);
TM_rF9caJawfOjYTjsgLVUSGFA_177[0] = &TM_rF9caJawfOjYTjsgLVUSGFA_0[6];
TM_rF9caJawfOjYTjsgLVUSGFA_0[6].kind = 1;
TM_rF9caJawfOjYTjsgLVUSGFA_0[6].offset = offsetof(tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g, colonstate_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[6].typ = (&NTI_xHTZrq9aYs6boc9bCba0JbpQ_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[6].name = ":state";
TM_rF9caJawfOjYTjsgLVUSGFA_177[1] = &TM_rF9caJawfOjYTjsgLVUSGFA_0[7];
TM_rF9caJawfOjYTjsgLVUSGFA_0[7].kind = 1;
TM_rF9caJawfOjYTjsgLVUSGFA_0[7].offset = offsetof(tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g, c1);
TM_rF9caJawfOjYTjsgLVUSGFA_0[7].typ = (&NTI_8E0VZEdYwanSe69bkIyzbDQ_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[7].name = "c1";
TM_rF9caJawfOjYTjsgLVUSGFA_177[2] = &TM_rF9caJawfOjYTjsgLVUSGFA_0[8];
TM_rF9caJawfOjYTjsgLVUSGFA_0[8].kind = 1;
TM_rF9caJawfOjYTjsgLVUSGFA_0[8].offset = offsetof(tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g, scope2);
TM_rF9caJawfOjYTjsgLVUSGFA_0[8].typ = (&NTI_N89ckikRqMir57209a3tEeqw_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[8].name = "scope2";
TM_rF9caJawfOjYTjsgLVUSGFA_0[5].len = 3; TM_rF9caJawfOjYTjsgLVUSGFA_0[5].kind = 2; TM_rF9caJawfOjYTjsgLVUSGFA_0[5].sons = &TM_rF9caJawfOjYTjsgLVUSGFA_177[0];
NTI_ZyVpd6P9cpAD0YrlDyaAD6g_.node = &TM_rF9caJawfOjYTjsgLVUSGFA_0[5];
NTI_SpPKZRnM6o0hUcC8D01PyQ_.size = sizeof(tyObject_Env_semmagicdotnim__ZyVpd6P9cpAD0YrlDyaAD6g*);
NTI_SpPKZRnM6o0hUcC8D01PyQ_.kind = 22;
NTI_SpPKZRnM6o0hUcC8D01PyQ_.base = (&NTI_ZyVpd6P9cpAD0YrlDyaAD6g_);
NTI_SpPKZRnM6o0hUcC8D01PyQ_.marker = Marker_tyRef_SpPKZRnM6o0hUcC8D01PyQ;
NTI_K9bYwLtGKmFQYg8TwmqoG3Q_.size = sizeof(tyTuple_K9bYwLtGKmFQYg8TwmqoG3Q);
NTI_K9bYwLtGKmFQYg8TwmqoG3Q_.kind = 18;
NTI_K9bYwLtGKmFQYg8TwmqoG3Q_.base = 0;
NTI_K9bYwLtGKmFQYg8TwmqoG3Q_.flags = 2;
TM_rF9caJawfOjYTjsgLVUSGFA_203[0] = &TM_rF9caJawfOjYTjsgLVUSGFA_0[10];
TM_rF9caJawfOjYTjsgLVUSGFA_0[10].kind = 1;
TM_rF9caJawfOjYTjsgLVUSGFA_0[10].offset = offsetof(tyTuple_K9bYwLtGKmFQYg8TwmqoG3Q, Field0);
TM_rF9caJawfOjYTjsgLVUSGFA_0[10].typ = (&NTI_K9bspPztfoWajecnwjyHuYQ_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[10].name = "Field0";
TM_rF9caJawfOjYTjsgLVUSGFA_203[1] = &TM_rF9caJawfOjYTjsgLVUSGFA_0[11];
TM_rF9caJawfOjYTjsgLVUSGFA_0[11].kind = 1;
TM_rF9caJawfOjYTjsgLVUSGFA_0[11].offset = offsetof(tyTuple_K9bYwLtGKmFQYg8TwmqoG3Q, Field1);
TM_rF9caJawfOjYTjsgLVUSGFA_0[11].typ = (&NTI_rR5Bzr1D5krxoo1NcNyeMA_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[11].name = "Field1";
TM_rF9caJawfOjYTjsgLVUSGFA_0[9].len = 2; TM_rF9caJawfOjYTjsgLVUSGFA_0[9].kind = 2; TM_rF9caJawfOjYTjsgLVUSGFA_0[9].sons = &TM_rF9caJawfOjYTjsgLVUSGFA_203[0];
NTI_K9bYwLtGKmFQYg8TwmqoG3Q_.node = &TM_rF9caJawfOjYTjsgLVUSGFA_0[9];
NTI_P9bWebqKHkrGHwy9aZW9bw0TA_.size = sizeof(tySequence_P9bWebqKHkrGHwy9aZW9bw0TA*);
NTI_P9bWebqKHkrGHwy9aZW9bw0TA_.kind = 24;
NTI_P9bWebqKHkrGHwy9aZW9bw0TA_.base = (&NTI_K9bYwLtGKmFQYg8TwmqoG3Q_);
NTI_P9bWebqKHkrGHwy9aZW9bw0TA_.flags = 2;
NTI_P9bWebqKHkrGHwy9aZW9bw0TA_.marker = Marker_tySequence_P9bWebqKHkrGHwy9aZW9bw0TA;
NTI_9aPUbdmiIQPbS6xJxlnbe3A_.size = sizeof(tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A);
NTI_9aPUbdmiIQPbS6xJxlnbe3A_.kind = 17;
NTI_9aPUbdmiIQPbS6xJxlnbe3A_.base = (&NTI_ytyiCJqK439aF9cIibuRVpAg_);
TM_rF9caJawfOjYTjsgLVUSGFA_360[0] = &TM_rF9caJawfOjYTjsgLVUSGFA_0[13];
TM_rF9caJawfOjYTjsgLVUSGFA_0[13].kind = 1;
TM_rF9caJawfOjYTjsgLVUSGFA_0[13].offset = offsetof(tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A, colonstate_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[13].typ = (&NTI_xHTZrq9aYs6boc9bCba0JbpQ_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[13].name = ":state";
TM_rF9caJawfOjYTjsgLVUSGFA_360[1] = &TM_rF9caJawfOjYTjsgLVUSGFA_0[14];
TM_rF9caJawfOjYTjsgLVUSGFA_0[14].kind = 1;
TM_rF9caJawfOjYTjsgLVUSGFA_0[14].offset = offsetof(tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A, genericType1);
TM_rF9caJawfOjYTjsgLVUSGFA_0[14].typ = (&NTI_AgIT5feFR9a9aoVjv9cx2rOtg_);
TM_rF9caJawfOjYTjsgLVUSGFA_0[14].name = "genericType1";
TM_rF9caJawfOjYTjsgLVUSGFA_0[12].len = 2; TM_rF9caJawfOjYTjsgLVUSGFA_0[12].kind = 2; TM_rF9caJawfOjYTjsgLVUSGFA_0[12].sons = &TM_rF9caJawfOjYTjsgLVUSGFA_360[0];
NTI_9aPUbdmiIQPbS6xJxlnbe3A_.node = &TM_rF9caJawfOjYTjsgLVUSGFA_0[12];
NTI_liIRLuc03y8EzQLMfRQvEQ_.size = sizeof(tyObject_Env_semstmtsdotnim__9aPUbdmiIQPbS6xJxlnbe3A*);
NTI_liIRLuc03y8EzQLMfRQvEQ_.kind = 22;
NTI_liIRLuc03y8EzQLMfRQvEQ_.base = (&NTI_9aPUbdmiIQPbS6xJxlnbe3A_);
NTI_liIRLuc03y8EzQLMfRQvEQ_.marker = Marker_tyRef_liIRLuc03y8EzQLMfRQvEQ;
}

