### Question:
SubroutineDefinition { @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + argumentNames.hashCode(); result = prime * result + name.hashCode(); return result; } SubroutineDefinition(final String name, final List<String> argumentNames); @Override boolean equals(final Object obj); List<String> getArgumentNames(); String getName(); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testEqualsDifferentName() { final SubroutineDefinition other = new SubroutineDefinition(StringUtils.reverse(subroutineName), argumentNames); assertThat(definition).isNotEqualTo(other); assertThat(other).isNotEqualTo(definition); assertThat(definition.hashCode()).isNotEqualTo(other.hashCode()); }
@Test public void testEqualsDifferentArgumentNames() { final List<String> reversed = new ArrayList<String>(argumentNames); Collections.reverse(reversed); final SubroutineDefinition other = new SubroutineDefinition(subroutineName, reversed); assertThat(other).isNotEqualTo(definition); assertThat(definition).isNotEqualTo(other); assertThat(definition.hashCode()).isNotEqualTo(other.hashCode()); }