private function getPageCandidates(string $alias)
    {
        $aliases = [$alias];
        // Compile all possible aliases by applying dirname() to the request.
        while ('/' !== $alias && false !== strpos($alias, '/')) {
            $alias     = \dirname($alias);
            $aliases[] = $alias;
        }

        // Check if there are pages with a matching alias
        $pages = $this->pageModelAdapter->findByAliases($aliases);
        if (null === $pages) {
            return null;
        }
        $arrPages = [];
        // Order by domain and language
        while ($pages->next()) {
            /** @var PageModel $objModel */
            $objModel = $pages->current();
            $objPage  = $objModel->loadDetails();
            $domain   = $objPage->domain ?: '*';

            $arrPages[$domain][$objPage->rootLanguage][] = $objPage;
            // Also store the fallback language
            if ($objPage->rootIsFallback) {
                $arrPages[$domain]['*'][] = $objPage;
            }
        }
        return $arrPages;
    }