/**
  * Vanilla swap builder from the settlement date, a swap generator and other details of a swap.
  *
  * @param settlementDate The settlement date.
  * @param maturityDate The swap maturity date.
  * @param generator The swap generator.
  * @param notional The swap notional (identical on both legs)
  * @param fixedRate The swap fixed rate.
  * @param isPayer The payer flag of the fixed leg.
  * @return The vanilla swap.
  */
 public static SwapFixedIborDefinition from(
     final ZonedDateTime settlementDate,
     final ZonedDateTime maturityDate,
     final GeneratorSwapFixedIbor generator,
     final double notional,
     final double fixedRate,
     final boolean isPayer) {
   ArgumentChecker.notNull(settlementDate, "Settlement date");
   ArgumentChecker.notNull(maturityDate, "Maturity date");
   ArgumentChecker.notNull(generator, "Swap generator");
   final AnnuityCouponFixedDefinition fixedLeg =
       AnnuityCouponFixedDefinition.from(
           generator.getCurrency(),
           settlementDate,
           maturityDate,
           generator.getFixedLegPeriod(),
           generator.getCalendar(),
           generator.getFixedLegDayCount(),
           generator.getIborIndex().getBusinessDayConvention(),
           generator.getIborIndex().isEndOfMonth(),
           notional,
           fixedRate,
           isPayer);
   final AnnuityCouponIborDefinition iborLeg =
       AnnuityCouponIborDefinition.from(
           settlementDate,
           maturityDate,
           notional,
           generator.getIborIndex(),
           !isPayer,
           generator.getCalendar());
   return new SwapFixedIborDefinition(fixedLeg, iborLeg);
 }
 /**
  * Builder from the financial details.
  *
  * @param effectiveDate The underlying swap effective date (delivery date).
  * @param generator The swap generator.
  * @param tenor The underlying swap tenor.
  * @param notional The futures notional.
  * @param rate The underlying swap rate.
  * @return The futures.
  */
 public static SwapFuturesPriceDeliverableSecurityDefinition from(
     final ZonedDateTime effectiveDate,
     final GeneratorSwapFixedIbor generator,
     final Period tenor,
     final double notional,
     final double rate) {
   ArgumentChecker.notNull(effectiveDate, "Effective date");
   ArgumentChecker.notNull(generator, "Generator");
   final ZonedDateTime lastTradingDate =
       ScheduleCalculator.getAdjustedDate(
           effectiveDate, -generator.getSpotLag(), generator.getCalendar());
   final SwapFixedIborDefinition swap =
       SwapFixedIborDefinition.from(effectiveDate, tenor, generator, 1.0, rate, false);
   return new SwapFuturesPriceDeliverableSecurityDefinition(lastTradingDate, swap, notional);
 }