if (typeVariable.rank >= varSuperType.rank && varSuperType.declaringElement == typeVariable.declaringElement) {
SimpleSet set = new SimpleSet(typeParameters.length);
set.add(typeVariable);
ReferenceBinding superBinding = varSuperType;
while (superBinding instanceof TypeVariableBinding) {
if (set.includes(superBinding)) {
problemReporter().hierarchyCircularity(typeVariable, varSuperType, typeRef);
typeVariable.tagBits |= TagBits.HierarchyHasProblems;
break firstBound; // do not keep first bound
} else {
set.add(superBinding);