### Question:
AbstractID implements IOReadableWritable { @Override public int hashCode() { return ((int) this.lowerPart) ^ ((int) (this.lowerPart >>> 32)) ^ ((int) this.upperPart) ^ ((int) (this.upperPart >>> 32)); } AbstractID(byte[] bytes);  AbstractID(long lowerPart, long upperPart);  AbstractID(AbstractID id);  AbstractID(); void setID(AbstractID src); @Override boolean equals(Object obj); @Override int hashCode(); @Override void read(DataInput in); @Override void write(DataOutput out); void write(ByteBuffer buffer); void writeTo(ByteBuf buf); @Override String toString(); static final int SIZE; }### Answer:
@Test public void testSerialization() { final ChannelID origID = new ChannelID(); try { final ChannelID copyID = (ChannelID) CommonTestUtils.createCopy(origID); assertEquals(origID.hashCode(), copyID.hashCode()); assertEquals(origID, copyID); } catch (IOException e) { e.printStackTrace(); } }