union typed protobuf