message Outer { // As of: https://developers.google.com/protocol-buffers/docs/encoding#optional repeated Inner inner = 1; // "If your message definition has repeated elements (without the [packed=true] option), the encoded message has // zero or more key-value pairs with the same tag number." } message Inner { optional uint32 inner_value = 1; }