public int iterativeBinarySearching(int[] array, int value) { #header
  if (array == null || array.length == 0) { #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] != value) { #whileLoop
    if (value < array[mid]) { #ifLess
      r = mid - 1; #continueLeft
    } else {
      l = mid + 1; #continueRight
    }
    mid = (l + r) / 2; #updateMidElem
  }
  if (array[mid] == value) { #checkFound
    return mid; #found
  } else {
    return -1; #notFound
  }
}