### Question:
Fra implements Product, Resolvable<ResolvedFra>, ImmutableBean, Serializable { public static Fra.Builder builder() { return new Fra.Builder(); } private  Fra(
      BuySell buySell,
      Currency currency,
      double notional,
      LocalDate startDate,
      LocalDate endDate,
      BusinessDayAdjustment businessDayAdjustment,
      AdjustableDate paymentDate,
      double fixedRate,
      IborIndex index,
      IborIndex indexInterpolated,
      DaysAdjustment fixingDateOffset,
      DayCount dayCount,
      FraDiscountingMethod discounting); @Override ImmutableSet<Currency> allCurrencies(); @Override ResolvedFra resolve(ReferenceData refData); static Fra.Meta meta(); static Fra.Builder builder(); @Override Fra.Meta metaBean(); BuySell getBuySell(); Currency getCurrency(); double getNotional(); LocalDate getStartDate(); LocalDate getEndDate(); Optional<BusinessDayAdjustment> getBusinessDayAdjustment(); AdjustableDate getPaymentDate(); double getFixedRate(); IborIndex getIndex(); Optional<IborIndex> getIndexInterpolated(); DaysAdjustment getFixingDateOffset(); DayCount getDayCount(); FraDiscountingMethod getDiscounting(); Builder toBuilder(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void test_builder_datesInOrder() { assertThatIllegalArgumentException() .isThrownBy(() -> Fra.builder() .buySell(BUY) .notional(NOTIONAL_1M) .startDate(date(2015, 6, 15)) .endDate(date(2015, 6, 14)) .fixedRate(FIXED_RATE) .index(GBP_LIBOR_3M) .build()); }
@Test public void test_builder_noIndex() { assertThatIllegalArgumentException() .isThrownBy(() -> Fra.builder() .buySell(BUY) .notional(NOTIONAL_1M) .startDate(date(2015, 6, 15)) .endDate(date(2015, 9, 15)) .fixedRate(FIXED_RATE) .build()); }
@Test public void test_builder_noDates() { assertThatIllegalArgumentException() .isThrownBy(() -> Fra.builder() .buySell(BUY) .notional(NOTIONAL_1M) .endDate(date(2015, 9, 15)) .fixedRate(FIXED_RATE) .index(GBP_LIBOR_3M) .build()); }