final ValueRequirement volatilitySurfaceRequirement = getVolatilitySurfaceRequirement(target, desiredValue);
final Object localVolatilityObject = inputs.getValue(volatilitySurfaceRequirement);
if (localVolatilityObject == null) {
throw new OpenGammaRuntimeException("Could not get local volatility surface");
}
final LocalVolatilitySurfaceMoneyness localVolatilityMoneyness = (LocalVolatilitySurfaceMoneyness) localVolatilityObject;
final LocalVolatilitySurfaceStrike localVolatilityStrike = LocalVolatilitySurfaceConverter.toStrikeSurface(localVolatilityMoneyness);
final ValueProperties properties = getResultProperties(desiredValue, LocalVolatilitySurfacePropertyNamesAndValues.STRIKE);
final ValueSpecification spec = new ValueSpecification(ValueRequirementNames.LOCAL_VOLATILITY_SURFACE, target.toSpecification(), properties);
return Collections.singleton(new ComputedValue(spec, localVolatilityStrike));
}