protected function __ancestorOf($elements, $value)
{
$this->_ancestor = $value;
if (!$value) {
return $elements;
}
$newElements = [];
$found = false;
$level = $value->level - 1;
foreach (array_reverse($elements) as $element) {
if ($level < 1) {
break;
} else {
if ($element === $value) {
$found = true;
} else {
if ($found) {
if ($element->level == $level) {
$newElements[] = $element;
$level--;
}
}
}
}
}
return $newElements;
}