// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc.  All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// LINT: ALLOW_GROUPS

syntax = "proto2";

package benchmarks.google_message3;

import "datasets/google_message3/benchmark_message3_1.proto";
import "datasets/google_message3/benchmark_message3_2.proto";
import "datasets/google_message3/benchmark_message3_3.proto";
import "datasets/google_message3/benchmark_message3_4.proto";
import "datasets/google_message3/benchmark_message3_5.proto";
import "datasets/google_message3/benchmark_message3_7.proto";
import "datasets/google_message3/benchmark_message3_8.proto";

option cc_enable_arenas = true;
option java_package = "com.google.protobuf.benchmarks";

message GoogleMessage3 {
  optional .benchmarks.google_message3.Message37487 field37519 = 2;
  optional .benchmarks.google_message3.Message36876 field37520 = 3;
  optional .benchmarks.google_message3.Message13062 field37521 = 4;
  optional .benchmarks.google_message3.Message952 field37522 = 5;
  optional .benchmarks.google_message3.UnusedEmptyMessage field37523 = 6;
  optional .benchmarks.google_message3.UnusedEmptyMessage field37524 = 7;
  optional .benchmarks.google_message3.UnusedEmptyMessage field37525 = 8;
  optional .benchmarks.google_message3.UnusedEmptyMessage field37526 = 9;
  optional .benchmarks.google_message3.UnusedEmptyMessage field37527 = 10;
  optional .benchmarks.google_message3.UnusedEmptyMessage field37528 = 11;
  optional .benchmarks.google_message3.UnusedEmptyMessage field37529 = 12;
  optional .benchmarks.google_message3.UnusedEmptyMessage field37530 = 13;
  optional .benchmarks.google_message3.UnusedEmptyMessage field37531 = 14;
  optional .benchmarks.google_message3.UnusedEmptyMessage field37532 = 15;
  optional .benchmarks.google_message3.UnusedEmptyMessage field37533 = 16;
}

message Message1327 {
  repeated .benchmarks.google_message3.UnusedEmptyMessage field1369 = 1;
  repeated .benchmarks.google_message3.Message1328 field1370 = 3;
  repeated .benchmarks.google_message3.UnusedEmptyMessage field1371 = 5;
  repeated .benchmarks.google_message3.UnusedEmptyMessage field1372 = 6;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message1327 field1373 = 23104162;
  }
}

message Message3672 {
  optional .benchmarks.google_message3.Enum3476 field3727 = 1;
  optional int32 field3728 = 11;
  optional int32 field3729 = 2;
  repeated group Message3673 = 3 {
    required .benchmarks.google_message3.Enum3476 field3738 = 4;
    required int32 field3739 = 5;
  }
  repeated group Message3674 = 6 {
    required .benchmarks.google_message3.Enum3476 field3740 = 7;
    required int32 field3741 = 8;
  }
  optional bool field3732 = 9;
  optional int32 field3733 = 10;
  optional .benchmarks.google_message3.Enum3476 field3734 = 20;
  optional int32 field3735 = 21;
  optional .benchmarks.google_message3.UnusedEmptyMessage field3736 = 50;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message3672 field3737 = 3144435;
  }
}

message Message3804 {
  required int64 field3818 = 1;
  required bool field3819 = 2;
  repeated .benchmarks.google_message3.Enum3805 field3820 = 4;
  optional int32 field3821 = 5;
  optional bool field3822 = 6;
  optional int64 field3823 = 7;
  optional .benchmarks.google_message3.Enum3783 field3824 = 8;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message3804 field3825 = 59241828;
  }
}

message Message6849 {
  repeated .benchmarks.google_message3.Message6850 field6910 = 1;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message6849 field6911 = 107558455;
  }
}

message Message6866 {
  repeated .benchmarks.google_message3.Message6863 field6973 = 1;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message6866 field6974 = 22259060;
  }
}

message Message6870 {
  repeated .benchmarks.google_message3.Message6871 field6991 = 1;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message6870 field6992 = 90034652;
  }
}

