### Question:
BulletPayment implements Product, Resolvable<ResolvedBulletPayment>, ImmutableBean, Serializable { public static BulletPayment.Builder builder() { return new BulletPayment.Builder(); } private  BulletPayment(
      PayReceive payReceive,
      CurrencyAmount value,
      AdjustableDate date); Currency getCurrency(); @Override ImmutableSet<Currency> allCurrencies(); @Override ResolvedBulletPayment resolve(ReferenceData refData); static BulletPayment.Meta meta(); static BulletPayment.Builder builder(); @Override BulletPayment.Meta metaBean(); PayReceive getPayReceive(); CurrencyAmount getValue(); AdjustableDate getDate(); Builder toBuilder(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void test_builder_notNegative() { assertThatIllegalArgumentException() .isThrownBy(() -> BulletPayment.builder() .payReceive(PayReceive.PAY) .value(GBP_M1000) .date(AdjustableDate.of(DATE_2015_06_30)) .build()); }
@Test public void coverage() { BulletPayment test = BulletPayment.builder() .payReceive(PayReceive.PAY) .value(GBP_P1000) .date(AdjustableDate.of(DATE_2015_06_30)) .build(); coverImmutableBean(test); BulletPayment test2 = BulletPayment.builder() .payReceive(PayReceive.RECEIVE) .value(USD_P1600) .date(AdjustableDate.of(DATE_2015_06_29)) .build(); coverBeanEquals(test, test2); }
@Test public void test_serialization() { BulletPayment test = BulletPayment.builder() .payReceive(PayReceive.PAY) .value(GBP_P1000) .date(AdjustableDate.of(DATE_2015_06_30)) .build(); assertSerialization(test); }