int search(String[] array, String value, int lower, int upper): @CodeLabel("header")
  if the input array or value are null: @CodeLabel("ifNull")
    return -1;
  if the current position is outside the array: @CodeLabel("invalidIndex")
    return -1; @CodeLabel("invalidIndexReturn")
  set mid = (lower + upper) / 2. @CodeLabel("installMidMarker")
  if the element at position pos is equal to value: @CodeLabel("checkFound")
    return mid; @CodeLabel("found")
  if the element is less than the element at position mid: @CodeLabel("ifLess")
    return search(array, value, lower, mid - 1); @CodeLabel("continueLeft")
  return search(array, value, mod + 1, upper); @CodeLabel("continueRight")