message Message7651 {
  optional string field7685 = 1;
  optional int64 field7686 = 2;
  optional int64 field7687 = 3;
  optional int64 field7688 = 4;
  optional int32 field7689 = 5;
  optional int32 field7690 = 6;
  optional int32 field7691 = 7;
  optional int32 field7692 = 8;
  optional int32 field7693 = 9;
  optional int32 field7694 = 10;
  optional int32 field7695 = 11;
  optional int32 field7696 = 12;
  optional int32 field7697 = 13;
  optional int32 field7698 = 14;
  optional int32 field7699 = 15;
  optional int32 field7700 = 16;
  optional int32 field7701 = 17;
  optional int32 field7702 = 18;
  optional bool field7703 = 19;
  repeated int32 field7704 = 20;
  repeated int32 field7705 = 21;
  repeated string field7706 = 22;
  repeated string field7707 = 23;
  optional .benchmarks.google_message3.UnusedEmptyMessage field7708 = 24;
  optional int32 field7709 = 25;
  optional int32 field7710 = 26;
  optional int32 field7711 = 27;
  optional int32 field7712 = 43;
  optional int32 field7713 = 28;
  optional int32 field7714 = 29;
  repeated .benchmarks.google_message3.Message7547 field7715 = 30;
  repeated .benchmarks.google_message3.Message7547 field7716 = 31;
  repeated .benchmarks.google_message3.UnusedEmptyMessage field7717 = 32;
  repeated string field7718 = 33;
  repeated string field7719 = 34;
  repeated .benchmarks.google_message3.Message7648 field7720 = 35;
  optional bool field7721 = 36;
  optional bool field7722 = 37;
  optional bool field7723 = 38;
  optional bool field7724 = 39;
  optional .benchmarks.google_message3.UnusedEmptyMessage field7725 = 40;
  optional .benchmarks.google_message3.UnusedEnum field7726 = 41;
  optional .benchmarks.google_message3.Enum7654 field7727 = 42;
  optional string field7728 = 44;
  optional .benchmarks.google_message3.UnusedEmptyMessage field7729 = 45;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message7651 field7730 = 55876009;
  }
}

message Message7864 {
  optional string field7866 = 1;
  optional string field7867 = 2;
  repeated .benchmarks.google_message3.Message7865 field7868 = 5;
  repeated .benchmarks.google_message3.Message7865 field7869 = 6;
  repeated .benchmarks.google_message3.Message7865 field7870 = 7;
  repeated .benchmarks.google_message3.UnusedEmptyMessage field7871 = 8;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message7864 field7872 = 44542730;
  }
}

message Message7929 {
  optional int64 field7942 = 1;
  optional int64 field7943 = 4;
  optional int64 field7944 = 5;
  optional int64 field7945 = 12;
  optional int64 field7946 = 13;
  optional int64 field7947 = 18;
  optional int64 field7948 = 6;
  optional int64 field7949 = 7;
  repeated .benchmarks.google_message3.Message7919 field7950 = 8;
  repeated .benchmarks.google_message3.UnusedEmptyMessage field7951 = 20;
  repeated .benchmarks.google_message3.Message7920 field7952 = 14;
  repeated .benchmarks.google_message3.Message7921 field7953 = 15;
  repeated .benchmarks.google_message3.Message7928 field7954 = 17;
  optional int64 field7955 = 19;
  optional bool field7956 = 2;
  optional int64 field7957 = 3;
  optional int64 field7958 = 9;
  repeated .benchmarks.google_message3.UnusedEmptyMessage field7959 = 10;
  repeated bytes field7960 = 11;
  optional int64 field7961 = 16;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message7929 field7962 = 53392238;
  }
}

message Message8508 {
  repeated .benchmarks.google_message3.Message8511 field8517 = 8;
  repeated .benchmarks.google_message3.Message8512 field8518 = 9;
  repeated .benchmarks.google_message3.Message8513 field8519 = 11;
  optional bool field8520 = 13;
  optional .benchmarks.google_message3.Message8514 field8521 = 14;
  repeated .benchmarks.google_message3.UnusedEmptyMessage field8522 = 15;
  repeated .benchmarks.google_message3.Message8515 field8523 = 16;
  repeated .benchmarks.google_message3.UnusedEmptyMessage field8524 = 17;
  optional int64 field8525 = 1;
  optional float field8526 = 2;
  optional int64 field8527 = 3;
  optional int64 field8528 = 4;
  optional int32 field8529 = 5;
  optional bytes field8530 = 6;
  repeated bytes field8531 = 7;
  optional bool field8532 = 10;
  optional bytes field8533 = 12;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message8508 field8534 = 3811804;
  }
}

