/**
		 * Find digits that still can be used in a given empty cell.
		 * @param emptyCell Empty cell to search still free digits for.
		 */
		private void findDigitsStillFree(EmptyCell emptyCell) {
			emptyCell.setAllDigitsStillFree();
			for (int j = 0; j < BOARD_SIZE; j++) {
				int boardDigit = sudokuBoard[emptyCell.rowIndex, j];
				if (boardDigit != CELL_EMPTY)
					emptyCell.digitsStillFree[boardDigit] = DIGIT_IN_USE;
			}
			for (int i = 0; i < BOARD_SIZE; i++) {
				int boardDigit = sudokuBoard[i, emptyCell.colIndex];
				if (boardDigit != CELL_EMPTY)
					emptyCell.digitsStillFree[boardDigit] = DIGIT_IN_USE;
			}
			SubSquare sub = SubSquare.getSubSqare(emptyCell);
			/*
			 * Mark digits used in a sub-square.
			 */
			for (int i = sub.rowMin; i < sub.rowMax; i++)
				for (int j = sub.colMin; j < sub.colMax; j++) {
					int boardDigit = sudokuBoard[i, j];
					if (boardDigit != CELL_EMPTY)
						emptyCell.digitsStillFree[boardDigit] = DIGIT_IN_USE;
				}
			/*
			 * Find number of still free digits to use.
			 */
			emptyCell.digitsStillFreeNumber = 0;
			for (int digit = 1; digit < 10; digit++)
				if (emptyCell.digitsStillFree[digit] == DIGIT_STILL_FREE)
					emptyCell.digitsStillFreeNumber++;
		}