docs: public static FileBatch readFromZip(InputStream is) throws IOException {
          String originalUris = null;
          Map<Integer, byte[]> bytesMap = new HashMap<>();
          try (ZipInputStream zis = new ZipInputStream(new BufferedInputStream(is))) {
              ZipEntry ze;
              while ((ze = zis.getNextEntry()) != null) {
                  String name = ze.getName();
                  byte[] bytes = IOUtils.toByteArray(zis);
                  if (name.equals(ORIGINAL_PATHS_FILENAME)) {
                      originalUris = new String(bytes, 0, bytes.length, StandardCharsets.UTF_8);
                  } else {
                      int idxSplit = name.indexOf("_");
                      int idxSplit2 = name.indexOf(".");
                      int fileIdx = Integer.parseInt(name.substring(idxSplit + 1, idxSplit2));
                      bytesMap.put(fileIdx, bytes);
                  }
              }
          }
  
          List<byte[]> list = new ArrayList<>(bytesMap.size());
          for (int i = 0; i < bytesMap.size(); i++) {
              list.add(bytesMap.get(i));
          }
  
          List<String> origPaths = Arrays.asList(originalUris.split("\n"));
          return new FileBatch(list, origPaths);
      }