docs: def apply(self, events):
          """
          EventManager.apply(events) -> Takes an object with methods, and applies
          them to EventManager.
          Example:
              class TestEvents(object):
                  @staticmethod
                  def test_method():
                      pass
  
              e = TestEvents()
              em = EventManager()
              em.apply(e)
              # em now has an event called test_method,
              # and e.test_method as handler."""
          for method in dir(events):
              # Skip attributes
              if not callable(getattr(events, method)):
                  continue
              # Skip "trash" functions
              if method.startswith("_"):
                  continue
  
              if not hasattr(self, method):  # Didn't have such an event already
                  self[method] = Event()  # So we create it
  
              self[method].add_handler(getattr(events, method))