def _isInner(node):
    """
    Determine whether the given node is, at any point in its syntactic
    parentage, defined within a function.

    @param node: The node to inspect.
    @type node: L{logilab.astng.bases.NodeNG}

    @return: a boolean indicating if the given node is defined as an inner
        class or inner function.
    """
    while node:
        node = node.parent
        if isinstance(node, scoped_nodes.FunctionDef):
            return True
    return False