final byte[][] buf = bufOut.toMultiByteArray();
final int totalBufSize = bufOut.size();
bufOut.clear();
// Because input of decoder fully read, this section required for re-object serialization, etc.
final FastMultiByteArrayInputStream inputBuf = new FastMultiByteArrayInputStream(buf, BUFFERING_BLOCK_SIZE, totalBufSize);
if(!reaccessable) {
inputBuf.setCleanable(true);
}
final ObjectInputStream objectInput = new ObjectInputStream(inputBuf);
final XQEventDecoder newDecoder = new XQEventDecoder(objectInput); // replace old Decoder with fresh Decoder
return newDecoder;
}