public ForexOptionDataBundle(final YieldCurveBundle curves, final T volatilityModel, final Pair<Currency, Currency> currencyPair) {
super(curves);
ArgumentChecker.notNull(volatilityModel, "volatility model");
ArgumentChecker.notNull(currencyPair, "currency pair");
final Collection<Currency> currencies = getCurrencyMap().values();
final Currency firstCurrency = currencyPair.getFirst();
final Currency secondCurrency = currencyPair.getSecond();
final FXMatrix fxMatrix = curves.getFxRates();
ArgumentChecker.isTrue(fxMatrix.containsPair(firstCurrency, secondCurrency), "FX matrix does not contain rates for {} and {}", firstCurrency, secondCurrency);
ArgumentChecker.isTrue(currencies.contains(firstCurrency), "Curve currency map does not contain currency {}; have {}", firstCurrency, currencies);
ArgumentChecker.isTrue(currencies.contains(secondCurrency), "Curve currency map does not contain currency {}, have {}", secondCurrency, currencies);
_volatilityModel = volatilityModel;