class SabrExtrapolationReplicationCmsPeriodPricer {

  public double adjustedForwardRate(
      CmsPeriod cmsPeriod,
      RatesProvider provider,
      SabrSwaptionVolatilities swaptionVolatilities) {

    CmsPeriod coupon = cmsPeriod.toCouponEquivalent();
    Currency ccy = cmsPeriod.getCurrency();
    double dfPayment = provider.discountFactor(ccy, coupon.getPaymentDate());
    double pv = presentValue(coupon, provider, swaptionVolatilities).getAmount();
    return pv / (coupon.getNotional() * coupon.getYearFraction() * dfPayment);
  }

  private  SabrExtrapolationReplicationCmsPeriodPricer(
      DiscountingSwapProductPricer swapPricer,
      double cutOffStrike,
      double mu);

}