docs: def add_events(self, names, send_event=True, event_factory=None):
          """
          Add event by name.
  
          This is called for you as needed if you allow auto creation of events (see __init__).
  
          Upon an event being added, all handlers are searched for if they have this event,
          and if they do, they are added to the Event's list of callables.
  
          :param tuple names: Names
          """
          if not event_factory:
              event_factory = self.event_factory
  
          # Create events
          self.events.update({name: event_factory() for name in names},)
          # Inspect handlers to see if they should be attached to this new event
          [self._attach_handler_events(handler, events=names) for handler in self.handlers]
  
          if send_event:
              [self.on_add_event(name) for name in names]