@Override
    public boolean equals(PsiTypeParameter element1, PsiTypeParameter element2) {
      if (element1 == element2) return true;
      if (element1 == null || element2 == null || element1 instanceof InferenceVariable || element2 instanceof InferenceVariable) return false;
      if (!Objects.equals(element1.getName(), element2.getName())) return false;
      if (element1.getIndex() != element2.getIndex()) return false;
      if (TypeConversionUtil.areSameFreshVariables(element1, element2)) return true;
      return element1.getManager().areElementsEquivalent(element1.getOwner(), element2.getOwner());
    }
@Override
    public boolean equals(PsiTypeParameter element1, PsiTypeParameter element2)