logger.log(Level.FINE, "Logging rejected move " +
logger.log(Level.INFO, "Logging rejected move " +
        private void moveCommitted(Move move) {            MoveStatus ms;	    Move pendingMove = null;	    synchronized (pendingMoves) {		if (!pendingMoves.isEmpty()) {		    pendingMove = (Move)pendingMoves.removeFirst();		}	    }	    if (pendingMove != null) {                if (move instanceof RejectedMove) {                    /* moves are rejected in order hence only the first can                     * match*/                    if (((RejectedMove)move).getAttemptedMove()			    .equals(pendingMove)) {			logger.log(Level.FINE, "Logging rejected move " +				    ((RejectedMove) move).getAttemptedMove());                        /* Move was one of ours so we add it to the list of                         * rejected moves and remove it from the list of pending                         * moves */                        rejectedMoves.add(move);                        do {			    // undo all rejected moves                            if (!undoMoves()) {				assert false;                                break;                            }                            /* attempt to commit any moves which were previously                             * blocked */                            while (!approvedMoves.isEmpty()) {                                Move am = (Move)approvedMoves.getFirst();				if (am.doMove(world, am.getPrincipal()) !=					MoveStatus.MOVE_OK) {                                    break;                                }				logger.log(Level.FINE, "Committed queued move "					+ am);                                approvedMoves.removeFirst();                            }                        } while (!approvedMoves.isEmpty());                        return;                    }		    // rejected move was submitted  by another client.                } else if (move.equals(pendingMove)) {		    logger.log(Level.FINE, "Precommitted move acknowledged "			    + "by server:" + move);                    // move succeeded and we have already executed it                    return;                }		// move succeeded but was submitted  by another client		logger.log(Level.FINE, "Didn't recognise move: " + move + 			    "<=>" + pendingMove);            }	    // Replace our pending move	    if (pendingMove != null) {		synchronized (pendingMoves) {		    pendingMoves.addFirst(pendingMove);		}	    }            /* move must be from another client */            if (!(move instanceof RejectedMove)) {		if (logger.isLoggable(Level.FINE) &&		       	!(move instanceof TimeTickMove)) {		    logger.log(Level.FINE, "committing unknown move " + move);		}		GameTime t = (GameTime) world.get(ITEM.TIME,			Player.AUTHORITATIVE);		ms = move.doMove(world, move.getPrincipal());                if (ms != MoveStatus.MOVE_OK) {		    if (move instanceof TimeTickMove &&			    ((TimeTickMove) move).getNewTime().getTime() <=			    t.getTime()) {			// we have already received this TimeTick			// this can occur when we load the game initially			return;		    }		    logger.log(Level.FINE, "Queueing blocked move " +			    move + " - " + ms.toString());                    /* move could not be committed because of                     * a pre-commited move yet to be rejected by the server */                    approvedMoves.addLast(move);                } else {                    forwardMove(move, ms);                }                return;            } else {		logger.log(Level.FINE, "received unknown rejected move!" +			move);	    }        }