The hashCode method simply returns the delegate's hashcode. I can't see how this could be wrong.
The equals method currently uses isSameType semantics, which I'm thinking may be incorrect. The problem seems to surface in certain type erasure scenarios where two delegates, from the same implementation, representing to the naked eye java.lang.Object, do not compare as the same type (!) so the equals call fails.