code: 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;
      }
docs: Fetch matching page candidates.
  
  @param string $alias The requested alias.
  
  @return array|null