final ZonedDateTime atInstant) {
final Set<ValueRequirement> result = new HashSet<ValueRequirement>();
final ExampleEquityOptionVolatilitySurfaceInstrumentProvider provider = (ExampleEquityOptionVolatilitySurfaceInstrumentProvider) specification.getSurfaceInstrumentProvider();
for (final X x : definition.getXs()) {
// don't care what these are
for (final Y y : definition.getYs()) {
provider.init(true); // generate puts
final ExternalId putIdentifier = provider.getInstrument((LocalDate) x, (Double) y, atInstant.toLocalDate());
result.add(new ValueRequirement(provider.getDataFieldName(), ComputationTargetType.PRIMITIVE, putIdentifier));
provider.init(false);
final ExternalId callIdentifier = provider.getInstrument((LocalDate) x, (Double) y, atInstant.toLocalDate());
result.add(new ValueRequirement(provider.getDataFieldName(), ComputationTargetType.PRIMITIVE, callIdentifier));
}
}
// add the underlying
final ExternalId temp = ExternalId.of(ExternalSchemes.OG_SYNTHETIC_TICKER, definition.getTarget().getUniqueId().getValue());
result.add(new ValueRequirement(MarketDataRequirementNames.MARKET_VALUE, ComputationTargetType.PRIMITIVE, temp));