@Override
protected Set<ComputedValue> getValues(final FunctionExecutionContext executionContext, final FunctionInputs inputs,
final ComputationTarget target, final Set<ValueRequirement> desiredValues, final InstrumentDerivative derivative,
final FXMatrix fxMatrix) {
final BlackForexSmileProvider blackData = getBlackSurface(executionContext, inputs, target, fxMatrix);
final PresentValueForexBlackVolatilityQuoteSensitivityDataBundle vegas = derivative.accept(CALCULATOR, blackData);
final ValueRequirement desiredValue = Iterables.getOnlyElement(desiredValues);
final ValueProperties properties = desiredValue.getConstraints().copy().get();
final ValueSpecification spec = new ValueSpecification(VEGA_QUOTE_MATRIX, target.toSpecification(), properties);
return Collections.singleton(new ComputedValue(spec, VegaMatrixUtils.getVegaFXQuoteMatrix(vegas)));
}