// A series of messages with various kinds of cycles in them. // +-+---+ +---+ +---+ // V | | V | V | // A -> B-+-> C -> D---+--->E---+ // ^ |`---|--------^ // +----------+----+ F syntax = "proto2"; message A { optional B b = 1; } message B { optional B b = 1; optional C c = 2; } message C { optional A a = 1; optional B b = 2; optional D d = 3; optional E e = 4; } message D { optional A a = 1; optional D d = 2; optional E e = 3; } message E { optional E e = 1; } message F { optional E e = 1; } // A proto with a bunch of simple primitives. message SimplePrimitives { optional fixed64 u64 = 1; optional fixed32 u32 = 2; optional double dbl = 3; optional float flt = 5; optional sint64 i64 = 6; optional sint32 i32 = 7; optional bool b = 8; optional string str = 9; oneof foo { int32 oneof_int32 = 10; string oneof_string = 11; } oneof bar { int64 oneof_int64 = 13; bytes oneof_bytes = 14; } message Nested { oneof foo { int32 oneof_int32 = 10; string b = 11; } } }