class BondCapitalIndexedSecurityDiscountingMethod {

  public MultipleCurrencyAmount presentValue(final BondCapitalIndexedSecurity<?> bond, 
      final ParameterInflationIssuerProviderInterface provider) {
    ArgumentChecker.notNull(bond, "Bond");
    MulticurveProviderInterface multicurveDecorated = new MulticurveProviderDiscountingDecoratedIssuer(
        provider.getIssuerProvider(), bond.getCurrency(), bond.getIssuerEntity());
    InflationProviderInterface inflationDecorated = new InflationProviderDecoratedMulticurve(
        provider.getInflationProvider(), multicurveDecorated);
    final MultipleCurrencyAmount pvNominal = bond.getNominal().accept(PVIC, inflationDecorated);
    final MultipleCurrencyAmount pvCoupon = bond.getCoupon().accept(PVIC, inflationDecorated);
    return pvNominal.plus(pvCoupon);
  }

}