@Override public void visitSuperExpression(@NotNull PsiSuperExpression expression) {
    PsiJavaCodeReferenceElement ref = expression.getQualifier();
    if (ref != null) {
      PsiElement element = ref.resolve();
      if (element instanceof PsiClass aClass) {
        if (myClassSuperClasses.contains(aClass)) {
          visitExplicitSuper(aClass.getSuperClass(), expression);
        }
        if (aClass.isInheritor(getPsiClass(), true)) {
          myClassSuperClasses.add(aClass);
          visitExplicitSuper(aClass.getSuperClass(), expression);
        }
      }
      ref.accept(this);
    }
    else {
      PsiClass containingClass = PsiTreeUtil.getParentOfType(expression, PsiClass.class);
      if (containingClass != null) {
        if (getPsiClass().getManager().areElementsEquivalent(getPsiClass(), containingClass)) {
          visitExplicitSuper(getPsiClass().getSuperClass(), expression);
        }
      }
    }
  }
@Override public void visitSuperExpression(@NotNull PsiSuperExpression expression)