void load() throws InvalidPageStructureException {
        Debug.$assert0.t(isMine());

        _timestamp = getLong(TIMESTAMP_OFFSET);

        if (_page != 0) {
            int type = getByte(TYPE_OFFSET);
            if (type > PAGE_TYPE_MAX) {
                throw new InvalidPageStructureException("Invalid type " + type);
            }
            _type = type;
            setKeyBlockEnd(getChar(KEY_BLOCK_END_OFFSET));

            if (type == PAGE_TYPE_UNALLOCATED) {
                _rightSibling = 0;
                _alloc = _bufferSize;
                _slack = 0;
                _rightSibling = 0;
            } else {
                Debug.$assert0.t(getByte(BUFFER_LENGTH_OFFSET) * 256 == _bufferSize);
                Debug.$assert0.t(getLong(PAGE_ADDRESS_OFFSET) == _page);
                _alloc = getChar(FREE_OFFSET);
                _slack = getChar(SLACK_OFFSET);
                _rightSibling = getLong(RIGHT_SIBLING_OFFSET);

                if (isDataPage()) {
                    _tailHeaderSize = TAILBLOCK_HDR_SIZE_DATA;
                    _mvvCount = Integer.MAX_VALUE;
                    clearEnqueuedForPruning();
                } else if (isIndexPage()) {
                    _tailHeaderSize = TAILBLOCK_HDR_SIZE_INDEX;
                }
            }
        } else {
            _type = PAGE_TYPE_HEAD;
        }
        invalidateFastIndex();
        bumpGeneration();
    }