message Message9122 {
  optional float field9132 = 1;
  optional float field9133 = 2;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message9122 field9134 = 120398939;
  }
}

message Message10177 {
  repeated .benchmarks.google_message3.Message10155 field10270 = 1;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message10177 field10271 = 26801105;
  }
}

message Message10278 {
  repeated int32 field10286 = 1 [packed = true];
  repeated int32 field10287 = 2 [packed = true];
  optional int32 field10288 = 3;
  extend .benchmarks.google_message3.Message10155 {
    optional .benchmarks.google_message3.Message10278 field10289 = 29374161;
  }
}

message Message10323 {
  repeated .benchmarks.google_message3.Message10320 field10360 = 1;
  extend .benchmarks.google_message3.Message10155 {
    optional .benchmarks.google_message3.Message10323 field10361 = 27922524;
  }
}

message Message10324 {
  repeated .benchmarks.google_message3.Message10322 field10362 = 1;
  optional .benchmarks.google_message3.Message10321 field10363 = 2;
  extend .benchmarks.google_message3.Message10155 {
    optional .benchmarks.google_message3.Message10324 field10364 = 27832297;
  }
}

message Message11990 {
  repeated .benchmarks.google_message3.Message11988 field12030 = 1;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message11990 field12031 = 21265426;
  }
}

message Message12691 {
  optional string field12713 = 1;
  optional int32 field12714 = 2;
  optional .benchmarks.google_message3.Message12668 field12715 = 3;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message12691 field12716 = 28426536;
  }
}

message Message12870 {
  required int32 field12879 = 1;
  optional int32 field12880 = 7;
  required int32 field12881 = 2;
  optional uint64 field12882 = 3;
  optional string field12883 = 2001;
  optional fixed64 field12884 = 4;
  repeated fixed64 field12885 = 14;
  optional int32 field12886 = 9;
  optional int64 field12887 = 18;
  repeated .benchmarks.google_message3.Message12870 field12888 = 8;
  optional int32 field12889 = 5;
  optional uint64 field12890 = 6;
  optional int32 field12891 = 10;
  optional int32 field12892 = 11;
  optional double field12893 = 12;
  optional .benchmarks.google_message3.Message12825 field12894 = 13;
  optional double field12895 = 15;
  optional string field12896 = 16;
  optional .benchmarks.google_message3.Enum12871 field12897 = 17;
  optional int32 field12898 = 19;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message12870 field12899 = 5447656;
  }
}

message Message13154 {
  required float field13164 = 1;
  required float field13165 = 2;
  extend .benchmarks.google_message3.Message13145 {
    optional .benchmarks.google_message3.Message13154 field13166 = 47301086;
  }
}

message Message16507 {
  optional bool field16510 = 3;
  optional bool field16511 = 4;
  optional bool field16512 = 14;
  repeated string field16513 = 5;
  repeated string field16514 = 6;
  optional string field16515 = 8;
  repeated int32 field16516 = 9;
  repeated int32 field16517 = 10;
  optional int32 field16518 = 7;
  optional string field16519 = 15;
  repeated string field16520 = 11;
  repeated .benchmarks.google_message3.UnusedEmptyMessage field16521 = 27;
  repeated .benchmarks.google_message3.UnusedEmptyMessage field16522 = 22;
  repeated .benchmarks.google_message3.UnusedEmptyMessage field16523 = 28;
  optional string field16524 = 18;
  optional int32 field16525 = 19;
  optional int32 field16526 = 20;
  optional .benchmarks.google_message3.UnusedEmptyMessage field16527 = 23;
  optional bool field16528 = 24;
  repeated string field16529 = 25;
  optional double field16530 = 26;
  optional .benchmarks.google_message3.Message16478 field16531 = 30;
  optional bool field16532 = 31;
  optional string field16533 = 32;
  optional bool field16534 = 33;
  optional bool field16535 = 35;
  optional bool field16536 = 36;
  optional bool field16537 = 37;
  optional bool field16538 = 38;
  optional bool field16539 = 39;
  optional bool field16540 = 40;
  repeated string field16541 = 41;
  extensions 21 to 21;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message16507 field16542 = 5569941;
  }
}

