code: def merge(self, values, lists_only=False):
          
          if isinstance(values, self.__class__):
              self.merge_from_obj(values, lists_only=lists_only)
          elif isinstance(values, dict):
              self.merge_from_dict(values, lists_only=lists_only)
          else:
              raise ValueError("{0} or dictionary expected; found '{1}'.".format(self.__class__.__name__,
                                                                                 type(values).__name__))
docs: Merges list-based attributes into one list including unique elements from both lists. When ``lists_only`` is
          set to ``False``, updates dictionaries and overwrites single-value attributes. The resulting configuration
          is 'clean', i.e. input values converted and validated. If the conversion is not possible, a ``ValueError`` is
          raised.
  
          :param values: Values to update the ConfigurationObject with.
          :type values: dict | ConfigurationObject
          :param lists_only: Ignore single-value attributes and update dictionary options.
          :type lists_only: bool