/**
  * Create service via callback
  *
  * @param  callable                                   $callable
  * @param  string                                     $cName
  * @param  string                                     $rName
  * @throws Exception\ServiceNotCreatedException
  * @throws Exception\ServiceNotFoundException
  * @throws Exception\CircularDependencyFoundException
  * @return object
  */
 protected function createServiceViaCallback($callable, $cName, $rName)
 {
     if (is_object($callable)) {
         $factory = $callable;
     } elseif (is_array($callable)) {
         // reset both rewinds and returns the value of the first array element
         $factory = reset($callable);
     }
     // duck-type MutableCreationOptionsInterface for forward compatibility
     if (isset($factory) && method_exists($factory, 'setCreationOptions') && is_array($this->creationOptions) && !empty($this->creationOptions)) {
         $factory->setCreationOptions($this->creationOptions);
     } elseif ($factory instanceof Factory\InvokableFactory) {
         $factory->setCreationOptions([]);
     }
     return parent::createServiceViaCallback($callable, $cName, $rName);
 }
 /**
  * Create service via callback
  *
  * @param  callable                                   $callable
  * @param  string                                     $cName
  * @param  string                                     $rName
  * @throws Exception\ServiceNotCreatedException
  * @throws Exception\ServiceNotFoundException
  * @throws Exception\CircularDependencyFoundException
  * @return object
  */
 protected function createServiceViaCallback($callable, $cName, $rName)
 {
     if (is_object($callable)) {
         $factory = $callable;
     } elseif (is_array($callable)) {
         // reset both rewinds and returns the value of the first array element
         $factory = reset($callable);
     }
     if (isset($factory) && $factory instanceof MutableCreationOptionsInterface && is_array($this->creationOptions) && !empty($this->creationOptions)) {
         $factory->setCreationOptions($this->creationOptions);
     }
     return parent::createServiceViaCallback($callable, $cName, $rName);
 }