### Question:
Field implements Described, Named { public boolean isOptional() { return optional; } Field(final String name, final String description, final boolean isOptional,
            final List<EnumeratedValue> values, final List<CodeSet> codeSets); @Override boolean equals(final Object obj); @Override String getDescription(); List<CodeSet> getCodeSets(); @Override String getName(); List<EnumeratedValue> getValues(); @Override int hashCode(); boolean isOptional(); @Override String toString();  }### Answer:
@Test public void testEqualsDifferentCodeSets() { final Field other = new Field(name, description, field.isOptional(), values, Collections.<CodeSet> emptyList()); assertThat(field).isNotEqualTo(other); assertThat(other).isNotEqualTo(field); }
@Test public void testEqualsDifferentName() { final Field other = new Field(StringUtils.reverse(name), description, field.isOptional(), values, codeSets); assertThat(field).isNotEqualTo(other); assertThat(other).isNotEqualTo(field); }
@Test public void testEqualsDifferentOptionality() { final Field other = new Field(name, description, !field.isOptional(), values, codeSets); assertThat(other).isNotEqualTo(field); assertThat(field).isNotEqualTo(other); }
@Test public void testEqualsDifferentValues() { final Field other = new Field(name, description, field.isOptional(), Collections.<EnumeratedValue> emptyList(), codeSets); assertThat(other).isNotEqualTo(field); assertThat(field).isNotEqualTo(other); }
@Test public void testIsOptional() { assertThat(field.isOptional()).isFalse(); }