/// <summary>
        /// Returns a page by its URL.
        /// </summary>
        /// <param name="pageUrl">Page preview URL.</param>
        /// <returns><see cref="TreeNode"/> representing the page, otherwise returns null.</returns>
        /// <exception cref="ArgumentNullException"> if <paramref name="pageUrl"/> is <c>null</c>.</exception>
        public TreeNode GetPage(string pageUrl)
        {
            pageUrl = pageUrl ?? throw new ArgumentNullException(nameof(pageUrl));

            NormalizedAlternativeUrl alternativeUrl = AlternativeUrlHelper.NormalizeAlternativeUrl(pageUrl);

            // Handle the site root
            if (String.IsNullOrEmpty(alternativeUrl.NormalizedUrl))
            {
                return(new TreeProvider().SelectSingleNode(site.SiteName, "/", site.DefaultVisitorCulture));
            }

            return(AlternativeUrlHelper.GetConflictingPage(new AlternativeUrlInfo()
            {
                AlternativeUrlSiteID = site.SiteID,
                AlternativeUrlUrl = alternativeUrl,
            }));
        }