Since all our implementations of ByteBufferDestination return a shared ByteBuffer in getByteBuffer(), I don't see why it needs to be provided to the drain() method. drain() returns the buffer (or a new one in the case of MemoryMappedFileManager), and I don't see why an assumption could be made that the buffer you're draining is the exact one the destination already knows about. Is there a particular use case why this might not work?
-- Matt Sicker <boa...@gmail.com>