How about this optimization?:

* If `bb` is large,
* call flush() and
* wrap `bb` into MessageBuffer
* call `out.flush(theCreatedMessageBufferWrappingBb)`

We can remove one copying :-)
I think this is safe because MessageBuffer is a class, not interface.