def _extract_expressions(node):
if (<EOL>isinstance(node, nodes.Call)<EOL>and isinstance(node.func, nodes.Name)<EOL>and node.func.name == _TRANSIENT_FUNCTION<EOL>):<EOL><INDENT>real_expr = node.args[<NUM_LIT:0>]<EOL>real_expr.parent = node.parent<EOL>for name in node.parent._astroid_fields:<EOL><INDENT>child = getattr(node.parent, name)<EOL>if isinstance(child, (list, tuple)):<EOL><INDENT>for idx, compound_child in enumerate(child):<EOL><INDENT>if compound_child is node:<EOL><INDENT>child[idx] = real_expr<EOL><DEDENT><DEDENT><DEDENT>elif child is node:<EOL><INDENT>setattr(node.parent, name, real_expr)<EOL><DEDENT><DEDENT>yield real_expr<EOL><DEDENT>else:<EOL><INDENT>for child in node.get_children():<EOL><INDENT>yield from _extract_expressions(child)<EOL><DEDENT><DEDENT>
Find expressions in a call to _TRANSIENT_FUNCTION and extract them.

    The function walks the AST recursively to search for expressions that
    are wrapped into a call to _TRANSIENT_FUNCTION. If it finds such an
    expression, it completely removes the function call node from the tree,
    replacing it by the wrapped expression inside the parent.

    :param node: An astroid node.
    :type node:  astroid.bases.NodeNG
    :yields: The sequence of wrapped expressions on the modified tree
    expression can be found.