/**
  *
  * @param ParameterInterface $parameter
  * @param InjectorInterface $injector
  * @return mixed
  * @throws InjectorException
  */
 private function resolveParameter(ParameterInterface $parameter, InjectorInterface $injector)
 {
     $name = $parameter->getName();
     if ($this->hasValue($name)) {
         return $this->getValue($name);
     }
     if ($parameter->hasClassName()) {
         $className = $parameter->getClassName();
         if ($this->hasDefinition($className)) {
             $definition = $this->getDefinition($className);
             return $definition->resolve($injector);
         }
         return $injector->create($className);
     }
     if ($parameter->hasDefaultValue()) {
         return $parameter->getDefaultValue();
     }
     throw new InjectorException(sprintf('Failed to resolve parameter `%s`', $name));
 }
 /**
  *
  * @param ParameterInterface $parameter
  * @param array $nameValueMap
  * @param DefinitionInterface[] $eachDefinition
  * @return array
  * @throws InjectorException
  */
 private function resolveParameter(ParameterInterface $parameter, array $nameValueMap, $eachDefinition)
 {
     $name = $parameter->getName();
     if (isset($nameValueMap[$name])) {
         return $nameValueMap[$name];
     }
     if ($parameter->hasClassName()) {
         $className = $parameter->getClassName();
         return $this->withEachDefinition($eachDefinition)->create($className);
     }
     if ($parameter->hasDefaultValue()) {
         return $parameter->getDefaultValue();
     }
     throw new InjectorException(InjectorException::getParameterInjectionFailedMessage($name), null);
 }