public ByteBuffer Serialize(Func <int, ByteBuffer> bufferCreator) { int headerSize = HeaderType.GetHeaderSize(_headerType); ByteBuffer byteBuffer = _data.Serialize(LEN_SIZE + headerSize, bufferCreator); int length = byteBuffer.position; byteBuffer.position = 0; byteBuffer.WriteUShort((ushort)length); _serializeHeader(byteBuffer); byteBuffer.position = length; return(byteBuffer); }