class SabrIborCapletFloorletVolatilityCalibrationDefinition implements IborCapletFloorletVolatilityDefinition, ImmutableBean, Serializable {

  public static SabrIborCapletFloorletVolatilityCalibrationDefinition ofFixedBeta(
      IborCapletFloorletVolatilitiesName name,
      IborIndex index,
      DayCount dayCount,
      double beta,
      double shift,
      DoubleArray alphaCurveNodes,
      DoubleArray rhoCurveNodes,
      DoubleArray nuCurveNodes,
      CurveInterpolator interpolator,
      CurveExtrapolator extrapolatorLeft,
      CurveExtrapolator extrapolatorRight,
      SabrVolatilityFormula sabrVolatilityFormula) {

    DoubleArray initialValues = DoubleArray.of(0.1, beta, -0.2, 0.5);
    return ofFixedBeta(
        name,
        index,
        dayCount,
        shift,
        alphaCurveNodes,
        rhoCurveNodes,
        nuCurveNodes,
        initialValues,
        interpolator,
        extrapolatorLeft,
        extrapolatorRight,
        sabrVolatilityFormula);
  }

  private  SabrIborCapletFloorletVolatilityCalibrationDefinition(
      IborCapletFloorletVolatilitiesName name,
      IborIndex index,
      DayCount dayCount,
      Curve betaCurve,
      Curve rhoCurve,
      Curve shiftCurve,
      List<DoubleArray> parameterCurveNodes,
      DoubleArray initialParameters,
      CurveInterpolator interpolator,
      CurveExtrapolator extrapolatorLeft,
      CurveExtrapolator extrapolatorRight,
      SabrVolatilityFormula sabrVolatilityFormula);

}