class BondTransactionDiscountingMethod {

  public MulticurveSensitivity parSpreadYieldCurveSensitivity(final BondFixedTransaction bond, 
      final IssuerProviderInterface issuerMulticurves) {
    final double parSpreadPrice = parSpread(bond, issuerMulticurves);
    //Backward sweep
    final double parSpreadYieldBar = 1.0d;
    final double yieldAtParBar = parSpreadYieldBar;
    final double dirtyPriceAtPar = bond.getTransactionPrice() + parSpreadPrice + bond.getBondStandard().getAccruedInterest();
    final double modifiedDurationAtPar = METHOD_BOND_SECURITY.
        modifiedDurationFromCleanPrice(bond.getBondStandard(), bond.getTransactionPrice() + parSpreadPrice);
    final double dYielddCleanAtPar = -1.0d / (modifiedDurationAtPar * dirtyPriceAtPar);
    final double parSpreadPriceBar = dYielddCleanAtPar * yieldAtParBar;
    final MulticurveSensitivity parSpreadPriceCurveSensitivity = parSpreadCurveSensitivity(bond, issuerMulticurves);
    return parSpreadPriceCurveSensitivity.multipliedBy(parSpreadPriceBar);
  }

  private  BondTransactionDiscountingMethod();

}