private Move getMaxMove(StateTree tree) throws Exception
	{
		if (tree.isLeaf()) {
			return new Move(
					tree.getMove(),
					tree.getScore());
		}
		
		Move maxMove = null;
		for (StateTree successor : tree.getSuccessors()) {
			Move move = this.getMinMove(successor);
			if (maxMove == null || move.getScore() > maxMove.getScore()) {
				maxMove = new Move(successor.getMove(), move.getScore());
			}
		}
		
		return maxMove;
	}