docs: def setter(self, func):
          """Register a set function for the DynamicProperty
  
          This function must take two arguments, self and the new value.
          Input value to the function is validated with prop validation prior to
          execution.
          """
          if not callable(func):
              raise TypeError('setter must be callable function')
          if hasattr(func, '__code__') and func.__code__.co_argcount != 2:
              raise TypeError('setter must be a function with two arguments')
          if func.__name__ != self.name:
              raise TypeError('setter function must have same name as getter')
          self._set_func = func
          return self