code: protected long write(RandomAccessReader reader, ChecksumValidator validator, int start, long length, long bytesTransferred) throws IOException
      {
          int toTransfer = (int) Math.min(transferBuffer.length, length - bytesTransferred);
          int minReadable = (int) Math.min(transferBuffer.length, reader.length() - reader.getFilePointer());
  
          reader.readFully(transferBuffer, 0, minReadable);
          if (validator != null)
              validator.validate(transferBuffer, 0, minReadable);
  
          limiter.acquire(toTransfer - start);
          compressedOutput.write(transferBuffer, start, (toTransfer - start));
  
          return toTransfer;
      }
docs: Sequentially read bytes from the file and write them to the output stream
  
  @param reader The file reader to read from
  @param validator validator to verify data integrity
  @param start number of bytes to skip transfer, but include for validation.
  @param length The full length that should be read from {@code reader}
  @param bytesTransferred Number of bytes already read out of {@code length}
  
  @return Number of bytes read
  
  @throws java.io.IOException on any I/O error