def METHOD_NAME(self, ast):
    """
    Indicates whether a this node contains the handed over node.
    :param ast: an arbitrary meta_model node.
    :type ast: AST_
    :return: AST if this or one of the child nodes contains the handed over element.
    :rtype: AST_ or None
    """
    if self.is_assignment():
        if self.get_assignment() is ast:
            return self
        if self.get_assignment().METHOD_NAME(ast) is not None:
            return self.get_assignment().METHOD_NAME(ast)
    if self.is_function_call():
        if self.get_function_call() is ast:
            return self
        if self.get_function_call().METHOD_NAME(ast) is not None:
            return self.get_function_call().METHOD_NAME(ast)
    if self.is_declaration():
        if self.get_declaration() is ast:
            return self
        if self.get_declaration().METHOD_NAME(ast) is not None:
            return self.get_declaration().METHOD_NAME(ast)
    if self.is_return_stmt():
        if self.get_return_stmt() is ast:
            return self
        if self.get_return_stmt().METHOD_NAME(ast) is not None:
            return self.get_return_stmt().METHOD_NAME(ast)
    return None