docs: def set(self, obj, value):
          """Set value for obj's attribute.
  
          :param obj: Result object or dict to assign the attribute to.
          :param value: Value to be assigned.
          """
          assert self.setter is not None, "Setter accessor is not specified."
          if callable(self.setter):
              return self.setter(obj, value)
  
          assert isinstance(self.setter, string_types), "Accessor must be a function or a dot-separated string."
  
          def _set(obj, attr, value):
              if isinstance(obj, dict):
                  obj[attr] = value
              else:
                  setattr(obj, attr, value)
              return value
  
          path = self.setter.split(".")
          for attr in path[:-1]:
              obj = _set(obj, attr, {})
  
          _set(obj, path[-1], value)