### Question:
AckImpl implements Ack { @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((channelId == null) ? 0 : channelId.hashCode()); return result; } AckImpl(final String channelId, final long version); @Override String getChannelId(); @Override long getVersion(); @Override String toString(); @Override int hashCode(); @Override boolean equals(final Object obj);  }### Answer:
@Test public void equalsContractSymetric() { final Ack x = new AckImpl("ch1", 10L); final Ack y = new AckImpl("ch1", 10L); assertThat(x, equalTo(y)); assertThat(y, equalTo(x)); assertThat(x.hashCode(), equalTo(y.hashCode())); }