private Set<Integer> findGivenValueInCol(int value, int startPoint, int numberOfFinds) {
    Set<Integer> valueLocations = new HashSet<Integer>();
    int stopPoint = (int) Math.pow(this.getSize(), 2);
    int nextColCellNumber = this.getSize();
    int foundNumber = 0;
    if (numberOfFinds == 0) {
      foundNumber--;
    }/*
         * else { startPoint = startPoint + nextColCellNumber;
        }
         */

    boolean stopSearching = false;

    Set<Integer> currentSet = new HashSet<Integer>();

    for (int i = startPoint; i < stopPoint && !stopSearching; i += nextColCellNumber) {
      if (getElementWithNumber(i) == EMPTY_ELEMENT_VALUE) {
        currentSet.addAll(this.validElementsCache.get(i));
        for (int valueTest : currentSet) {
          if (value == valueTest && foundNumber < numberOfFinds) {
            valueLocations.add(i);
            if (numberOfFinds != 0) {
              foundNumber++;
            }
          } else if (value == valueTest) {
            //reseting valueLocation to -1 because it found more than one location with the value in the row.
            valueLocations.clear();
            stopSearching = true;
            break;
          }
        }
        currentSet.clear();
      }
    }
    return (valueLocations);
  }