def METHOD_NAME(self):
    """
    Return a clone ("deep copy") of this node.
    :return: new AST node instance
    :rtype: ASTIfStmt
    """
    if_clause_dup = None
    if self.if_clause:
        if_clause_dup = self.if_clause.METHOD_NAME()
    elif_clauses_dup = None
    if self.elif_clauses:
        elif_clauses_dup = [elif_clause.METHOD_NAME() for elif_clause in self.elif_clauses]
    else_clause_dup = None
    if self.else_clause:
        else_clause_dup = self.else_clause.METHOD_NAME()
    dup = ASTIfStmt(if_clause=if_clause_dup,
                    elif_clauses=elif_clauses_dup,
                    else_clause=else_clause_dup,
                    # ASTNode common attributes:
                    source_position=self.source_position,
                    scope=self.scope,
                    comment=self.comment,
                    pre_comments=[s for s in self.pre_comments],
                    in_comment=self.in_comment,
                    implicit_conversion_factor=self.implicit_conversion_factor)
    return dup