code: def restore_saved_local_scope(
          self,
          saved_variables,
          args_mapping,
          line_number
      ):
          
          restore_nodes = list()
          for var in saved_variables:
              # Is var.RHS a call argument?
              if var.RHS in args_mapping:
                  # If so, use the corresponding definition argument for the RHS of the label.
                  restore_nodes.append(RestoreNode(
                      var.RHS + ' = ' + args_mapping[var.RHS],
                      var.RHS,
                      [var.LHS],
                      line_number=line_number,
                      path=self.filenames[-1]
                  ))
              else:
                  # Create a node for e.g. foo = save_1_foo
                  restore_nodes.append(RestoreNode(
                      var.RHS + ' = ' + var.LHS,
                      var.RHS,
                      [var.LHS],
                      line_number=line_number,
                      path=self.filenames[-1]
                  ))
  
          # Chain the restore nodes
          for node, successor in zip(restore_nodes, restore_nodes[1:]):
              node.connect(successor)
  
          if restore_nodes:
              # Connect the last node to the first restore node
              self.nodes[-1].connect(restore_nodes[0])
              self.nodes.extend(restore_nodes)
  
          return restore_nodes
docs: Restore the previously saved variables to their original values.
  
          Args:
             saved_variables(list[SavedVariable])
             args_mapping(dict): A mapping of call argument to definition argument.
             line_number(int): Of the def of the function call about to be entered into.
  
          Note: We do not need connect_if_allowed because of the
                preceding call to save_local_scope.