private string BuildNodePath(XPathNavigator navigator, XPathFormat format)
        {
            switch (format)
            {
            case XPathFormat.Name:
                return(navigator.Name);

            case XPathFormat.LocalName:
                var builder = new StringBuilder("*[");
                builder.Append($"{XpathFunctionNames.LOCAL_NAME}()='{navigator.LocalName}'");
                if (!string.IsNullOrWhiteSpace(navigator.NamespaceURI))
                {
                    builder.AppendFormat(" and namespace-uri()='{0}'", navigator.NamespaceURI);
                }
                var discriminants = navigator.GetDiscriminants().ToArray();
                if (discriminants.Any())
                {
                    builder.AppendFormat(" and ({0})", BuildDiscriminantsSelector(navigator, discriminants));
                }
                builder.Append("]");
                return(builder.ToString());

            default:
                throw new ArgumentOutOfRangeException(nameof(format), format, null);
            }
        }