### Question:
RecordStructure implements Described, Named { @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + members.hashCode(); result = prime * result + name.toLowerCase(Locale.getDefault()).hashCode(); return result; } RecordStructure(final String name, final List<? extends RecordStructureMember> members);  RecordStructure(final String name, final List<? extends RecordStructureMember> members,
            final String description, final InterfaceStructureType structureType); @Override boolean equals(final Object obj); @Override String getDescription(); @Override String getName(); @SuppressWarnings("unchecked") T getRootLevelMember(final int index); int getRootLevelMemberCount(); InterfaceStructureType getStructureType(); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testEqualsDifferentDocumentation() { final RecordStructure other = new RecordStructure(name, members, StringUtils.reverse(description), null); assertThat(recordStructure).isEqualTo(other); assertThat(other).isEqualTo(recordStructure); assertThat(other.hashCode()).isEqualTo(recordStructure.hashCode()); }
@Test public void testEqualsNameCaseInsensitive() { final RecordStructure other = new RecordStructure(StringUtils.swapCase(name), members); assertThat(recordStructure).isEqualTo(other); assertThat(other).isEqualTo(recordStructure); assertThat(recordStructure.hashCode()).isEqualTo(other.hashCode()); }