The message passing implemented in Minix is not designed for and doesn't support sending messages from user processes to other user processes.
Consequently, the kinds and size of the data in the Minix messages is predictable and reduces to a relatively small number of variations.
Unfortunately, Minix is written in the C subset of C++. In particular, there is no inheritance that would allow defining a message type with subtypes for the different variations.
So we have to work with C's approach to this.