Thinking about this, there might actually be a really nice way this can be implemented to give us a lot of flexibility in the future for text parsers.

What would you think of about making a text formatter manager class that gets all available text formatting options passed to it (a service collection), and then parses each message correctly dependent on which text parser claims it as their own? E.g. text_formatter::decode_message (text_formatter.s9e.factory::is_parser() ? decode : old parser::is_parser() ? decode ......).

Then in the future we might even be able to add additional text parsers (or allow the community to create other parsers) and everything would be handled very nicely, no editing would be required.

Is this something that you think could be done somewhat easily/something you might be willing to look into (or am I even making any sense here)?