code: def dispatch(self, msg):
          
          logger.debug(f"Got message: {msg}")
          futures = []
          matched = False
          for behaviour in (x for x in self.behaviours if x.match(msg)):
              futures.append(self.submit(behaviour.enqueue(msg)))
              logger.debug(f"Message enqueued to behaviour: {behaviour}")
              self.traces.append(msg, category=str(behaviour))
              matched = True
          if not matched:
              logger.warning(f"No behaviour matched for message: {msg}")
              self.traces.append(msg)
          return futures
docs: Dispatch the message to every behaviour that is waiting for
          it using their templates match.
  
          Args:
            msg (spade.message.Messagge): the message to dispatch.
  
          Returns:
              list(asyncio.Future): a list of futures of the append of the message at each matched behaviour.