What is the payload in `Data` protobuf?

I’m looking at the protobufs and trying to parse them. I see specifically Data:

message Data {
...
  /*
   * TODO: REPLACE
   */
  bytes payload = 2;
...

How does a consumer know what the payload is? I’ve been re-decoding the payload as a struct that seems like it lines up (e.g. TextMessageApp? decode payload as UTF8 string, PositionApp decode it as a Position?) and that seems to work.

I’m guessing from the TODO that this part of the protobuf is not yet structured?

Haven’t worked with protobufs before, so looking for a sanity check that I’m not doing anything too crazy by maintaining a map from PortNum to struct in lieu of it being explicit.

Only the comment is unfinished, that is the payload. You can see it being used to create a text message packet in the iOS app here https://github.com/meshtastic/Meshtastic-Apple/blob/015ea8e250d0dad03e28b45c2b6377e1948a7fe4/Meshtastic/Helpers/BLEManager.swift#L654