code: public ISynchronizationPoint<Exception> compress(Readable input, Writable output, int bufferSize, int maxBuffers, byte priority) {
  		Deflater deflater = new Deflater(level, nowrap);
  		LimitWriteOperationsReuseBuffers limit = new LimitWriteOperationsReuseBuffers(output, bufferSize, maxBuffers);
  		byte[] bufRead = new byte[bufferSize];
  		ByteBuffer buffer = ByteBuffer.wrap(bufRead);
  		AsyncWork<Integer,IOException> task = input.readAsync(buffer);
  		SynchronizationPoint<Exception> end = new SynchronizationPoint<>();
  		task.listenAsync(new Compress(input, output, task, bufRead, deflater, limit, priority, end), true);
  		return end;
  	}
docs: Compress from a Readable to a Writable.