protected function initClairvoyant(AbstractTestCase $testCase) { $clairvoyant = AbstractTestCase::getMasterListener()->getListener('Magium\\Util\\Api\\Clairvoyant\\Clairvoyant'); if ($clairvoyant instanceof Clairvoyant) { $testCase->getDi()->instanceManager()->addSharedInstance($clairvoyant, get_class($clairvoyant)); } else { $clairvoyant = $testCase->get('Magium\\Util\\Api\\Clairvoyant\\Clairvoyant'); if ($clairvoyant instanceof Clairvoyant) { AbstractTestCase::getMasterListener()->addListener($clairvoyant); } else { throw new InvalidConfigurationException('Invalid Clairvoyant preference'); } } return $clairvoyant; }