code: static void run(MultiIndex index, RedoLog redoLog) throws IOException
     {
        if (!redoLog.hasEntries())
        {
           log.debug("RedoLog is empty, no recovery needed.");
           return;
        }
        log.info("Found uncommitted redo log. Applying changes now...");
        Recovery r = new Recovery(index, redoLog);
        r.run();
        log.info("Redo changes applied.");
     }
docs: Runs a recovery on <code>index</code> if <code>redoLog</code> contains
  log entries.
  <br>
  If recovery succeeds the <code>index</code> is flushed and the redo log
  is cleared. That is, the <code>index</code> is stable.<br>
  If recovery fails an IOException is thrown, and the redo log will not
  be modified. The recovery process can then be executed again, after
  fixing the cause of the IOException (e.g. disk full).
  
  @param index the index to recover.
  @param redoLog the redo log.
  @throws IOException if the recovery fails.