def METHOD_NAME(self, cache=None):
    save_stmt = None
    restore_stmts = None
    if cache is not None:
        save_stmt = cache.get("save_stmt", None)
        restore_stmts = cache.get("restore_stmts", None)
    if save_stmt is None:
        save_stmt = self._find_retaddr_save_stmt()
    if restore_stmts is None:
        restore_stmts = self._find_retaddr_restore_stmt()
    if save_stmt is None:
        return
    # update the first block
    block, stmt_idx, _ = save_stmt
    block_copy = block.copy()
    block_copy.statements.pop(stmt_idx)
    self._update_block(block, block_copy)
    # update all endpoint blocks
    if restore_stmts:
        for block, stmt_idx, _ in restore_stmts:
            block_copy = block.copy()
            block_copy.statements.pop(stmt_idx)
            self._update_block(block, block_copy)