def METHOD_NAME(item: str) -> AuthorList:
    out: List[Union[str, Tuple[str, str]]] = []
    # deal with 'for the _whatever_' or 'for _whatever_' or 'the'
    not_linked = re.match(r'\s*((for\s+the\s+)|(the\s+))(?P<rest>.*)',
                          item, flags=re.IGNORECASE)
    if not_linked:
        out.append(not_linked.group(1))
        item = not_linked.group('rest')
    item = tex2utf(item)
    item = re.sub(r'\.(?!) ', '.', item)
    item = re.sub(r'\\(,| )', ' ', item)
    item = re.sub(r'([^\\])~', r'\1', item)
    item = re.sub(r',\s*', ' ', item)
    colab_m = re.match(r'^(.+)\s+(collaboration|group|team)(\s?.*)',
                       item, re.IGNORECASE)
    if colab_m:
        colab = f'{colab_m.group(1)} {colab_m.group(2)}'
        out.append((item, colab))
        return out
    the_m = re.match('the (.*)', item, re.IGNORECASE)
    if the_m:
        out.append((item, the_m.group(1)))
        return out
    # else we'll treat it as a name
    name_bits = item.split()
    if len(name_bits) == 0:
        query_str = item
    else:
        # Do not include SJ, Jr, Sr, III, IV, etc. in search
        if re.match(r'SJ|Jr|Sr|[IV]{2,}$', name_bits[-1]) \
           and len(name_bits) > 1:
            name_bits.pop()
        surname = ''
        if len(name_bits) > 0:
            surname = name_bits.pop()
        name_bit_count = 0
        surname_prefixes = []
        initials = []
        found_prefix = False
        for name_bit in name_bits:
            name_bit_count += 1
            if (found_prefix or (name_bit_count > 1
                                 and re.match('^(' + PREFIX_MATCH + ')$',
                                              name_bit, re.IGNORECASE))):
                surname_prefixes.append(name_bit)
                found_prefix = True
            else:
                initials.append(name_bit[0:1])
        sur_initials = surname + ', ' + \
            ' '.join(initials) if initials else surname
        query_str = ' '.join([*surname_prefixes, sur_initials])
    out.append((item, query_str))
    return out