public int iterativeBinarySearching(String[] array, String value) { #header
  if (array == null || array.length == 0 || value == null) { #ifNull
    return -1; #invalid
  }
  int nrElems = array.length(); #getArrayLength
  int l = 0; #installLMarker
  int r = nrElems - 1; #installRMarker
  int mid = (l + r) / 2; #installMidMarker
  while (r > l && !(array[mid].equals(value))) { #whileLoop
    if (value.compareTo(array[mid]) < 0) { #ifLess
      r = mid - 1; #continueLeft
    } else {
      l = mid + 1; #continueRight
    }
    mid = (l + r) / 2; #updateMidElem
  }
  if (array[mid].equals(value)) { #checkFound
    return mid; #found
  } else {
    return -1; #notFound
  }
}