message Message16564 {
  repeated .benchmarks.google_message3.Message16552 field16568 = 1;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message16564 field16569 = 25830030;
  }
}

message Message16661 {
  repeated .benchmarks.google_message3.Message16660 field16671 = 1;
  repeated uint64 field16672 = 2;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message16661 field16673 = 31274398;
  }
}

message Message16746 {
  repeated .benchmarks.google_message3.Message16727 field16806 = 1;
  optional bool field16807 = 2;
  optional bool field16808 = 3;
  repeated .benchmarks.google_message3.Message16725 field16809 = 4;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message16746 field16810 = 28406765;
  }
}

message Message17786 {
  repeated group Message17787 = 1 {
    required int32 field18177 = 2;
    required int32 field18178 = 3;
    optional .benchmarks.google_message3.Message17783 field18179 = 4;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18180 = 5;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18181 = 6;
    repeated .benchmarks.google_message3.UnusedEmptyMessage field18182 = 8;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18183 = 9;
    optional .benchmarks.google_message3.Message17726 field18184 = 10;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18185 = 11;
    optional .benchmarks.google_message3.Message16945 field18186 = 102;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18187 = 12;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18188 = 13;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18189 = 7;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18190 = 100;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18191 = 101;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18192 = 14;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18193 = 19;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18194 = 22;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18195 = 24;
    optional .benchmarks.google_message3.Enum16925 field18196 = 21;
    optional bool field18197 = 18;
    repeated .benchmarks.google_message3.UnusedEnum field18198 = 23;
    optional .benchmarks.google_message3.UnusedEmptyMessage field18199 = 15;
    optional string field18200 = 16;
    optional string field18201 = 17;
    optional bool field18202 = 99;
  }
  repeated .benchmarks.google_message3.Message17782 field18175 = 20;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message17786 field18176 = 11823055;
  }
}

message Message22857 {
  repeated .benchmarks.google_message3.Message22853 field22874 = 1;
  extend .benchmarks.google_message3.Message10155 {
    optional .benchmarks.google_message3.Message22857 field22875 = 67799715;
  }
}

message Message24404 {
  repeated group Message24405 = 1 {
    required int32 field24686 = 2;
    required int32 field24687 = 3;
    optional .benchmarks.google_message3.Message24317 field24688 = 4;
    optional .benchmarks.google_message3.UnusedEmptyMessage field24689 = 5;
    optional .benchmarks.google_message3.Message24376 field24690 = 6;
    optional .benchmarks.google_message3.Message24345 field24691 = 7;
    optional .benchmarks.google_message3.UnusedEmptyMessage field24692 = 8;
    optional .benchmarks.google_message3.Message24379 field24693 = 9;
    optional .benchmarks.google_message3.UnusedEmptyMessage field24694 = 10;
    optional .benchmarks.google_message3.UnusedEmptyMessage field24695 = 11;
    optional .benchmarks.google_message3.Message24391 field24696 = 12;
    optional .benchmarks.google_message3.UnusedEmptyMessage field24697 = 13;
    optional .benchmarks.google_message3.UnusedEmptyMessage field24698 = 14;
    optional .benchmarks.google_message3.UnusedEmptyMessage field24699 = 22;
    optional .benchmarks.google_message3.UnusedEmptyMessage field24700 = 23;
    optional .benchmarks.google_message3.UnusedEmptyMessage field24701 = 25;
    optional .benchmarks.google_message3.Enum16925 field24702 = 18;
    optional float field24703 = 20;
    optional bool field24704 = 19;
    repeated .benchmarks.google_message3.Enum16891 field24705 = 24;
    optional .benchmarks.google_message3.UnusedEmptyMessage field24706 = 15;
    optional string field24707 = 16;
    optional string field24708 = 17;
    optional float field24709 = 21;
    optional bool field24710 = 26;
    optional .benchmarks.google_message3.UnusedEnum field24711 = 27;
    optional bool field24712 = 28;
    optional .benchmarks.google_message3.UnusedEnum field24713 = 29;
    optional bool field24714 = 31;
    optional bool field24715 = 99;
    optional int64 field24716 = 32;
  }
  optional .benchmarks.google_message3.Message24403 field24684 = 30;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message24404 field24685 = 9129287;
  }
}

