docs: public static long retryCopy(
        final ByteSource byteSource,
        final ByteSink byteSink,
        final Predicate<Throwable> shouldRetry,
        final int maxAttempts
    )
    {
      try {
        return RetryUtils.retry(
            () -> {
              try (InputStream inputStream = byteSource.openStream()) {
                try (OutputStream outputStream = byteSink.openStream()) {
                  final long retval = ByteStreams.copy(inputStream, outputStream);
                  // Workarround for http://hg.openjdk.java.net/jdk8/jdk8/jdk/rev/759aa847dcaf
                  outputStream.flush();
                  return retval;
                }
              }
            },
            shouldRetry,
            maxAttempts
        );
      }
      catch (Exception e) {
        throw new RuntimeException(e);
      }
    }