docs: def set_attributes(self, **kwargs):
          """
          Set a group of attributes (parameters and members).  Calls
          `setp` directly, so kwargs can include more than just the
          parameter value (e.g., bounds, free, etc.).
          """
          kwargs = dict(kwargs)
          for name,value in kwargs.items():
              # Raise AttributeError if param not found
              self.__getattr__(name) 
              # Set attributes
              try: self.setp(name,**value)
              except TypeError:
                  try:  self.setp(name,*value)
                  except (TypeError,KeyError):  
                      self.__setattr__(name,value)