code: def update_field(self, elements):
          
          changed = False
          if isinstance(elements, list):
              if self.is_any or self.is_none:
                  self.add_many(elements)
                  changed = True
              else:
                  _elements = element_resolver(elements, do_raise=False)
                  if set(self.all_as_href()) ^ set(_elements):
                      self.data[self.typeof] = _elements
                      changed = True
          
          if changed and self.rule and (isinstance(self, (Source, Destination)) and \
              self.rule.typeof in ('fw_ipv4_nat_rule', 'fw_ipv6_nat_rule')):
              # Modify NAT cell if necessary
              self.rule._update_nat_field(self)
              
          return changed
docs: Update the field with a list of provided values but only if the values
          are different. Return a boolean indicating whether a change was made
          indicating whether `save` should be called. If the field is currently
          set to any or none, then no comparison is made and field is updated.
          
          :param list elements: list of elements in href or Element format
              to compare to existing field
          :rtype: bool