FileLoader (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; } }