MethodSignatureImpl extends AbstractTypeMember implements MethodSignature { @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } final MethodSignatureImpl other = (MethodSignatureImpl) obj; return Objects.equals(getName(), other.getName()) && Objects.equals(this.params, other.params) && Objects.equals(getReturnType(), other.getReturnType()); } @VisibleForTesting  MethodSignatureImpl(final Type definingType, final String name, final List<AnnotationType> annotations,
        final String comment, final AccessModifier accessModifier, final Type returnType,
        final List<Parameter> params, final boolean isFinal, final boolean isAbstract, final boolean isStatic);   MethodSignatureImpl(final Type definingType, final String name, final List<AnnotationType> annotations,
            final String comment, final AccessModifier accessModifier, final Type returnType,
            final List<Parameter> params, final boolean isFinal, final boolean isAbstract, final boolean isStatic,
            final boolean isDefault, final ValueMechanics mechanics); @Override boolean isAbstract(); @Override boolean isDefault(); @Override List<Parameter> getParameters(); @Override ValueMechanics getMechanics(); @Override int hashCode(); @Override boolean equals(final Object obj); @Override String toString();  }
@Test public void testEquals() { assertTrue(signature1.equals(signature1)); assertTrue(signature1.equals(signature2)); assertFalse(signature1.equals(signature3)); assertFalse(signature3.equals(signature1)); assertFalse(signature1.equals(null)); assertFalse(signature1.equals(signature4)); assertFalse(signature4.equals(signature1)); assertFalse(signature1.equals(Types.STRING)); }