def rotated_binary_search(sorted_collection: list[int], item: int, low: int, high: int) -> int:
    """
    :param sorted_collection: the rotated list we would like to find the item within
    :param item: the item to be found within the sorted_collection
    :param low: for the binary search, the lowest index on the current search - initially 0
    :param high: for the binary search, the highest index on the current search - initially the length of sorted_collection - 1
    :return: index i that item appears in sequence

    Examples:
    >>> rotated_binary_search([5, 6, 7, 1, 2, 3], 8, 0, 5)
    -1

    >>> rotated_binary_search([11, 12, 1, 2, 3, 4, 5, 6], 5, 0, 7)
    6

    >>> rotated_binary_search([11, 12, 13, 16, 20, 2], 2, 0, 5)
    5

    >>> rotated_binary_search([20, 21, 1, 2, 3], 20, 0, 4)
    0

    """

    mid = int((high + low) / 2)
    if sorted_collection[mid] == item:  # found the item
        return mid
    if low >= high:  # couldn't find the item
        return -1
    elif sorted_collection[low] < sorted_collection[mid]:
        if (item <= sorted_collection[mid]) and (item >= sorted_collection[low]):
            return rotated_binary_search(sorted_collection, item, low, mid)
        else:
            return rotated_binary_search(sorted_collection, item, mid + 1, high)
    else:
        if (item <= sorted_collection[high]) and (item >= sorted_collection[mid + 1]):
            return rotated_binary_search(sorted_collection, item, mid + 1, high)
        else:
            return rotated_binary_search(sorted_collection, item, low, mid)