protected function run(Process $process, $bypassErrors = false, $listeners = null)
    {
        if (null !== $listeners) {
            if (!is_array($listeners)) {
                $listeners = array($listeners);
            }

            $listenersManager = clone $this->listenersManager;

            foreach ($listeners as $listener) {
                $listenersManager->register($listener, $this);
            }
        } else {
            $listenersManager = $this->listenersManager;
        }

        return $this->processRunner->run($process, $listenersManager->storage, $bypassErrors);
    }