public function raise(...$arguments)
    {
        $firstResponse = null;

        /** @var callable $callBack */
        $callBack = false;

        $count = count($arguments);
        if ($count > 0 && is_object($arguments[$count - 1]) && is_callable($arguments[$count - 1])) {
            $callBack = $arguments[$count - 1];
            $arguments = array_slice($arguments, 0, -1);
        }

        foreach ($this->eventHandlers as $handler) {
            $response = $handler(...$arguments);

            if ($response !== null) {
                if ($callBack) {
                    $callBack($response);
                }

                if ($firstResponse === null) {
                    $firstResponse = $response;
                }
            }
        }

        return $firstResponse;
    }