public function withFirstParent($parentClassName, callable $callback, callable $notFoundCallback = null)
    {
        $result = null;

        if ($this->hasParent($parentClassName)) {
            $parent = $this->getFirstParent($parentClassName);
            $result = call_user_func($callback, $parent);
        } elseif (null !== $notFoundCallback) {
            $result = call_user_func($notFoundCallback);
        }

        return $result;
    }