code: public function invoke(ContainerInterface $container, array $params = array())
  	{
  		$params = array_replace($this->params, $params);
  		$callable = $this->definition->getCallable();
  
  		if (is_array($callable) && is_string($callable[0])) {
  			$callable[0] = $container->resolve($callable[0]);
  		}
  
  		$args = [];
  
  		foreach ($this->definition->getArguments() as $arg) {
  			if ($arg->isClass()) {
  				$resolvedArg = $this->resolveClassArg($container, $arg, $params);
  			} else {
  				$resolvedArg = $this->resolveScalarArg($container, $arg, $params);
  			}
  
  			if ($resolvedArg instanceof FactoryInterface) {
  				$resolvedArg = $resolvedArg->invoke($container);
  			}
  
  			$args[$arg->getPosition()] = $resolvedArg;
  		}
  
  		return call_user_func_array($callable, $args);
  	}
docs: {@inheritdoc}