message Message27300 {
  repeated .benchmarks.google_message3.UnusedEmptyMessage field27302 = 1;
  optional string field27303 = 2;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message27300 field27304 = 24956467;
  }
}

message Message27453 {
  optional string field27459 = 15;
  repeated string field27460 = 1;
  repeated float field27461 = 6;
  repeated int32 field27462 = 27;
  repeated int32 field27463 = 28;
  repeated .benchmarks.google_message3.Message27454 field27464 = 24;
  repeated string field27465 = 2;
  repeated float field27466 = 7;
  repeated string field27467 = 22;
  repeated string field27468 = 23;
  optional string field27469 = 26;
  repeated .benchmarks.google_message3.Message27357 field27470 = 8;
  optional .benchmarks.google_message3.Message27360 field27471 = 16;
  optional string field27472 = 25;
  optional string field27473 = 11;
  optional bool field27474 = 13;
  optional bool field27475 = 14;
  optional bool field27476 = 17;
  optional .benchmarks.google_message3.UnusedEmptyMessage field27477 = 12;
  optional bool field27478 = 34268945;
  optional bool field27479 = 20;
  optional string field27480 = 21;
  optional .benchmarks.google_message3.UnusedEmptyMessage field27481 = 10;
  extend .benchmarks.google_message3.Message0 {
    optional .benchmarks.google_message3.Message27453 field27482 = 8086204;
  }
}

extend .benchmarks.google_message3.Message16945 {
  optional string field17026 = 472;
  repeated string field17027 = 818;
  optional .benchmarks.google_message3.Message0 field17031 = 215;
  repeated .benchmarks.google_message3.Message0 field17032 = 292;
  repeated .benchmarks.google_message3.Message0 field17038 = 234;
  repeated .benchmarks.google_message3.Message0 field17039 = 235;
  optional .benchmarks.google_message3.Message0 field17042 = 246;
  optional string field17043 = 224;
  optional string field17044 = 225;
  repeated string field17048 = 63;
  repeated string field17049 = 64;
  repeated .benchmarks.google_message3.Message0 field17052 = 233;
  repeated .benchmarks.google_message3.Message0 field17053 = 66;
  repeated string field17056 = 275;
  optional string field17057 = 226;
  repeated .benchmarks.google_message3.Message0 field17060 = 27;
  repeated string field17073 = 75;
  repeated .benchmarks.google_message3.Message0 field17076 = 77;
  repeated string field17078 = 296;
  repeated .benchmarks.google_message3.Message0 field17082 = 160;
  repeated .benchmarks.google_message3.Message0 field17091 = 585;
  repeated .benchmarks.google_message3.Message0 field17098 = 987;
  repeated .benchmarks.google_message3.Message0 field17101 = 157;
  repeated string field17102 = 158;
  repeated string field17107 = 166;
  repeated string field17133 = 567;
  repeated string field17134 = 572;
  repeated string field17160 = 49;
  repeated string field17168 = 32;
  repeated string field17170 = 34;
  repeated .benchmarks.google_message3.Message0 field17172 = 509;
  repeated string field17174 = 39;
  repeated .benchmarks.google_message3.Message0 field17175 = 40;
  repeated .benchmarks.google_message3.Message0 field17178 = 511;
  repeated .benchmarks.google_message3.Message0 field17185 = 50;
  repeated int32 field17207 = 1081;
  repeated .benchmarks.google_message3.Message0 field17238 = 184;
  repeated .benchmarks.google_message3.Message0 field17289 = 177;
  repeated .benchmarks.google_message3.Message0 field17290 = 178;
  repeated .benchmarks.google_message3.Message0 field17296 = 474;
  repeated string field17298 = 44;
  repeated .benchmarks.google_message3.Message0 field17301 = 47;
  optional .benchmarks.google_message3.Message0 field17412 = 21;
  repeated .benchmarks.google_message3.Message0 field17438 = 132;
  repeated .benchmarks.google_message3.Message0 field17458 = 512;
  repeated string field17460 = 560;
  repeated string field17466 = 552;
  repeated .benchmarks.google_message3.Message0 field17617 = 1080;
  repeated int32 field17618 = 1084;
}
