code: def add(self, jam, on_conflict='fail'):
          
  
          if on_conflict not in ['overwrite', 'fail', 'ignore']:
              raise ParameterError("on_conflict='{}' is not in ['fail', "
                                   "'overwrite', 'ignore'].".format(on_conflict))
  
          if not self.file_metadata == jam.file_metadata:
              if on_conflict == 'overwrite':
                  self.file_metadata = jam.file_metadata
              elif on_conflict == 'fail':
                  raise JamsError("Metadata conflict! "
                                  "Resolve manually or force-overwrite it.")
  
          self.annotations.extend(jam.annotations)
          self.sandbox.update(**jam.sandbox)
docs: Add the contents of another jam to this object.
  
          Note that, by default, this method fails if file_metadata is not
          identical and raises a ValueError; either resolve this manually
          (because conflicts should almost never happen), force an 'overwrite',
          or tell the method to 'ignore' the metadata of the object being added.
  
          Parameters
          ----------
          jam: JAMS object
              Object to add to this jam
  
          on_conflict: str, default='fail'
              Strategy for resolving metadata conflicts; one of
                  ['fail', 'overwrite', or 'ignore'].
  
          Raises
          ------
          ParameterError
              if `on_conflict` is an unknown value
  
          JamsError
              If a conflict is detected and `on_conflict='fail'`