### Question:
Group { @Override public boolean equals(Object oo) { if (this == oo) return true; if (!(oo instanceof Group)) return false; Group og = (Group) oo; if (!getShortName().equals(og.getShortName())) return false; return !((getParentGroup() != null) && !getParentGroup().equals(og.getParentGroup())); } private  Group(Builder builder, @Nullable Group parent); AttributeContainer attributes(); Group commonParent(Group other); @Nullable Attribute findAttribute(String name); String findAttributeString(String attName, String defaultValue); Optional<Dimension> findDimension(String name); @Nullable Dimension findDimension(Dimension dim); @Nullable Dimension findDimensionLocal(String shortName); @Nullable EnumTypedef findEnumeration(String name); @Nullable Group findGroupLocal(String groupShortName); Optional<Group> findGroupNested(String groupShortName); @Nullable Variable findVariableByAttribute(String attName, String attValue); @Nullable Variable findVariableLocal(String varShortName); @Nullable Variable findVariableOrInParent(String varShortName); ImmutableList<Dimension> getDimensions(); ImmutableList<EnumTypedef> getEnumTypedefs(); String getFullName(); ImmutableList<Group> getGroups(); NetcdfFile getNetcdfFile(); @Nullable Group getParentGroup(); String getShortName(); ImmutableList<Variable> getVariables(); boolean isParent(Group other); boolean isRoot(); ImmutableList<Dimension> makeDimensionsList(String dimString); String getNameAndAttributes(); @Override String toString(); @Override boolean equals(Object oo); @Override int hashCode(); Builder toBuilder(); static Builder builder();  }### Answer:
@Test public void testEquals() { Group good = Group.builder().setName("good").build(); Group good2 = Group.builder().setName("good").build(); Group bad = Group.builder().setName("bad").build(); assertThat(good).isEqualTo(good2); assertThat(good).isNotEqualTo(bad); assertThat(good.hashCode()).isEqualTo(good2.hashCode()); assertThat(good.hashCode()).isNotEqualTo(bad.hashCode()); }