Protobufs are also a fun place to look for how much debate people will get into regarding required versus optional fields. Your post is taking an implicit "everything is optional" view. But, it does allow you to be stricter.
Common Lisp Object System also touched on all of these ideas years ago.
Common Lisp Object System also touched on all of these ideas years ago.