def METHOD_NAME(
        annotation: ast.expr,
) -> Iterable[tuple[Offset, TokenFunc]]:
    nodes: list[ast.AST] = [annotation]
    while nodes:
        node = nodes.pop()
        if isinstance(node, ast.Call):
            nodes.extend(_process_call(node))
        elif isinstance(node, ast.Subscript):
            nodes.extend(_process_subscript(node))
        elif isinstance(node, ast.Constant) and isinstance(node.value, str):
            func = functools.partial(_dequote, new=node.value)
            yield ast_to_offset(node), func
        else:
            for name in node._fields:
                value = getattr(node, name)
                if isinstance(value, ast.AST):
                    nodes.append(value)
                elif isinstance(value, list):
                    nodes.extend(value)