public byte[] toStream() throws OSerializationException { final long timer = OProfiler.getInstance().startChrono(); try { final OMemoryStream outStream = new OMemoryStream(); outStream.jump(0); outStream.set(pageSize); outStream.setAsFixed(parentRid.toStream()); outStream.setAsFixed(leftRid.toStream()); outStream.setAsFixed(rightRid.toStream()); outStream.set(color); outStream.set(size); for (int i = 0; i < size; ++i) serializedKeys[i] = outStream.set(serializeNewKey(i)); for (int i = 0; i < size; ++i) serializedValues[i] = outStream.set(serializeNewValue(i)); final byte[] buffer = outStream.toByteArray(); stream.setSource(buffer); record.fromStream(buffer); return buffer; } catch (IOException e) { throw new OSerializationException("Cannot marshall RB+Tree node", e); } finally { OProfiler.getInstance().stopChrono("OMVRBTreeMapEntry.toStream", timer); } }