Description
The equals() methods in the different DelegatingXXX classes do not start with a simple object equality check for this.
The equals methods do not implement the contract for equals because x.equals where getInnermostDelegate() for x returns null will return false.
Performance-wise the check would help since you don't need to walk the delegate tree.
I will attach a patch.
Rob