### Question:
FxSwapTemplate implements TradeTemplate, ImmutableBean, Serializable { public static FxSwapTemplate.Builder builder() { return new FxSwapTemplate.Builder(); } private  FxSwapTemplate(
      Period periodToNear,
      Period periodToFar,
      FxSwapConvention convention); static FxSwapTemplate of(Period periodToFar, FxSwapConvention convention); static FxSwapTemplate of(Period periodToNear, Period periodToFar, FxSwapConvention convention); CurrencyPair getCurrencyPair(); FxSwapTrade createTrade(
      LocalDate tradeDate,
      BuySell buySell,
      double notional,
      double nearFxRate,
      double forwardPoints,
      ReferenceData refData); static FxSwapTemplate.Meta meta(); static FxSwapTemplate.Builder builder(); @Override FxSwapTemplate.Meta metaBean(); Period getPeriodToNear(); Period getPeriodToFar(); FxSwapConvention getConvention(); Builder toBuilder(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void test_builder_insufficientInfo() { assertThatIllegalArgumentException() .isThrownBy(() -> FxSwapTemplate.builder().convention(CONVENTION).build()); assertThatIllegalArgumentException() .isThrownBy(() -> FxSwapTemplate.builder().periodToNear(NEAR_PERIOD).build()); assertThatIllegalArgumentException() .isThrownBy(() -> FxSwapTemplate.builder().periodToFar(FAR_PERIOD).build()); }