def _real_set(self, obj, old, value, hint=None):
        # Currently as of Bokeh 0.11.1, all hinted events modify in place. However this may 
        # need refining later if this assumption changes. 
        unchanged = self.descriptor.matches(value, old) and (hint is None)
        if unchanged:
            return

        was_set = obj._property_values in self.name

        # "old" is the logical old value, but it may not be
        # the actual current attribute value if our value
        # was mutated behind our back and we got _notify_mutated.
        if was_set:
            old_attr_value = obj._property_values[self.name]
        else:
            old_attr_value = old

        if old_attr_value is not value:
            if isinstance(old_attr_value, PropertyValueContainer):
                old_attr_value._unregister_owner(obj, self)
            if isinstance(value, PropertyValueContainer):
                value._register_owner(obj, self)

            obj._property_values[self.name] = value

        # for notification purposes, "old" should be the logical old
        self._trigger(obj, old, value, hint)
dataset/ETHPy150Open bokeh/bokeh/bokeh/core/properties.py/BasicProperty._real_set/swapped operands of `in`