code: def _should_send_property(self, key, value):
          
          to_json = self.trait_metadata(key, 'to_json', self._trait_to_json)
          if key in self._property_lock:
              # model_state, buffer_paths, buffers
              split_value = _remove_buffers({ key: to_json(value, self)})
              split_lock = _remove_buffers({ key: self._property_lock[key]})
              # A roundtrip conversion through json in the comparison takes care of
              # idiosyncracies of how python data structures map to json, for example
              # tuples get converted to lists.
              if (jsonloads(jsondumps(split_value[0])) == split_lock[0]
                  and split_value[1] == split_lock[1]
                  and _buffer_list_equal(split_value[2], split_lock[2])):
                  return False
          if self._holding_sync:
              self._states_to_send.add(key)
              return False
          else:
              return True
docs: Check the property lock (property_lock)