### Question:
CriterionEntity extends IdEntity { @Override public int hashCode() { return super.hashCode(); } CriterionEntity(
        @Nullable final String uniqueId,
        @Nullable final String name,
        @Nullable final String version,
        @Nullable final String status,
        @Nullable final Set<TagEntity> tags
    ); Optional<String> getUniqueId(); void setUniqueId(@Nullable final String uniqueId); Optional<String> getName(); void setName(@Nullable final String name); Optional<String> getVersion(); void setVersion(@Nullable final String version); Optional<String> getStatus(); void setStatus(@Nullable final String status); void setTags(@Nullable final Set<TagEntity> tags); @Override boolean equals(final Object o); @Override int hashCode();  }### Answer:
@Test void testEqualsAndHashCode() { final Set<TagEntity> tags = Sets.newHashSet( new TagEntity(UUID.randomUUID().toString()), new TagEntity(UUID.randomUUID().toString()) ); final CriterionEntity one = new CriterionEntity(null, null, null, null, tags); final CriterionEntity two = new CriterionEntity(null, null, null, null, tags); final CriterionEntity three = new CriterionEntity(); Assertions.assertThat(one).isEqualTo(two); Assertions.assertThat(one).isEqualTo(three); Assertions.assertThat(two).isEqualTo(three); Assertions.assertThat(one.hashCode()).isEqualTo(two.hashCode()); Assertions.assertThat(one.hashCode()).isEqualTo(three.hashCode()); Assertions.assertThat(two.hashCode()).isEqualTo(three.hashCode()); }