def METHOD_NAME(line):
    """Process tagged line transformations, such as auto colorization
    and pattern rules.
    >>> process_tags("[*] FOO: «bar»\\n")
    '\\x1b[1m\\x1b[34m[*]\\x1b[0m FOO: \\x1b[37m«bar»\\x1b[0m\\n'
    """
    tag_list = [('%BoldBlue', '[*] '),   # INFO
                ('%BoldRed', '[!] '),    # ERROR
                ('%BoldPink', '[?] '),   # QUESTION
                ('%BoldYellow', '[-] '), # WARNING
                ('%BoldBlack', '[#] ')]  # DEBUG
    # if not tagged, return the line as it is
    tag = None # make pylint happy
    for index, tag in enumerate(tag_list):
        if line.startswith(tag[1]):
            break
        if index == len(tag_list) - 1:
            return line
    # remove dulpicate tags >>> "[!] [!] Foo" -> "[!] Foo"
    while line[len(tag[1]):][0:len(tag[1])] == tag[1]:
        line = line[len(tag[1]):]
    # format line's tag with requested color style
    line = colorize(*tag) + line[len(tag[1]):]
    # colorize «*» patterns from tagged line:
    dye = lambda obj: colorize('%White', repr(obj.group(1)))
    line = re.sub('«(.+?)»', dye, line)
    dye = lambda obj: '`' + colorize('%DimWhiteBold', obj.group(1)) + '`'
    line = re.sub('`(.+?)`', dye, line)
    return line