docs: def add(self, func: AsyncCallback, event_type: str, **data_detail: Any) -> None:
          """Add a new route.
  
          After registering 'func' for the specified event_type, an
          optional data_detail may be provided. By providing an extra
          keyword argument, dispatching can occur based on a top-level
          key of the data in the event being dispatched.
          """
          if len(data_detail) > 1:
              msg = ()
              raise TypeError("dispatching based on data details is only "
                              "supported up to one level deep; "
                              f"{len(data_detail)} levels specified")
          elif not data_detail:
              callbacks = self._shallow_routes.setdefault(event_type, [])
              callbacks.append(func)
          else:
              data_key, data_value = data_detail.popitem()
              data_details = self._deep_routes.setdefault(event_type, {})
              specific_detail = data_details.setdefault(data_key, {})
              callbacks = specific_detail.setdefault(data_value, [])
              callbacks.append(func)