@Override
 public Double visitMoneyness(
     final BlackVolatilitySurfaceMoneyness surface, final DoublesPair data) {
   final double l = Math.log(data.first);
   final double u = Math.log(data.second);
   Validate.isTrue(l > 0.0, "lower limit <= 0");
   Validate.isTrue(u > l, "lower limit >= upper limit");
   final BlackVolatilitySurfaceLogMoneyness logMS =
       BlackVolatilitySurfaceConverter.toLogMoneynessSurface(surface);
   return visitLogMoneyness(logMS, new DoublesPair(l, u));
 }
 @Override
 public Double visitMoneyness(final BlackVolatilitySurfaceMoneyness surface) {
   final BlackVolatilitySurfaceLogMoneyness logMS =
       BlackVolatilitySurfaceConverter.toLogMoneynessSurface(surface);
   return visitLogMoneyness(logMS);
 }