logger.log(Level.FINE, "FAILED to undo move " +
logger.log(Level.WARNING, "FAILED to undo move " +
        private boolean undoMoves() {            int n = 0;            MoveStatus ms;	    synchronized (pendingMoves) {		while (!pendingMoves.isEmpty()) {		    Move m = (Move) pendingMoves.removeLast();		    ms = m.undoMove(world, m.getPrincipal());		    assert ms == MoveStatus.MOVE_OK;		}	    }            for (int i = rejectedMoves.size() - 1; i >= 0; i--) {                // attempt to undo moves starting with the last one                RejectedMove rm = (RejectedMove)rejectedMoves.get(i);                Move attempted = rm.getAttemptedMove();		ms = attempted.tryUndoMove(world, attempted.getPrincipal());                if (ms == MoveStatus.MOVE_OK) {		    attempted.undoMove(world, attempted.getPrincipal());		    logger.log(Level.FINE, "Unrolled precommited move " +			       	attempted.toString());                    rejectedMoves.remove(i);                    forwardMove(new UndoneMove(attempted), ms);                    n++;                } else {		    logger.log(Level.FINE, "FAILED to undo move " +			    attempted + " because " + ms);		    assert false;		}            }            if (n > 0) {                modelRoot.getUserMessageLogger().println("Undid " + n +                    " moves rejected by " + "server!");            }            return (n > 0);        }