syntax = "proto2";

package a;

message A1 {
  optional string str = 1;
  repeated string strs = 2;
  map<string, int32> str2int = 3;
  map<int32, string> int2str = 4;
  map<string, string> str2str = 5;
  optional A1 msg = 6;
  optional int32 int = 7;
}

message B1 {
  optional string str = 1;
  repeated string strs = 2;
  map<string, int32> str2int = 3;
  map<int32, string> int2str = 4;
  map<string, string> str2str = 5;
  optional B1 msg = 6;
  optional int32 int = 7;
}

message C1 {
  optional string str = 1;
  repeated string strs = 2;
  map<string, int32> str2int = 3;
  map<int32, string> int2str = 4;
  map<string, string> str2str = 5;
  optional C1 msg = 6;
  optional int32 int = 7;
}

message D1 {
  optional string str = 1;
  repeated string strs = 2;
  map<string, int32> str2int = 3;
  map<int32, string> int2str = 4;
  map<string, string> str2str = 5;
  optional D1 msg = 6;
  optional int32 int = 7;
}
