final ValueRequirement desiredValue = desiredValues.iterator().next();
final String curveName = desiredValue.getConstraint(ValuePropertyNames.CURVE);
final ZonedDateTime now = ZonedDateTime.now(snapshotClock);
final DoubleArrayList expiries = new DoubleArrayList();
final DoubleArrayList forwards = new DoubleArrayList();
final UnorderedCurrencyPair currencyPair = UnorderedCurrencyPair.of(target.getUniqueId());
final FXForwardCurveDefinition definition = curveDefinitionSource.getDefinition(curveName, currencyPair.toString());
if (definition == null) {
throw new OpenGammaRuntimeException("Couldn't find FX forward curve definition called " + curveName + " for target " + target);
}
final FXForwardCurveSpecification specification = curveSpecificationSource.getSpecification(curveName, currencyPair.toString());
if (specification == null) {
throw new OpenGammaRuntimeException("Couldn't find FX forward curve specification called " + curveName + " for target " + target);
}
final FXForwardCurveInstrumentProvider provider = specification.getCurveInstrumentProvider();
final Object dataObject = inputs.getValue(ValueRequirementNames.FX_FORWARD_CURVE_MARKET_DATA);