LoaderStatus (@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; }