### Question:
CurrencyPair { @Override public boolean equals(final Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } CurrencyPair(final String ccy1, final String ccy2); static CurrencyPair of(final String ccy1, final String ccy2); String getCcy1(); String getCcy2(); @Override int hashCode(); @Override boolean equals(final Object obj); @Override String toString(); boolean containsCcy(final String ccy); Optional<String> findCommonCcy(final CurrencyPair otherPair); CurrencyPair createInverse();  }### Answer:
@Test public void testEquals() throws Exception { final CurrencyPair cp = new CurrencyPair("A", "B"); assertThat(cp.getCcy1()).describedAs("ccy1").isEqualTo("A"); assertThat(cp.getCcy2()).describedAs("ccy2").isEqualTo("B"); final CurrencyPair cp2 = new CurrencyPair("A", "B"); assertThat(cp.equals(cp2)).isTrue(); final CurrencyPair cp3 = new CurrencyPair("X", "B"); assertThat(cp.equals(cp3)).isFalse(); }