public function run(ExerciseInterface $exercise, Input $input, OutputInterface $output)
    {
        $exercise->configure($this);
        $this->eventDispatcher->dispatch(new ExerciseRunnerEvent('run.start', $exercise, $input));

        try {
            $exitStatus = $this->runnerManager
                ->getRunner($exercise)
                ->run($input, $output);
        } finally {
            $this->eventDispatcher->dispatch(new ExerciseRunnerEvent('run.finish', $exercise, $input));
        }

        return $exitStatus;
    }