final boolean useIntegratedVariance = BlackVolatilitySurfacePropertyUtils.useIntegratedVariance(volatilityTransform);
final GeneralSmileInterpolator smileInterpolator = getSmileInterpolator(desiredValue);
final String interpolator = desiredValue.getConstraint(PROPERTY_TIME_INTERPOLATOR);
final String leftExtrapolator = desiredValue.getConstraint(PROPERTY_TIME_LEFT_EXTRAPOLATOR);
final String rightExtrapolator = desiredValue.getConstraint(PROPERTY_TIME_RIGHT_EXTRAPOLATOR);
final Interpolator1D timeInterpolator = CombinedInterpolatorExtrapolatorFactory.getInterpolator(interpolator, leftExtrapolator, rightExtrapolator);
final VolatilitySurfaceInterpolator surfaceInterpolator = new VolatilitySurfaceInterpolator(smileInterpolator, timeInterpolator, useLogTime, useIntegratedVariance, useLogValue);
final ValueProperties properties = getResultProperties(desiredValue);
final ValueSpecification spec = new ValueSpecification(ValueRequirementNames.BLACK_VOLATILITY_SURFACE_INTERPOLATOR, target.toSpecification(), properties);
return Collections.singleton(new ComputedValue(spec, surfaceInterpolator));
}