public function run()
    {
        $this->emit(
            'suite.start',
            array(
                'suite' => $this->suite,
                'result_set' => $this->result_set
            )
        );

        $result = $this->captureAround(array($this, 'runGroup'), $this->suite, $this->suite);

        $this->emit(
            'suite.complete',
            array(
                'suite' => $this->suite,
                'result' => $result,
                'result_set' => $this->result_set
            )
        );

        if ($result->isFailure()) {
            $this->result_set->addResult($result);
        }
    }