public ResolveResult ResolveAtLocation(TextLocation location, CancellationToken cancellationToken = default(CancellationToken))
        {
            int offset = textDocument.GetOffset(location);
            var line   = textDocument.GetLineByNumber(location.Line);

            if (offset == line.EndOffset)
            {
                return(ErrorResolveResult.UnknownError);
            }
            if (char.IsWhiteSpace(textDocument.GetCharAt(offset)))
            {
                return(ErrorResolveResult.UnknownError);
            }

            AXmlObject innermost = parseInfo.Document.GetChildAtOffset(offset);

            if (innermost is AXmlText)
            {
                return(ResolveText((AXmlText)innermost, cancellationToken));
            }
            if (innermost is AXmlTag)
            {
                return(ResolveTag((AXmlTag)innermost, cancellationToken));
            }
            if (innermost is AXmlElement)
            {
                return(ResolveElement((AXmlElement)innermost, cancellationToken));
            }
            if (innermost is AXmlAttribute)
            {
                return(ResolveAttribute((AXmlAttribute)innermost, offset, cancellationToken));
            }
            return(ErrorResolveResult.UnknownError);
        }