code: def get_setter(cls, prop_name,  # @NoSelf
                     user_setter=None, setter_takes_name=False,
                     user_getter=None, getter_takes_name=False):
          
  
          _inner_setter = ObservablePropertyMeta.get_setter(cls, prop_name,
                                              user_setter, setter_takes_name,
                                              user_getter, getter_takes_name)
  
          def _setter(self, val):
              self._prop_lock.acquire()
              _inner_setter(self, val)
              self._prop_lock.release()
          return _setter
docs: The setter follows the rules of the getter. First search
            for property variable, then logical custom getter/setter pair
            methods