public override ResolveResultWithInfo ResolveWithoutCache()
        {
            var file = _owner.GetContainingFile();

            if (file == null)
            {
                return(ResolveResultWithInfo.Unresolved);
            }

            foreach (var descendant in PascalPsiUtil.FindAllAccessibleDeclarations(_owner))
            {
                if (descendant is IDeclaration declaration && declaration.DeclaredName == GetName())
                {
                    return(new ResolveResultWithInfo(new SimpleResolveResult(declaration.DeclaredElement), ResolveErrorType.OK));
                }
            }

            return(ResolveResultWithInfo.Unresolved);
        }
        protected override bool AddLookupItems(PascalCodeCompletionContextProvider.PascalCodeCompletionContext context, IItemsCollector collector)
        {
            var node = context.UnterminatedContext.TreeNode;

            if (node == null || !ShouldBeConsidered(node))
            {
                return(false);
            }

            var declared    = from element in PascalPsiUtil.FindAllAccessibleDeclared(node) select element.ShortName;
            var completions = declared.ToSet();

            if (completions.IsEmpty())
            {
                return(false);
            }

            foreach (var completion in completions)
            {
                collector.Add(GetLookupElement(completion, context.ElementRanges));
            }

            return(true);
        }