def dispatch(self, message: Message) -> Iterator[Any]:
if "<STR_LIT:text>" in message:<EOL><INDENT>text = message["<STR_LIT:text>"] or "<STR_LIT>"<EOL><DEDENT>elif "<STR_LIT:message>" in message:<EOL><INDENT>text = message["<STR_LIT:message>"].get("<STR_LIT:text>", "<STR_LIT>")<EOL><DEDENT>else:<EOL><INDENT>text = "<STR_LIT>"<EOL><DEDENT>msg_subtype = message.get("<STR_LIT>")<EOL>for subtype, matchs in itertools.chain(<EOL>self._routes[message["<STR_LIT>"]].items(), self._routes["<STR_LIT:*>"].items()<EOL>):<EOL><INDENT>if msg_subtype == subtype or subtype is None:<EOL><INDENT>for match, endpoints in matchs.items():<EOL><INDENT>if match.search(text):<EOL><INDENT>yield from endpoints<EOL><DEDENT><DEDENT><DEDENT><DEDENT>
Yields handlers matching the routing of the incoming :class:`slack.events.Message`

Args:
    message: :class:`slack.events.Message`

Yields:
    handler