Discussed in AVRO-248
Arguments in Favor
- Anonymous branches are not supported in some languages and require casts or type checks in others
- One argument against named branches was that anonymous branches are a good way of handling nullable fields which could be handled as optionals (above)
- Other serialization systems support names for unions and branches, arrays
The language API should produce named typed accessors in addition to the tag. Languages which have native support for named branches e.g. C, C++, Pascal etc. should use an explicit tag and their native unions.