### Question:
BlackFxVanillaOptionProductPricer { public PointSensitivityBuilder presentValueSensitivityModelParamsVolatility( ResolvedFxVanillaOption option, RatesProvider ratesProvider, BlackFxOptionVolatilities volatilities) { if (volatilities.relativeTime(option.getExpiry()) <= 0d) { return PointSensitivityBuilder.none(); } ResolvedFxSingle underlying = option.getUnderlying(); FxRate forward = fxPricer.forwardFxRate(underlying, ratesProvider); CurrencyPair strikePair = underlying.getCurrencyPair(); CurrencyAmount valueVega = presentValueVega(option, ratesProvider, volatilities); return FxOptionSensitivity.of( volatilities.getName(), strikePair, volatilities.relativeTime(option.getExpiry()), option.getStrike(), forward.fxRate(strikePair), valueVega.getCurrency(), valueVega.getAmount()); } BlackFxVanillaOptionProductPricer(
      DiscountingFxSingleProductPricer fxPricer); double price(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); CurrencyAmount presentValue(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); double delta(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); CurrencyAmount presentValueDelta(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); PointSensitivities presentValueSensitivityRatesStickyStrike(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); double gamma(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); CurrencyAmount presentValueGamma(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); double vega(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); CurrencyAmount presentValueVega(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); PointSensitivityBuilder presentValueSensitivityModelParamsVolatility(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); double theta(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); CurrencyAmount presentValueTheta(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); double impliedVolatility(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); MultiCurrencyAmount currencyExposure(
      ResolvedFxVanillaOption option,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); static final BlackFxVanillaOptionProductPricer DEFAULT; }### Answer:
@Test public void test_presentValueSensitivityBlackVolatility_atExpiry() { PointSensitivityBuilder point = PRICER.presentValueSensitivityModelParamsVolatility(PUT_ITM, RATES_PROVIDER_EXPIRY, VOLS_EXPIRY); assertThat(point).isEqualTo(PointSensitivityBuilder.none()); }
@Test public void test_presentValueSensitivityBlackVolatility_afterExpiry() { PointSensitivityBuilder point = PRICER.presentValueSensitivityModelParamsVolatility(CALL_ITM, RATES_PROVIDER_AFTER, VOLS_AFTER); assertThat(point).isEqualTo(PointSensitivityBuilder.none()); }