protected boolean isNeighboredBy(int x, int y, int val) {
		for (int i = 0; i < this.sudokuSize; i++) {
			/*
			 * If a cell in the column or in the row contains the value, the
			 * cell is neighbored by that value.
			 */
			if (sudokuGridStorage[i][x] == val
					|| sudokuGridStorage[y][i] == val) {
				return true;
			}
		}

		/*
		 * Calculate the offsets for the carree.
		 */
		int xos = (x / this.carreeSize) * this.carreeSize;
		int yos = (y / this.carreeSize) * this.carreeSize;

		/*
		 * If the value is found within the carree, the cell is neighbored by
		 * that value.
		 */
		for (int x1 = 0; x1 < this.carreeSize; x1++) {
			for (int y1 = 0; y1 < this.carreeSize; y1++) {
				if (sudokuGridStorage[yos + y1][xos + x1] == val) {
					return true;
				}
			}
		}

		/*
		 * If it was neither found in the carres, nor in the rows or columns,
		 * the cell is not neighbored by that value
		 */
		return false;
	}