def METHOD_NAME(
    use_case_id: UseCaseID, org_id: int, values: Collection[Union[int, str, None]]
) -> Mapping[Union[int, str], str]:
    """
    Reverse resolves a mixture of indexes and strings in bulk
    if the element is already a string it maps it to itself
    if the element is None it ignores it
    if the element is a positive integer it tries to resolve it
    if the element is 0 or a negative number it ignores it
    The result is a dictionary that is a mixture of strings and ints mapped to the resolved string,
    which is either itself (in case of string keys) or the reverse_resolved string (in case of positive integers)
    Example:
        bulk_reverse_resolve_tag_value( UseCaseKey:PERFORMANCE, 1, [ -1, 0, 1, "some-string", "abc", 7, 33333])
    would return something like this ( presuming that no string was found for 33333 )
    {
        1: "tag-a",
        "some-string": "some-string",
        "abc": "abc",
        7: "tag-b",
    }
    """
    ret_val: Dict[Union[int, str], str] = {}
    indexes_to_resolve: Set[int] = set()
    for value in values:
        if isinstance(value, str):
            ret_val[value] = value  # we already have a string no need to reverse resolve it
        elif isinstance(value, int) and value > 0:  # resolve valid int, do nothing for None
            indexes_to_resolve.add(value)
    resolved_indexes = cast(
        Mapping[Union[int, str], str],
        indexer.bulk_reverse_resolve(use_case_id, org_id, indexes_to_resolve),
    )
    return {**ret_val, **resolved_indexes}