private static boolean mayCover(PsiType type, String exceptionFqn) {
        if (type == null) return false;
        if (type instanceof PsiDisjunctionType disjunctionType) {
          for (PsiType disjunction : disjunctionType.getDisjunctions()) {
            if (mayCover(disjunction, exceptionFqn)) return true;
          }
          return false;
        }
        if (type instanceof PsiClassType classType) {
          PsiClass psiClass = classType.resolve();
          if (psiClass == null) return false;
          if (InheritanceUtil.isInheritor(psiClass, exceptionFqn)) return true;
          PsiClass exceptionClass = JavaPsiFacade.getInstance(psiClass.getProject()).findClass(exceptionFqn, psiClass.getResolveScope());
          if (exceptionClass != null && exceptionClass.isInheritor(psiClass, true)) return true;
        }
        return false;
      }
private static boolean mayCover(PsiType type, String exceptionFqn)