public function beforeSpecification(SpecificationEvent $event)
 {
     $examplesToAdd = array();
     $parser = new Parser();
     foreach ($event->getSpecification()->getExamples() as $example) {
         $dataProviderMethod = $parser->getDataProvider($example->getFunctionReflection());
         if (null !== $dataProviderMethod) {
             if (!$example->getSpecification()->getClassReflection()->hasMethod($dataProviderMethod)) {
                 return false;
             }
             $subject = $example->getSpecification()->getClassReflection()->newInstance();
             $providedData = $example->getSpecification()->getClassReflection()->getMethod($dataProviderMethod)->invoke($subject);
             if (is_array($providedData)) {
                 foreach ($providedData as $i => $dataRow) {
                     $examplesToAdd[] = new ExampleNode($i + 1 . ') ' . $example->getTitle(), $example->getFunctionReflection());
                 }
             }
         }
     }
     foreach ($examplesToAdd as $example) {
         $event->getSpecification()->addExample($example);
     }
 }
 /**
  * @param ExampleNode $example
  * @return bool|mixed
  */
 private function getDataFromProvider(ExampleNode $example)
 {
     $parser = new Parser();
     $dataProviderMethod = $parser->getDataProvider($example->getFunctionReflection());
     if (!isset($dataProviderMethod)) {
         return array();
     }
     if (!$example->getSpecification()->getClassReflection()->hasMethod($dataProviderMethod)) {
         return array();
     }
     $subject = $example->getSpecification()->getClassReflection()->newInstance();
     $providedData = $example->getSpecification()->getClassReflection()->getMethod($dataProviderMethod)->invoke($subject);
     return is_array($providedData) ? $providedData : array();
 }