A minor addition to my last note: (1) I think that dealing with version-compatibility should be straightforward, but of course, renaming fields becomes a compatibility-breaking change.
(2) there are spots where one would have to "skip" a field (b/c one doesn't have metadata for it, hence it's not part of the current defined message). This could be done by simply parenthesis-counting. Perhaps there are other issues, but I sort of suspect that they can all be dealt-with, since fundamentally this is just about how to infer the type-id & field-id from the field-name, and not much more. --chet--
