### Question:
Bucket implements Bounded, Comparable<Bucket> { public final @Override boolean equals(Object o) { return RevObjects.equals(this, o); }  abstract int getIndex(); final @Override boolean equals(Object o); final @Override int hashCode(); @Override String toString(); final @Override int compareTo(@NonNull Bucket b);  }### Answer:
@Test public void testEquals() { ObjectId oId1 = ObjectId.valueOf("abc123000000000000001234567890abcdef0000"); Bucket pointBucket = create(oId1, new Envelope(0, 0, 1, 1)); ObjectId oId2 = ObjectId.valueOf("abc123000000000000001234567890abcdef0001"); Bucket rectangleBucket = create(oId2, new Envelope(0, 1, 2, 3)); ObjectId oId3 = ObjectId.valueOf("abc123000000000000001234567890abcdef0002"); Bucket nonspatialBucket = create(oId3, null); assertEquals(pointBucket, pointBucket); assertEquals(rectangleBucket, rectangleBucket); assertEquals(nonspatialBucket, nonspatialBucket); assertFalse(pointBucket.equals(rectangleBucket)); assertFalse(pointBucket.equals(nonspatialBucket)); assertFalse(rectangleBucket.equals(nonspatialBucket)); assertFalse(pointBucket.equals(oId1)); }