syntax = "proto3"; package basic_test; message Foo { Bar bar = 1; repeated Baz baz = 2; } message Bar { string msg = 1; } message Baz { string msg = 1; } message TestMessage { int32 optional_int32 = 1; int64 optional_int64 = 2; uint32 optional_uint32 = 3; uint64 optional_uint64 = 4; bool optional_bool = 5; float optional_float = 6; double optional_double = 7; string optional_string = 8; bytes optional_bytes = 9; TestMessage2 optional_msg = 10; TestEnum optional_enum = 11; repeated int32 repeated_int32 = 12; repeated int64 repeated_int64 = 13; repeated uint32 repeated_uint32 = 14; repeated uint64 repeated_uint64 = 15; repeated bool repeated_bool = 16; repeated float repeated_float = 17; repeated double repeated_double = 18; repeated string repeated_string = 19; repeated bytes repeated_bytes = 20; repeated TestMessage2 repeated_msg = 21; repeated TestEnum repeated_enum = 22; } message TestMessage2 { int32 foo = 1; } enum TestEnum { Default = 0; A = 1; B = 2; C = 3; } message TestEmbeddedMessageParent { TestEmbeddedMessageChild child_msg = 1; int32 number = 2; repeated TestEmbeddedMessageChild repeated_msg = 3; repeated int32 repeated_number = 4; } message TestEmbeddedMessageChild { TestMessage sub_child = 1; } message Recursive1 { Recursive2 foo = 1; } message Recursive2 { Recursive1 foo = 1; } message MapMessage { map map_string_int32 = 1; map map_string_msg = 2; } message MapMessageWireEquiv { repeated MapMessageWireEquiv_entry1 map_string_int32 = 1; repeated MapMessageWireEquiv_entry2 map_string_msg = 2; } message MapMessageWireEquiv_entry1 { string key = 1; int32 value = 2; } message MapMessageWireEquiv_entry2 { string key = 1; TestMessage2 value = 2; } message OneofMessage { oneof my_oneof { string a = 1; int32 b = 2; TestMessage2 c = 3; TestEnum d = 4; } } message Outer { map items = 1; } message Inner { }