if (ph.getLsn() > -1 && requiresRedo(loggable, page)) {
if (ph.getLsn() != Page.NO_PAGE && requiresRedo(loggable, page)) {
	protected void redoRemoveValue(RemoveValueLoggable loggable) {		DOMPage page = getCurrentPage(loggable.pageNum);//        LOG.debug(debugPageContents(page));		DOMFilePageHeader ph = page.getPageHeader();		if (ph.getLsn() > -1 && requiresRedo(loggable, page)) {			RecordPos pos = page.findRecord(ItemId.getId(loggable.tid));			SanityCheck.ASSERT(pos != null, "Record not found: "					+ page.page.getPageInfo());			int startOffset = pos.offset - 2;            if (ItemId.isLink(loggable.tid)) {                int end = pos.offset + 8;                System.arraycopy(page.data, pos.offset + 8, page.data,                        pos.offset - 2, page.len - end);                page.len = page.len - 10;            } else {    			// get the record length                short l = ByteConversion.byteToShort(page.data, pos.offset);                if (ItemId.isRelocated(loggable.tid)) {                    pos.offset += 8;                    l += 8;                }                if (l == OVERFLOW)                    l += 8;    			// end offset    			int end = startOffset + 4 + l;    			int len = ph.getDataLength();    			// remove old value    			System.arraycopy(page.data, end, page.data, startOffset, len - end);    			page.setDirty(true);    			len = len - l - 4;    			page.len = len;            }            ph.setDataLength(page.len);            page.setDirty(true);			ph.decRecordCount();            ph.setLsn(loggable.getLsn());            page.cleanUp();            dataCache.add(page);		}//		LOG.debug(debugPageContents(page));	}