this aims at preventing constant usage of isinstance() based dispatch
code when writing generic code handling model entities.
For example, the "object_type" argument of JournalWriter.write_addition() has
become superflous now we only pass model entities, etc.
This idea comes olasd's reading of mypy doc:
https://mypy.readthedocs.io/en/latest/literal_types.html#tagged-unions