static @NotNull FileLoader createCachingFileLoader(Path file,
                                                     @Nullable CachePoolImpl cachePool,
                                                     Predicate<? super Path> cachingCondition,
                                                     boolean isClassPathIndexEnabled,
                                                     ClasspathCache cache) {
    if (cachePool == null) {
      LoaderData data = buildData(file, isClassPathIndexEnabled);
      FileLoader loader = new FileLoader(file, data.nameFilter);
      cache.applyLoaderData(data, loader);
      return loader;
    }

    ClasspathCache.IndexRegistrar data = cachePool.loaderIndexCache.get(file);
    if (data == null) {
      LoaderData loaderData = buildData(file, isClassPathIndexEnabled);
      FileLoader loader = new FileLoader(file, loaderData.nameFilter);
      if (cachingCondition != null && cachingCondition.test(file)) {
        cachePool.loaderIndexCache.put(file, loaderData);
      }
      cache.applyLoaderData(loaderData, loader);
      return loader;
    }
    else {
      FileLoader loader = new FileLoader(file, data.getNameFilter());
      cache.applyLoaderData(data, loader);
      return loader;
    }
  }
static @NotNull FileLoader createCachingFileLoader(Path file,
                                                     @Nullable CachePoolImpl cachePool,
                                                     Predicate<? super Path> cachingCondition,
                                                     boolean isClassPathIndexEnabled,
                                                     ClasspathCache cache)