private synchronized @Nullable Loader getLoaderSlowPath(int loaderIndex) {
    while (loaders.size() < (loaderIndex + 1)) {
      if (searchOffset == files.length) {
        if (useCache) {
          allUrlsWereProcessed = true;
        }
        return null;
      }

      // https://youtrack.jetbrains.com/issue/IDEA-314175
      // some environments (e.g., Bazel tests) put relative jar paths on the Java classpath,
      // because relative paths are useful for hermeticity.
      Path path = files[searchOffset++].toAbsolutePath();
      try {
        Loader loader = createLoader(path);
        if (loader != null) {
          if (useCache && searchOffset == files.length) {
            allUrlsWereProcessed = true;
          }

          loaders.add(loader);
          lastLoaderProcessed.incrementAndGet();
        }
      }
      catch (IOException e) {
        //noinspection CallToPrintStackTrace
        e.printStackTrace();
      }
    }

    return loaders.get(loaderIndex);
  }
private synchronized @Nullable Loader getLoaderSlowPath(int loaderIndex)