private ISymbolTable GetGlobalNamespaceSymbolTable()
        {
            var module          = myOwner.GetPsiModule();
            var globalNamespace = mySymbolCache.GetSymbolScope(module, true, CaseSensitive).GlobalNamespace;

            return(ResolveUtil.GetSymbolTableByNamespace(globalNamespace, module, true));
        }
        // I(Reference)Qualifier.GetSymbolTable - returns the symbol table of items available from the resolved
        // reference, when being used as a qualifier. Not used to resolve this reference, but can be used to resolve
        // another reference, when this instance is used as a qualifier. E.g. if this reference is a namespace,
        // return all applicable items available in the namespace.
        // Contrast with IReference.GetReferenceSymbolTable, which returns the symbol table used to resolve a
        // reference. For a qualified reference, this will call GetQualifier.GetSymbolTable(mode). If there is no
        // qualifier, it gets a symbol table based on current scope
        public ISymbolTable GetSymbolTable(SymbolTableMode mode, IReference reference, bool useReferenceName)
        {
            if (!(Resolve().DeclaredElement is INamespace @namespace))
            {
                return(EmptySymbolTable.INSTANCE);
            }
            var module      = myOwner.GetPsiModule();
            var symbolTable = ResolveUtil.GetSymbolTableByNamespace(@namespace, module, true);

            return(useReferenceName ? symbolTable.Filter(new ExactNameFilter(reference.GetName())) : symbolTable);
        }