### Question:
Swaption implements Product, Resolvable<ResolvedSwaption>, ImmutableBean, Serializable { public static Swaption.Builder builder() { return new Swaption.Builder(); } private  Swaption(
      LongShort longShort,
      SwaptionSettlement swaptionSettlement,
      AdjustableDate expiryDate,
      LocalTime expiryTime,
      ZoneId expiryZone,
      Swap underlying); ZonedDateTime getExpiry(); Currency getCurrency(); @Override ImmutableSet<Currency> allCurrencies(); IborIndex getIndex(); @Override ResolvedSwaption resolve(ReferenceData refData); static Swaption.Meta meta(); static Swaption.Builder builder(); @Override Swaption.Meta metaBean(); LongShort getLongShort(); SwaptionSettlement getSwaptionSettlement(); AdjustableDate getExpiryDate(); LocalTime getExpiryTime(); ZoneId getExpiryZone(); Swap getUnderlying(); Builder toBuilder(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void test_builder_expiryAfterStart() { assertThatIllegalArgumentException() .isThrownBy(() -> Swaption.builder() .expiryDate(AdjustableDate.of(LocalDate.of(2014, 6, 17), ADJUSTMENT)) .expiryTime(EXPIRY_TIME) .expiryZone(ZONE) .longShort(LONG) .swaptionSettlement(PHYSICAL_SETTLE) .underlying(SWAP) .build()); }
@Test public void test_builder_invalidSwapOis() { assertThatIllegalArgumentException() .isThrownBy(() -> Swaption.builder() .expiryDate(ADJUSTABLE_EXPIRY_DATE) .expiryTime(EXPIRY_TIME) .expiryZone(ZONE) .longShort(LONG) .swaptionSettlement(PHYSICAL_SETTLE) .underlying(SWAP_OIS) .build()); }
@Test public void test_builder_invalidSwapBasis() { assertThatIllegalArgumentException() .isThrownBy(() -> Swaption.builder() .expiryDate(ADJUSTABLE_EXPIRY_DATE) .expiryTime(EXPIRY_TIME) .expiryZone(ZONE) .longShort(LONG) .swaptionSettlement(PHYSICAL_SETTLE) .underlying(SWAP_BASIS) .build()); }
@Test public void test_builder_invalidSwapXCcy() { assertThatIllegalArgumentException() .isThrownBy(() -> Swaption.builder() .expiryDate(ADJUSTABLE_EXPIRY_DATE) .expiryTime(EXPIRY_TIME) .expiryZone(ZONE) .longShort(LONG) .swaptionSettlement(PHYSICAL_SETTLE) .underlying(SWAP_XCCY) .build()); }