private static void processSubInterfaces(@NotNull PsiClass base, @NotNull Set<? super PsiClass> visited) {
    if (!visited.add(base)) return;

    DirectClassInheritorsSearch.search(base).forEach(candidate -> {
      if (candidate.isInterface()) {
        processSubInterfaces(candidate, visited);
      }
      return true;
    });
  }
private static void processSubInterfaces(@NotNull PsiClass base, @NotNull Set<? super PsiClass> visited)