private static Node minValue(Node n, int color, int depth, int alpha, int beta) {
		// Test if we have hit the max depth, or if the node has a state of solved
		if (depth <= 0 || n.b.gameIsOver()) {
			return n;
		}

		Node b = new Node();
		b.evaluation = beta;
		int opponentColor = Board.opponentColor(color);

		ArrayList<Move> actions = GenerateSuccessors.allPossibleSuccessors(n.b, color);
		int numberOfSuccessors = actions.size();
		for (Move m : actions) {
			Board tempBoard = new Board(n.b);
			//tempBoard.handleMove(m);
			Node tempNode = new Node(tempBoard, m, Evaluator.evaluateBoard(tempBoard, m, color, numberOfSuccessors));
			Node maxNode = maxValue(tempNode, opponentColor, depth - 1, alpha, b.evaluation);
			if (maxNode.compareTo(b) < 0) {
				b = tempNode;
			}
			if (b.evaluation <= alpha) {
				break;
			}
		}
		return b;
	}