VolatilitySurfaceInterpolator { public Function1D<Double, Double>[] getIndependentSmileFits(final SmileSurfaceDataBundle marketData) { ArgumentChecker.notNull(marketData, "market data"); final int n = marketData.getNumExpiries(); final double[] forwards = marketData.getForwards(); final double[][] strikes = marketData.getStrikes(); final double[] expiries = marketData.getExpiries(); final double[][] vols = marketData.getVolatilities(); @SuppressWarnings("unchecked") final Function1D<Double, Double>[] smileFunctions = new Function1D[n]; for (int i = 0; i < n; i++) { smileFunctions[i] = _smileInterpolator.getVolatilityFunction(forwards[i], strikes[i], expiries[i], vols[i]); } return smileFunctions; } VolatilitySurfaceInterpolator();  VolatilitySurfaceInterpolator(final GeneralSmileInterpolator smileInterpolator);  VolatilitySurfaceInterpolator(final Interpolator1D timeInterpolator);  VolatilitySurfaceInterpolator(final GeneralSmileInterpolator smileInterpolator, final Interpolator1D timeInterpolator);  VolatilitySurfaceInterpolator(final boolean useIntegratedVariance, final boolean useLogTime, final boolean useLogVariance);  VolatilitySurfaceInterpolator(final GeneralSmileInterpolator smileInterpolator, final boolean useLogTime, final boolean useIntegratedVariance,
      final boolean useLogValue);  VolatilitySurfaceInterpolator(final Interpolator1D timeInterpolator, final boolean useLogTime, final boolean useIntegratedVariance, final boolean useLogValue);  VolatilitySurfaceInterpolator(final GeneralSmileInterpolator smileInterpolator, final Interpolator1D timeInterpolator, final boolean useLogTime,
      final boolean useIntegratedVariance, final boolean useLogValue); Function1D<Double, Double>[] getIndependentSmileFits(final SmileSurfaceDataBundle marketData); BlackVolatilitySurfaceMoneynessFcnBackedByGrid getVolatilitySurface(final SmileSurfaceDataBundle marketData); BlackVolatilitySurfaceMoneynessFcnBackedByGrid combineIndependentSmileFits(final Function1D<Double, Double>[] smileFunctions,
      final SmileSurfaceDataBundle marketData); BlackVolatilitySurfaceMoneynessFcnBackedByGrid getBumpedVolatilitySurface(final SmileSurfaceDataBundle marketData, final int expiryIndex, final int strikeIndex,
      final double amount); boolean useLogTime(); boolean useIntegratedVariance(); boolean useLogValue(); Interpolator1D getTimeInterpolator(); GeneralSmileInterpolator getSmileInterpolator(); @Override int hashCode(); @Override boolean equals(final Object obj); @Override String toString();  }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullData1() { SURFACE_INTERPOLATOR.getIndependentSmileFits(null); }