### Question:
ProductType extends TypedString<ProductType> { @FromString public static ProductType of(String name) { return new ProductType(name, name); } private  ProductType(String name, String description); @FromString static ProductType of(String name); String getDescription(); static final ProductType BULLET_PAYMENT; static final ProductType BILL; static final ProductType BOND; static final ProductType BOND_FUTURE; static final ProductType BOND_FUTURE_OPTION; static final ProductType CDS; static final ProductType CDS_INDEX; static final ProductType CMS; static final ProductType DSF; static final ProductType FRA; static final ProductType FX_NDF; static final ProductType FX_SINGLE_BARRIER_OPTION; static final ProductType FX_SINGLE; static final ProductType FX_SWAP; static final ProductType FX_VANILLA_OPTION; static final ProductType IBOR_CAP_FLOOR; static final ProductType IBOR_FUTURE; static final ProductType IBOR_FUTURE_OPTION; static final ProductType OVERNIGHT_FUTURE; static final ProductType SENSITIVITIES; static final ProductType SWAP; static final ProductType SWAPTION; static final ProductType TERM_DEPOSIT; static final ProductType ETD_FUTURE; static final ProductType ETD_OPTION; static final ProductType SECURITY; static final ProductType CALIBRATION; static final ProductType OTHER; }### Answer:
@Test public void test_of() { ProductType test = ProductType.of("test"); assertThat(test.toString()).isEqualTo("test"); }
@Test public void test_equalsHashCode() { ProductType a = ProductType.of("test"); ProductType a2 = ProductType.of("test"); ProductType b = ProductType.of("test2"); assertThat(a.equals(a)).isTrue(); assertThat(a.equals(a2)).isTrue(); assertThat(a.equals(b)).isFalse(); assertThat(a.equals(null)).isFalse(); assertThat(a.equals(ANOTHER_TYPE)).isFalse(); }