public static void unzip(@Nullable ProgressIndicator progress,
                           @NotNull Path targetDir,
                           @NotNull ZipInputStream stream,
                           @Nullable NullableFunction<? super String, String> pathConvertor,
                           @Nullable ContentProcessor contentProcessor,
                           boolean unwrapSingleTopLevelFolder) throws IOException {
    Path unzipToDir = getUnzipToDir(progress, targetDir, unwrapSingleTopLevelFolder);
    ZipEntry entry;
    while ((entry = stream.getNextEntry()) != null) {
      unzipEntryToDir(progress, entry, stream, unzipToDir,  pathConvertor, contentProcessor);
    }
    if (unwrapSingleTopLevelFolder) {
      doUnwrapSingleTopLevelFolder(unzipToDir, targetDir);
    }
  }
public static void unzip(@Nullable ProgressIndicator progress,
                           @NotNull Path targetDir,
                           @NotNull ZipInputStream stream,
                           @Nullable NullableFunction<? super String, String> pathConvertor,
                           @Nullable ContentProcessor contentProcessor,
                           boolean unwrapSingleTopLevelFolder)