### Question:
MultiValuedTimestamp implements Timestamp { @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof MultiValuedTimestamp)) { return false; } MultiValuedTimestamp that = (MultiValuedTimestamp) obj; return Objects.equals(this.value1, that.value1) && Objects.equals(this.value2, that.value2); } MultiValuedTimestamp(T value1, U value2); @SuppressWarnings("unused") private  MultiValuedTimestamp(); @Override int compareTo(Timestamp o); @Override int hashCode(); @Override boolean equals(Object obj); @Override String toString(); T value1(); U value2();  }### Answer:
@Test public void testEquals() { new EqualsTester() .addEqualityGroup(stats1, stats1) .addEqualityGroup(stats2) .testEquals(); }