class MethodAndSink {
    
    private final ClassMethodSignature classMethodSignature;
    private final InjectionSink sink;

    public MethodAndSink(ClassMethodSignature classMethodSignature, InjectionSink sink) {
        Objects.requireNonNull(classMethodSignature, "classMethodSignature");
        Objects.requireNonNull(sink, "sink");
        this.classMethodSignature = classMethodSignature;
        this.sink = sink;
    }

    public ClassMethodSignature getClassMethodSignature() {
        return classMethodSignature;
    }

    public InjectionSink getSink() {
        return sink;
    }

    @Override
    public boolean equals(Object o) {<FILL_FUNCTION_BODY>}

    @Override
    public int hashCode() {
        return Objects.hash(classMethodSignature, sink);
    }
}

        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        MethodAndSink that = (MethodAndSink) o;
        return Objects.equals(classMethodSignature, that.classMethodSignature) &&
                Objects.equals(sink, that.sink);
    
<no_super_class>