docs: private float crossCheckVertical(int startI, int centerJ, int maxCount,
        int originalStateCountTotal) {
      BitMatrix image = this.image;
  
      int maxI = image.getHeight();
      int[] stateCount = getCrossCheckStateCount();
  
      // Start counting up from center
      int i = startI;
      while (i >= 0 && image.get(centerJ, i)) {
        stateCount[2]++;
        i--;
      }
      if (i < 0) {
        return Float.NaN;
      }
      while (i >= 0 && !image.get(centerJ, i) && stateCount[1] <= maxCount) {
        stateCount[1]++;
        i--;
      }
      // If already too many modules in this state or ran off the edge:
      if (i < 0 || stateCount[1] > maxCount) {
        return Float.NaN;
      }
      while (i >= 0 && image.get(centerJ, i) && stateCount[0] <= maxCount) {
        stateCount[0]++;
        i--;
      }
      if (stateCount[0] > maxCount) {
        return Float.NaN;
      }
  
      // Now also count down from center
      i = startI + 1;
      while (i < maxI && image.get(centerJ, i)) {
        stateCount[2]++;
        i++;
      }
      if (i == maxI) {
        return Float.NaN;
      }
      while (i < maxI && !image.get(centerJ, i) && stateCount[3] < maxCount) {
        stateCount[3]++;
        i++;
      }
      if (i == maxI || stateCount[3] >= maxCount) {
        return Float.NaN;
      }
      while (i < maxI && image.get(centerJ, i) && stateCount[4] < maxCount) {
        stateCount[4]++;
        i++;
      }
      if (stateCount[4] >= maxCount) {
        return Float.NaN;
      }
  
      // If we found a finder-pattern-like section, but its size is more than 40% different than
      // the original, assume it's a false positive
      int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] +
          stateCount[4];
      if (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {
        return Float.NaN;
      }
  
      return foundPatternCross(stateCount) ? centerFromEnd(stateCount, i) : Float.NaN;
    }