BlockErrorFormatter currently needs the Language object to create a Message for the blocked error.
Instead of Message, we need to make it return MessageValue - this seems to be simple.
Language is more complex - some of the parameters in the block error message are themselves retrieved from messages, blockedtext-composite-ids for example. I propose to introduce a new param type in message system - MessageValueParam - the idea is that it will be formatted by MessageFormatter when the message using it is formatted, and the plain result will be used as a parameter value. So basically it will be lazy-evaluated - this will allow to decouple BlockErrorFormatter from Language.