protected function invoke(string $hook, ...$arguments)
    {
        if (!method_exists($this, $hook)) {
            return null;
        }

        $result = $this->{$hook}(...$arguments);

        return $this->isInvokedResult($result) ? $result : null;
    }