if (requiresRedo(loggable, page)) {
if (ph.getLsn() != Page.NO_PAGE && requiresRedo(loggable, page)) {
    protected void redoAddMovedValue(AddMovedValueLoggable loggable) {        DOMPage page = getCurrentPage(loggable.pageNum);        DOMFilePageHeader ph = page.getPageHeader();        if (requiresRedo(loggable, page)) {            try {                ByteConversion.shortToByte(ItemId.setIsRelocated(loggable.tid), page.data, page.len);                short valueLen = (short) loggable.value.length;                page.len += 2;                // save data length                // overflow pages have length 0                ByteConversion.shortToByte(valueLen, page.data, page.len);                page.len += 2;                ByteConversion.longToByte(loggable.backLink, page.data, page.len);                page.len += 8;                // save data                System.arraycopy(loggable.value, 0, page.data, page.len,                        valueLen);                page.len += valueLen;                ph.incRecordCount();                ph.setDataLength(page.len);                page.setDirty(true);                ph.setNextTID(ItemId.getId(loggable.tid));                ph.incRecordCount();                ph.setLsn(loggable.getLsn());                dataCache.add(page, 2);            } catch (ArrayIndexOutOfBoundsException e) {                LOG.warn("page: " + page.getPageNum() + "; len = " + page.len                        + "; value = " + loggable.value.length);                throw e;            }        }    }