/** * @param AbstractObject $context * * @return null */ public function overloadFindFirstByName(callable $next, AbstractObject $context) { $name = $context->getArg(0); $element = $context->getElement(); if ($element instanceof Field && $element->getAttribute('name') == $name) { return $element; } foreach ($element->getChildren() as $child) { $result = $child->findFirstByName($name); if ($result && $result != $element) { return $result; } } $context->setReturnMethod('null'); return $next(); }