private function getPrevNext(HasNodeInterface $page, $loop)
 {
     $class = ClassLookup::getClass($page);
     $id = $page->getId();
     if (false === isset($this->nav[$class][$id])) {
         $parent = $this->contentCategory->getParentCategory($page, true);
         $siblings = $this->siteTree->getChildren($parent, ['refName' => $class, 'depth' => 1]) ?: new UnknownNodeBranch();
         $this->nav[$class][$id] = $this->calculatePrevNext($siblings, $page, $loop);
     }
     return array_values($this->nav[$class][$id]);
 }
 public function isUnderPage(AbstractPage $page, $name)
 {
     $slug = $this->slugifier->slugify($name);
     $breadcrumbs = $this->categoryService->getBreadcrumbs($page, true);
     return array_reduce($breadcrumbs, function ($match, Category $parent) use($slug) {
         if ($match) {
             return true;
         }
         return substr($parent->getSlug(), 0, -strlen($slug)) === $slug || $this->slugifier->slugify($parent->getTitle()) === $slug;
     });
 }
 /**
  * @param Options $options
  * @param mixed $value
  * @return Category|null
  */
 public function normalizeCategory(Options $options, $value)
 {
     if (null === $value) {
         return null;
     }
     if ($value instanceof Category) {
         return $value;
     }
     if ($value instanceof HasNodeInterface) {
         return $this->contentCategory->getCurrentCategory($value);
     }
     return null;
 }