We recently had someone implement support for (de)serializing protobuf messages as fields of dataclasses passed around for input/outputs in Flyte. I'm wonder why this might not have been implemented before (is this some kind of anti pattern where you should just be expected to pass in a protobuf message entirely)?