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

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

}