@Override
  public @Nullable File downloadCacheById(@NotNull JpsLoaderContext context, @NotNull String cacheId, @NotNull File targetDir) {
    String downloadUrl = myServerUrl + "/caches/" + cacheId;
    String fileName = "portable-build-cache.zip";
    DownloadableFileUrl description = new DownloadableFileUrl(downloadUrl, fileName);
    JpsCachesDownloader downloader = new JpsCachesDownloader(Collections.singletonList(description), context.getNettyClient(), context);

    LOG.debug("Downloading JPS caches from: " + downloadUrl);
    File zipFile;
    try {
      List<Pair<File, DownloadableFileUrl>> pairs = downloader.download(targetDir);
      //downloadIndicatorManager.finished(this);

      Pair<File, DownloadableFileUrl> first = ContainerUtil.getFirstItem(pairs);
      zipFile = first != null ? first.first : null;
      if (zipFile != null) return zipFile;
      LOG.warn("Failed to download JPS caches");
    }
    catch (ProcessCanceledException | IOException e) {
      //noinspection InstanceofCatchParameter
      if (e instanceof IOException) LOG.warn("Failed to download JPS caches from URL: " + downloadUrl, e);
    }
    return null;
  }
@Override
  public @Nullable File downloadCacheById(@NotNull JpsLoaderContext context, @NotNull String cacheId, @NotNull File targetDir)