code: public static long unzipNoGuava(
        final Path zip,
        final Configuration configuration,
        final File outDir,
        final Progressable progressable,
        final RetryPolicy retryPolicy
    ) throws IOException
    {
      final RetryPolicy effectiveRetryPolicy;
      if (retryPolicy == null) {
        effectiveRetryPolicy = RetryPolicies.exponentialBackoffRetry(
            NUM_RETRIES,
            SECONDS_BETWEEN_RETRIES,
            TimeUnit.SECONDS
        );
      } else {
        effectiveRetryPolicy = retryPolicy;
      }
  
      final DataPusher zipPusher = (DataPusher) RetryProxy.create(
          DataPusher.class,
          new DataPusher()
          {
            @Override
            public long push() throws IOException
            {
              try {
                final FileSystem fileSystem = zip.getFileSystem(configuration);
                long size = 0L;
                final byte[] buffer = new byte[1 << 13];
                progressable.progress();
                try (ZipInputStream in = new ZipInputStream(fileSystem.open(zip, 1 << 13))) {
                  for (ZipEntry entry = in.getNextEntry(); entry != null; entry = in.getNextEntry()) {
                    final String fileName = entry.getName();
                    final String outputPath = new File(outDir, fileName).getAbsolutePath();
  
                    CompressionUtils.validateZipOutputFile(zip.getName(), new File(outputPath), outDir);
  
                    try (final OutputStream out = new BufferedOutputStream(new FileOutputStream(outputPath))) {
                      for (int len = in.read(buffer); len >= 0; len = in.read(buffer)) {
                        progressable.progress();
                        if (len == 0) {
                          continue;
                        }
                        size += len;
                        out.write(buffer, 0, len);
                      }
                      out.flush();
                    }
                  }
                }
                progressable.progress();
                return size;
              }
              catch (IOException | RuntimeException exception) {
                log.error(exception, "Exception in unzip retry loop");
                throw exception;
              }
            }
          },
          effectiveRetryPolicy
      );
      return zipPusher.push();
    }
docs: TODO: Replace this whenever hadoop gets their act together and stops breaking with more recent versions of Guava