public int recursiveBinarySearching(String[] array, String value, int l, int r) { #header
  if (array == null || value == null) { #ifNull
    return -1; #invalid
  }
  if (l > r || l < 0 || r >= array.length) { #invalidIndex
    return -1; #invalidIndexReturn
  }
  int mid = (l + r) / 2; #installMidMarker
  if (value.equals(array[mid])) #checkFound
    return mid; #found
  else if (value.compareTo(array[mid]) < 0) #ifLess
    return recursiveBinarySearching(array, value, l, mid - 1); #continueLeft

  return recursiveBinarySearching(array, value, mid + 1, r); #continueRight
}