### Question:
ProgressTracker { public long bytesTransferredThreshold() { return options.bytesTransferredThreshold; } private  ProgressTracker(Builder builder); long bytesTransferredThreshold(); Optional<Duration> timePassedThreshold(); boolean enclosedProgress(); Optional<Executor> executor(); BodyPublisher tracking(BodyPublisher upstream, Listener listener); BodyPublisher trackingMultipart(
      MultipartBodyPublisher upstream, MultipartListener listener); BodySubscriber<T> tracking(
      BodySubscriber<T> downstream, Listener listener, long contentLengthIfKnown); BodyHandler<T> tracking(BodyHandler<T> handler, Listener listener); static ProgressTracker create(); static Builder newBuilder();  }### Answer:
@Test void trackUploadProgressWithByteThreshold() { int batchSize = 64; int count = 20; for (int scale = 1; scale <= count; scale++) { int finalScale = scale; testUploadWithThreshold( batchSize, count, scale, b -> b.bytesTransferredThreshold(batchSize * finalScale)); } }
@Test void trackDownloadProgressWithByteThreshold() { int batchSize = 64; int count = 20; for (int scale = 1; scale <= count; scale++) { int finalScale = scale; testDownloadWithThreshold( batchSize, count, scale, b -> b.bytesTransferredThreshold(batchSize * finalScale)); } }