if ((dp.getPageHeader().getLsn() == Lsn.LSN_INVALID || requiresRedo(loggable, dp)) && loggable != null)
if ((dp.getPageHeader().getLsn() != Page.NO_PAGE && requiresRedo(loggable, dp)) && loggable != null)
    private DataPage createPageHelper(Loggable loggable, long newPage) {        try {            DataPage dp = (DataPage) dataCache.get(newPage);            if (dp == null) {                final Page page = getPage(newPage);                byte[] data = page.read();                if (page.getPageHeader().getLsn() == Lsn.LSN_INVALID || requiresRedo(loggable, page)) {                    reuseDeleted(page);                    BFilePageHeader ph = (BFilePageHeader) page.getPageHeader();                    ph.setStatus(RECORD);                    ph.setDataLength(0);                    ph.setDataLen(fileHeader.getWorkSize());                    data = new byte[fileHeader.getWorkSize()];                    ph.nextTID = 32;                    dp = new SinglePage(page, data, true);                } else {                    dp = new SinglePage(page, data, true);                }            }            if ((dp.getPageHeader().getLsn() == Lsn.LSN_INVALID || requiresRedo(loggable, dp)) && loggable != null)                dp.getPageHeader().setLsn(loggable.getLsn());            dp.setDirty(true);            dataCache.add(dp);            return dp;        } catch (IOException e) {            LOG.warn("An IOException occurred during redo: " + e.getMessage(), e);        }        return null;    }