/**
* {@inheritdoc}
*
* @param Parameter $parameter
*
* @throws ParameterNotFoundException
*/
public function resolve(Parameter $parameter, ParameterBag $unresolvedParameters, ParameterBag $resolvedParameters, ResolvingContext $context = null) : ParameterBag
{
$context = ResolvingContext::createFrom($context, $parameter->getKey());
$self = $this;
$value = preg_replace_callback(self::PATTERN, function ($match) use($self, $context, $unresolvedParameters, &$resolvedParameters, $parameter) {
$key = $match['parameter'];
$resolvedParameters = $self->resolveStringKey($self->resolver, $parameter, $key, $unresolvedParameters, $resolvedParameters, $context);
return $resolvedParameters->get($key);
}, $parameter->getValue());
return $resolvedParameters->with($parameter->withValue($value));
}