protected @NotNull PackageDirectoryCache getCache(@Nullable GlobalSearchScope scope) {
    PackageDirectoryCache cache = myCache;
    if (cache == null) {
      List<VirtualFile> roots = calcClassRoots();
      List<VirtualFile> invalidRoots = ContainerUtil.filter(roots, f -> !f.isValid());
      if (!invalidRoots.isEmpty()) {
        roots = ContainerUtil.filter(roots, VirtualFile::isValid);
        PluginException.logPluginError(
          LOG,
          "Invalid roots returned by " + getClass().getName() + ": " + invalidRoots,
          null, getClass()
        );
      }
      myCache = cache = PackageDirectoryCache.createCache(roots);
    }
    return cache;
  }
protected @NotNull PackageDirectoryCache getCache(@Nullable GlobalSearchScope scope)