/**
  * Compute the the present value curve sensitivity of a fixed payment by discounting to a parallel
  * curve movement.
  *
  * @param payment The payment.
  * @param multicurves The multi-curves provider.
  * @return The sensitivity. TODO: Should this be multiple-currency?
  */
 public StringAmount presentValueParallelCurveSensitivity(
     final PaymentFixed payment, final MulticurveProviderInterface multicurves) {
   final double time = payment.getPaymentTime();
   final double sensitivity =
       -time * payment.getAmount() * multicurves.getDiscountFactor(payment.getCurrency(), time);
   return StringAmount.from(multicurves.getName(payment.getCurrency()), sensitivity);
 }
 /**
  * Compute the the present value of a fixed payment by discounting to a parallel curve movement.
  *
  * @param payment The payment.
  * @param multicurves The multi-curve provider.
  * @return The present value.
  */
 public MultipleCurrencyAmount presentValue(
     final PaymentFixed payment, final MulticurveProviderInterface multicurves) {
   ArgumentChecker.notNull(payment, "Payment");
   ArgumentChecker.notNull(multicurves, "Multi-curves");
   final double pv =
       payment.getAmount()
           * multicurves.getDiscountFactor(payment.getCurrency(), payment.getPaymentTime());
   return MultipleCurrencyAmount.of(payment.getCurrency(), pv);
 }
  @Override
  public Map<String, List<DoublesPair>> visitFixedPayment(
      final PaymentFixed payment, final YieldCurveBundle data) {
    final String curveName = payment.getFundingCurveName();
    final YieldAndDiscountCurve curve = data.getCurve(curveName);
    final double t = payment.getPaymentTime();

    final DoublesPair s = new DoublesPair(t, -t * payment.getAmount() * curve.getDiscountFactor(t));
    final List<DoublesPair> list = new ArrayList<DoublesPair>();
    list.add(s);
    final Map<String, List<DoublesPair>> result = new HashMap<String, List<DoublesPair>>();
    result.put(curveName, list);
    return result;
  }
 /**
  * Computes the present value curve sensitivity of a fixed payment by discounting.
  *
  * @param payment The fixed payment.
  * @param multicurves The multi-curve provider.
  * @return The sensitivity.
  */
 public MultipleCurrencyMulticurveSensitivity presentValueCurveSensitivity(
     final PaymentFixed payment, final MulticurveProviderInterface multicurves) {
   final double time = payment.getPaymentTime();
   final DoublesPair s =
       DoublesPair.of(
           time,
           -time
               * payment.getAmount()
               * multicurves.getDiscountFactor(payment.getCurrency(), time));
   final List<DoublesPair> list = new ArrayList<>();
   list.add(s);
   final Map<String, List<DoublesPair>> result = new HashMap<>();
   result.put(multicurves.getName(payment.getCurrency()), list);
   return MultipleCurrencyMulticurveSensitivity.of(
       payment.getCurrency(), MulticurveSensitivity.ofYieldDiscounting(result));
 }