public virtual ByteArrayBuffer ToWriteBuffer(Pointer4 pointer)
        {
            ByteArrayBuffer buffer = new ByteArrayBuffer(pointer.Length());

            _writeBuffer.MergeChildren(this, pointer.Address(), WriteBufferOffset());
            WriteObjectClassID(buffer, ClassMetadata().GetID());
            buffer.WriteByte(HandlerRegistry.HandlerVersion);
            buffer.WriteInt(AspectCount());
            buffer.WriteBitMap(_nullBitMap);
            _writeBuffer.TransferContentTo(buffer);
            return(buffer);
        }
        public sealed override void WriteUpdate(Transaction trans, Pointer4 pointer, ClassMetadata
                                                classMetadata, ArrayType arrayType, ByteArrayBuffer buffer)
        {
            int address = pointer.Address();

            if (address == 0)
            {
                address = AllocateSlotForUserObjectUpdate(trans, pointer.Id(), pointer.Length()).
                          Address();
            }
            WriteEncrypt(buffer, address, 0);
        }