@Override
  public LoaderStatus extract(@Nullable Object loadResults) {
    if (!(loadResults instanceof List)) return LoaderStatus.FAILED;
    LOG.info("Start extraction of compilation outputs");

    //noinspection unchecked
    List<OutputLoadResult> outputLoadResults = (List<OutputLoadResult>)loadResults;
    Map<File, String> result = new ConcurrentHashMap<>();
    try {
      // Extracting results
      long start = System.currentTimeMillis();
      myContext.sendDescriptionStatusMessage(JpsBuildBundle.message("progress.text.extracting.downloaded.results"));
      List<Future<?>> futureList = ContainerUtil.map(outputLoadResults, loadResult ->
        EXECUTOR_SERVICE.submit(new UnzipOutputTask(result, loadResult, myContext)));
      for (Future<?> future : futureList) {
        future.get();
      }
      myTmpFolderToModuleName = result;
      LOG.info("Unzip compilation output took: " + (System.currentTimeMillis() - start));
      return LoaderStatus.COMPLETE;
    }
    catch (ProcessCanceledException | InterruptedException | ExecutionException e) {
      if (!(e.getCause() instanceof ProcessCanceledException)) LOG.warn("Failed unzip downloaded compilation outputs", e);
      outputLoadResults.forEach(loadResult -> FileUtil.delete(loadResult.getZipFile()));
      result.forEach((key, value) -> FileUtil.delete(key));
    }
    return LoaderStatus.FAILED;
  }
@Override
  public LoaderStatus extract(@Nullable Object loadResults)