Testing for equality must be done modulo a parameter substitution table (in our implementation, simply a java.util.HashMap) that records pointer equalities along the way, and thus equality up to parameter renaming can be easily made effective.
A tableless version of equality also exists for which each type parameter is considered equal only to itself.