@Override
    public void doWithByteBuffers(final BiConsumer<ByteBuffer, ByteBuffer> byteBufferPairConsumer) {
        try {
            byteBufferPairConsumer.accept(getKeyBuffer(), getValueBuffer());
        } finally {
            this.release();
        }
    }
The buffers will be obtained from the pool and passed to the byteBufferConsumer to use.
On completion of byteBufferPairConsumer the buffers will both be released and will not be available
for any further use.
stroom-bytebuffer/src/main/java/stroom/bytebuffer/PooledByteBufferPairImpl.java