if (requiresRedo(loggable, page)) {
if (ph.getLsn() != Page.NO_PAGE && requiresRedo(loggable, page)) {
	protected void redoAddValue(AddValueLoggable loggable) {		DOMPage page = getCurrentPage(loggable.pageNum);		DOMFilePageHeader ph = page.getPageHeader();		if (requiresRedo(loggable, page)) {			try {				ByteConversion.shortToByte(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;				// 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(loggable.tid);                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;			}		}	}