I don't quite understand. You would never see a `bar` on the wire, just
like you can't instantiate a interface/abstract-class in a OO language. You
can only send concrete types on the wire. You just have the ability to
downcast to a `bar` at run-time.
In java lingo I'm really just asking for
Hmm, would `Bar` be allowed to be used as a type in schemas? If so, when
you receive an arbitrary `Bar` on the wire, how would you figure out which
layout to use?
If `Bar` is not allowed on the wire then I can imagine how to implement
this, but I think a lot of people would be surprised by such a