public void Put(object obj, int mask)
#endif
        {
            StorageImpl db = (StorageImpl)Storage;

            if (db == null)
            {
                throw new StorageError(StorageError.ErrorCode.DELETED_OBJECT);
            }
            Key ins = new Key(mask, db.MakePersistent(obj));

            if (root == 0)
            {
                root   = BitIndexPage.allocate(db, 0, ins);
                height = 1;
            }
            else
            {
                BtreeResult result = BitIndexPage.insert(db, root, ins, height);
                if (result == BtreeResult.Overflow)
                {
                    root    = BitIndexPage.allocate(db, root, ins);
                    height += 1;
                }
            }
            updateCounter += 1;
            nElems        += 1;
            Modify();
        }