@Override
    public void visitSuperExpression(@NotNull PsiSuperExpression expression) {
      super.visitSuperExpression(expression);
      final PsiJavaCodeReferenceElement qualifier = expression.getQualifier();
      if (qualifier == null) {
        return;
      }

      final PsiElement resolve = qualifier.resolve();
      if (!(resolve instanceof PsiClass)) {
        return;
      }

      final PsiElement parent = expression.getParent();
      if (parent instanceof PsiReferenceExpression) {
        final PsiReferenceExpression copy;
        final PsiElement gParent = parent.getParent();
        if (gParent instanceof PsiMethodCallExpression) {
          copy = ((PsiMethodCallExpression)gParent.copy()).getMethodExpression();
        }
        else {
          copy = (PsiReferenceExpression)parent.copy();
        }
        final PsiExpression copyQualifierExpression = copy.getQualifierExpression();
        assert copyQualifierExpression != null;
        PsiReplacementUtil.replaceExpression(copyQualifierExpression, PsiKeyword.SUPER);
        if (copy.resolve() == ((PsiReferenceExpression)parent).resolve()) {
          registerError(qualifier, expression);
        }
      }
    }
@Override
    public void visitSuperExpression(@NotNull PsiSuperExpression expression)