protected static void processTurnToSuperRefs(UsageInfo[] usages, final PsiClass aSuper) throws IncorrectOperationException {
    for (UsageInfo usage : usages) {
      if (usage instanceof TurnToSuperReferenceUsageInfo) {
        final PsiElement element = usage.getElement();
        if (element != null) {
          final PsiReference ref = element.getReference();
          assert ref != null;
          final PsiElement typeParams = createReferenceTypeParameterList(aSuper, ref);
          PsiElement newElement = ref.bindToElement(aSuper);
          if (typeParams != null && newElement instanceof PsiJavaCodeReferenceElement) {
            final PsiReferenceParameterList parameterList = ((PsiJavaCodeReferenceElement)newElement).getParameterList();
            if (parameterList != null) {
              parameterList.replace(typeParams);
            }
          }

          if (newElement.getParent() instanceof PsiTypeElement) {
            if (newElement.getParent().getParent() instanceof PsiTypeCastExpression) {
              fixPossiblyRedundantCast((PsiTypeCastExpression)newElement.getParent().getParent());
            }
          }
        }
      }
    }
  }
protected static void processTurnToSuperRefs(UsageInfo[] usages, final PsiClass aSuper)