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);
	}
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);
	}
{@inheritdoc}