internal/testprotos/legacy: initial commit

Add a corpus of generated protobuf messages generated at specific versions
of protoc-gen-go to ensure that we continue to support for generated messages
that have may never be updated.

Change-Id: I04a1b74306f471d7c99f5daf52399a5bd9adcbbc
Reviewed-on: https://go-review.googlesource.com/c/148831
Reviewed-by: Herbie Ong <herbie@google.com>
diff --git a/internal/encoding/tag/tag.go b/internal/encoding/tag/tag.go
index 5c5ba5b..17e0aca 100644
--- a/internal/encoding/tag/tag.go
+++ b/internal/encoding/tag/tag.go
@@ -32,10 +32,7 @@
 //
 // This function is a best effort attempt; parsing errors are ignored.
 func Unmarshal(tag string, goType reflect.Type) ptype.Field {
-	var f ptype.Field
-	f.Options = &descriptorV1.FieldOptions{
-		Packed: protoV1.Bool(false),
-	}
+	f := ptype.Field{Options: new(descriptorV1.FieldOptions)}
 	for len(tag) > 0 {
 		i := strings.IndexByte(tag, ',')
 		if i < 0 {
@@ -108,7 +105,7 @@
 		case strings.HasPrefix(s, "json="):
 			f.JSONName = s[len("json="):]
 		case s == "packed":
-			*f.Options.Packed = true
+			f.Options.Packed = protoV1.Bool(true)
 		case strings.HasPrefix(s, "weak="):
 			f.Options.Weak = protoV1.Bool(true)
 			f.MessageType = ptype.PlaceholderMessage(pref.FullName(s[len("weak="):]))
diff --git a/internal/impl/legacy_proto2_test.go b/internal/impl/legacy_proto2_test.go
deleted file mode 100644
index e7267f1..0000000
--- a/internal/impl/legacy_proto2_test.go
+++ /dev/null
@@ -1,759 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-// TODO: Move this to a separate package. We do *not* want this to be
-// auto-generated by the current protoc-gen-go since it is supposed to be a
-// snapshot of an generated message from the past.
-
-import "github.com/golang/protobuf/proto"
-
-type LP2MapEnum int32
-
-func (LP2MapEnum) EnumDescriptor() ([]byte, []int) {
-	return LP2FileDescriptor, []int{0}
-}
-
-type LP2SiblingEnum int32
-
-func (LP2SiblingEnum) EnumDescriptor() ([]byte, []int) {
-	return LP2FileDescriptor, []int{1}
-}
-
-type LP2Message_LP2ChildEnum int32
-
-func (LP2Message_LP2ChildEnum) EnumDescriptor() ([]byte, []int) {
-	return LP2FileDescriptor, []int{1, 0}
-}
-
-type LP2SiblingMessage struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (*LP2SiblingMessage) Descriptor() ([]byte, []int) {
-	return LP2FileDescriptor, []int{0}
-}
-
-type LP2Message struct {
-	Lp2Namedgroup *LP2Message_LP2NamedGroup `protobuf:"group,1,opt,name=LP2NamedGroup,json=lp2namedgroup" json:"lp2namedgroup,omitempty"`
-	// Optional fields.
-	OptionalBool           *bool                       `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalInt32          *int32                      `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32         *int32                      `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32         *uint32                     `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64          *int64                      `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64         *int64                      `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64         *uint64                     `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalFixed32        *uint32                     `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       *int32                      `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          *float32                    `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalFixed64        *uint64                     `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       *int64                      `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         *float64                    `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString         *string                     `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                      `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      *LP2Message_LP2ChildEnum    `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2.LP2Message_LP2ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalSiblingEnum    *LP2SiblingEnum             `protobuf:"varint,116,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2.LP2SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalChildMessage   *LP2Message_LP2ChildMessage `protobuf:"bytes,117,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
-	OptionalSiblingMessage *LP2SiblingMessage          `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
-	OptionalNamedGroup     *LP2Message_LP2NamedGroup   `protobuf:"bytes,119,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
-	Optionalgroup          *LP2Message_OptionalGroup   `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	// Optional default fields.
-	DefaultedBool        *bool                    `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
-	DefaultedInt32       *int32                   `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
-	DefaultedSint32      *int32                   `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
-	DefaultedUint32      *uint32                  `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
-	DefaultedInt64       *int64                   `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
-	DefaultedSint64      *int64                   `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
-	DefaultedUint64      *uint64                  `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
-	DefaultedFixed32     *uint32                  `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
-	DefaultedSfixed32    *int32                   `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
-	DefaultedFloat       *float32                 `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
-	DefaultedFixed64     *uint64                  `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
-	DefaultedSfixed64    *int64                   `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
-	DefaultedDouble      *float64                 `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
-	DefaultedString      *string                  `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
-	DefaultedBytes       []byte                   `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
-	DefaultedChildEnum   *LP2Message_LP2ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2.LP2Message_LP2ChildEnum,def=10" json:"defaulted_child_enum,omitempty"`
-	DefaultedSiblingEnum *LP2SiblingEnum          `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2.LP2SiblingEnum,def=100" json:"defaulted_sibling_enum,omitempty"`
-	// Required fields.
-	RequiredBool           *bool                       `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
-	RequiredInt32          *int32                      `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
-	RequiredSint32         *int32                      `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
-	RequiredUint32         *uint32                     `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
-	RequiredInt64          *int64                      `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
-	RequiredSint64         *int64                      `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
-	RequiredUint64         *uint64                     `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
-	RequiredFixed32        *uint32                     `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
-	RequiredSfixed32       *int32                      `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
-	RequiredFloat          *float32                    `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
-	RequiredFixed64        *uint64                     `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
-	RequiredSfixed64       *int64                      `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
-	RequiredDouble         *float64                    `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
-	RequiredString         *string                     `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
-	RequiredBytes          []byte                      `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
-	RequiredChildEnum      *LP2Message_LP2ChildEnum    `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2.LP2Message_LP2ChildEnum" json:"required_child_enum,omitempty"`
-	RequiredSiblingEnum    *LP2SiblingEnum             `protobuf:"varint,316,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2.LP2SiblingEnum" json:"required_sibling_enum,omitempty"`
-	RequiredChildMessage   *LP2Message_LP2ChildMessage `protobuf:"bytes,317,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
-	RequiredSiblingMessage *LP2SiblingMessage          `protobuf:"bytes,318,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
-	RequiredNamedGroup     *LP2Message_LP2NamedGroup   `protobuf:"bytes,319,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
-	Requiredgroup          *LP2Message_RequiredGroup   `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
-	// Required default fields.
-	RequiredDefaultedBool        *bool                    `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
-	RequiredDefaultedInt32       *int32                   `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
-	RequiredDefaultedSint32      *int32                   `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
-	RequiredDefaultedUint32      *uint32                  `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
-	RequiredDefaultedInt64       *int64                   `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
-	RequiredDefaultedSint64      *int64                   `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
-	RequiredDefaultedUint64      *uint64                  `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
-	RequiredDefaultedFixed32     *uint32                  `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
-	RequiredDefaultedSfixed32    *int32                   `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
-	RequiredDefaultedFloat       *float32                 `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
-	RequiredDefaultedFixed64     *uint64                  `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
-	RequiredDefaultedSfixed64    *int64                   `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
-	RequiredDefaultedDouble      *float64                 `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
-	RequiredDefaultedString      *string                  `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
-	RequiredDefaultedBytes       []byte                   `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
-	RequiredDefaultedChildEnum   *LP2Message_LP2ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2.LP2Message_LP2ChildEnum,def=10" json:"required_defaulted_child_enum,omitempty"`
-	RequiredDefaultedSiblingEnum *LP2SiblingEnum          `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2.LP2SiblingEnum,def=100" json:"required_defaulted_sibling_enum,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                        `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                       `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                       `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                      `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                       `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                       `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                      `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                      `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                       `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32                     `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                      `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                       `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64                     `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString         []string                      `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                      `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []LP2Message_LP2ChildEnum     `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2.LP2Message_LP2ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedSiblingEnum    []LP2SiblingEnum              `protobuf:"varint,516,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2.LP2SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedChildMessage   []*LP2Message_LP2ChildMessage `protobuf:"bytes,517,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
-	RepeatedSiblingMessage []*LP2SiblingMessage          `protobuf:"bytes,518,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
-	RepeatedNamedGroup     []*LP2Message_LP2NamedGroup   `protobuf:"bytes,519,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
-	Repeatedgroup          []*LP2Message_RepeatedGroup   `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
-	// Repeated packed fields.
-	RepeatedPackedBool     []bool    `protobuf:"varint,600,rep,packed,name=repeated_packed_bool,json=repeatedPackedBool" json:"repeated_packed_bool,omitempty"`
-	RepeatedPackedInt32    []int32   `protobuf:"varint,601,rep,packed,name=repeated_packed_int32,json=repeatedPackedInt32" json:"repeated_packed_int32,omitempty"`
-	RepeatedPackedSint32   []int32   `protobuf:"zigzag32,602,rep,packed,name=repeated_packed_sint32,json=repeatedPackedSint32" json:"repeated_packed_sint32,omitempty"`
-	RepeatedPackedUint32   []uint32  `protobuf:"varint,603,rep,packed,name=repeated_packed_uint32,json=repeatedPackedUint32" json:"repeated_packed_uint32,omitempty"`
-	RepeatedPackedInt64    []int64   `protobuf:"varint,604,rep,packed,name=repeated_packed_int64,json=repeatedPackedInt64" json:"repeated_packed_int64,omitempty"`
-	RepeatedPackedSint64   []int64   `protobuf:"zigzag64,605,rep,packed,name=repeated_packed_sint64,json=repeatedPackedSint64" json:"repeated_packed_sint64,omitempty"`
-	RepeatedPackedUint64   []uint64  `protobuf:"varint,606,rep,packed,name=repeated_packed_uint64,json=repeatedPackedUint64" json:"repeated_packed_uint64,omitempty"`
-	RepeatedPackedFixed32  []uint32  `protobuf:"fixed32,607,rep,packed,name=repeated_packed_fixed32,json=repeatedPackedFixed32" json:"repeated_packed_fixed32,omitempty"`
-	RepeatedPackedSfixed32 []int32   `protobuf:"fixed32,608,rep,packed,name=repeated_packed_sfixed32,json=repeatedPackedSfixed32" json:"repeated_packed_sfixed32,omitempty"`
-	RepeatedPackedFloat    []float32 `protobuf:"fixed32,609,rep,packed,name=repeated_packed_float,json=repeatedPackedFloat" json:"repeated_packed_float,omitempty"`
-	RepeatedPackedFixed64  []uint64  `protobuf:"fixed64,610,rep,packed,name=repeated_packed_fixed64,json=repeatedPackedFixed64" json:"repeated_packed_fixed64,omitempty"`
-	RepeatedPackedSfixed64 []int64   `protobuf:"fixed64,611,rep,packed,name=repeated_packed_sfixed64,json=repeatedPackedSfixed64" json:"repeated_packed_sfixed64,omitempty"`
-	RepeatedPackedDouble   []float64 `protobuf:"fixed64,612,rep,packed,name=repeated_packed_double,json=repeatedPackedDouble" json:"repeated_packed_double,omitempty"`
-	// Repeated non-packed fields.
-	RepeatedNonpackedBool     []bool    `protobuf:"varint,700,rep,name=repeated_nonpacked_bool,json=repeatedNonpackedBool" json:"repeated_nonpacked_bool,omitempty"`
-	RepeatedNonpackedInt32    []int32   `protobuf:"varint,701,rep,name=repeated_nonpacked_int32,json=repeatedNonpackedInt32" json:"repeated_nonpacked_int32,omitempty"`
-	RepeatedNonpackedSint32   []int32   `protobuf:"zigzag32,702,rep,name=repeated_nonpacked_sint32,json=repeatedNonpackedSint32" json:"repeated_nonpacked_sint32,omitempty"`
-	RepeatedNonpackedUint32   []uint32  `protobuf:"varint,703,rep,name=repeated_nonpacked_uint32,json=repeatedNonpackedUint32" json:"repeated_nonpacked_uint32,omitempty"`
-	RepeatedNonpackedInt64    []int64   `protobuf:"varint,704,rep,name=repeated_nonpacked_int64,json=repeatedNonpackedInt64" json:"repeated_nonpacked_int64,omitempty"`
-	RepeatedNonpackedSint64   []int64   `protobuf:"zigzag64,705,rep,name=repeated_nonpacked_sint64,json=repeatedNonpackedSint64" json:"repeated_nonpacked_sint64,omitempty"`
-	RepeatedNonpackedUint64   []uint64  `protobuf:"varint,706,rep,name=repeated_nonpacked_uint64,json=repeatedNonpackedUint64" json:"repeated_nonpacked_uint64,omitempty"`
-	RepeatedNonpackedFixed32  []uint32  `protobuf:"fixed32,707,rep,name=repeated_nonpacked_fixed32,json=repeatedNonpackedFixed32" json:"repeated_nonpacked_fixed32,omitempty"`
-	RepeatedNonpackedSfixed32 []int32   `protobuf:"fixed32,708,rep,name=repeated_nonpacked_sfixed32,json=repeatedNonpackedSfixed32" json:"repeated_nonpacked_sfixed32,omitempty"`
-	RepeatedNonpackedFloat    []float32 `protobuf:"fixed32,709,rep,name=repeated_nonpacked_float,json=repeatedNonpackedFloat" json:"repeated_nonpacked_float,omitempty"`
-	RepeatedNonpackedFixed64  []uint64  `protobuf:"fixed64,710,rep,name=repeated_nonpacked_fixed64,json=repeatedNonpackedFixed64" json:"repeated_nonpacked_fixed64,omitempty"`
-	RepeatedNonpackedSfixed64 []int64   `protobuf:"fixed64,711,rep,name=repeated_nonpacked_sfixed64,json=repeatedNonpackedSfixed64" json:"repeated_nonpacked_sfixed64,omitempty"`
-	RepeatedNonpackedDouble   []float64 `protobuf:"fixed64,712,rep,name=repeated_nonpacked_double,json=repeatedNonpackedDouble" json:"repeated_nonpacked_double,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                        `protobuf:"bytes,800,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt32          map[bool]int32                       `protobuf:"bytes,801,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint32         map[bool]int32                       `protobuf:"bytes,802,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapBoolUint32         map[bool]uint32                      `protobuf:"bytes,803,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt64          map[bool]int64                       `protobuf:"bytes,804,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint64         map[bool]int64                       `protobuf:"bytes,805,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapBoolUint64         map[bool]uint64                      `protobuf:"bytes,806,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolFixed32        map[bool]uint32                      `protobuf:"bytes,807,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolSfixed32       map[bool]int32                       `protobuf:"bytes,808,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFloat          map[bool]float32                     `protobuf:"bytes,809,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFixed64        map[bool]uint64                      `protobuf:"bytes,810,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolSfixed64       map[bool]int64                       `protobuf:"bytes,811,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolDouble         map[bool]float64                     `protobuf:"bytes,812,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolString         map[bool]string                      `protobuf:"bytes,813,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolBytes          map[bool][]byte                      `protobuf:"bytes,814,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolEnum           map[bool]LP2MapEnum                  `protobuf:"bytes,815,rep,name=map_bool_enum,json=mapBoolEnum" json:"map_bool_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2.LP2MapEnum"`
-	MapBoolChildMessage   map[bool]*LP2Message_LP2ChildMessage `protobuf:"bytes,816,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolSiblingMessage map[bool]*LP2SiblingMessage          `protobuf:"bytes,817,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolNamedGroup     map[bool]*LP2Message_LP2NamedGroup   `protobuf:"bytes,818,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapInt32Bool          map[int32]bool                       `protobuf:"bytes,819,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Bool         map[int32]bool                       `protobuf:"bytes,820,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Bool         map[uint32]bool                      `protobuf:"bytes,821,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Bool          map[int64]bool                       `protobuf:"bytes,822,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint64Bool         map[int64]bool                       `protobuf:"bytes,823,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Bool         map[uint64]bool                      `protobuf:"bytes,824,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFixed32Bool        map[uint32]bool                      `protobuf:"bytes,825,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringBool         map[string]bool                      `protobuf:"bytes,826,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	// Oneof fields.
-	OneofUnion isLP2Message_OneofUnion `protobuf_oneof:"oneof_union"`
-	// Oneof default fields.
-	OneofDefaultedUnion          isLP2Message_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
-	XXX_NoUnkeyedLiteral         struct{}                         `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
-}
-
-func (*LP2Message) Descriptor() ([]byte, []int) {
-	return LP2FileDescriptor, []int{1}
-}
-
-var extRange_LP2Message = []proto.ExtensionRange{
-	{Start: 10000, End: 536870911},
-}
-
-func (*LP2Message) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_LP2Message
-}
-
-type isLP2Message_OneofUnion interface {
-	isLP2Message_OneofUnion()
-}
-type isLP2Message_OneofDefaultedUnion interface {
-	isLP2Message_OneofDefaultedUnion()
-}
-
-type LP2Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,900,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-type LP2Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,901,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-type LP2Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,902,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-type LP2Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,903,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-type LP2Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,904,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-type LP2Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,905,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-type LP2Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,906,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-type LP2Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,907,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-type LP2Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,908,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-type LP2Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,909,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-type LP2Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,910,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-type LP2Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,911,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-type LP2Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,912,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-type LP2Message_OneofString struct {
-	OneofString string `protobuf:"bytes,913,opt,name=oneof_string,json=oneofString,oneof"`
-}
-type LP2Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,914,opt,name=oneof_bytes,json=oneofBytes,oneof"`
-}
-type LP2Message_OneofChildEnum struct {
-	OneofChildEnum LP2Message_LP2ChildEnum `protobuf:"varint,915,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2.LP2Message_LP2ChildEnum,oneof"`
-}
-type LP2Message_OneofSiblingEnum struct {
-	OneofSiblingEnum LP2SiblingEnum `protobuf:"varint,916,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2.LP2SiblingEnum,oneof"`
-}
-type LP2Message_OneofChildMessage struct {
-	OneofChildMessage *LP2Message_LP2ChildMessage `protobuf:"bytes,917,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
-}
-type LP2Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *LP2SiblingMessage `protobuf:"bytes,918,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
-}
-type LP2Message_OneofNamedGroup struct {
-	OneofNamedGroup *LP2Message_LP2NamedGroup `protobuf:"bytes,919,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
-}
-type LP2Message_Oneofgroup struct {
-	Oneofgroup *LP2Message_OneofGroup `protobuf:"group,920,opt,name=OneofGroup,json=oneofgroup,oneof"`
-}
-type LP2Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,921,opt,name=oneof_string1,json=oneofString1,oneof"`
-}
-type LP2Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,922,opt,name=oneof_string2,json=oneofString2,oneof"`
-}
-type LP2Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,923,opt,name=oneof_string3,json=oneofString3,oneof"`
-}
-type LP2Message_OneofDefaultedBool struct {
-	OneofDefaultedBool bool `protobuf:"varint,1000,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
-}
-type LP2Message_OneofDefaultedInt32 struct {
-	OneofDefaultedInt32 int32 `protobuf:"varint,1001,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
-}
-type LP2Message_OneofDefaultedSint32 struct {
-	OneofDefaultedSint32 int32 `protobuf:"zigzag32,1002,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
-}
-type LP2Message_OneofDefaultedUint32 struct {
-	OneofDefaultedUint32 uint32 `protobuf:"varint,1003,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
-}
-type LP2Message_OneofDefaultedInt64 struct {
-	OneofDefaultedInt64 int64 `protobuf:"varint,1004,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
-}
-type LP2Message_OneofDefaultedSint64 struct {
-	OneofDefaultedSint64 int64 `protobuf:"zigzag64,1005,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
-}
-type LP2Message_OneofDefaultedUint64 struct {
-	OneofDefaultedUint64 uint64 `protobuf:"varint,1006,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
-}
-type LP2Message_OneofDefaultedFixed32 struct {
-	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,1007,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
-}
-type LP2Message_OneofDefaultedSfixed32 struct {
-	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,1008,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
-}
-type LP2Message_OneofDefaultedFloat struct {
-	OneofDefaultedFloat float32 `protobuf:"fixed32,1009,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
-}
-type LP2Message_OneofDefaultedFixed64 struct {
-	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,1010,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
-}
-type LP2Message_OneofDefaultedSfixed64 struct {
-	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,1011,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
-}
-type LP2Message_OneofDefaultedDouble struct {
-	OneofDefaultedDouble float64 `protobuf:"fixed64,1012,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
-}
-type LP2Message_OneofDefaultedString struct {
-	OneofDefaultedString string `protobuf:"bytes,1013,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
-}
-type LP2Message_OneofDefaultedBytes struct {
-	OneofDefaultedBytes []byte `protobuf:"bytes,1014,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
-}
-type LP2Message_OneofDefaultedChildEnum struct {
-	OneofDefaultedChildEnum LP2Message_LP2ChildEnum `protobuf:"varint,1015,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2.LP2Message_LP2ChildEnum,oneof,def=10"`
-}
-type LP2Message_OneofDefaultedSiblingEnum struct {
-	OneofDefaultedSiblingEnum LP2SiblingEnum `protobuf:"varint,1016,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2.LP2SiblingEnum,oneof,def=100"`
-}
-
-func (*LP2Message_OneofBool) isLP2Message_OneofUnion()                          {}
-func (*LP2Message_OneofInt32) isLP2Message_OneofUnion()                         {}
-func (*LP2Message_OneofSint32) isLP2Message_OneofUnion()                        {}
-func (*LP2Message_OneofUint32) isLP2Message_OneofUnion()                        {}
-func (*LP2Message_OneofInt64) isLP2Message_OneofUnion()                         {}
-func (*LP2Message_OneofSint64) isLP2Message_OneofUnion()                        {}
-func (*LP2Message_OneofUint64) isLP2Message_OneofUnion()                        {}
-func (*LP2Message_OneofFixed32) isLP2Message_OneofUnion()                       {}
-func (*LP2Message_OneofSfixed32) isLP2Message_OneofUnion()                      {}
-func (*LP2Message_OneofFloat) isLP2Message_OneofUnion()                         {}
-func (*LP2Message_OneofFixed64) isLP2Message_OneofUnion()                       {}
-func (*LP2Message_OneofSfixed64) isLP2Message_OneofUnion()                      {}
-func (*LP2Message_OneofDouble) isLP2Message_OneofUnion()                        {}
-func (*LP2Message_OneofString) isLP2Message_OneofUnion()                        {}
-func (*LP2Message_OneofBytes) isLP2Message_OneofUnion()                         {}
-func (*LP2Message_OneofChildEnum) isLP2Message_OneofUnion()                     {}
-func (*LP2Message_OneofSiblingEnum) isLP2Message_OneofUnion()                   {}
-func (*LP2Message_OneofChildMessage) isLP2Message_OneofUnion()                  {}
-func (*LP2Message_OneofSiblingMessage) isLP2Message_OneofUnion()                {}
-func (*LP2Message_OneofNamedGroup) isLP2Message_OneofUnion()                    {}
-func (*LP2Message_Oneofgroup) isLP2Message_OneofUnion()                         {}
-func (*LP2Message_OneofString1) isLP2Message_OneofUnion()                       {}
-func (*LP2Message_OneofString2) isLP2Message_OneofUnion()                       {}
-func (*LP2Message_OneofString3) isLP2Message_OneofUnion()                       {}
-func (*LP2Message_OneofDefaultedBool) isLP2Message_OneofDefaultedUnion()        {}
-func (*LP2Message_OneofDefaultedInt32) isLP2Message_OneofDefaultedUnion()       {}
-func (*LP2Message_OneofDefaultedSint32) isLP2Message_OneofDefaultedUnion()      {}
-func (*LP2Message_OneofDefaultedUint32) isLP2Message_OneofDefaultedUnion()      {}
-func (*LP2Message_OneofDefaultedInt64) isLP2Message_OneofDefaultedUnion()       {}
-func (*LP2Message_OneofDefaultedSint64) isLP2Message_OneofDefaultedUnion()      {}
-func (*LP2Message_OneofDefaultedUint64) isLP2Message_OneofDefaultedUnion()      {}
-func (*LP2Message_OneofDefaultedFixed32) isLP2Message_OneofDefaultedUnion()     {}
-func (*LP2Message_OneofDefaultedSfixed32) isLP2Message_OneofDefaultedUnion()    {}
-func (*LP2Message_OneofDefaultedFloat) isLP2Message_OneofDefaultedUnion()       {}
-func (*LP2Message_OneofDefaultedFixed64) isLP2Message_OneofDefaultedUnion()     {}
-func (*LP2Message_OneofDefaultedSfixed64) isLP2Message_OneofDefaultedUnion()    {}
-func (*LP2Message_OneofDefaultedDouble) isLP2Message_OneofDefaultedUnion()      {}
-func (*LP2Message_OneofDefaultedString) isLP2Message_OneofDefaultedUnion()      {}
-func (*LP2Message_OneofDefaultedBytes) isLP2Message_OneofDefaultedUnion()       {}
-func (*LP2Message_OneofDefaultedChildEnum) isLP2Message_OneofDefaultedUnion()   {}
-func (*LP2Message_OneofDefaultedSiblingEnum) isLP2Message_OneofDefaultedUnion() {}
-
-func (*LP2Message) XXX_OneofFuncs() (func(proto.Message, *proto.Buffer) error, func(proto.Message, int, int, *proto.Buffer) (bool, error), func(proto.Message) int, []interface{}) {
-	return nil, nil, nil, []interface{}{
-		(*LP2Message_OneofBool)(nil),
-		(*LP2Message_OneofInt32)(nil),
-		(*LP2Message_OneofSint32)(nil),
-		(*LP2Message_OneofUint32)(nil),
-		(*LP2Message_OneofInt64)(nil),
-		(*LP2Message_OneofSint64)(nil),
-		(*LP2Message_OneofUint64)(nil),
-		(*LP2Message_OneofFixed32)(nil),
-		(*LP2Message_OneofSfixed32)(nil),
-		(*LP2Message_OneofFloat)(nil),
-		(*LP2Message_OneofFixed64)(nil),
-		(*LP2Message_OneofSfixed64)(nil),
-		(*LP2Message_OneofDouble)(nil),
-		(*LP2Message_OneofString)(nil),
-		(*LP2Message_OneofBytes)(nil),
-		(*LP2Message_OneofChildEnum)(nil),
-		(*LP2Message_OneofSiblingEnum)(nil),
-		(*LP2Message_OneofChildMessage)(nil),
-		(*LP2Message_OneofSiblingMessage)(nil),
-		(*LP2Message_OneofNamedGroup)(nil),
-		(*LP2Message_Oneofgroup)(nil),
-		(*LP2Message_OneofString1)(nil),
-		(*LP2Message_OneofString2)(nil),
-		(*LP2Message_OneofString3)(nil),
-		(*LP2Message_OneofDefaultedBool)(nil),
-		(*LP2Message_OneofDefaultedInt32)(nil),
-		(*LP2Message_OneofDefaultedSint32)(nil),
-		(*LP2Message_OneofDefaultedUint32)(nil),
-		(*LP2Message_OneofDefaultedInt64)(nil),
-		(*LP2Message_OneofDefaultedSint64)(nil),
-		(*LP2Message_OneofDefaultedUint64)(nil),
-		(*LP2Message_OneofDefaultedFixed32)(nil),
-		(*LP2Message_OneofDefaultedSfixed32)(nil),
-		(*LP2Message_OneofDefaultedFloat)(nil),
-		(*LP2Message_OneofDefaultedFixed64)(nil),
-		(*LP2Message_OneofDefaultedSfixed64)(nil),
-		(*LP2Message_OneofDefaultedDouble)(nil),
-		(*LP2Message_OneofDefaultedString)(nil),
-		(*LP2Message_OneofDefaultedBytes)(nil),
-		(*LP2Message_OneofDefaultedChildEnum)(nil),
-		(*LP2Message_OneofDefaultedSiblingEnum)(nil),
-	}
-}
-
-type LP2Message_LP2ChildMessage struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (*LP2Message_LP2ChildMessage) Descriptor() ([]byte, []int) {
-	return LP2FileDescriptor, []int{1, 0}
-}
-
-type LP2Message_LP2NamedGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (*LP2Message_LP2NamedGroup) Descriptor() ([]byte, []int) {
-	return LP2FileDescriptor, []int{1, 1}
-}
-
-type LP2Message_OptionalGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (*LP2Message_OptionalGroup) Descriptor() ([]byte, []int) {
-	return LP2FileDescriptor, []int{1, 2}
-}
-
-type LP2Message_RequiredGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (*LP2Message_RequiredGroup) Descriptor() ([]byte, []int) {
-	return LP2FileDescriptor, []int{1, 3}
-}
-
-type LP2Message_RepeatedGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (*LP2Message_RepeatedGroup) Descriptor() ([]byte, []int) {
-	return LP2FileDescriptor, []int{1, 4}
-}
-
-type LP2Message_OneofGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (*LP2Message_OneofGroup) Descriptor() ([]byte, []int) {
-	return LP2FileDescriptor, []int{1, 32}
-}
-
-var LP2FileDescriptor = []byte{
-	// 3741 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x5b, 0x67, 0x74, 0x1b, 0xc7,
-	0xb5, 0xc6, 0x02, 0x04, 0x97, 0x1a, 0x11, 0x24, 0xb0, 0xa4, 0xa8, 0x11, 0x9f, 0xdf, 0x7b, 0x88,
-	0xe2, 0x38, 0x88, 0x6c, 0x29, 0x22, 0x38, 0x1c, 0x59, 0xb0, 0x65, 0x85, 0x94, 0xe5, 0xc0, 0x3e,
-	0xb2, 0xa4, 0xb3, 0x8a, 0x92, 0xd8, 0x47, 0x8e, 0x42, 0x99, 0x20, 0x4d, 0x0b, 0x24, 0x68, 0x92,
-	0xb0, 0xa5, 0x73, 0xfc, 0x43, 0x49, 0xdc, 0xd2, 0xdd, 0x6b, 0x8a, 0xd3, 0x9b, 0x7b, 0xb7, 0xe3,
-	0x96, 0xee, 0xf4, 0x9e, 0x38, 0xbd, 0xfe, 0x48, 0xaf, 0x6e, 0xe9, 0x39, 0x33, 0x77, 0x66, 0x67,
-	0x66, 0x77, 0x96, 0x04, 0xd6, 0x3f, 0x7c, 0x4c, 0x0c, 0xee, 0xfd, 0xbe, 0xb9, 0x77, 0xe7, 0x7e,
-	0x73, 0x77, 0x30, 0x42, 0x85, 0xc5, 0xda, 0xc2, 0xe2, 0xfe, 0xb9, 0xf9, 0xc6, 0x62, 0xa3, 0xbc,
-	0x81, 0xff, 0xcf, 0xc3, 0x53, 0x8d, 0xc6, 0x54, 0xbd, 0xb6, 0x61, 0xaa, 0x51, 0x1f, 0x9f, 0x9d,
-	0xda, 0xd0, 0x98, 0x9f, 0x82, 0x2f, 0xca, 0x6b, 0xb7, 0xa1, 0xc2, 0x8e, 0xdd, 0xe5, 0x3d, 0xd3,
-	0x07, 0xea, 0xd3, 0xb3, 0x53, 0xa7, 0xd7, 0x16, 0x16, 0xc6, 0xa7, 0x6a, 0x5e, 0x0f, 0x4a, 0x4f,
-	0x0e, 0x61, 0xa7, 0xe8, 0x94, 0x56, 0xf8, 0xe9, 0xc9, 0x21, 0xfe, 0xb9, 0x8c, 0xd3, 0xc5, 0x34,
-	0xff, 0x5c, 0xe6, 0x9f, 0x87, 0x71, 0xa6, 0x98, 0xe1, 0x9f, 0x87, 0xd7, 0x3e, 0x7c, 0x08, 0xa1,
-	0x1d, 0xbb, 0xcb, 0xd2, 0xfd, 0xd5, 0x28, 0x57, 0x9f, 0x2b, 0xcf, 0x8e, 0xcf, 0xd4, 0x26, 0xa6,
-	0xe6, 0x1b, 0xcd, 0x39, 0x8e, 0x84, 0xca, 0xe5, 0x0d, 0x71, 0xb3, 0xd8, 0xa0, 0x9c, 0xd9, 0x9f,
-	0x3b, 0x99, 0xe7, 0xcb, 0x99, 0xa7, 0x6f, 0x02, 0x79, 0x2f, 0x44, 0xb9, 0xc6, 0xdc, 0xe2, 0x74,
-	0x63, 0x76, 0xbc, 0xbe, 0xff, 0x40, 0xa3, 0x51, 0xc7, 0x13, 0x45, 0xa7, 0xd4, 0xe5, 0x77, 0xcb,
-	0xc1, 0xb1, 0x46, 0xa3, 0xee, 0xbd, 0x08, 0xf5, 0x04, 0x46, 0xd3, 0xb3, 0x8b, 0xc3, 0x65, 0x5c,
-	0x2b, 0x3a, 0xa5, 0xac, 0x1f, 0xb8, 0x9e, 0xca, 0x06, 0xbd, 0x17, 0xa3, 0xde, 0xc0, 0x6c, 0x01,
-	0xec, 0x26, 0x8b, 0x4e, 0xa9, 0xe0, 0x07, 0xde, 0x7b, 0xa6, 0x23, 0x86, 0x4d, 0x30, 0x9c, 0x2a,
-	0x3a, 0xa5, 0x9c, 0x32, 0xdc, 0x0b, 0x86, 0x21, 0x62, 0x4a, 0xf0, 0x39, 0x45, 0xa7, 0x94, 0x31,
-	0x88, 0x29, 0x89, 0x10, 0x53, 0x82, 0xa7, 0x8b, 0x4e, 0xc9, 0x33, 0x89, 0x43, 0x86, 0x4d, 0x30,
-	0x3c, 0xb7, 0xe8, 0x94, 0x3a, 0x4c, 0x62, 0x4a, 0xbc, 0x97, 0xa0, 0x7c, 0x60, 0x38, 0x39, 0x7d,
-	0xa8, 0x36, 0x31, 0x5c, 0xc6, 0x07, 0x8b, 0x4e, 0xc9, 0xf5, 0x03, 0x80, 0x53, 0x60, 0xd8, 0x3b,
-	0x16, 0x15, 0x14, 0xb9, 0xb4, 0xad, 0x17, 0x9d, 0x52, 0xaf, 0x1f, 0x60, 0xec, 0x11, 0xe3, 0x46,
-	0x40, 0x93, 0xf5, 0xc6, 0xf8, 0x22, 0x9e, 0x29, 0x3a, 0xa5, 0xb4, 0x0a, 0xe8, 0x14, 0x36, 0x18,
-	0xa5, 0xa7, 0x04, 0xcf, 0x16, 0x9d, 0x52, 0x67, 0x88, 0x9e, 0x12, 0x0b, 0x3d, 0x25, 0xb8, 0x51,
-	0x74, 0x4a, 0xf9, 0x30, 0x7d, 0x28, 0xfe, 0x89, 0x46, 0xf3, 0x40, 0xbd, 0x86, 0xe7, 0x8a, 0x4e,
-	0xc9, 0x51, 0xf1, 0x9f, 0xcc, 0x47, 0xcd, 0x8c, 0x2e, 0xce, 0x4f, 0xcf, 0x4e, 0xe1, 0xf3, 0xf8,
-	0xe2, 0x55, 0x19, 0xe5, 0xa3, 0x46, 0x40, 0x07, 0x0e, 0x2f, 0xd6, 0x16, 0xf0, 0x7c, 0xd1, 0x29,
-	0x75, 0xab, 0x80, 0xc6, 0xd8, 0xa0, 0x37, 0x8e, 0xfa, 0x02, 0xb3, 0xb3, 0xcf, 0x99, 0xae, 0x4f,
-	0xec, 0xaf, 0xcd, 0x36, 0x67, 0xf0, 0x42, 0xd1, 0x29, 0xf5, 0x94, 0x87, 0x5a, 0x5d, 0xc6, 0xdb,
-	0x98, 0xe7, 0xf6, 0xd9, 0xe6, 0x8c, 0x1f, 0xc4, 0x1c, 0x0c, 0x79, 0xfb, 0xd0, 0x2a, 0x6d, 0x11,
-	0xf0, 0xea, 0x03, 0x92, 0x45, 0x4e, 0x52, 0x5a, 0x92, 0x44, 0x94, 0x2b, 0xc7, 0xee, 0x53, 0x8b,
-	0x26, 0x18, 0xf4, 0xce, 0x45, 0x03, 0xa1, 0x00, 0x66, 0x60, 0x5e, 0xb8, 0x59, 0x74, 0x4a, 0x2b,
-	0xcb, 0xa4, 0xad, 0x18, 0xc4, 0x67, 0xbf, 0xdf, 0x08, 0x43, 0x56, 0x7b, 0x0d, 0xe1, 0x48, 0x24,
-	0x92, 0xed, 0x7c, 0xce, 0x76, 0x6c, 0x2b, 0xc1, 0x48, 0x92, 0x81, 0x50, 0x3c, 0x92, 0x66, 0x02,
-	0x05, 0xf4, 0xfb, 0xb9, 0x22, 0xec, 0x07, 0x6d, 0xb9, 0x80, 0x53, 0x24, 0xd1, 0x16, 0x4f, 0xe2,
-	0xa9, 0x31, 0x26, 0x5d, 0x72, 0x14, 0xe0, 0x0f, 0xb5, 0x21, 0x5d, 0xbb, 0x84, 0xa7, 0x90, 0x2e,
-	0x03, 0xc8, 0x3b, 0x0e, 0xf5, 0x4c, 0xd4, 0x26, 0xc7, 0x9b, 0xf5, 0xc5, 0xda, 0x04, 0x68, 0xd7,
-	0x13, 0x4c, 0x16, 0xbb, 0x2a, 0x1d, 0x8b, 0xf3, 0xcd, 0x9a, 0x9f, 0x0b, 0xbe, 0xe4, 0x1a, 0xb6,
-	0x11, 0xf5, 0x2a, 0x6b, 0xd0, 0x9c, 0xcf, 0x33, 0xf3, 0x6c, 0xa5, 0x73, 0xfd, 0x50, 0x79, 0x98,
-	0x8c, 0xf8, 0x0a, 0x0d, 0xe4, 0x6c, 0x08, 0xe5, 0x95, 0x87, 0xd0, 0xb3, 0x2f, 0x30, 0x97, 0x42,
-	0x25, 0xbb, 0x7e, 0xb8, 0xbc, 0x71, 0xa3, 0xaf, 0x10, 0x85, 0xb0, 0x6d, 0xd4, 0x5d, 0x84, 0xb2,
-	0x7d, 0x91, 0xb9, 0xe4, 0x2a, 0x1d, 0x21, 0x0f, 0xa1, 0x70, 0x24, 0x34, 0x2d, 0x4a, 0xf0, 0x97,
-	0x98, 0x43, 0xa6, 0x82, 0x60, 0x5a, 0x74, 0xd3, 0xf1, 0x9b, 0xcd, 0xa9, 0x51, 0x12, 0x9d, 0x1a,
-	0x25, 0xf8, 0xcb, 0xcc, 0xcd, 0xab, 0x64, 0xd7, 0x53, 0x12, 0x99, 0x1a, 0x25, 0xd1, 0xa9, 0x51,
-	0x82, 0xbf, 0xc2, 0x5c, 0x3a, 0x2a, 0x1d, 0x21, 0x0f, 0xa1, 0x81, 0x04, 0x15, 0x94, 0x87, 0x14,
-	0xb6, 0xaf, 0x32, 0x17, 0xb7, 0xd2, 0xc9, 0xa2, 0xd9, 0xb8, 0xd1, 0x57, 0x98, 0x52, 0x0e, 0x37,
-	0x21, 0x4f, 0x9b, 0x9a, 0x74, 0xfb, 0x1a, 0x73, 0xeb, 0xad, 0xb8, 0xeb, 0x85, 0x9f, 0x42, 0x0e,
-	0xa4, 0x71, 0x48, 0xcf, 0x04, 0x68, 0xe3, 0xd7, 0x99, 0x57, 0xba, 0xe2, 0x0e, 0x6f, 0x18, 0x22,
-	0x43, 0x23, 0x7a, 0x1a, 0x40, 0x26, 0xa3, 0x33, 0xa4, 0x04, 0x7f, 0x83, 0x39, 0x75, 0x56, 0x3a,
-	0x59, 0x50, 0xd1, 0x19, 0x52, 0x62, 0x9b, 0x21, 0x25, 0xf8, 0x9b, 0xcc, 0x2d, 0x5f, 0x71, 0xd7,
-	0x0b, 0xbf, 0xf0, 0x0c, 0x29, 0xf1, 0x36, 0xeb, 0x29, 0x14, 0xf2, 0xf9, 0x2d, 0xe6, 0xe6, 0x54,
-	0x72, 0x62, 0x8a, 0x65, 0x3a, 0x32, 0x3c, 0xb2, 0x59, 0xcb, 0xa5, 0xd0, 0xd3, 0x13, 0x8d, 0x07,
-	0x06, 0x82, 0xfa, 0x6d, 0xde, 0x0e, 0x54, 0xf2, 0xe7, 0xd4, 0xea, 0xf5, 0xc6, 0x71, 0xc5, 0xb5,
-	0x17, 0x34, 0xe6, 0xeb, 0x13, 0x2f, 0x58, 0x8b, 0xf4, 0x67, 0x07, 0x22, 0x3b, 0xa6, 0xa7, 0x06,
-	0x54, 0xf6, 0x3b, 0xcc, 0xb9, 0xbb, 0x82, 0x27, 0x6a, 0xe3, 0x13, 0xfb, 0x86, 0x87, 0xe9, 0xbe,
-	0xf2, 0xc8, 0xc8, 0xbe, 0xf2, 0x26, 0xba, 0x6f, 0x78, 0x64, 0xd3, 0x81, 0x5a, 0x6d, 0x52, 0xcb,
-	0x15, 0x28, 0xf0, 0x41, 0xd4, 0xaf, 0x30, 0x34, 0x09, 0xfe, 0xae, 0x93, 0x50, 0x83, 0x2b, 0xd9,
-	0xd1, 0x1d, 0xbb, 0xab, 0xa3, 0xbe, 0x4a, 0xa6, 0xd2, 0xe2, 0x49, 0x34, 0xa0, 0xaf, 0x4f, 0x4d,
-	0x8c, 0x9f, 0x74, 0xda, 0x53, 0x63, 0xc9, 0xd2, 0xaf, 0xad, 0x67, 0xa5, 0xca, 0x47, 0xa3, 0xdc,
-	0x7c, 0xed, 0xbc, 0xe6, 0xf4, 0xbc, 0x54, 0x80, 0x5b, 0x58, 0x4b, 0xd5, 0xe5, 0x77, 0xcb, 0x51,
-	0x5e, 0xfa, 0xc7, 0xa0, 0x9e, 0xc0, 0x0a, 0x6a, 0xf2, 0x56, 0x66, 0x96, 0xf5, 0x03, 0x67, 0x28,
-	0xf8, 0x12, 0xea, 0x0d, 0xec, 0x44, 0xbd, 0xdf, 0xc6, 0x0c, 0x0b, 0x7e, 0xe0, 0x2f, 0xea, 0x5c,
-	0xb7, 0x14, 0x65, 0x7e, 0x3b, 0xb3, 0xcc, 0x29, 0x4b, 0x51, 0xdf, 0x21, 0x6e, 0x4a, 0xf0, 0x1d,
-	0xcc, 0x30, 0x63, 0x70, 0x53, 0x12, 0xe1, 0xa6, 0x04, 0xdf, 0xc9, 0x0c, 0x3d, 0x93, 0x3b, 0x64,
-	0x29, 0xea, 0xf8, 0x2e, 0x66, 0xd9, 0x61, 0x72, 0x53, 0xe2, 0xad, 0x43, 0xf9, 0xc0, 0x52, 0x16,
-	0xe2, 0xdd, 0xcc, 0xd4, 0xf5, 0x03, 0x08, 0x59, 0xb6, 0xc7, 0xa1, 0x82, 0xe2, 0x97, 0xc6, 0xf7,
-	0x30, 0xe3, 0x5e, 0x3f, 0x40, 0x09, 0x6a, 0x55, 0x8f, 0x0a, 0x4a, 0xf5, 0x5e, 0x66, 0x9a, 0x56,
-	0x51, 0x41, 0x81, 0x46, 0x66, 0x40, 0x09, 0xbe, 0x8f, 0x59, 0x76, 0x86, 0x66, 0x40, 0x89, 0x65,
-	0x06, 0x94, 0xe0, 0xfb, 0x99, 0x71, 0x3e, 0x3c, 0x83, 0x50, 0x16, 0x44, 0x29, 0x3e, 0xc0, 0x6c,
-	0x1d, 0x95, 0x05, 0x51, 0x7a, 0x46, 0x66, 0xa1, 0xf2, 0x1e, 0x84, 0xc6, 0x5b, 0x65, 0x16, 0xca,
-	0x4c, 0x8f, 0x0a, 0xaa, 0xec, 0x21, 0x66, 0xd8, 0xad, 0xa2, 0x82, 0x52, 0x3a, 0x80, 0xfa, 0x02,
-	0x3b, 0xad, 0x92, 0x3e, 0xce, 0x8c, 0x93, 0x75, 0x33, 0x12, 0x4e, 0x55, 0xd0, 0x59, 0x68, 0x95,
-	0xb6, 0x1e, 0xb4, 0x02, 0x7a, 0x18, 0x58, 0xda, 0x68, 0x67, 0xd4, 0xfa, 0x51, 0x85, 0x73, 0x10,
-	0x0d, 0x84, 0x42, 0x90, 0x0d, 0xc6, 0x23, 0x0c, 0x3f, 0x71, 0x3f, 0x63, 0x04, 0x22, 0x1b, 0x8d,
-	0x49, 0x84, 0x23, 0xb1, 0x48, 0xba, 0x47, 0x81, 0xae, 0xbd, 0x86, 0x26, 0x14, 0x91, 0xea, 0x9b,
-	0x02, 0x7e, 0xa3, 0xa1, 0x79, 0x0c, 0x38, 0x12, 0x75, 0x34, 0x12, 0x50, 0xeb, 0x68, 0xce, 0x50,
-	0xa2, 0x03, 0xf8, 0x8f, 0x33, 0xfc, 0x56, 0x5b, 0x1a, 0x5f, 0xb8, 0x8a, 0x96, 0xc6, 0x40, 0xf2,
-	0xb6, 0xa0, 0xd5, 0x6a, 0x55, 0x9b, 0xbd, 0xcd, 0xe5, 0x19, 0xa6, 0x6c, 0xa2, 0xb7, 0x09, 0xd6,
-	0xc6, 0xc9, 0x46, 0x8f, 0x33, 0xaa, 0x25, 0x3a, 0xdc, 0xec, 0x5c, 0xc1, 0xfc, 0x55, 0xb3, 0x33,
-	0x10, 0x41, 0x00, 0x0d, 0x1c, 0x43, 0x6b, 0x2c, 0x10, 0x42, 0x0d, 0xaf, 0x64, 0x18, 0x41, 0xf7,
-	0xb3, 0x3a, 0x02, 0x21, 0xd4, 0x71, 0xd4, 0x8a, 0x21, 0x74, 0xf2, 0x2a, 0x86, 0x21, 0xdb, 0xa1,
-	0x28, 0x84, 0x90, 0xcd, 0xed, 0x71, 0x91, 0x50, 0x82, 0xaf, 0x66, 0x08, 0x66, 0x7f, 0x64, 0x8d,
-	0x86, 0x92, 0x25, 0xa2, 0xa1, 0x04, 0x5f, 0xc3, 0x70, 0x82, 0x86, 0xc9, 0x1e, 0x0d, 0x25, 0x4b,
-	0x44, 0x43, 0x09, 0xbe, 0x96, 0x61, 0xc8, 0x0e, 0xca, 0x1e, 0x0d, 0x25, 0xde, 0x76, 0x34, 0x68,
-	0x81, 0x90, 0x2a, 0x7b, 0x1d, 0xc3, 0x50, 0x2d, 0x15, 0x8e, 0xa0, 0x48, 0x8d, 0xae, 0xa2, 0xff,
-	0xb1, 0x45, 0x23, 0x71, 0xae, 0x67, 0x38, 0x5a, 0x8f, 0xb5, 0x26, 0x1a, 0x91, 0xd4, 0xef, 0x31,
-	0x6b, 0x7a, 0x41, 0xc9, 0x6f, 0x60, 0x30, 0x5a, 0xd3, 0x15, 0xcd, 0x2d, 0x68, 0xfb, 0x12, 0x41,
-	0x51, 0x82, 0x6f, 0x64, 0x28, 0xaa, 0x0b, 0x8b, 0x09, 0x8a, 0x92, 0x25, 0x83, 0xa2, 0x04, 0xdf,
-	0xc4, 0x70, 0xb4, 0xb6, 0x2c, 0x2e, 0x28, 0x4a, 0xbc, 0xd3, 0xac, 0x0f, 0x4a, 0x6c, 0x0e, 0xef,
-	0x60, 0x38, 0x91, 0x3e, 0x2d, 0xfa, 0xc4, 0xc4, 0xa6, 0x71, 0xba, 0x7d, 0xe1, 0xc0, 0xf6, 0xf1,
-	0x4e, 0x86, 0x65, 0x6b, 0xdc, 0x2c, 0x6b, 0x08, 0x76, 0x96, 0x3d, 0xd6, 0x7c, 0xc3, 0x1e, 0xf3,
-	0x2e, 0x86, 0xb6, 0x54, 0x27, 0x17, 0x7d, 0x00, 0xb0, 0x0d, 0x5d, 0x88, 0xfe, 0xd7, 0x02, 0xaa,
-	0x6d, 0x48, 0xef, 0xce, 0x24, 0xdc, 0x90, 0x64, 0xd3, 0x35, 0x18, 0x61, 0x56, 0x1b, 0xd4, 0x05,
-	0xe8, 0xff, 0xad, 0xa5, 0xa5, 0x6d, 0x55, 0x37, 0x67, 0xda, 0xdb, 0xaa, 0x24, 0xed, 0x51, 0x96,
-	0x52, 0x0c, 0xf5, 0x7c, 0x73, 0xb5, 0xf1, 0x40, 0x19, 0x9f, 0xca, 0x14, 0x33, 0xd0, 0xf3, 0xc1,
-	0xa8, 0xea, 0xf9, 0x84, 0x15, 0x08, 0xcf, 0xd3, 0xcc, 0x8c, 0xf7, 0x7c, 0x30, 0xac, 0xf5, 0x7c,
-	0xc2, 0x4e, 0xa8, 0xdc, 0x33, 0xcc, 0x90, 0xf7, 0x7c, 0x30, 0xae, 0xf7, 0x7c, 0xc2, 0x52, 0x68,
-	0xd9, 0xb3, 0xcc, 0x32, 0xa7, 0x2c, 0xf5, 0x9e, 0x4f, 0x71, 0x53, 0x82, 0x9f, 0x63, 0x86, 0x19,
-	0x83, 0x5b, 0xf6, 0x30, 0x1a, 0x37, 0x25, 0xf8, 0x6f, 0xcc, 0xd0, 0x33, 0xb9, 0x43, 0x96, 0x42,
-	0x79, 0xfe, 0xce, 0x2c, 0x3b, 0x4c, 0x6e, 0xd9, 0xf3, 0x09, 0x4b, 0x29, 0x0c, 0xff, 0x60, 0xa6,
-	0xbc, 0xe7, 0x83, 0x2f, 0x8c, 0x9e, 0x4f, 0xf2, 0x4b, 0xe3, 0x7f, 0x32, 0x63, 0xde, 0xf3, 0x89,
-	0x19, 0x18, 0x3d, 0x9f, 0x44, 0xe6, 0x4a, 0xf1, 0x2f, 0x66, 0x9a, 0x56, 0x51, 0x69, 0x3d, 0x9f,
-	0x3e, 0x03, 0x4a, 0xf0, 0xbf, 0x99, 0x65, 0x67, 0x68, 0x06, 0xb2, 0xe7, 0x33, 0x66, 0x40, 0x09,
-	0xfe, 0x0f, 0x33, 0xce, 0x87, 0x67, 0x10, 0xca, 0x82, 0x28, 0xeb, 0x23, 0x1d, 0xc5, 0x0c, 0xf4,
-	0x7c, 0x30, 0xae, 0xf7, 0x7c, 0x12, 0x17, 0x8a, 0xf6, 0x75, 0x1d, 0xfc, 0x70, 0x55, 0x65, 0x56,
-	0xeb, 0xf9, 0xe4, 0x6a, 0xe2, 0xf5, 0xf8, 0x7a, 0x66, 0xd8, 0xad, 0xa2, 0xd2, 0x7a, 0x3e, 0x61,
-	0xa7, 0x95, 0xd8, 0x1b, 0x98, 0x71, 0xd2, 0x9e, 0x0f, 0xe0, 0x42, 0x3d, 0x5f, 0xb0, 0x1e, 0xb4,
-	0x42, 0xba, 0x08, 0x58, 0xda, 0xea, 0xf9, 0xe4, 0xfa, 0x09, 0xf5, 0x7c, 0x46, 0x08, 0xb2, 0x09,
-	0xbb, 0x98, 0xe1, 0x3f, 0x8f, 0x9e, 0x4f, 0x0b, 0xc4, 0xe8, 0xf9, 0x42, 0xb1, 0x48, 0xba, 0x4b,
-	0x80, 0xae, 0xdd, 0x9e, 0xcf, 0x88, 0xc8, 0xe8, 0xf9, 0x04, 0x8f, 0xde, 0xf3, 0x5d, 0x0a, 0x1c,
-	0x09, 0x7b, 0x3e, 0x00, 0x0c, 0xf7, 0x7c, 0x30, 0x0a, 0xf8, 0x97, 0x31, 0xfc, 0xd6, 0x7b, 0x3e,
-	0x70, 0x0d, 0x7a, 0x3e, 0x0d, 0xc9, 0x1b, 0xd1, 0x22, 0x98, 0x1b, 0x3f, 0xfb, 0xa0, 0x94, 0xb5,
-	0x27, 0x19, 0x43, 0xd7, 0x58, 0x3a, 0xef, 0xa8, 0x19, 0xed, 0xe6, 0xdf, 0x73, 0x81, 0xdb, 0xa4,
-	0x2d, 0x16, 0xe1, 0x06, 0xa2, 0xf4, 0x3d, 0xe6, 0x97, 0xe5, 0x7e, 0x7d, 0xa6, 0x1f, 0x28, 0xde,
-	0x66, 0x6d, 0x19, 0x08, 0x47, 0x21, 0x7c, 0xdf, 0x67, 0x9e, 0x05, 0xee, 0xd9, 0x6f, 0x7a, 0x0a,
-	0x09, 0xb4, 0xb8, 0x0a, 0x25, 0xfc, 0x01, 0x73, 0xcd, 0xd9, 0x5c, 0x85, 0x26, 0xda, 0xa7, 0x4b,
-	0x09, 0xfe, 0x21, 0xf3, 0xcc, 0xc4, 0x4c, 0x97, 0x1f, 0xba, 0x58, 0xa7, 0x4b, 0x09, 0xfe, 0x11,
-	0xf3, 0xf4, 0xe2, 0xa6, 0x6b, 0x77, 0x15, 0xe2, 0xf9, 0x63, 0xe6, 0xda, 0x11, 0x37, 0x5d, 0x4a,
-	0xbc, 0x13, 0x58, 0x23, 0x6e, 0xba, 0x4a, 0x81, 0xfc, 0x09, 0xf3, 0x75, 0xb9, 0xef, 0x2a, 0xd3,
-	0x57, 0xea, 0xea, 0x16, 0x6d, 0xed, 0xcb, 0x29, 0x4b, 0xef, 0x9f, 0x32, 0xef, 0x5e, 0xee, 0x3d,
-	0x10, 0x9a, 0xf4, 0x64, 0x70, 0x82, 0x16, 0x49, 0x15, 0xe8, 0xed, 0xcf, 0x98, 0x6f, 0xda, 0x96,
-	0x2a, 0x50, 0xde, 0xb8, 0x49, 0x53, 0x82, 0x7f, 0xce, 0x5c, 0x3b, 0x63, 0x27, 0x4d, 0x49, 0xfc,
-	0xa4, 0x29, 0xc1, 0xbf, 0x60, 0xde, 0xf9, 0xf8, 0x49, 0xdb, 0x73, 0x2d, 0x24, 0xfa, 0x97, 0x5c,
-	0xa2, 0x6d, 0xb9, 0x16, 0x62, 0xad, 0x4f, 0x7b, 0xb6, 0x31, 0xab, 0xd7, 0xc0, 0xc3, 0x59, 0x51,
-	0x03, 0x29, 0x35, 0xed, 0x9d, 0xd2, 0x84, 0x97, 0x81, 0x3e, 0x6d, 0xe5, 0x0c, 0x8b, 0xf2, 0x91,
-	0xac, 0xa8, 0x84, 0x94, 0x9a, 0x76, 0xe0, 0x0d, 0xc5, 0xb0, 0x95, 0xf5, 0x79, 0x11, 0x77, 0x51,
-	0x0f, 0x8f, 0x66, 0x45, 0x3d, 0xa4, 0xfc, 0xd5, 0x11, 0x7f, 0x51, 0x12, 0x76, 0x00, 0x51, 0x15,
-	0x8f, 0x65, 0x45, 0x55, 0xd8, 0x00, 0x44, 0x61, 0xc4, 0x06, 0x40, 0x09, 0x7e, 0x3c, 0x2b, 0x6a,
-	0x23, 0x26, 0x00, 0x4a, 0x96, 0x08, 0x80, 0x12, 0xfc, 0x89, 0xac, 0xa8, 0x90, 0xb8, 0x00, 0x62,
-	0x01, 0x44, 0x9d, 0x7c, 0x32, 0x2b, 0xea, 0x24, 0x2e, 0x00, 0xfe, 0x7e, 0x34, 0x68, 0x01, 0x90,
-	0xeb, 0xfd, 0x53, 0x59, 0x51, 0x2d, 0x29, 0x1f, 0x47, 0x10, 0x64, 0xc1, 0x6c, 0x63, 0xef, 0x00,
-	0xd1, 0x20, 0x24, 0xc6, 0xa7, 0xb3, 0xa2, 0x66, 0x52, 0xfe, 0x9a, 0x68, 0x18, 0x93, 0x96, 0xaa,
-	0xd3, 0xe6, 0xc1, 0x2b, 0xe7, 0x33, 0x59, 0x51, 0x39, 0xb6, 0x44, 0x42, 0xf1, 0x2c, 0x11, 0x06,
-	0x25, 0xf8, 0xb3, 0x59, 0x51, 0x3f, 0xb1, 0x61, 0x50, 0xb2, 0x64, 0x18, 0x94, 0xe0, 0xcf, 0x65,
-	0x45, 0x15, 0xc5, 0x87, 0x11, 0xfb, 0x3c, 0x44, 0x2d, 0x3d, 0x91, 0x15, 0xb5, 0x64, 0x7b, 0x1e,
-	0xa2, 0x9c, 0xce, 0x44, 0xb9, 0x99, 0xf1, 0x39, 0x5e, 0x3f, 0x50, 0x44, 0x37, 0x77, 0xf2, 0xad,
-	0x70, 0xa4, 0xa5, 0xad, 0xea, 0xf4, 0xf1, 0x39, 0x56, 0x57, 0xec, 0xbf, 0xed, 0xb3, 0x8b, 0xf3,
-	0x87, 0xfd, 0x95, 0x33, 0x6a, 0xc4, 0x3b, 0x0b, 0xf5, 0x04, 0xd8, 0xb0, 0xc4, 0xdf, 0x03, 0xe0,
-	0xb4, 0x1d, 0x70, 0x5e, 0x7a, 0x80, 0xde, 0x3d, 0xa3, 0x0d, 0x79, 0xaf, 0x45, 0xbd, 0x01, 0xbc,
-	0xa8, 0xc1, 0xf7, 0x02, 0xfe, 0xa6, 0x76, 0xf0, 0xa1, 0x34, 0x81, 0x20, 0x37, 0xa3, 0x8f, 0x19,
-	0x0c, 0xa2, 0x48, 0xdf, 0x97, 0x80, 0x61, 0xaf, 0x85, 0x41, 0xd4, 0x73, 0x28, 0x45, 0x94, 0xe0,
-	0xf7, 0x27, 0x4b, 0x11, 0x25, 0x91, 0x14, 0x51, 0x12, 0x49, 0x11, 0x25, 0xf8, 0x03, 0x09, 0x53,
-	0x24, 0x09, 0xf4, 0x14, 0x85, 0x18, 0x84, 0x0c, 0x7c, 0x30, 0x61, 0x8a, 0xc2, 0x0c, 0x42, 0x31,
-	0xce, 0x46, 0xf9, 0x80, 0x41, 0xd6, 0xf8, 0x87, 0x80, 0xe2, 0xf8, 0x76, 0x28, 0x84, 0x7c, 0x00,
-	0x47, 0xcf, 0x8c, 0x31, 0xe8, 0x4d, 0xa2, 0x82, 0x4a, 0x94, 0x64, 0xf9, 0x30, 0xb0, 0x6c, 0x6e,
-	0x2b, 0x55, 0x93, 0x3a, 0x4d, 0xef, 0x8c, 0x39, 0x6a, 0x3c, 0x6f, 0x10, 0x9b, 0x8f, 0x24, 0x78,
-	0xde, 0x5c, 0x83, 0xcc, 0xe7, 0x0d, 0xb2, 0x14, 0xc9, 0x15, 0x25, 0xf8, 0xa3, 0x49, 0x73, 0x25,
-	0x9f, 0x87, 0x91, 0x2b, 0x4a, 0x2c, 0xb9, 0xa2, 0x04, 0x7f, 0x2c, 0x71, 0xae, 0x24, 0x8d, 0x99,
-	0xab, 0xd0, 0xd2, 0x12, 0x8a, 0x76, 0x4b, 0x82, 0xa5, 0x05, 0x42, 0x67, 0x2e, 0x2d, 0x21, 0x7e,
-	0x46, 0x79, 0xc0, 0x8b, 0xdf, 0xad, 0x49, 0xca, 0x83, 0xbb, 0x86, 0xca, 0x03, 0x5e, 0x18, 0xf5,
-	0xe7, 0x0d, 0x2f, 0x8c, 0xb7, 0x25, 0x78, 0xde, 0xfc, 0xa5, 0xd2, 0x7c, 0xde, 0xf0, 0x9e, 0xa9,
-	0xab, 0x37, 0x7f, 0xf7, 0xbb, 0x3d, 0x81, 0x7a, 0xb3, 0xd7, 0x3d, 0x53, 0xbd, 0xf9, 0x0b, 0xe0,
-	0x02, 0x1a, 0x08, 0xb0, 0xcd, 0x17, 0xc0, 0x3b, 0x80, 0x64, 0x4b, 0x3b, 0x24, 0xfa, 0xeb, 0x1e,
-	0x90, 0xf5, 0xcd, 0x44, 0xbf, 0xf1, 0x0e, 0x23, 0xac, 0x09, 0x96, 0xf9, 0x22, 0x78, 0x27, 0xd0,
-	0x6e, 0x6d, 0x4f, 0xb9, 0xf4, 0xf7, 0x3f, 0x20, 0x5e, 0x35, 0x63, 0xfb, 0xce, 0x9b, 0x41, 0xfd,
-	0x01, 0xb5, 0xfe, 0x6e, 0x78, 0x17, 0xd0, 0x9e, 0xd0, 0x0e, 0xad, 0x7a, 0x17, 0x04, 0xca, 0xc2,
-	0x4c, 0x78, 0x5c, 0xae, 0x0c, 0xbe, 0x0d, 0xc0, 0xce, 0x7b, 0x77, 0x9b, 0x2b, 0x83, 0xef, 0x82,
-	0x6a, 0xeb, 0x65, 0x2b, 0x23, 0x18, 0x92, 0x4b, 0x7b, 0x41, 0xc3, 0xbf, 0xa7, 0xcd, 0xa5, 0x0d,
-	0x9b, 0xa0, 0x22, 0x60, 0x4b, 0x4d, 0x8d, 0x49, 0x86, 0xa6, 0xc6, 0x70, 0x6f, 0x9b, 0x0c, 0x7b,
-	0x2d, 0x0c, 0x6a, 0x4c, 0x4b, 0x11, 0x25, 0x40, 0x70, 0x5f, 0xfb, 0x29, 0xa2, 0x24, 0x92, 0x22,
-	0x18, 0xd2, 0x53, 0x24, 0xf1, 0xef, 0x4f, 0x90, 0x22, 0x9d, 0x40, 0xa6, 0xc8, 0x64, 0x68, 0x6a,
-	0x0c, 0x0f, 0x24, 0x48, 0x51, 0x98, 0x41, 0x8d, 0x49, 0xc1, 0x17, 0xdb, 0x0b, 0x50, 0x3c, 0xd8,
-	0xa6, 0xe0, 0x8b, 0x3d, 0x50, 0x71, 0xb0, 0xac, 0x6b, 0x83, 0x41, 0xa2, 0xb8, 0xa4, 0x01, 0xc7,
-	0x43, 0xed, 0x26, 0x8a, 0xfb, 0x86, 0x12, 0x15, 0x8c, 0x79, 0x45, 0x84, 0x1a, 0xb3, 0xb5, 0xc6,
-	0x24, 0x80, 0x5f, 0xe4, 0x16, 0x9d, 0x52, 0x57, 0x35, 0xe5, 0xaf, 0xe0, 0x83, 0xdc, 0x62, 0x2d,
-	0x5a, 0x09, 0x16, 0xd0, 0x86, 0x5d, 0xcc, 0x4c, 0xb2, 0xd5, 0x94, 0x0f, 0x7e, 0xd0, 0x10, 0x1e,
-	0x8d, 0xba, 0xc1, 0x46, 0x74, 0x83, 0x97, 0x30, 0xa3, 0x42, 0x35, 0xe5, 0x83, 0xab, 0x68, 0xea,
-	0x02, 0x2b, 0xd1, 0xd1, 0x5d, 0xca, 0xac, 0x72, 0x81, 0x95, 0x68, 0xcc, 0x74, 0x3e, 0x4a, 0xf0,
-	0x65, 0xcc, 0x28, 0xa3, 0xf3, 0x51, 0x62, 0xf2, 0x51, 0x82, 0xdf, 0xc8, 0x8c, 0x3c, 0x83, 0x4f,
-	0xb7, 0x12, 0xed, 0xd1, 0x9b, 0x98, 0x55, 0x87, 0xc1, 0x47, 0x89, 0x77, 0x0c, 0xca, 0x81, 0x95,
-	0x6c, 0x3e, 0xde, 0xcc, 0xcc, 0xdc, 0x6a, 0xca, 0x07, 0x6f, 0xd9, 0xa8, 0x94, 0x50, 0x8f, 0xe0,
-	0x94, 0x86, 0x6f, 0x61, 0x86, 0xbd, 0xd5, 0x94, 0x0f, 0x00, 0x41, 0xab, 0x11, 0x44, 0x00, 0x7d,
-	0xc6, 0x5b, 0x99, 0x59, 0x3a, 0x88, 0x00, 0xfa, 0x05, 0x93, 0x95, 0x12, 0xfc, 0x36, 0x66, 0xd5,
-	0x69, 0xb2, 0xf2, 0xb3, 0x54, 0x83, 0x95, 0x12, 0xfc, 0x76, 0x66, 0x98, 0x0f, 0xb1, 0xea, 0xd1,
-	0x8a, 0x1d, 0xfb, 0x72, 0x66, 0xe7, 0x04, 0xd1, 0x8a, 0x8d, 0x57, 0x65, 0x0e, 0x76, 0xdd, 0x2b,
-	0x98, 0xd5, 0x0a, 0x95, 0x39, 0xd8, 0x3c, 0x83, 0x08, 0x60, 0xe7, 0xbc, 0x92, 0x19, 0x75, 0x07,
-	0x11, 0xc0, 0x0e, 0xf8, 0x1a, 0x94, 0x07, 0x1b, 0xed, 0x98, 0xf5, 0x2a, 0x37, 0xe1, 0x25, 0x95,
-	0x6a, 0xca, 0x87, 0x38, 0xd5, 0x29, 0xeb, 0x19, 0xc8, 0x93, 0xcf, 0x58, 0x3b, 0x62, 0xbd, 0xda,
-	0x6d, 0xef, 0x5e, 0x4a, 0x35, 0xe5, 0xe7, 0xc5, 0x9a, 0x50, 0x27, 0xac, 0x53, 0xa8, 0x4f, 0x9f,
-	0xba, 0xdc, 0xe6, 0xae, 0x71, 0x93, 0x5f, 0x11, 0xac, 0xa6, 0xfc, 0x82, 0x0a, 0x40, 0xee, 0x6c,
-	0x07, 0xd0, 0x2a, 0x33, 0x06, 0x49, 0x75, 0xad, 0xdb, 0xf6, 0xfd, 0xc0, 0x6a, 0xca, 0xef, 0xd3,
-	0x23, 0x91, 0x1c, 0xe3, 0x08, 0x88, 0x8d, 0xad, 0xf3, 0x3a, 0x37, 0xe9, 0xe5, 0xc0, 0x6a, 0xca,
-	0xef, 0xe5, 0x78, 0xda, 0x8e, 0xe9, 0x0b, 0x91, 0x00, 0xec, 0xeb, 0x5d, 0x7e, 0x33, 0xf0, 0xa5,
-	0xad, 0xdd, 0x0c, 0x64, 0x7e, 0x12, 0x58, 0x43, 0x51, 0x05, 0x00, 0x0b, 0x71, 0x08, 0xdf, 0x20,
-	0x57, 0x62, 0xb7, 0xb6, 0x12, 0x87, 0xc2, 0x76, 0x65, 0x7c, 0xa3, 0xcd, 0xae, 0x1c, 0xb6, 0x1b,
-	0xc6, 0x37, 0xd9, 0xec, 0x86, 0xbd, 0xcd, 0xa8, 0x5f, 0x94, 0x89, 0xf9, 0xbb, 0xfd, 0xaf, 0x5c,
-	0x75, 0x27, 0xb1, 0xea, 0xf8, 0xb0, 0xf6, 0xcc, 0x9f, 0xed, 0xb7, 0xc8, 0xa7, 0x19, 0xfe, 0xcd,
-	0xfe, 0xd7, 0xae, 0x7e, 0x41, 0xb1, 0xea, 0x88, 0x07, 0x15, 0xfa, 0xc9, 0xfe, 0x24, 0x34, 0x10,
-	0x76, 0x17, 0x72, 0xf9, 0x1b, 0x57, 0xbb, 0xad, 0x58, 0x75, 0xfc, 0x7e, 0xd3, 0x7d, 0x8f, 0x3c,
-	0x81, 0x8a, 0xf8, 0x0b, 0x21, 0xfd, 0xad, 0xab, 0xae, 0x2e, 0x46, 0xdd, 0xf7, 0xca, 0x5f, 0xfb,
-	0x6d, 0xb3, 0xa7, 0x04, 0xff, 0xce, 0x0d, 0xdf, 0x63, 0xb4, 0x46, 0x40, 0x49, 0x5c, 0x04, 0x94,
-	0xe0, 0xdf, 0xbb, 0xda, 0xa5, 0x46, 0x7b, 0x04, 0xfc, 0xec, 0xd2, 0x1a, 0x01, 0x25, 0xf8, 0x0f,
-	0xae, 0xba, 0xe1, 0x68, 0x8f, 0x80, 0x9f, 0x60, 0xad, 0x0e, 0xbb, 0x4b, 0x29, 0xfe, 0xa3, 0xab,
-	0x5f, 0x77, 0xac, 0x3a, 0xfe, 0x2a, 0x13, 0x41, 0x8a, 0xf8, 0xc9, 0x08, 0x47, 0x22, 0x90, 0x18,
-	0x7f, 0x72, 0x8d, 0xbb, 0x8f, 0x55, 0xc7, 0x1f, 0x08, 0x45, 0x21, 0x05, 0xfe, 0xa4, 0x68, 0x2a,
-	0x41, 0xea, 0xff, 0xec, 0x1a, 0x17, 0x21, 0xa3, 0x79, 0x94, 0x67, 0x58, 0xf6, 0x40, 0x28, 0xc1,
-	0x7f, 0x71, 0xf5, 0x5b, 0x91, 0x31, 0x81, 0x50, 0x12, 0x1f, 0x08, 0x25, 0xf8, 0xaf, 0xae, 0x71,
-	0x45, 0x32, 0x2e, 0x10, 0x4a, 0xbc, 0x53, 0xa2, 0x0f, 0x44, 0xec, 0x1e, 0x4f, 0xb9, 0x96, 0xfb,
-	0x92, 0xd1, 0x27, 0x23, 0x76, 0x95, 0x53, 0x2d, 0x0b, 0x03, 0xf6, 0x97, 0xa7, 0x5d, 0xfb, 0xe5,
-	0x49, 0xcb, 0x1a, 0x81, 0xad, 0x67, 0x57, 0x34, 0xb7, 0xb0, 0x09, 0x3d, 0xe3, 0x2e, 0x7d, 0x93,
-	0x32, 0x9a, 0x6c, 0xd8, 0xa7, 0x0e, 0xa1, 0xc1, 0x30, 0xa0, 0xb6, 0x63, 0x3d, 0xeb, 0x3e, 0xbf,
-	0x6b, 0x95, 0x55, 0xc7, 0x5f, 0x6d, 0xb2, 0xaa, 0x1d, 0x6c, 0x01, 0x1d, 0x15, 0x2d, 0x17, 0x6d,
-	0x2f, 0x7b, 0xce, 0x4d, 0x74, 0xc7, 0xb2, 0xea, 0xf8, 0x6b, 0xc2, 0xe5, 0x15, 0xd8, 0x0c, 0x8e,
-	0xa2, 0xde, 0xd0, 0xd6, 0xd4, 0xee, 0x3f, 0x6a, 0x19, 0xdc, 0x8a, 0x72, 0xc6, 0x96, 0x90, 0x04,
-	0xc0, 0xb8, 0x11, 0x9e, 0x04, 0xc0, 0xb8, 0x7f, 0x95, 0x0c, 0x40, 0xfb, 0x31, 0xaf, 0x6d, 0x80,
-	0x93, 0x50, 0x3e, 0x7c, 0xc4, 0xea, 0xe5, 0x51, 0xe6, 0x60, 0xed, 0x30, 0x07, 0xe9, 0xf2, 0xd9,
-	0x9f, 0x5e, 0x3f, 0xca, 0x9e, 0x3f, 0x5e, 0x6f, 0xd6, 0x70, 0x9a, 0x8f, 0xc1, 0x87, 0x4a, 0xfa,
-	0x78, 0x67, 0x70, 0x2b, 0x2a, 0x44, 0x4e, 0x51, 0x97, 0x03, 0xc8, 0xea, 0x00, 0x2f, 0x43, 0x5e,
-	0xf4, 0x98, 0x74, 0x39, 0x84, 0x82, 0x1d, 0x61, 0x6f, 0xeb, 0x08, 0xb9, 0xd8, 0x20, 0xc4, 0x69,
-	0xd1, 0x72, 0x00, 0x99, 0xf8, 0x20, 0x5a, 0x44, 0xf0, 0xe2, 0x83, 0x68, 0x11, 0xa1, 0x43, 0x47,
-	0x18, 0x45, 0x7d, 0x96, 0x73, 0xc8, 0xe5, 0x20, 0x5c, 0x1d, 0x62, 0x0c, 0xf5, 0xdb, 0x0e, 0x19,
-	0x97, 0xc3, 0xe8, 0xb5, 0xe7, 0x52, 0x9d, 0x21, 0x2e, 0x07, 0x90, 0x5e, 0x22, 0x8e, 0x16, 0x53,
-	0xd1, 0xb9, 0x54, 0x1c, 0x2d, 0x62, 0xe4, 0xed, 0x0f, 0x44, 0x3b, 0xde, 0x5b, 0x0e, 0xc1, 0x89,
-	0x59, 0x14, 0xea, 0xf8, 0x6e, 0x39, 0x84, 0x15, 0xf6, 0x5c, 0xaa, 0xf3, 0xb9, 0xe5, 0x00, 0xba,
-	0x75, 0x80, 0x89, 0xa0, 0xba, 0x83, 0x23, 0x38, 0x8b, 0x7f, 0x45, 0xf7, 0xef, 0x29, 0x1f, 0xbd,
-	0xf4, 0x1e, 0x31, 0x3e, 0xc7, 0xaf, 0x74, 0x68, 0x2c, 0x17, 0x22, 0x1c, 0x77, 0x06, 0x67, 0x61,
-	0x3b, 0x4d, 0x67, 0x4b, 0x7a, 0xc9, 0x43, 0x63, 0x6f, 0xa2, 0xc1, 0xf8, 0xa3, 0x38, 0x0b, 0xff,
-	0xa8, 0xc9, 0xdf, 0xd6, 0xad, 0x0f, 0x8d, 0xf6, 0x10, 0x1a, 0xb0, 0x1f, 0xc5, 0x59, 0x28, 0xab,
-	0x26, 0x65, 0x92, 0x4b, 0x20, 0x91, 0x55, 0x61, 0x9e, 0xcd, 0xe9, 0xa4, 0xd9, 0xe5, 0x34, 0x1b,
-	0x16, 0x66, 0xe8, 0xf0, 0x4d, 0x47, 0x28, 0xb4, 0x86, 0xb0, 0x37, 0x1e, 0x21, 0xd7, 0xda, 0xbe,
-	0x61, 0x9e, 0x9e, 0xe9, 0x00, 0x99, 0xd6, 0x83, 0x88, 0x41, 0xf0, 0x5a, 0x0f, 0x22, 0x06, 0xa1,
-	0x63, 0x39, 0x04, 0x90, 0xaa, 0xf0, 0xe9, 0x96, 0x0e, 0xe1, 0xb6, 0x18, 0x86, 0x79, 0x78, 0xa5,
-	0x23, 0xac, 0x58, 0x0e, 0xe1, 0x44, 0x84, 0xd4, 0xcb, 0x67, 0xdb, 0xff, 0xb0, 0x77, 0x08, 0x75,
-	0xeb, 0xdd, 0x9e, 0xb7, 0x02, 0x41, 0xf3, 0x95, 0x47, 0xec, 0xcf, 0x31, 0x7f, 0xf4, 0x95, 0xbb,
-	0xf2, 0xfd, 0xde, 0x4a, 0xe4, 0x6e, 0xab, 0x8e, 0xfa, 0x3b, 0x4e, 0xdd, 0x9e, 0xff, 0xbf, 0x75,
-	0x2b, 0xba, 0x2e, 0xdf, 0x99, 0x3f, 0x72, 0xe4, 0xc8, 0x91, 0xf4, 0x58, 0x4e, 0x9e, 0x9f, 0x34,
-	0x67, 0xa7, 0x1b, 0xb3, 0x63, 0xab, 0xa3, 0x3d, 0x2d, 0xff, 0x62, 0x5d, 0x09, 0xfe, 0xf5, 0x30,
-	0x48, 0x87, 0xd7, 0x85, 0x3a, 0xce, 0xdc, 0xee, 0xef, 0xca, 0xa7, 0x3c, 0x17, 0x65, 0x76, 0xed,
-	0xdc, 0x9e, 0x77, 0xd8, 0x1f, 0xaf, 0x78, 0xd5, 0xae, 0x7c, 0x7a, 0xdd, 0x08, 0xea, 0x31, 0x9b,
-	0x41, 0x35, 0xa3, 0x09, 0x0f, 0xc9, 0x19, 0x3d, 0xe1, 0x78, 0xdd, 0x6a, 0x4a, 0xb7, 0xa4, 0xff,
-	0x1b, 0x00, 0x00, 0xff, 0xff, 0x7b, 0xc1, 0x4f, 0x87, 0x12, 0x3d, 0x00, 0x00,
-}
diff --git a/internal/impl/legacy_proto3_test.go b/internal/impl/legacy_proto3_test.go
deleted file mode 100644
index 83f2e65..0000000
--- a/internal/impl/legacy_proto3_test.go
+++ /dev/null
@@ -1,422 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-// TODO: Move this to a separate package. We do *not* want this to be
-// auto-generated by the current protoc-gen-go since it is supposed to be a
-// snapshot of an generated message from the past.
-
-import "github.com/golang/protobuf/proto"
-
-type LP3SiblingEnum int32
-
-func (LP3SiblingEnum) EnumDescriptor() ([]byte, []int) {
-	return LP3FileDescriptor, []int{0}
-}
-
-type LP3Message_LP3ChildEnum int32
-
-func (LP3Message_LP3ChildEnum) EnumDescriptor() ([]byte, []int) {
-	return LP3FileDescriptor, []int{1, 0}
-}
-
-type LP3SiblingMessage struct {
-	F1                   string   `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
-	F2                   []string `protobuf:"bytes,2,rep,name=f2,proto3" json:"f2,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (*LP3SiblingMessage) Descriptor() ([]byte, []int) {
-	return LP3FileDescriptor, []int{0}
-}
-
-type LP3Message struct {
-	// Optional fields.
-	OptionalBool           bool                        `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool,proto3" json:"optional_bool,omitempty"`
-	OptionalInt32          int32                       `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32,proto3" json:"optional_int32,omitempty"`
-	OptionalSint32         int32                       `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32,proto3" json:"optional_sint32,omitempty"`
-	OptionalUint32         uint32                      `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32,proto3" json:"optional_uint32,omitempty"`
-	OptionalInt64          int64                       `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64,proto3" json:"optional_int64,omitempty"`
-	OptionalSint64         int64                       `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64,proto3" json:"optional_sint64,omitempty"`
-	OptionalUint64         uint64                      `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64,proto3" json:"optional_uint64,omitempty"`
-	OptionalFixed32        uint32                      `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32,proto3" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       int32                       `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32,proto3" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          float32                     `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat,proto3" json:"optional_float,omitempty"`
-	OptionalFixed64        uint64                      `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64,proto3" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       int64                       `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64,proto3" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         float64                     `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble,proto3" json:"optional_double,omitempty"`
-	OptionalString         string                      `protobuf:"bytes,113,opt,name=optional_string,json=optionalString,proto3" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                      `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      LP3Message_LP3ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,proto3,enum=google.golang.org.proto3.LP3Message_LP3ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalSiblingEnum    LP3SiblingEnum              `protobuf:"varint,116,opt,name=optional_sibling_enum,json=optionalSiblingEnum,proto3,enum=google.golang.org.proto3.LP3SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalChildMessage   *LP3Message_LP3ChildMessage `protobuf:"bytes,117,opt,name=optional_child_message,json=optionalChildMessage,proto3" json:"optional_child_message,omitempty"`
-	OptionalSiblingMessage *LP3SiblingMessage          `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage,proto3" json:"optional_sibling_message,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                        `protobuf:"varint,200,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                       `protobuf:"varint,201,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                       `protobuf:"zigzag32,202,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                      `protobuf:"varint,203,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                       `protobuf:"varint,204,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                       `protobuf:"zigzag64,205,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                      `protobuf:"varint,206,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                      `protobuf:"fixed32,207,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                       `protobuf:"fixed32,208,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32                     `protobuf:"fixed32,209,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                      `protobuf:"fixed64,210,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                       `protobuf:"fixed64,211,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64                     `protobuf:"fixed64,212,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
-	RepeatedString         []string                      `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                      `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []LP3Message_LP3ChildEnum     `protobuf:"varint,215,rep,packed,name=repeated_child_enum,json=repeatedChildEnum,proto3,enum=google.golang.org.proto3.LP3Message_LP3ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedSiblingEnum    []LP3SiblingEnum              `protobuf:"varint,216,rep,packed,name=repeated_sibling_enum,json=repeatedSiblingEnum,proto3,enum=google.golang.org.proto3.LP3SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedChildMessage   []*LP3Message_LP3ChildMessage `protobuf:"bytes,217,rep,name=repeated_child_message,json=repeatedChildMessage,proto3" json:"repeated_child_message,omitempty"`
-	RepeatedSiblingMessage []*LP3SiblingMessage          `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage,proto3" json:"repeated_sibling_message,omitempty"`
-	// Repeated packed fields.
-	RepeatedPackedBool     []bool    `protobuf:"varint,300,rep,packed,name=repeated_packed_bool,json=repeatedPackedBool,proto3" json:"repeated_packed_bool,omitempty"`
-	RepeatedPackedInt32    []int32   `protobuf:"varint,301,rep,packed,name=repeated_packed_int32,json=repeatedPackedInt32,proto3" json:"repeated_packed_int32,omitempty"`
-	RepeatedPackedSint32   []int32   `protobuf:"zigzag32,302,rep,packed,name=repeated_packed_sint32,json=repeatedPackedSint32,proto3" json:"repeated_packed_sint32,omitempty"`
-	RepeatedPackedUint32   []uint32  `protobuf:"varint,303,rep,packed,name=repeated_packed_uint32,json=repeatedPackedUint32,proto3" json:"repeated_packed_uint32,omitempty"`
-	RepeatedPackedInt64    []int64   `protobuf:"varint,304,rep,packed,name=repeated_packed_int64,json=repeatedPackedInt64,proto3" json:"repeated_packed_int64,omitempty"`
-	RepeatedPackedSint64   []int64   `protobuf:"zigzag64,305,rep,packed,name=repeated_packed_sint64,json=repeatedPackedSint64,proto3" json:"repeated_packed_sint64,omitempty"`
-	RepeatedPackedUint64   []uint64  `protobuf:"varint,306,rep,packed,name=repeated_packed_uint64,json=repeatedPackedUint64,proto3" json:"repeated_packed_uint64,omitempty"`
-	RepeatedPackedFixed32  []uint32  `protobuf:"fixed32,307,rep,packed,name=repeated_packed_fixed32,json=repeatedPackedFixed32,proto3" json:"repeated_packed_fixed32,omitempty"`
-	RepeatedPackedSfixed32 []int32   `protobuf:"fixed32,308,rep,packed,name=repeated_packed_sfixed32,json=repeatedPackedSfixed32,proto3" json:"repeated_packed_sfixed32,omitempty"`
-	RepeatedPackedFloat    []float32 `protobuf:"fixed32,309,rep,packed,name=repeated_packed_float,json=repeatedPackedFloat,proto3" json:"repeated_packed_float,omitempty"`
-	RepeatedPackedFixed64  []uint64  `protobuf:"fixed64,310,rep,packed,name=repeated_packed_fixed64,json=repeatedPackedFixed64,proto3" json:"repeated_packed_fixed64,omitempty"`
-	RepeatedPackedSfixed64 []int64   `protobuf:"fixed64,311,rep,packed,name=repeated_packed_sfixed64,json=repeatedPackedSfixed64,proto3" json:"repeated_packed_sfixed64,omitempty"`
-	RepeatedPackedDouble   []float64 `protobuf:"fixed64,312,rep,packed,name=repeated_packed_double,json=repeatedPackedDouble,proto3" json:"repeated_packed_double,omitempty"`
-	// Repeated non-packed fields.
-	RepeatedNonpackedBool     []bool    `protobuf:"varint,400,rep,name=repeated_nonpacked_bool,json=repeatedNonpackedBool,proto3" json:"repeated_nonpacked_bool,omitempty"`
-	RepeatedNonpackedInt32    []int32   `protobuf:"varint,401,rep,name=repeated_nonpacked_int32,json=repeatedNonpackedInt32,proto3" json:"repeated_nonpacked_int32,omitempty"`
-	RepeatedNonpackedSint32   []int32   `protobuf:"zigzag32,402,rep,name=repeated_nonpacked_sint32,json=repeatedNonpackedSint32,proto3" json:"repeated_nonpacked_sint32,omitempty"`
-	RepeatedNonpackedUint32   []uint32  `protobuf:"varint,403,rep,name=repeated_nonpacked_uint32,json=repeatedNonpackedUint32,proto3" json:"repeated_nonpacked_uint32,omitempty"`
-	RepeatedNonpackedInt64    []int64   `protobuf:"varint,404,rep,name=repeated_nonpacked_int64,json=repeatedNonpackedInt64,proto3" json:"repeated_nonpacked_int64,omitempty"`
-	RepeatedNonpackedSint64   []int64   `protobuf:"zigzag64,405,rep,name=repeated_nonpacked_sint64,json=repeatedNonpackedSint64,proto3" json:"repeated_nonpacked_sint64,omitempty"`
-	RepeatedNonpackedUint64   []uint64  `protobuf:"varint,406,rep,name=repeated_nonpacked_uint64,json=repeatedNonpackedUint64,proto3" json:"repeated_nonpacked_uint64,omitempty"`
-	RepeatedNonpackedFixed32  []uint32  `protobuf:"fixed32,407,rep,name=repeated_nonpacked_fixed32,json=repeatedNonpackedFixed32,proto3" json:"repeated_nonpacked_fixed32,omitempty"`
-	RepeatedNonpackedSfixed32 []int32   `protobuf:"fixed32,408,rep,name=repeated_nonpacked_sfixed32,json=repeatedNonpackedSfixed32,proto3" json:"repeated_nonpacked_sfixed32,omitempty"`
-	RepeatedNonpackedFloat    []float32 `protobuf:"fixed32,409,rep,name=repeated_nonpacked_float,json=repeatedNonpackedFloat,proto3" json:"repeated_nonpacked_float,omitempty"`
-	RepeatedNonpackedFixed64  []uint64  `protobuf:"fixed64,410,rep,name=repeated_nonpacked_fixed64,json=repeatedNonpackedFixed64,proto3" json:"repeated_nonpacked_fixed64,omitempty"`
-	RepeatedNonpackedSfixed64 []int64   `protobuf:"fixed64,411,rep,name=repeated_nonpacked_sfixed64,json=repeatedNonpackedSfixed64,proto3" json:"repeated_nonpacked_sfixed64,omitempty"`
-	RepeatedNonpackedDouble   []float64 `protobuf:"fixed64,412,rep,name=repeated_nonpacked_double,json=repeatedNonpackedDouble,proto3" json:"repeated_nonpacked_double,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                        `protobuf:"bytes,500,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolInt32          map[bool]int32                       `protobuf:"bytes,501,rep,name=map_bool_int32,json=mapBoolInt32,proto3" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolSint32         map[bool]int32                       `protobuf:"bytes,502,rep,name=map_bool_sint32,json=mapBoolSint32,proto3" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"`
-	MapBoolUint32         map[bool]uint32                      `protobuf:"bytes,503,rep,name=map_bool_uint32,json=mapBoolUint32,proto3" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolInt64          map[bool]int64                       `protobuf:"bytes,504,rep,name=map_bool_int64,json=mapBoolInt64,proto3" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolSint64         map[bool]int64                       `protobuf:"bytes,505,rep,name=map_bool_sint64,json=mapBoolSint64,proto3" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"zigzag64,2,opt,name=value,proto3"`
-	MapBoolUint64         map[bool]uint64                      `protobuf:"bytes,506,rep,name=map_bool_uint64,json=mapBoolUint64,proto3" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolFixed32        map[bool]uint32                      `protobuf:"bytes,507,rep,name=map_bool_fixed32,json=mapBoolFixed32,proto3" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapBoolSfixed32       map[bool]int32                       `protobuf:"bytes,508,rep,name=map_bool_sfixed32,json=mapBoolSfixed32,proto3" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapBoolFloat          map[bool]float32                     `protobuf:"bytes,509,rep,name=map_bool_float,json=mapBoolFloat,proto3" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapBoolFixed64        map[bool]uint64                      `protobuf:"bytes,510,rep,name=map_bool_fixed64,json=mapBoolFixed64,proto3" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolSfixed64       map[bool]int64                       `protobuf:"bytes,511,rep,name=map_bool_sfixed64,json=mapBoolSfixed64,proto3" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolDouble         map[bool]float64                     `protobuf:"bytes,512,rep,name=map_bool_double,json=mapBoolDouble,proto3" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolString         map[bool]string                      `protobuf:"bytes,513,rep,name=map_bool_string,json=mapBoolString,proto3" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolBytes          map[bool][]byte                      `protobuf:"bytes,514,rep,name=map_bool_bytes,json=mapBoolBytes,proto3" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolChildEnum      map[bool]LP3Message_LP3ChildEnum     `protobuf:"bytes,515,rep,name=map_bool_child_enum,json=mapBoolChildEnum,proto3" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=google.golang.org.proto3.LP3Message_LP3ChildEnum"`
-	MapBoolSiblingEnum    map[bool]LP3SiblingEnum              `protobuf:"bytes,516,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum,proto3" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=google.golang.org.proto3.LP3SiblingEnum"`
-	MapBoolChildMessage   map[bool]*LP3Message_LP3ChildMessage `protobuf:"bytes,517,rep,name=map_bool_child_message,json=mapBoolChildMessage,proto3" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolSiblingMessage map[bool]*LP3SiblingMessage          `protobuf:"bytes,518,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage,proto3" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapInt32Bool          map[int32]bool                       `protobuf:"bytes,519,rep,name=map_int32_bool,json=mapInt32Bool,proto3" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapSint32Bool         map[int32]bool                       `protobuf:"bytes,520,rep,name=map_sint32_bool,json=mapSint32Bool,proto3" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint32Bool         map[uint32]bool                      `protobuf:"bytes,521,rep,name=map_uint32_bool,json=mapUint32Bool,proto3" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapInt64Bool          map[int64]bool                       `protobuf:"bytes,522,rep,name=map_int64_bool,json=mapInt64Bool,proto3" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapSint64Bool         map[int64]bool                       `protobuf:"bytes,523,rep,name=map_sint64_bool,json=mapSint64Bool,proto3" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint64Bool         map[uint64]bool                      `protobuf:"bytes,524,rep,name=map_uint64_bool,json=mapUint64Bool,proto3" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapFixed32Bool        map[uint32]bool                      `protobuf:"bytes,525,rep,name=map_fixed32_bool,json=mapFixed32Bool,proto3" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapStringBool         map[string]bool                      `protobuf:"bytes,526,rep,name=map_string_bool,json=mapStringBool,proto3" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	// Oneof fields.
-	OneofUnion           isLP3Message_OneofUnion `protobuf_oneof:"oneof_union"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
-}
-
-func (*LP3Message) Descriptor() ([]byte, []int) {
-	return LP3FileDescriptor, []int{1}
-}
-
-type isLP3Message_OneofUnion interface {
-	isLP3Message_OneofUnion()
-}
-
-type LP3Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,600,opt,name=oneof_bool,json=oneofBool,proto3,oneof"`
-}
-type LP3Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,601,opt,name=oneof_int32,json=oneofInt32,proto3,oneof"`
-}
-type LP3Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,602,opt,name=oneof_sint32,json=oneofSint32,proto3,oneof"`
-}
-type LP3Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,603,opt,name=oneof_uint32,json=oneofUint32,proto3,oneof"`
-}
-type LP3Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,604,opt,name=oneof_int64,json=oneofInt64,proto3,oneof"`
-}
-type LP3Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,605,opt,name=oneof_sint64,json=oneofSint64,proto3,oneof"`
-}
-type LP3Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,606,opt,name=oneof_uint64,json=oneofUint64,proto3,oneof"`
-}
-type LP3Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,607,opt,name=oneof_fixed32,json=oneofFixed32,proto3,oneof"`
-}
-type LP3Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,608,opt,name=oneof_sfixed32,json=oneofSfixed32,proto3,oneof"`
-}
-type LP3Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,609,opt,name=oneof_float,json=oneofFloat,proto3,oneof"`
-}
-type LP3Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,610,opt,name=oneof_fixed64,json=oneofFixed64,proto3,oneof"`
-}
-type LP3Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,611,opt,name=oneof_sfixed64,json=oneofSfixed64,proto3,oneof"`
-}
-type LP3Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,612,opt,name=oneof_double,json=oneofDouble,proto3,oneof"`
-}
-type LP3Message_OneofString struct {
-	OneofString string `protobuf:"bytes,613,opt,name=oneof_string,json=oneofString,proto3,oneof"`
-}
-type LP3Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,614,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
-}
-type LP3Message_OneofChildEnum struct {
-	OneofChildEnum LP3Message_LP3ChildEnum `protobuf:"varint,615,opt,name=oneof_child_enum,json=oneofChildEnum,proto3,enum=google.golang.org.proto3.LP3Message_LP3ChildEnum,oneof"`
-}
-type LP3Message_OneofSiblingEnum struct {
-	OneofSiblingEnum LP3SiblingEnum `protobuf:"varint,616,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,proto3,enum=google.golang.org.proto3.LP3SiblingEnum,oneof"`
-}
-type LP3Message_OneofChildMessage struct {
-	OneofChildMessage *LP3Message_LP3ChildMessage `protobuf:"bytes,617,opt,name=oneof_child_message,json=oneofChildMessage,proto3,oneof"`
-}
-type LP3Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *LP3SiblingMessage `protobuf:"bytes,618,opt,name=oneof_sibling_message,json=oneofSiblingMessage,proto3,oneof"`
-}
-type LP3Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,619,opt,name=oneof_string1,json=oneofString1,proto3,oneof"`
-}
-type LP3Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,620,opt,name=oneof_string2,json=oneofString2,proto3,oneof"`
-}
-type LP3Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,621,opt,name=oneof_string3,json=oneofString3,proto3,oneof"`
-}
-
-func (*LP3Message_OneofBool) isLP3Message_OneofUnion()           {}
-func (*LP3Message_OneofInt32) isLP3Message_OneofUnion()          {}
-func (*LP3Message_OneofSint32) isLP3Message_OneofUnion()         {}
-func (*LP3Message_OneofUint32) isLP3Message_OneofUnion()         {}
-func (*LP3Message_OneofInt64) isLP3Message_OneofUnion()          {}
-func (*LP3Message_OneofSint64) isLP3Message_OneofUnion()         {}
-func (*LP3Message_OneofUint64) isLP3Message_OneofUnion()         {}
-func (*LP3Message_OneofFixed32) isLP3Message_OneofUnion()        {}
-func (*LP3Message_OneofSfixed32) isLP3Message_OneofUnion()       {}
-func (*LP3Message_OneofFloat) isLP3Message_OneofUnion()          {}
-func (*LP3Message_OneofFixed64) isLP3Message_OneofUnion()        {}
-func (*LP3Message_OneofSfixed64) isLP3Message_OneofUnion()       {}
-func (*LP3Message_OneofDouble) isLP3Message_OneofUnion()         {}
-func (*LP3Message_OneofString) isLP3Message_OneofUnion()         {}
-func (*LP3Message_OneofBytes) isLP3Message_OneofUnion()          {}
-func (*LP3Message_OneofChildEnum) isLP3Message_OneofUnion()      {}
-func (*LP3Message_OneofSiblingEnum) isLP3Message_OneofUnion()    {}
-func (*LP3Message_OneofChildMessage) isLP3Message_OneofUnion()   {}
-func (*LP3Message_OneofSiblingMessage) isLP3Message_OneofUnion() {}
-func (*LP3Message_OneofString1) isLP3Message_OneofUnion()        {}
-func (*LP3Message_OneofString2) isLP3Message_OneofUnion()        {}
-func (*LP3Message_OneofString3) isLP3Message_OneofUnion()        {}
-
-func (*LP3Message) XXX_OneofFuncs() (func(proto.Message, *proto.Buffer) error, func(proto.Message, int, int, *proto.Buffer) (bool, error), func(proto.Message) int, []interface{}) {
-	return nil, nil, nil, []interface{}{
-		(*LP3Message_OneofBool)(nil),
-		(*LP3Message_OneofInt32)(nil),
-		(*LP3Message_OneofSint32)(nil),
-		(*LP3Message_OneofUint32)(nil),
-		(*LP3Message_OneofInt64)(nil),
-		(*LP3Message_OneofSint64)(nil),
-		(*LP3Message_OneofUint64)(nil),
-		(*LP3Message_OneofFixed32)(nil),
-		(*LP3Message_OneofSfixed32)(nil),
-		(*LP3Message_OneofFloat)(nil),
-		(*LP3Message_OneofFixed64)(nil),
-		(*LP3Message_OneofSfixed64)(nil),
-		(*LP3Message_OneofDouble)(nil),
-		(*LP3Message_OneofString)(nil),
-		(*LP3Message_OneofBytes)(nil),
-		(*LP3Message_OneofChildEnum)(nil),
-		(*LP3Message_OneofSiblingEnum)(nil),
-		(*LP3Message_OneofChildMessage)(nil),
-		(*LP3Message_OneofSiblingMessage)(nil),
-		(*LP3Message_OneofString1)(nil),
-		(*LP3Message_OneofString2)(nil),
-		(*LP3Message_OneofString3)(nil),
-	}
-}
-
-type LP3Message_LP3ChildMessage struct {
-	F1                   string   `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
-	F2                   []string `protobuf:"bytes,2,rep,name=f2,proto3" json:"f2,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (*LP3Message_LP3ChildMessage) Descriptor() ([]byte, []int) {
-	return LP3FileDescriptor, []int{1, 0}
-}
-
-var LP3FileDescriptor = []byte{
-	// 2271 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x59, 0xe7, 0x73, 0x1b, 0xc7,
-	0x15, 0xc7, 0xe1, 0xc0, 0xb6, 0x06, 0x08, 0xe0, 0x20, 0x52, 0x6b, 0xe6, 0xcb, 0x8d, 0xe2, 0x38,
-	0x17, 0xd9, 0xc3, 0x19, 0x12, 0xeb, 0x75, 0x49, 0x6c, 0x45, 0x74, 0xe4, 0x20, 0x1e, 0xdb, 0xd2,
-	0x9c, 0xc2, 0xc9, 0xc4, 0x13, 0x47, 0x01, 0x45, 0x00, 0x86, 0x04, 0xe0, 0x18, 0x12, 0xd0, 0x44,
-	0x33, 0xf9, 0x90, 0xde, 0x93, 0x49, 0xef, 0x7f, 0x42, 0x7a, 0xff, 0x13, 0xd2, 0x7b, 0xb1, 0x9d,
-	0xde, 0xfb, 0x87, 0xcc, 0xa4, 0xf7, 0xd9, 0x7b, 0x5b, 0xef, 0xf6, 0x08, 0x1c, 0x3e, 0x68, 0x04,
-	0x3c, 0xfc, 0xde, 0xfb, 0xed, 0x7b, 0xb7, 0xbf, 0xb7, 0xfb, 0x78, 0xa8, 0x3e, 0xee, 0x1c, 0x8d,
-	0x2f, 0x1d, 0x1c, 0x46, 0xe3, 0xa8, 0xb9, 0x19, 0xff, 0xe7, 0xe1, 0x5e, 0x14, 0xf5, 0x06, 0x9d,
-	0xcd, 0x5e, 0x34, 0x68, 0x8f, 0x7a, 0x9b, 0xd1, 0x61, 0x0f, 0x7e, 0x68, 0x9e, 0x6a, 0xa2, 0xfa,
-	0x03, 0x17, 0x9a, 0x17, 0xfb, 0x7b, 0x83, 0xfe, 0xa8, 0xf7, 0x60, 0xe7, 0xe8, 0xa8, 0xdd, 0xeb,
-	0x78, 0xab, 0xa8, 0xd8, 0xdd, 0xc2, 0x8e, 0xef, 0x04, 0x2b, 0x61, 0xb1, 0xbb, 0x15, 0x7f, 0xdf,
-	0xc6, 0x45, 0xdf, 0x8d, 0xbf, 0x6f, 0x9f, 0xfa, 0xd3, 0xfd, 0x08, 0x3d, 0x70, 0xa1, 0x29, 0xe0,
-	0x4f, 0x46, 0x95, 0xe8, 0x60, 0xdc, 0x8f, 0x46, 0xed, 0xc1, 0xa5, 0xbd, 0x28, 0x1a, 0xe0, 0x7d,
-	0xdf, 0x09, 0x96, 0xc3, 0xb2, 0x30, 0xee, 0x44, 0xd1, 0xc0, 0x7b, 0x0a, 0x5a, 0x95, 0xa0, 0xfe,
-	0x68, 0xdc, 0xdc, 0xc6, 0x1d, 0xdf, 0x09, 0x16, 0x42, 0xe9, 0xfa, 0x1c, 0x66, 0xf4, 0x9e, 0x8a,
-	0xaa, 0x12, 0x76, 0x04, 0xb8, 0xae, 0xef, 0x04, 0xf5, 0x50, 0x7a, 0x5f, 0xec, 0xa7, 0x80, 0x13,
-	0x00, 0xf6, 0x7c, 0x27, 0xa8, 0x28, 0xe0, 0x2e, 0x00, 0x13, 0xc4, 0x94, 0xe0, 0x47, 0x7d, 0x27,
-	0x70, 0x0d, 0x62, 0x4a, 0x52, 0xc4, 0x94, 0xe0, 0xbe, 0xef, 0x04, 0x9e, 0x49, 0x9c, 0x00, 0x4e,
-	0x00, 0x78, 0xc5, 0x77, 0x82, 0x92, 0x49, 0x4c, 0x89, 0xf7, 0x34, 0x54, 0x93, 0xc0, 0x6e, 0xff,
-	0x25, 0x9d, 0xfd, 0xe6, 0x36, 0xbe, 0xea, 0x3b, 0xc1, 0x52, 0x28, 0x03, 0xdc, 0x07, 0x66, 0xef,
-	0x16, 0x54, 0x57, 0xe4, 0x02, 0x3b, 0xf0, 0x9d, 0xa0, 0x1a, 0xca, 0x18, 0x17, 0xb9, 0xdd, 0x48,
-	0xa8, 0x3b, 0x88, 0xda, 0x63, 0x3c, 0xf4, 0x9d, 0xa0, 0xa8, 0x12, 0xba, 0x8f, 0x19, 0xd3, 0xf4,
-	0x94, 0xe0, 0x91, 0xef, 0x04, 0x8b, 0x09, 0x7a, 0x4a, 0x2c, 0xf4, 0x94, 0xe0, 0xc8, 0x77, 0x82,
-	0x5a, 0x92, 0x3e, 0x91, 0xff, 0x7e, 0x34, 0xd9, 0x1b, 0x74, 0xf0, 0x81, 0xef, 0x04, 0x8e, 0xca,
-	0xff, 0x59, 0xb1, 0xd5, 0xac, 0xe8, 0xf8, 0xb0, 0x3f, 0xea, 0xe1, 0x17, 0xc7, 0x5b, 0x4a, 0x55,
-	0x34, 0xb6, 0x1a, 0x09, 0xed, 0x5d, 0x1f, 0x77, 0x8e, 0xf0, 0xa1, 0xef, 0x04, 0x65, 0x95, 0xd0,
-	0x0e, 0x33, 0x7a, 0x6d, 0xd4, 0x90, 0xb0, 0xcb, 0x8f, 0xf6, 0x07, 0xfb, 0x97, 0x3a, 0xa3, 0xc9,
-	0x10, 0x1f, 0xf9, 0x4e, 0xb0, 0xba, 0xbd, 0xb5, 0x99, 0xb5, 0xc5, 0x37, 0xd5, 0x4e, 0x65, 0x1f,
-	0xef, 0x65, 0x9e, 0xe7, 0x46, 0x93, 0x61, 0x28, 0x73, 0x96, 0x26, 0xef, 0x05, 0x68, 0x4d, 0xdb,
-	0x04, 0xb1, 0x26, 0x80, 0x64, 0x1c, 0x93, 0x04, 0xc7, 0x92, 0x70, 0x11, 0xc5, 0xb1, 0x1b, 0x6a,
-	0xd3, 0x48, 0xa3, 0x77, 0x05, 0xad, 0x27, 0x12, 0x18, 0xc2, 0xba, 0xf0, 0xc4, 0x77, 0x82, 0x1b,
-	0xb6, 0x49, 0xae, 0x1c, 0xf8, 0xf7, 0xf0, 0x84, 0x91, 0x86, 0xd0, 0x64, 0x07, 0xe1, 0x54, 0x26,
-	0x82, 0xed, 0x5a, 0xcc, 0x76, 0xcb, 0x2c, 0xc9, 0x08, 0x92, 0xf5, 0x44, 0x3e, 0x82, 0xe6, 0x26,
-	0x54, 0x39, 0xec, 0x1c, 0x74, 0xda, 0xe3, 0xce, 0x3e, 0x48, 0xff, 0xf3, 0x8e, 0xef, 0x32, 0xed,
-	0x0b, 0x6b, 0xac, 0xfd, 0x9b, 0xd1, 0xaa, 0x44, 0x81, 0x54, 0xbf, 0xc0, 0x60, 0x0b, 0xa1, 0x74,
-	0x06, 0xf1, 0x07, 0xa8, 0x2a, 0x71, 0x5c, 0xfc, 0x5f, 0x64, 0xc0, 0x7a, 0x28, 0xfd, 0xb9, 0xfa,
-	0x75, 0x24, 0x57, 0xff, 0x97, 0x18, 0xb2, 0xa2, 0x90, 0x5c, 0xfe, 0x09, 0x6e, 0x4a, 0xf0, 0x97,
-	0x19, 0xd0, 0x35, 0xb8, 0x29, 0x49, 0x71, 0x53, 0x82, 0xbf, 0xc2, 0x80, 0x9e, 0xc9, 0x9d, 0x40,
-	0xf2, 0x06, 0xf0, 0x55, 0x86, 0x2c, 0x99, 0xdc, 0x94, 0x78, 0xa7, 0x51, 0x4d, 0x22, 0x85, 0xaa,
-	0xbf, 0xc6, 0xa0, 0x4b, 0xa1, 0x0c, 0x21, 0x5a, 0xc0, 0xad, 0xa8, 0xae, 0xf8, 0x05, 0xf8, 0xeb,
-	0x0c, 0x5c, 0x0d, 0x65, 0x14, 0xd9, 0x03, 0xf4, 0xac, 0xa0, 0x07, 0x7c, 0x83, 0x41, 0x8b, 0x2a,
-	0x2b, 0x68, 0x02, 0xa9, 0x15, 0x50, 0x82, 0xbf, 0xc9, 0x90, 0x8b, 0x89, 0x15, 0x50, 0x62, 0x59,
-	0x01, 0x25, 0xf8, 0x5b, 0x0c, 0x5c, 0x4b, 0xae, 0x20, 0x51, 0x05, 0xde, 0x06, 0xbe, 0xcd, 0xb0,
-	0x8e, 0xaa, 0x02, 0xef, 0x03, 0x46, 0x65, 0xa1, 0x0f, 0x7c, 0xc7, 0x89, 0xcf, 0x12, 0x55, 0x59,
-	0x68, 0x04, 0x7a, 0x56, 0xd0, 0x08, 0xbe, 0xcb, 0x80, 0x65, 0x95, 0x15, 0x74, 0x82, 0x3d, 0xd4,
-	0x90, 0x38, 0xad, 0x13, 0x7c, 0x8f, 0x81, 0xe7, 0x6b, 0x05, 0x22, 0x9c, 0x6a, 0x05, 0x8f, 0xa0,
-	0x35, 0x6d, 0x3f, 0x68, 0xad, 0xe0, 0x31, 0x60, 0xc9, 0xd1, 0x0b, 0xd4, 0xfe, 0x51, 0xbd, 0xe0,
-	0x2a, 0x5a, 0x4f, 0xa4, 0x20, 0xd4, 0xf9, 0x38, 0x8b, 0x3f, 0x77, 0x33, 0x30, 0x12, 0x11, 0x2a,
-	0xed, 0x22, 0x9c, 0xca, 0x45, 0xd0, 0x3d, 0x01, 0x74, 0xf9, 0xba, 0x41, 0x22, 0x23, 0xc1, 0x73,
-	0x1b, 0x92, 0xfc, 0x97, 0x0e, 0xda, 0x97, 0xaf, 0x8a, 0xa6, 0xf0, 0x21, 0x76, 0x75, 0x58, 0xde,
-	0x29, 0xd6, 0x9c, 0xd0, 0x13, 0x80, 0x0b, 0xf1, 0xef, 0x71, 0x7b, 0xb8, 0x5d, 0x2b, 0x35, 0x77,
-	0x03, 0x49, 0x7f, 0x98, 0xf9, 0x2d, 0xc4, 0x7e, 0x0d, 0xd3, 0x0f, 0xfa, 0xc5, 0x9d, 0x5a, 0x11,
-	0xb9, 0x23, 0x6f, 0x1b, 0x1f, 0x61, 0x9e, 0xf5, 0xd8, 0xf3, 0x84, 0xe9, 0xc9, 0x1b, 0x88, 0xc5,
-	0x95, 0xf7, 0x91, 0x8f, 0x32, 0xd7, 0x8a, 0xcd, 0x95, 0x77, 0x14, 0xfb, 0x72, 0x29, 0xc1, 0x1f,
-	0x63, 0x9e, 0x6e, 0xc6, 0x72, 0x29, 0xc9, 0x5a, 0x2e, 0x25, 0xf8, 0xe3, 0xcc, 0xd3, 0xcb, 0x5a,
-	0xae, 0xdd, 0x95, 0xb7, 0x9e, 0x4f, 0x30, 0xd7, 0x52, 0xd6, 0x72, 0x29, 0xf1, 0x9e, 0x8e, 0x4e,
-	0x26, 0x5d, 0x45, 0x7b, 0xf9, 0x24, 0xf3, 0x5d, 0x8a, 0x7d, 0xd7, 0x4c, 0x5f, 0xd1, 0x95, 0xee,
-	0xd6, 0x76, 0x8e, 0x58, 0xb2, 0xf0, 0xfe, 0x14, 0xf3, 0xae, 0xc6, 0xde, 0xeb, 0x89, 0x45, 0x8b,
-	0x36, 0x65, 0x29, 0x15, 0x74, 0xab, 0x4f, 0x33, 0xdf, 0xa2, 0xad, 0x54, 0xd0, 0xb7, 0xb2, 0x16,
-	0x4d, 0x09, 0xfe, 0x0c, 0x73, 0x5d, 0xcc, 0x5c, 0x34, 0x25, 0xd9, 0x8b, 0xa6, 0x04, 0x7f, 0x96,
-	0x79, 0xd7, 0xb2, 0x17, 0x6d, 0xaf, 0x35, 0x6f, 0x70, 0x9f, 0x63, 0xce, 0x8e, 0xad, 0xd6, 0xbc,
-	0xd5, 0xe9, 0xcb, 0x1e, 0x45, 0x23, 0x5d, 0x03, 0x6f, 0x75, 0xb9, 0x06, 0x0a, 0x6a, 0xd9, 0x0f,
-	0x09, 0x48, 0x2c, 0x03, 0x7d, 0xd9, 0xca, 0x19, 0x36, 0xe5, 0xdb, 0x5c, 0xae, 0x84, 0x82, 0x5a,
-	0xb6, 0xf4, 0x06, 0x31, 0x9c, 0x41, 0x37, 0x5a, 0xdc, 0xb9, 0x1e, 0xde, 0xee, 0x72, 0x3d, 0x14,
-	0xc2, 0x93, 0x29, 0x7f, 0x2e, 0x09, 0x7b, 0x00, 0xae, 0x8a, 0x77, 0xb8, 0x5c, 0x15, 0xb6, 0x00,
-	0x5c, 0x18, 0x99, 0x09, 0x50, 0x82, 0xdf, 0xe9, 0x72, 0x6d, 0x64, 0x24, 0x40, 0xc9, 0x31, 0x09,
-	0x50, 0x82, 0xdf, 0xe5, 0x72, 0x85, 0x64, 0x25, 0x90, 0x19, 0x80, 0xeb, 0xe4, 0xdd, 0x2e, 0xd7,
-	0x49, 0x56, 0x02, 0x94, 0x78, 0x67, 0xd1, 0x86, 0x25, 0x80, 0xd8, 0xef, 0xef, 0x71, 0xb9, 0x5a,
-	0x0a, 0x21, 0x4e, 0x45, 0x10, 0x82, 0xb9, 0x17, 0x3d, 0xc9, 0x96, 0x84, 0x88, 0xf1, 0x5e, 0x97,
-	0x6b, 0xa6, 0x10, 0xde, 0x98, 0x4e, 0xa3, 0x6b, 0x51, 0x9d, 0xb6, 0x8e, 0x58, 0x39, 0xef, 0x73,
-	0xb9, 0x72, 0x6c, 0x85, 0x04, 0xf1, 0x1c, 0x93, 0x06, 0x25, 0xf8, 0xfd, 0x2e, 0xd7, 0x4f, 0x66,
-	0x1a, 0x94, 0x1c, 0x9b, 0x06, 0x25, 0xf8, 0x03, 0x2e, 0x57, 0x51, 0x76, 0x1a, 0x99, 0xcf, 0x83,
-	0x6b, 0xe9, 0x83, 0x2e, 0xd7, 0x92, 0xed, 0x79, 0x70, 0x39, 0x3d, 0x8c, 0x2a, 0xc3, 0xf6, 0x41,
-	0xac, 0x1f, 0x10, 0xd1, 0x9f, 0xdd, 0xf8, 0xb0, 0xba, 0x6d, 0xa6, 0xb3, 0xf1, 0xc1, 0xf6, 0x01,
-	0xd3, 0x15, 0xfb, 0x77, 0x6e, 0x34, 0x3e, 0xbc, 0x1e, 0xde, 0x30, 0x54, 0x16, 0xef, 0x11, 0xb4,
-	0x2a, 0x63, 0xc3, 0x16, 0xff, 0x0b, 0x04, 0xa7, 0x79, 0x82, 0xc7, 0xd2, 0x83, 0xe8, 0xe5, 0xa1,
-	0x66, 0xf2, 0x5e, 0x84, 0xaa, 0x32, 0x3c, 0xd7, 0xe0, 0x5f, 0x21, 0xfe, 0xed, 0x79, 0xe2, 0x83,
-	0x34, 0x81, 0xa0, 0x32, 0xd4, 0x6d, 0x06, 0x03, 0x17, 0xe9, 0xdf, 0xe6, 0x60, 0xd8, 0xb5, 0x30,
-	0x70, 0x3d, 0x27, 0x4a, 0x44, 0x09, 0xfe, 0xfb, 0x7c, 0x25, 0xa2, 0x24, 0x55, 0x22, 0x4a, 0x52,
-	0x25, 0xa2, 0x04, 0xff, 0x63, 0xce, 0x12, 0x09, 0x02, 0xbd, 0x44, 0x09, 0x06, 0xde, 0x06, 0xfe,
-	0x39, 0x67, 0x89, 0x92, 0x0c, 0xbc, 0x63, 0x5c, 0x46, 0x35, 0xc9, 0x20, 0x34, 0xfe, 0x2f, 0xa0,
-	0xb8, 0x23, 0x0f, 0x05, 0x6f, 0x1f, 0xc0, 0xb1, 0x3a, 0x34, 0x8c, 0x5e, 0x17, 0xd5, 0x55, 0xa1,
-	0x04, 0xcb, 0xbf, 0x81, 0xe5, 0xce, 0x5c, 0xa5, 0xea, 0xea, 0x34, 0xd5, 0xa1, 0x69, 0x35, 0x9e,
-	0x37, 0x34, 0x9b, 0xff, 0xcc, 0xf1, 0xbc, 0xe3, 0x1e, 0x64, 0x3e, 0x6f, 0x68, 0x4b, 0xa9, 0x5a,
-	0x51, 0x82, 0xff, 0x3b, 0x6f, 0xad, 0xc4, 0xf3, 0x30, 0x6a, 0x45, 0x89, 0xa5, 0x56, 0x94, 0xe0,
-	0xff, 0xcd, 0x5d, 0x2b, 0x41, 0x63, 0xd6, 0x2a, 0xb1, 0xb5, 0x78, 0x47, 0x7b, 0x59, 0x29, 0xff,
-	0xd6, 0x82, 0x46, 0x67, 0x6e, 0x2d, 0xde, 0xfc, 0x0c, 0x79, 0xc0, 0xd8, 0xf4, 0xf2, 0x39, 0x18,
-	0x60, 0xb4, 0x4a, 0xc8, 0x03, 0xc6, 0x2d, 0xfd, 0x79, 0xc3, 0xb8, 0xf5, 0x8a, 0x52, 0xfe, 0xe7,
-	0x1d, 0x8f, 0x64, 0xe6, 0xf3, 0x86, 0x29, 0xed, 0x0a, 0x6a, 0xc8, 0xf0, 0xda, 0x94, 0xf6, 0x4a,
-	0xe0, 0xb8, 0x2b, 0x0f, 0x87, 0x1c, 0xcb, 0x80, 0xa7, 0x36, 0x4c, 0x98, 0xbd, 0x03, 0xb4, 0xa6,
-	0xf5, 0x12, 0x6d, 0x5a, 0x7b, 0x15, 0xb0, 0x3d, 0x23, 0x5f, 0x47, 0x91, 0x73, 0x1a, 0xf0, 0x79,
-	0xc3, 0xd4, 0x0f, 0xde, 0x11, 0x5a, 0x4f, 0x64, 0x27, 0x26, 0xaa, 0x57, 0x03, 0xe5, 0xdd, 0xb9,
-	0x13, 0xe4, 0x36, 0xe0, 0x6c, 0x0c, 0xd3, 0xbf, 0x78, 0xd7, 0x11, 0x4e, 0xa5, 0x29, 0x68, 0x5f,
-	0x03, 0xb4, 0x67, 0xe6, 0xc8, 0xd4, 0x20, 0x5e, 0x1b, 0xda, 0x7e, 0x13, 0x9b, 0x25, 0x3e, 0x19,
-	0xe0, 0x30, 0x7e, 0x6d, 0xce, 0xcd, 0x12, 0x1f, 0x8c, 0xea, 0x34, 0x66, 0x9b, 0x45, 0x9a, 0xc4,
-	0x6e, 0x3f, 0xd2, 0xe2, 0xbf, 0x2e, 0xe7, 0x6e, 0x87, 0x73, 0x51, 0x11, 0xb0, 0xdd, 0xae, 0x6c,
-	0x82, 0x61, 0xa2, 0x31, 0xbc, 0x3e, 0x27, 0xc3, 0xae, 0x85, 0x41, 0xd9, 0xb4, 0x12, 0x51, 0x02,
-	0x04, 0x6f, 0xc8, 0x5f, 0x22, 0x4a, 0x52, 0x25, 0x02, 0x93, 0x5e, 0x22, 0x11, 0xff, 0x8d, 0x73,
-	0x94, 0x48, 0x27, 0x10, 0x25, 0x32, 0x19, 0x26, 0x1a, 0xc3, 0x9b, 0xe6, 0x28, 0x51, 0x92, 0x41,
-	0xd9, 0xc4, 0x19, 0xc0, 0x4f, 0x1c, 0xa0, 0x78, 0x73, 0x29, 0xdf, 0x19, 0xc0, 0x8f, 0x45, 0xc5,
-	0xc1, 0xaa, 0xae, 0x19, 0x65, 0xa1, 0xe2, 0x2e, 0x07, 0x1c, 0x6f, 0xc9, 0x5b, 0xa8, 0xd8, 0x37,
-	0x51, 0x28, 0x69, 0xf3, 0x7c, 0x84, 0xa2, 0x51, 0x27, 0xea, 0x42, 0xf0, 0xc7, 0x4a, 0xbe, 0x13,
-	0x2c, 0xb7, 0x0a, 0xe1, 0x4a, 0x6c, 0x8c, 0x11, 0xa7, 0xd0, 0x0d, 0x80, 0x80, 0x9b, 0xd9, 0xe3,
-	0x0c, 0xb2, 0xd0, 0x2a, 0x84, 0xe0, 0x07, 0x77, 0xc4, 0x9b, 0x50, 0x19, 0x30, 0xfc, 0x82, 0xf8,
-	0x04, 0x03, 0xd5, 0x5b, 0x85, 0x10, 0x5c, 0xf9, 0x3d, 0x4f, 0xa2, 0xf8, 0x25, 0xef, 0xfb, 0x0c,
-	0x55, 0x91, 0x28, 0x7e, 0x57, 0xd3, 0xf9, 0x28, 0xc1, 0x3f, 0x60, 0x20, 0x57, 0xe7, 0xa3, 0xc4,
-	0xe4, 0xa3, 0x04, 0xff, 0x90, 0x81, 0x3c, 0x83, 0x4f, 0x47, 0xf1, 0x1b, 0xd3, 0x8f, 0x18, 0xaa,
-	0x64, 0xf0, 0x51, 0xe2, 0xdd, 0x8c, 0x2a, 0x80, 0x12, 0xf7, 0x91, 0x1f, 0x33, 0xd8, 0x52, 0xab,
-	0x10, 0x82, 0xb7, 0xb8, 0xbb, 0x04, 0x68, 0x95, 0x73, 0x0a, 0xe0, 0x4f, 0x18, 0xb0, 0xda, 0x2a,
-	0x84, 0x10, 0x40, 0xde, 0x3e, 0x64, 0x06, 0x70, 0xf5, 0xf8, 0x29, 0x83, 0x15, 0x65, 0x06, 0x70,
-	0x85, 0x30, 0x59, 0x29, 0xc1, 0x3f, 0x63, 0xa8, 0x45, 0x93, 0x35, 0xfe, 0xe3, 0xa4, 0xc1, 0x4a,
-	0x09, 0xfe, 0x39, 0x03, 0xd6, 0x12, 0xac, 0x7a, 0xb6, 0xfc, 0x10, 0xff, 0x05, 0xc3, 0x39, 0x32,
-	0x5b, 0x7e, 0x16, 0xab, 0xca, 0xc1, 0x41, 0xfc, 0x4b, 0x86, 0x5a, 0x51, 0x95, 0x83, 0xf3, 0x54,
-	0x66, 0x00, 0x87, 0xe9, 0xaf, 0x18, 0xa8, 0x2c, 0x33, 0x80, 0x43, 0xf1, 0x85, 0xa8, 0x06, 0x18,
-	0xed, 0x44, 0xfc, 0x75, 0x69, 0xce, 0x57, 0x18, 0xad, 0x42, 0x08, 0x79, 0xaa, 0x83, 0xf0, 0xf9,
-	0xc8, 0x13, 0xcf, 0x58, 0x3b, 0x05, 0x7f, 0x53, 0xca, 0xf7, 0xfe, 0xa2, 0x55, 0x08, 0x6b, 0x7c,
-	0x4f, 0xa8, 0x13, 0xaf, 0x87, 0x1a, 0xfa, 0xd2, 0xc5, 0xb9, 0xf3, 0xdb, 0xd2, 0xfc, 0x2f, 0x2f,
-	0x5a, 0x85, 0xb0, 0xae, 0x12, 0x10, 0x47, 0xcd, 0x1e, 0x5a, 0x33, 0x73, 0x10, 0x54, 0xbf, 0x2b,
-	0xe5, 0x7e, 0x73, 0xd1, 0x2a, 0x84, 0x0d, 0x3d, 0x13, 0xc1, 0x21, 0x77, 0x12, 0x3c, 0xd1, 0x2d,
-	0xfc, 0x7b, 0xf1, 0x48, 0xcb, 0xda, 0x23, 0xdd, 0x4a, 0xe2, 0xb6, 0xf1, 0x1f, 0x6c, 0xb8, 0xed,
-	0x24, 0xae, 0x89, 0xff, 0x68, 0xc3, 0x35, 0x37, 0xb6, 0x50, 0x35, 0x51, 0x83, 0x69, 0x6f, 0x5b,
-	0x37, 0xee, 0x41, 0xb5, 0xe4, 0x28, 0xeb, 0xd5, 0x90, 0x7b, 0xb5, 0x73, 0x3d, 0x76, 0x5a, 0x0e,
-	0xd9, 0x47, 0xef, 0x04, 0x5a, 0xb8, 0xd6, 0x1e, 0x4c, 0x3a, 0xb8, 0x18, 0xdb, 0xe0, 0xcb, 0x5d,
-	0xc5, 0x3b, 0x9c, 0x8d, 0x33, 0xa8, 0x9e, 0x9a, 0x56, 0xa7, 0x05, 0x58, 0xd0, 0x03, 0x3c, 0x13,
-	0x79, 0xe9, 0x71, 0x74, 0x5a, 0x84, 0xba, 0x3d, 0xc2, 0xee, 0xec, 0x11, 0x2a, 0x99, 0x49, 0xf0,
-	0x5b, 0xf9, 0xb4, 0x00, 0x6e, 0x76, 0x12, 0x33, 0x46, 0xf0, 0xb2, 0x93, 0x98, 0x31, 0x42, 0x49,
-	0x8f, 0x70, 0x16, 0x35, 0x2c, 0xf3, 0xde, 0xb4, 0x10, 0x4b, 0x7a, 0x88, 0x1d, 0x74, 0xc2, 0x36,
-	0xcc, 0x4d, 0x8b, 0x51, 0xb5, 0xd7, 0x52, 0xcd, 0x6a, 0xd3, 0x02, 0x14, 0x8f, 0xc9, 0x63, 0xc6,
-	0x52, 0x2c, 0x1e, 0x97, 0xc7, 0x8c, 0x31, 0x6a, 0xf6, 0x07, 0xa2, 0x8d, 0x51, 0xd3, 0x22, 0x38,
-	0x19, 0x9b, 0x42, 0x8d, 0x49, 0xd3, 0x22, 0xac, 0xd8, 0x6b, 0xa9, 0xe6, 0xa0, 0x69, 0x01, 0xca,
-	0x7a, 0x80, 0x6b, 0x68, 0xcd, 0x3a, 0xe4, 0x58, 0x82, 0x3c, 0x5b, 0x0f, 0x32, 0xd7, 0x7b, 0x2e,
-	0x8d, 0x37, 0x42, 0x27, 0x33, 0xc6, 0x1d, 0x0b, 0xf3, 0x3d, 0x26, 0xf3, 0xec, 0xef, 0xbe, 0x34,
-	0xc2, 0x97, 0x22, 0x9c, 0x35, 0xec, 0x58, 0x18, 0xef, 0xd7, 0x19, 0xe7, 0x7d, 0x1b, 0xa6, 0xb1,
-	0x4f, 0xd0, 0x46, 0xf6, 0xcc, 0x63, 0xe1, 0x3f, 0x6b, 0xf2, 0xe7, 0x7a, 0x3d, 0x96, 0xda, 0x1e,
-	0xe6, 0xe4, 0xa3, 0xb3, 0x2d, 0x4c, 0x6b, 0xde, 0xb0, 0x43, 0x13, 0xa3, 0x8d, 0x1e, 0xa1, 0x3e,
-	0x5b, 0x84, 0xdd, 0xec, 0x08, 0x95, 0xd9, 0x0e, 0x10, 0x73, 0x36, 0xd1, 0x03, 0xb8, 0xb3, 0x27,
-	0x91, 0x11, 0xc1, 0x9b, 0x3d, 0x89, 0x8c, 0x08, 0xa5, 0x69, 0x11, 0xa0, 0x67, 0x25, 0x67, 0x07,
-	0x3d, 0xc4, 0xd2, 0x8c, 0x69, 0x98, 0xa3, 0x81, 0x1e, 0x61, 0x65, 0x4a, 0x84, 0x53, 0xa7, 0x51,
-	0x59, 0xd7, 0xa3, 0xb7, 0x8c, 0x4a, 0x0f, 0x9f, 0x0b, 0xcf, 0xd7, 0x0a, 0xde, 0x12, 0x72, 0xcf,
-	0x3f, 0x74, 0xae, 0xe6, 0xb0, 0x0f, 0xcf, 0x7d, 0xde, 0xf9, 0x5a, 0x71, 0xa7, 0x22, 0x6e, 0x93,
-	0x93, 0x51, 0x3f, 0x1a, 0x9d, 0xbe, 0x15, 0xad, 0x9a, 0xda, 0x3a, 0xce, 0x79, 0x6f, 0x11, 0x36,
-	0xe7, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x09, 0x11, 0x7d, 0x5b, 0x0c, 0x26, 0x00, 0x00,
-}
diff --git a/internal/impl/legacy_test.go b/internal/impl/legacy_test.go
index caa0043..379615b 100644
--- a/internal/impl/legacy_test.go
+++ b/internal/impl/legacy_test.go
@@ -11,14 +11,25 @@
 	"testing"
 
 	protoV1 "github.com/golang/protobuf/proto"
-	"github.com/golang/protobuf/v2/internal/encoding/pack"
-	"github.com/golang/protobuf/v2/internal/pragma"
+	pack "github.com/golang/protobuf/v2/internal/encoding/pack"
+	pragma "github.com/golang/protobuf/v2/internal/pragma"
 	pref "github.com/golang/protobuf/v2/reflect/protoreflect"
 	ptype "github.com/golang/protobuf/v2/reflect/prototype"
-	"github.com/google/go-cmp/cmp"
+	cmp "github.com/google/go-cmp/cmp"
+
+	proto2_20160225 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5"
+	proto2_20160519 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5"
+	proto2_20180125 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152"
+	proto2_20180430 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09"
+	proto2_20180814 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61"
+	proto3_20160225 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5"
+	proto3_20160519 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5"
+	proto3_20180125 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152"
+	proto3_20180430 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09"
+	proto3_20180814 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61"
 )
 
-func mustLoadFileDesc(b []byte) pref.FileDescriptor {
+func mustLoadFileDesc(b []byte, _ []int) pref.FileDescriptor {
 	fd, err := ptype.NewFileFromDescriptorProto(loadFileDesc(b), nil)
 	if err != nil {
 		panic(err)
@@ -26,59 +37,293 @@
 	return fd
 }
 
-var fileDescLP2 = mustLoadFileDesc(LP2FileDescriptor)
-var fileDescLP3 = mustLoadFileDesc(LP3FileDescriptor)
-
 func TestLegacyDescriptor(t *testing.T) {
-	tests := []struct {
-		got  pref.Descriptor
-		want pref.Descriptor
-	}{{
-		got:  loadEnumDesc(reflect.TypeOf(LP2MapEnum(0))),
-		want: fileDescLP2.Enums().ByName("LP2MapEnum"),
+	var tests []struct{ got, want pref.Descriptor }
+
+	fileDescP2_20160225 := mustLoadFileDesc(new(proto2_20160225.Message).Descriptor())
+	tests = append(tests, []struct{ got, want pref.Descriptor }{{
+		got:  loadEnumDesc(reflect.TypeOf(proto2_20160225.SiblingEnum(0))),
+		want: fileDescP2_20160225.Enums().ByName("SiblingEnum"),
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(LP2SiblingEnum(0))),
-		want: fileDescLP2.Enums().ByName("LP2SiblingEnum"),
+		got:  loadEnumDesc(reflect.TypeOf(proto2_20160225.Message_ChildEnum(0))),
+		want: fileDescP2_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(LP2Message_LP2ChildEnum(0))),
-		want: fileDescLP2.Messages().ByName("LP2Message").Enums().ByName("LP2ChildEnum"),
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.SiblingMessage))),
+		want: fileDescP2_20160225.Messages().ByName("SiblingMessage"),
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(LP2Message))),
-		want: fileDescLP2.Messages().ByName("LP2Message"),
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ChildMessage))),
+		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(LP2Message_LP2ChildMessage))),
-		want: fileDescLP2.Messages().ByName("LP2Message").Messages().ByName("LP2ChildMessage"),
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message))),
+		want: fileDescP2_20160225.Messages().ByName("Message"),
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(LP2Message_LP2NamedGroup))),
-		want: fileDescLP2.Messages().ByName("LP2Message").Messages().ByName("LP2NamedGroup"),
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_NamedGroup))),
+		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(LP2Message_OptionalGroup))),
-		want: fileDescLP2.Messages().ByName("LP2Message").Messages().ByName("OptionalGroup"),
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OptionalGroup))),
+		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(LP2Message_RequiredGroup))),
-		want: fileDescLP2.Messages().ByName("LP2Message").Messages().ByName("RequiredGroup"),
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RequiredGroup))),
+		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(LP2Message_RepeatedGroup))),
-		want: fileDescLP2.Messages().ByName("LP2Message").Messages().ByName("RepeatedGroup"),
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RepeatedGroup))),
+		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(LP2SiblingMessage))),
-		want: fileDescLP2.Messages().ByName("LP2SiblingMessage"),
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OneofGroup))),
+		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(LP3SiblingEnum(0))),
-		want: fileDescLP3.Enums().ByName("LP3SiblingEnum"),
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionOptionalGroup))),
+		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(LP3Message_LP3ChildEnum(0))),
-		want: fileDescLP3.Messages().ByName("LP3Message").Enums().ByName("LP3ChildEnum"),
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionRepeatedGroup))),
+		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
+	}}...)
+
+	fileDescP3_20160225 := mustLoadFileDesc(new(proto3_20160225.Message).Descriptor())
+	tests = append(tests, []struct{ got, want pref.Descriptor }{{
+		got:  loadEnumDesc(reflect.TypeOf(proto3_20160225.SiblingEnum(0))),
+		want: fileDescP3_20160225.Enums().ByName("SiblingEnum"),
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(LP3Message))),
-		want: fileDescLP3.Messages().ByName("LP3Message"),
+		got:  loadEnumDesc(reflect.TypeOf(proto3_20160225.Message_ChildEnum(0))),
+		want: fileDescP3_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(LP3Message_LP3ChildMessage))),
-		want: fileDescLP3.Messages().ByName("LP3Message").Messages().ByName("LP3ChildMessage"),
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160225.SiblingMessage))),
+		want: fileDescP3_20160225.Messages().ByName("SiblingMessage"),
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(LP3SiblingMessage))),
-		want: fileDescLP3.Messages().ByName("LP3SiblingMessage"),
-	}}
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message_ChildMessage))),
+		want: fileDescP3_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message))),
+		want: fileDescP3_20160225.Messages().ByName("Message"),
+	}}...)
+
+	fileDescP2_20160519 := mustLoadFileDesc(new(proto2_20160519.Message).Descriptor())
+	tests = append(tests, []struct{ got, want pref.Descriptor }{{
+		got:  loadEnumDesc(reflect.TypeOf(proto2_20160519.SiblingEnum(0))),
+		want: fileDescP2_20160519.Enums().ByName("SiblingEnum"),
+	}, {
+		got:  loadEnumDesc(reflect.TypeOf(proto2_20160519.Message_ChildEnum(0))),
+		want: fileDescP2_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.SiblingMessage))),
+		want: fileDescP2_20160519.Messages().ByName("SiblingMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ChildMessage))),
+		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message))),
+		want: fileDescP2_20160519.Messages().ByName("Message"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_NamedGroup))),
+		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("NamedGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OptionalGroup))),
+		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RequiredGroup))),
+		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RepeatedGroup))),
+		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OneofGroup))),
+		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OneofGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionOptionalGroup))),
+		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionRepeatedGroup))),
+		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
+	}}...)
+
+	fileDescP3_20160519 := mustLoadFileDesc(new(proto3_20160519.Message).Descriptor())
+	tests = append(tests, []struct{ got, want pref.Descriptor }{{
+		got:  loadEnumDesc(reflect.TypeOf(proto3_20160519.SiblingEnum(0))),
+		want: fileDescP3_20160519.Enums().ByName("SiblingEnum"),
+	}, {
+		got:  loadEnumDesc(reflect.TypeOf(proto3_20160519.Message_ChildEnum(0))),
+		want: fileDescP3_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160519.SiblingMessage))),
+		want: fileDescP3_20160519.Messages().ByName("SiblingMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message_ChildMessage))),
+		want: fileDescP3_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message))),
+		want: fileDescP3_20160519.Messages().ByName("Message"),
+	}}...)
+
+	fileDescP2_20180125 := mustLoadFileDesc(new(proto2_20180125.Message).Descriptor())
+	tests = append(tests, []struct{ got, want pref.Descriptor }{{
+		got:  loadEnumDesc(reflect.TypeOf(proto2_20180125.SiblingEnum(0))),
+		want: fileDescP2_20180125.Enums().ByName("SiblingEnum"),
+	}, {
+		got:  loadEnumDesc(reflect.TypeOf(proto2_20180125.Message_ChildEnum(0))),
+		want: fileDescP2_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.SiblingMessage))),
+		want: fileDescP2_20180125.Messages().ByName("SiblingMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ChildMessage))),
+		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message))),
+		want: fileDescP2_20180125.Messages().ByName("Message"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_NamedGroup))),
+		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("NamedGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OptionalGroup))),
+		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RequiredGroup))),
+		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RepeatedGroup))),
+		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OneofGroup))),
+		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OneofGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionOptionalGroup))),
+		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionRepeatedGroup))),
+		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
+	}}...)
+
+	fileDescP3_20180125 := mustLoadFileDesc(new(proto3_20180125.Message).Descriptor())
+	tests = append(tests, []struct{ got, want pref.Descriptor }{{
+		got:  loadEnumDesc(reflect.TypeOf(proto3_20180125.SiblingEnum(0))),
+		want: fileDescP3_20180125.Enums().ByName("SiblingEnum"),
+	}, {
+		got:  loadEnumDesc(reflect.TypeOf(proto3_20180125.Message_ChildEnum(0))),
+		want: fileDescP3_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180125.SiblingMessage))),
+		want: fileDescP3_20180125.Messages().ByName("SiblingMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message_ChildMessage))),
+		want: fileDescP3_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message))),
+		want: fileDescP3_20180125.Messages().ByName("Message"),
+	}}...)
+
+	fileDescP2_20180430 := mustLoadFileDesc(new(proto2_20180430.Message).Descriptor())
+	tests = append(tests, []struct{ got, want pref.Descriptor }{{
+		got:  loadEnumDesc(reflect.TypeOf(proto2_20180430.SiblingEnum(0))),
+		want: fileDescP2_20180430.Enums().ByName("SiblingEnum"),
+	}, {
+		got:  loadEnumDesc(reflect.TypeOf(proto2_20180430.Message_ChildEnum(0))),
+		want: fileDescP2_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.SiblingMessage))),
+		want: fileDescP2_20180430.Messages().ByName("SiblingMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ChildMessage))),
+		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message))),
+		want: fileDescP2_20180430.Messages().ByName("Message"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_NamedGroup))),
+		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("NamedGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OptionalGroup))),
+		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RequiredGroup))),
+		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RepeatedGroup))),
+		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OneofGroup))),
+		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OneofGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionOptionalGroup))),
+		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionRepeatedGroup))),
+		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
+	}}...)
+
+	fileDescP3_20180430 := mustLoadFileDesc(new(proto3_20180430.Message).Descriptor())
+	tests = append(tests, []struct{ got, want pref.Descriptor }{{
+		got:  loadEnumDesc(reflect.TypeOf(proto3_20180430.SiblingEnum(0))),
+		want: fileDescP3_20180430.Enums().ByName("SiblingEnum"),
+	}, {
+		got:  loadEnumDesc(reflect.TypeOf(proto3_20180430.Message_ChildEnum(0))),
+		want: fileDescP3_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180430.SiblingMessage))),
+		want: fileDescP3_20180430.Messages().ByName("SiblingMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message_ChildMessage))),
+		want: fileDescP3_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message))),
+		want: fileDescP3_20180430.Messages().ByName("Message"),
+	}}...)
+
+	fileDescP2_20180814 := mustLoadFileDesc(new(proto2_20180814.Message).Descriptor())
+	tests = append(tests, []struct{ got, want pref.Descriptor }{{
+		got:  loadEnumDesc(reflect.TypeOf(proto2_20180814.SiblingEnum(0))),
+		want: fileDescP2_20180814.Enums().ByName("SiblingEnum"),
+	}, {
+		got:  loadEnumDesc(reflect.TypeOf(proto2_20180814.Message_ChildEnum(0))),
+		want: fileDescP2_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.SiblingMessage))),
+		want: fileDescP2_20180814.Messages().ByName("SiblingMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ChildMessage))),
+		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message))),
+		want: fileDescP2_20180814.Messages().ByName("Message"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_NamedGroup))),
+		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("NamedGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OptionalGroup))),
+		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RequiredGroup))),
+		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RepeatedGroup))),
+		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OneofGroup))),
+		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OneofGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionOptionalGroup))),
+		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionRepeatedGroup))),
+		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
+	}}...)
+
+	fileDescP3_20180814 := mustLoadFileDesc(new(proto3_20180814.Message).Descriptor())
+	tests = append(tests, []struct{ got, want pref.Descriptor }{{
+		got:  loadEnumDesc(reflect.TypeOf(proto3_20180814.SiblingEnum(0))),
+		want: fileDescP3_20180814.Enums().ByName("SiblingEnum"),
+	}, {
+		got:  loadEnumDesc(reflect.TypeOf(proto3_20180814.Message_ChildEnum(0))),
+		want: fileDescP3_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180814.SiblingMessage))),
+		want: fileDescP3_20180814.Messages().ByName("SiblingMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message_ChildMessage))),
+		want: fileDescP3_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
+	}, {
+		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message))),
+		want: fileDescP3_20180814.Messages().ByName("Message"),
+	}}...)
 
 	type list interface {
 		Len() int
@@ -105,10 +350,10 @@
 						// Ignore index since legacy descriptors have no parent.
 					case "Options":
 						// Ignore descriptor options since protos are not cmperable.
-					case "Messages", "Enums":
+					case "Enums", "Messages", "Extensions":
 						// Ignore nested message and enum declarations since
 						// legacy descriptors are all created standalone.
-					case "OneofType", "ExtendedType", "MessageType", "EnumType":
+					case "OneofType", "ExtendedType", "EnumType", "MessageType":
 						// Avoid descending into a dependency to avoid a cycle.
 						// Just record the full name if available.
 						//
diff --git a/internal/testprotos/legacy/legacy.pb.go b/internal/testprotos/legacy/legacy.pb.go
new file mode 100644
index 0000000..b629f42
--- /dev/null
+++ b/internal/testprotos/legacy/legacy.pb.go
@@ -0,0 +1,177 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/legacy/legacy.proto
+
+package legacy
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	proto2_v0_0 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5"
+	proto2_v0_01 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5"
+	proto2_v1_0 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152"
+	proto2_v1_1 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09"
+	proto2_v1_2 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61"
+	proto3_v0_0 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5"
+	proto3_v0_01 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5"
+	proto3_v1_0 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152"
+	proto3_v1_1 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09"
+	proto3_v1_2 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type Legacy struct {
+	F1                   *proto2_v0_0.Message  `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
+	F2                   *proto3_v0_0.Message  `protobuf:"bytes,2,opt,name=f2,proto3" json:"f2,omitempty"`
+	F3                   *proto2_v0_01.Message `protobuf:"bytes,3,opt,name=f3,proto3" json:"f3,omitempty"`
+	F4                   *proto3_v0_01.Message `protobuf:"bytes,4,opt,name=f4,proto3" json:"f4,omitempty"`
+	F5                   *proto2_v1_0.Message  `protobuf:"bytes,5,opt,name=f5,proto3" json:"f5,omitempty"`
+	F6                   *proto3_v1_0.Message  `protobuf:"bytes,6,opt,name=f6,proto3" json:"f6,omitempty"`
+	F7                   *proto2_v1_1.Message  `protobuf:"bytes,7,opt,name=f7,proto3" json:"f7,omitempty"`
+	F8                   *proto3_v1_1.Message  `protobuf:"bytes,8,opt,name=f8,proto3" json:"f8,omitempty"`
+	F9                   *proto2_v1_2.Message  `protobuf:"bytes,9,opt,name=f9,proto3" json:"f9,omitempty"`
+	F10                  *proto3_v1_2.Message  `protobuf:"bytes,10,opt,name=f10,proto3" json:"f10,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *Legacy) Reset()         { *m = Legacy{} }
+func (m *Legacy) String() string { return proto.CompactTextString(m) }
+func (*Legacy) ProtoMessage()    {}
+func (*Legacy) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5fbf266527ec81d8, []int{0}
+}
+
+func (m *Legacy) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Legacy.Unmarshal(m, b)
+}
+func (m *Legacy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Legacy.Marshal(b, m, deterministic)
+}
+func (m *Legacy) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Legacy.Merge(m, src)
+}
+func (m *Legacy) XXX_Size() int {
+	return xxx_messageInfo_Legacy.Size(m)
+}
+func (m *Legacy) XXX_DiscardUnknown() {
+	xxx_messageInfo_Legacy.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Legacy proto.InternalMessageInfo
+
+func (m *Legacy) GetF1() *proto2_v0_0.Message {
+	if m != nil {
+		return m.F1
+	}
+	return nil
+}
+
+func (m *Legacy) GetF2() *proto3_v0_0.Message {
+	if m != nil {
+		return m.F2
+	}
+	return nil
+}
+
+func (m *Legacy) GetF3() *proto2_v0_01.Message {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *Legacy) GetF4() *proto3_v0_01.Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+func (m *Legacy) GetF5() *proto2_v1_0.Message {
+	if m != nil {
+		return m.F5
+	}
+	return nil
+}
+
+func (m *Legacy) GetF6() *proto3_v1_0.Message {
+	if m != nil {
+		return m.F6
+	}
+	return nil
+}
+
+func (m *Legacy) GetF7() *proto2_v1_1.Message {
+	if m != nil {
+		return m.F7
+	}
+	return nil
+}
+
+func (m *Legacy) GetF8() *proto3_v1_1.Message {
+	if m != nil {
+		return m.F8
+	}
+	return nil
+}
+
+func (m *Legacy) GetF9() *proto2_v1_2.Message {
+	if m != nil {
+		return m.F9
+	}
+	return nil
+}
+
+func (m *Legacy) GetF10() *proto3_v1_2.Message {
+	if m != nil {
+		return m.F10
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*Legacy)(nil), "google.golang.org.Legacy")
+}
+
+func init() {
+	proto.RegisterFile("internal/testprotos/legacy/legacy.proto", fileDescriptor_5fbf266527ec81d8)
+}
+
+var fileDescriptor_5fbf266527ec81d8 = []byte{
+	// 364 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0xd2, 0x3d, 0x4f, 0xf3, 0x30,
+	0x14, 0x05, 0x60, 0xf5, 0xe3, 0xed, 0x0b, 0x61, 0xa2, 0x93, 0xc5, 0x84, 0x58, 0x40, 0x48, 0x71,
+	0xec, 0x1b, 0x3b, 0x4d, 0x2a, 0x26, 0x24, 0x36, 0x58, 0x18, 0x59, 0x90, 0x93, 0x3a, 0xa6, 0x52,
+	0xa8, 0x51, 0x93, 0x56, 0xe2, 0xef, 0xf2, 0x4b, 0x10, 0x37, 0x44, 0x4a, 0xf9, 0x68, 0x5d, 0xda,
+	0x29, 0x8a, 0xa5, 0xe7, 0x9c, 0x33, 0x5c, 0xef, 0x7c, 0x3a, 0xab, 0xf4, 0x7c, 0xa6, 0x8a, 0xa0,
+	0xd2, 0x65, 0xf5, 0x32, 0xb7, 0x95, 0x2d, 0x83, 0x42, 0x1b, 0x95, 0xbd, 0x7e, 0x7e, 0x28, 0x3e,
+	0x0e, 0x8f, 0x8d, 0xb5, 0xa6, 0xd0, 0xd4, 0xd8, 0x42, 0xcd, 0x0c, 0xb5, 0x73, 0x73, 0x72, 0xb3,
+	0xc6, 0xe2, 0x1f, 0xd0, 0x25, 0xa3, 0x8c, 0x32, 0x1f, 0x18, 0x8f, 0x18, 0x80, 0xf4, 0x21, 0xcf,
+	0x98, 0x0c, 0x33, 0x89, 0xa2, 0x4e, 0xde, 0x1c, 0x13, 0xee, 0x27, 0x66, 0x75, 0x8d, 0xe4, 0x89,
+	0xaf, 0x84, 0x4a, 0x13, 0xbd, 0xd3, 0x9a, 0x3f, 0xc7, 0x00, 0x5d, 0xf2, 0x26, 0x26, 0x66, 0x1c,
+	0xa4, 0x9f, 0x80, 0x94, 0x82, 0x4b, 0xd8, 0x76, 0xcd, 0x3e, 0x62, 0x70, 0x0d, 0x6f, 0x62, 0x44,
+	0xc8, 0xfc, 0x54, 0x4c, 0xf4, 0x44, 0xb1, 0x64, 0xfb, 0x35, 0xbb, 0xc7, 0xe0, 0x1a, 0x68, 0x62,
+	0x62, 0x2e, 0x7c, 0xa5, 0x62, 0xce, 0xd2, 0x88, 0x6f, 0xbf, 0x66, 0x53, 0xcc, 0xd9, 0x5b, 0xdf,
+	0x1b, 0xdc, 0xa2, 0x1a, 0x8e, 0xbd, 0x6e, 0xce, 0x49, 0xe7, 0xb4, 0x73, 0x71, 0x04, 0x97, 0xf4,
+	0xdb, 0xc1, 0xd7, 0x00, 0x1e, 0x9b, 0x33, 0xa4, 0x77, 0xba, 0x2c, 0x95, 0xd1, 0xf7, 0xdd, 0x9c,
+	0xa3, 0x05, 0xd2, 0x5d, 0x6f, 0xc3, 0x9f, 0x2c, 0xa0, 0x0d, 0x49, 0xcf, 0xa9, 0x57, 0xf2, 0xa4,
+	0x65, 0x43, 0xb4, 0x82, 0xf4, 0x9d, 0x7a, 0x57, 0xad, 0x40, 0x2b, 0xc9, 0x3f, 0x87, 0x5e, 0x3c,
+	0xad, 0x96, 0x95, 0x68, 0x23, 0x32, 0x70, 0xe8, 0xfd, 0x6a, 0x23, 0xb4, 0x23, 0xf2, 0xdf, 0xa9,
+	0x57, 0x84, 0xac, 0x65, 0x47, 0x68, 0x63, 0x72, 0xe0, 0xd4, 0xbb, 0x6a, 0x63, 0xb4, 0x09, 0x39,
+	0x74, 0xea, 0x8d, 0xb9, 0x68, 0xd9, 0x64, 0x78, 0xe5, 0xf5, 0x72, 0xce, 0x88, 0xe7, 0x54, 0xdc,
+	0xc6, 0x1f, 0xec, 0x7a, 0xfc, 0x10, 0x9b, 0x69, 0xf5, 0xb4, 0x48, 0x69, 0x66, 0x9f, 0x83, 0x5a,
+	0xd5, 0x47, 0x9a, 0x2e, 0xf2, 0x60, 0x09, 0xc1, 0xef, 0xb7, 0x9c, 0x0e, 0xea, 0xe4, 0xf7, 0x00,
+	0x00, 0x00, 0xff, 0xff, 0xb8, 0x31, 0xcb, 0xb1, 0xab, 0x05, 0x00, 0x00,
+}
diff --git a/internal/testprotos/legacy/legacy.proto b/internal/testprotos/legacy/legacy.proto
new file mode 100644
index 0000000..a348993
--- /dev/null
+++ b/internal/testprotos/legacy/legacy.proto
@@ -0,0 +1,65 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto3";
+
+package google.golang.org;
+option go_package = "github.com/golang/protobuf/v2/internal/testprotos/legacy";
+
+// This file imports other files generated from a build of protoc-gen-go
+// locked to a specific version. For all imports, they were built using
+// Go v1.11 and protoc v3.5.1. This package is used to test compatibility with
+// checked in generated code that cannot easily change.
+// As such, there should never be a need to update these generated files.
+//
+// The specific version of protoc-gen-go used is encoded in the file path:
+//	$NAME.$VERSION-$COMMIT_DATE-$COMMIT_HASH/test.proto
+
+// The oldest supported version of protoc-gen-go is 2fc053c5,
+// which finished adding descriptor methods to all protobuf types.
+import "internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5/test.proto";
+import "internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5/test.proto";
+// Changes from 20160225 to 20160519:
+//	* Nothing noteworthy to generated code
+import "internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5/test.proto";
+import "internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5/test.proto";
+// Changes from 20160519 to 20180125:
+//	* Removed ExtensionMap method and XXX_extensions field from messages
+//	* Added embedded proto.XXX_InternalExtensions field to messages
+//	* Added proto.ExtensionDesc.Filename field
+//	* Added registration for file descriptor
+//	* Added Get accessor methods for all fields in proto3 messages
+//	* Proto3 repeated primitives are packed by default
+import "internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152/test.proto";
+import "internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152/test.proto";
+// Changes from 20180125 to 20180430:
+//	* Added XXX_unrecognized field to proto3 messages
+//	* Added XXX_NoUnkeyedLiteral field to messages
+//	* Added XXX_sizecache field to messages
+//	* Added XXX_Unmarshal method to messages
+//	* Added XXX_Marshal method to messages
+//	* Added XXX_Merge method to messages
+//	* Added XXX_Size method to messages
+//	* Added XXX_DiscardUnknown method to messages
+//	* Added dependency on proto.InternalMessageInfo for table-driven logic
+//	* Added registration for map types
+import "internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09/test.proto";
+import "internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09/test.proto";
+// Changes from 20180430 to 20180814:
+//	* Added "proto3" struct tag to all fields in proto3 messages
+import "internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61/test.proto";
+import "internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61/test.proto";
+
+message Legacy {
+	google.golang.org.proto2_20160225.Message f1 = 1;
+	google.golang.org.proto3_20160225.Message f2 = 2;
+	google.golang.org.proto2_20160519.Message f3 = 3;
+	google.golang.org.proto3_20160519.Message f4 = 4;
+	google.golang.org.proto2_20180125.Message f5 = 5;
+	google.golang.org.proto3_20180125.Message f6 = 6;
+	google.golang.org.proto2_20180430.Message f7 = 7;
+	google.golang.org.proto3_20180430.Message f8 = 8;
+	google.golang.org.proto2_20180814.Message f9 = 9;
+	google.golang.org.proto3_20180814.Message f10 = 10;
+}
diff --git a/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5/test.pb.go b/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5/test.pb.go
new file mode 100644
index 0000000..e309b9a
--- /dev/null
+++ b/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5/test.pb.go
@@ -0,0 +1,3529 @@
+// Code generated by protoc-gen-go.
+// source: proto2.v0.0.0-20160225-2fc053c5/test.proto
+// DO NOT EDIT!
+
+/*
+Package github_com_golang_protobuf_v2_internal_testprotos_legacy_proto2_v0_0_0_20160225_2fc053c5 is a generated protocol buffer package.
+
+It is generated from these files:
+	proto2.v0.0.0-20160225-2fc053c5/test.proto
+
+It has these top-level messages:
+	SiblingMessage
+	Message
+*/
+package github_com_golang_protobuf_v2_internal_testprotos_legacy_proto2_v0_0_0_20160225_2fc053c5
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+const _ = proto.ProtoPackageIsVersion1
+
+type SiblingEnum int32
+
+const (
+	SiblingEnum_ALPHA   SiblingEnum = 0
+	SiblingEnum_BRAVO   SiblingEnum = 10
+	SiblingEnum_CHARLIE SiblingEnum = 200
+)
+
+var SiblingEnum_name = map[int32]string{
+	0:   "ALPHA",
+	10:  "BRAVO",
+	200: "CHARLIE",
+}
+var SiblingEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   10,
+	"CHARLIE": 200,
+}
+
+func (x SiblingEnum) Enum() *SiblingEnum {
+	p := new(SiblingEnum)
+	*p = x
+	return p
+}
+func (x SiblingEnum) String() string {
+	return proto.EnumName(SiblingEnum_name, int32(x))
+}
+func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
+	if err != nil {
+		return err
+	}
+	*x = SiblingEnum(value)
+	return nil
+}
+func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+type Message_ChildEnum int32
+
+const (
+	Message_ALPHA   Message_ChildEnum = 0
+	Message_BRAVO   Message_ChildEnum = 1
+	Message_CHARLIE Message_ChildEnum = 2
+)
+
+var Message_ChildEnum_name = map[int32]string{
+	0: "ALPHA",
+	1: "BRAVO",
+	2: "CHARLIE",
+}
+var Message_ChildEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   1,
+	"CHARLIE": 2,
+}
+
+func (x Message_ChildEnum) Enum() *Message_ChildEnum {
+	p := new(Message_ChildEnum)
+	*p = x
+	return p
+}
+func (x Message_ChildEnum) String() string {
+	return proto.EnumName(Message_ChildEnum_name, int32(x))
+}
+func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
+	if err != nil {
+		return err
+	}
+	*x = Message_ChildEnum(value)
+	return nil
+}
+func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+type SiblingMessage struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
+func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
+func (*SiblingMessage) ProtoMessage()               {}
+func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *SiblingMessage) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *SiblingMessage) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message struct {
+	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
+	// Optional fields.
+	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
+	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
+	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
+	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum" json:"optional_child_enum,omitempty"`
+	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
+	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
+	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum" json:"optional_sibling_enum,omitempty"`
+	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
+	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
+	// Optional default fields.
+	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
+	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
+	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
+	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
+	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
+	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
+	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
+	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
+	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
+	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
+	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
+	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
+	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
+	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
+	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
+	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
+	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
+	// Required fields.
+	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
+	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
+	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
+	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
+	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
+	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
+	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
+	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
+	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
+	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
+	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
+	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
+	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
+	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
+	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
+	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum" json:"required_child_enum,omitempty"`
+	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
+	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
+	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum" json:"required_sibling_enum,omitempty"`
+	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
+	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
+	// Required default fields.
+	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
+	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
+	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
+	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
+	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
+	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
+	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
+	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
+	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
+	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
+	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
+	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
+	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
+	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
+	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
+	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
+	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
+	// Repeated fields.
+	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
+	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
+	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
+	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
+	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
+	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
+	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	// Map fields.
+	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20160225.Message_ChildEnum"`
+	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20160225.SiblingEnum"`
+	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	// Oneof fields.
+	//
+	// Types that are valid to be assigned to OneofUnion:
+	//	*Message_OneofBool
+	//	*Message_OneofInt32
+	//	*Message_OneofSint32
+	//	*Message_OneofUint32
+	//	*Message_OneofInt64
+	//	*Message_OneofSint64
+	//	*Message_OneofUint64
+	//	*Message_OneofFixed32
+	//	*Message_OneofSfixed32
+	//	*Message_OneofFloat
+	//	*Message_OneofFixed64
+	//	*Message_OneofSfixed64
+	//	*Message_OneofDouble
+	//	*Message_OneofString
+	//	*Message_OneofBytes
+	//	*Message_OneofChildEnum
+	//	*Message_OneofChildMessage
+	//	*Message_OneofNamedGroup
+	//	*Message_OneofSiblingEnum
+	//	*Message_OneofSiblingMessage
+	//	*Message_Oneofgroup
+	//	*Message_OneofString1
+	//	*Message_OneofString2
+	//	*Message_OneofString3
+	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
+	// Oneof default fields.
+	//
+	// Types that are valid to be assigned to OneofDefaultedUnion:
+	//	*Message_OneofDefaultedBool
+	//	*Message_OneofDefaultedInt32
+	//	*Message_OneofDefaultedSint32
+	//	*Message_OneofDefaultedUint32
+	//	*Message_OneofDefaultedInt64
+	//	*Message_OneofDefaultedSint64
+	//	*Message_OneofDefaultedUint64
+	//	*Message_OneofDefaultedFixed32
+	//	*Message_OneofDefaultedSfixed32
+	//	*Message_OneofDefaultedFloat
+	//	*Message_OneofDefaultedFixed64
+	//	*Message_OneofDefaultedSfixed64
+	//	*Message_OneofDefaultedDouble
+	//	*Message_OneofDefaultedString
+	//	*Message_OneofDefaultedBytes
+	//	*Message_OneofDefaultedChildEnum
+	//	*Message_OneofDefaultedSiblingEnum
+	OneofDefaultedUnion isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
+	XXX_extensions      map[int32]proto.Extension     `json:"-"`
+	XXX_unrecognized    []byte                        `json:"-"`
+}
+
+func (m *Message) Reset()                    { *m = Message{} }
+func (m *Message) String() string            { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()               {}
+func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+var extRange_Message = []proto.ExtensionRange{
+	{10000, 536870911},
+}
+
+func (*Message) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_Message
+}
+func (m *Message) ExtensionMap() map[int32]proto.Extension {
+	if m.XXX_extensions == nil {
+		m.XXX_extensions = make(map[int32]proto.Extension)
+	}
+	return m.XXX_extensions
+}
+
+const Default_Message_DefaultedBool bool = true
+const Default_Message_DefaultedInt32 int32 = -12345
+const Default_Message_DefaultedSint32 int32 = -3200
+const Default_Message_DefaultedUint32 uint32 = 3200
+const Default_Message_DefaultedInt64 int64 = -123456789
+const Default_Message_DefaultedSint64 int64 = -6400
+const Default_Message_DefaultedUint64 uint64 = 6400
+const Default_Message_DefaultedFixed32 uint32 = 320000
+const Default_Message_DefaultedSfixed32 int32 = -320000
+const Default_Message_DefaultedFloat float32 = 3.14159
+const Default_Message_DefaultedFixed64 uint64 = 640000
+const Default_Message_DefaultedSfixed64 int64 = -640000
+const Default_Message_DefaultedDouble float64 = 3.14159265359
+const Default_Message_DefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_DefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
+
+const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+const Default_Message_RequiredDefaultedBool bool = true
+const Default_Message_RequiredDefaultedInt32 int32 = -12345
+const Default_Message_RequiredDefaultedSint32 int32 = -3200
+const Default_Message_RequiredDefaultedUint32 uint32 = 3200
+const Default_Message_RequiredDefaultedInt64 int64 = -123456789
+const Default_Message_RequiredDefaultedSint64 int64 = -6400
+const Default_Message_RequiredDefaultedUint64 uint64 = 6400
+const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
+const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
+const Default_Message_RequiredDefaultedFloat float32 = 3.14159
+const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
+const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
+const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
+const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_RequiredDefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
+
+const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+const Default_Message_OneofDefaultedBool bool = true
+const Default_Message_OneofDefaultedInt32 int32 = -12345
+const Default_Message_OneofDefaultedSint32 int32 = -3200
+const Default_Message_OneofDefaultedUint32 uint32 = 3200
+const Default_Message_OneofDefaultedInt64 int64 = -123456789
+const Default_Message_OneofDefaultedSint64 int64 = -6400
+const Default_Message_OneofDefaultedUint64 uint64 = 6400
+const Default_Message_OneofDefaultedFixed32 uint32 = 320000
+const Default_Message_OneofDefaultedSfixed32 int32 = -320000
+const Default_Message_OneofDefaultedFloat float32 = 3.14159
+const Default_Message_OneofDefaultedFixed64 uint64 = 640000
+const Default_Message_OneofDefaultedSfixed64 int64 = -640000
+const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
+const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_OneofDefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
+
+const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+
+type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
+type isMessage_OneofDefaultedUnion interface{ isMessage_OneofDefaultedUnion() }
+
+type Message_OneofBool struct {
+	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
+}
+type Message_OneofInt32 struct {
+	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
+}
+type Message_OneofSint32 struct {
+	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
+}
+type Message_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
+}
+type Message_OneofInt64 struct {
+	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
+}
+type Message_OneofSint64 struct {
+	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
+}
+type Message_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
+}
+type Message_OneofFixed32 struct {
+	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
+}
+type Message_OneofSfixed32 struct {
+	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
+}
+type Message_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
+}
+type Message_OneofFixed64 struct {
+	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
+}
+type Message_OneofSfixed64 struct {
+	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
+}
+type Message_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
+}
+type Message_OneofString struct {
+	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
+}
+type Message_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
+}
+type Message_OneofChildEnum struct {
+	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum,oneof"`
+}
+type Message_OneofChildMessage struct {
+	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
+}
+type Message_OneofNamedGroup struct {
+	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
+}
+type Message_OneofSiblingEnum struct {
+	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum,oneof"`
+}
+type Message_OneofSiblingMessage struct {
+	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
+}
+type Message_Oneofgroup struct {
+	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
+}
+type Message_OneofString1 struct {
+	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
+}
+type Message_OneofString2 struct {
+	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
+}
+type Message_OneofString3 struct {
+	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
+}
+type Message_OneofDefaultedBool struct {
+	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
+}
+type Message_OneofDefaultedInt32 struct {
+	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
+}
+type Message_OneofDefaultedSint32 struct {
+	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
+}
+type Message_OneofDefaultedUint32 struct {
+	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
+}
+type Message_OneofDefaultedInt64 struct {
+	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
+}
+type Message_OneofDefaultedSint64 struct {
+	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
+}
+type Message_OneofDefaultedUint64 struct {
+	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
+}
+type Message_OneofDefaultedFixed32 struct {
+	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
+}
+type Message_OneofDefaultedSfixed32 struct {
+	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
+}
+type Message_OneofDefaultedFloat struct {
+	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
+}
+type Message_OneofDefaultedFixed64 struct {
+	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
+}
+type Message_OneofDefaultedSfixed64 struct {
+	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
+}
+type Message_OneofDefaultedDouble struct {
+	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
+}
+type Message_OneofDefaultedString struct {
+	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
+}
+type Message_OneofDefaultedBytes struct {
+	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
+}
+type Message_OneofDefaultedChildEnum struct {
+	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum,oneof,def=0"`
+}
+type Message_OneofDefaultedSiblingEnum struct {
+	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum,oneof,def=0"`
+}
+
+func (*Message_OneofBool) isMessage_OneofUnion()                          {}
+func (*Message_OneofInt32) isMessage_OneofUnion()                         {}
+func (*Message_OneofSint32) isMessage_OneofUnion()                        {}
+func (*Message_OneofUint32) isMessage_OneofUnion()                        {}
+func (*Message_OneofInt64) isMessage_OneofUnion()                         {}
+func (*Message_OneofSint64) isMessage_OneofUnion()                        {}
+func (*Message_OneofUint64) isMessage_OneofUnion()                        {}
+func (*Message_OneofFixed32) isMessage_OneofUnion()                       {}
+func (*Message_OneofSfixed32) isMessage_OneofUnion()                      {}
+func (*Message_OneofFloat) isMessage_OneofUnion()                         {}
+func (*Message_OneofFixed64) isMessage_OneofUnion()                       {}
+func (*Message_OneofSfixed64) isMessage_OneofUnion()                      {}
+func (*Message_OneofDouble) isMessage_OneofUnion()                        {}
+func (*Message_OneofString) isMessage_OneofUnion()                        {}
+func (*Message_OneofBytes) isMessage_OneofUnion()                         {}
+func (*Message_OneofChildEnum) isMessage_OneofUnion()                     {}
+func (*Message_OneofChildMessage) isMessage_OneofUnion()                  {}
+func (*Message_OneofNamedGroup) isMessage_OneofUnion()                    {}
+func (*Message_OneofSiblingEnum) isMessage_OneofUnion()                   {}
+func (*Message_OneofSiblingMessage) isMessage_OneofUnion()                {}
+func (*Message_Oneofgroup) isMessage_OneofUnion()                         {}
+func (*Message_OneofString1) isMessage_OneofUnion()                       {}
+func (*Message_OneofString2) isMessage_OneofUnion()                       {}
+func (*Message_OneofString3) isMessage_OneofUnion()                       {}
+func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion()        {}
+func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion()     {}
+func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion()    {}
+func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion()     {}
+func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion()    {}
+func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion()   {}
+func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}
+
+func (m *Message) GetOneofUnion() isMessage_OneofUnion {
+	if m != nil {
+		return m.OneofUnion
+	}
+	return nil
+}
+func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
+	if m != nil {
+		return m.OneofDefaultedUnion
+	}
+	return nil
+}
+
+func (m *Message) GetNamedgroup() *Message_NamedGroup {
+	if m != nil {
+		return m.Namedgroup
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalBool() bool {
+	if m != nil && m.OptionalBool != nil {
+		return *m.OptionalBool
+	}
+	return false
+}
+
+func (m *Message) GetOptionalInt32() int32 {
+	if m != nil && m.OptionalInt32 != nil {
+		return *m.OptionalInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint32() int32 {
+	if m != nil && m.OptionalSint32 != nil {
+		return *m.OptionalSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint32() uint32 {
+	if m != nil && m.OptionalUint32 != nil {
+		return *m.OptionalUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalInt64() int64 {
+	if m != nil && m.OptionalInt64 != nil {
+		return *m.OptionalInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint64() int64 {
+	if m != nil && m.OptionalSint64 != nil {
+		return *m.OptionalSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint64() uint64 {
+	if m != nil && m.OptionalUint64 != nil {
+		return *m.OptionalUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed32() uint32 {
+	if m != nil && m.OptionalFixed32 != nil {
+		return *m.OptionalFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed32() int32 {
+	if m != nil && m.OptionalSfixed32 != nil {
+		return *m.OptionalSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFloat() float32 {
+	if m != nil && m.OptionalFloat != nil {
+		return *m.OptionalFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed64() uint64 {
+	if m != nil && m.OptionalFixed64 != nil {
+		return *m.OptionalFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed64() int64 {
+	if m != nil && m.OptionalSfixed64 != nil {
+		return *m.OptionalSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalDouble() float64 {
+	if m != nil && m.OptionalDouble != nil {
+		return *m.OptionalDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalString() string {
+	if m != nil && m.OptionalString != nil {
+		return *m.OptionalString
+	}
+	return ""
+}
+
+func (m *Message) GetOptionalBytes() []byte {
+	if m != nil {
+		return m.OptionalBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
+	if m != nil && m.OptionalChildEnum != nil {
+		return *m.OptionalChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.OptionalChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
+	if m != nil {
+		return m.OptionalNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
+	if m != nil && m.OptionalSiblingEnum != nil {
+		return *m.OptionalSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.OptionalSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
+	if m != nil {
+		return m.Optionalgroup
+	}
+	return nil
+}
+
+func (m *Message) GetDefaultedBool() bool {
+	if m != nil && m.DefaultedBool != nil {
+		return *m.DefaultedBool
+	}
+	return Default_Message_DefaultedBool
+}
+
+func (m *Message) GetDefaultedInt32() int32 {
+	if m != nil && m.DefaultedInt32 != nil {
+		return *m.DefaultedInt32
+	}
+	return Default_Message_DefaultedInt32
+}
+
+func (m *Message) GetDefaultedSint32() int32 {
+	if m != nil && m.DefaultedSint32 != nil {
+		return *m.DefaultedSint32
+	}
+	return Default_Message_DefaultedSint32
+}
+
+func (m *Message) GetDefaultedUint32() uint32 {
+	if m != nil && m.DefaultedUint32 != nil {
+		return *m.DefaultedUint32
+	}
+	return Default_Message_DefaultedUint32
+}
+
+func (m *Message) GetDefaultedInt64() int64 {
+	if m != nil && m.DefaultedInt64 != nil {
+		return *m.DefaultedInt64
+	}
+	return Default_Message_DefaultedInt64
+}
+
+func (m *Message) GetDefaultedSint64() int64 {
+	if m != nil && m.DefaultedSint64 != nil {
+		return *m.DefaultedSint64
+	}
+	return Default_Message_DefaultedSint64
+}
+
+func (m *Message) GetDefaultedUint64() uint64 {
+	if m != nil && m.DefaultedUint64 != nil {
+		return *m.DefaultedUint64
+	}
+	return Default_Message_DefaultedUint64
+}
+
+func (m *Message) GetDefaultedFixed32() uint32 {
+	if m != nil && m.DefaultedFixed32 != nil {
+		return *m.DefaultedFixed32
+	}
+	return Default_Message_DefaultedFixed32
+}
+
+func (m *Message) GetDefaultedSfixed32() int32 {
+	if m != nil && m.DefaultedSfixed32 != nil {
+		return *m.DefaultedSfixed32
+	}
+	return Default_Message_DefaultedSfixed32
+}
+
+func (m *Message) GetDefaultedFloat() float32 {
+	if m != nil && m.DefaultedFloat != nil {
+		return *m.DefaultedFloat
+	}
+	return Default_Message_DefaultedFloat
+}
+
+func (m *Message) GetDefaultedFixed64() uint64 {
+	if m != nil && m.DefaultedFixed64 != nil {
+		return *m.DefaultedFixed64
+	}
+	return Default_Message_DefaultedFixed64
+}
+
+func (m *Message) GetDefaultedSfixed64() int64 {
+	if m != nil && m.DefaultedSfixed64 != nil {
+		return *m.DefaultedSfixed64
+	}
+	return Default_Message_DefaultedSfixed64
+}
+
+func (m *Message) GetDefaultedDouble() float64 {
+	if m != nil && m.DefaultedDouble != nil {
+		return *m.DefaultedDouble
+	}
+	return Default_Message_DefaultedDouble
+}
+
+func (m *Message) GetDefaultedString() string {
+	if m != nil && m.DefaultedString != nil {
+		return *m.DefaultedString
+	}
+	return Default_Message_DefaultedString
+}
+
+func (m *Message) GetDefaultedBytes() []byte {
+	if m != nil && m.DefaultedBytes != nil {
+		return m.DefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_DefaultedBytes...)
+}
+
+func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
+	if m != nil && m.DefaultedChildEnum != nil {
+		return *m.DefaultedChildEnum
+	}
+	return Default_Message_DefaultedChildEnum
+}
+
+func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
+	if m != nil && m.DefaultedSiblingEnum != nil {
+		return *m.DefaultedSiblingEnum
+	}
+	return Default_Message_DefaultedSiblingEnum
+}
+
+func (m *Message) GetRequiredBool() bool {
+	if m != nil && m.RequiredBool != nil {
+		return *m.RequiredBool
+	}
+	return false
+}
+
+func (m *Message) GetRequiredInt32() int32 {
+	if m != nil && m.RequiredInt32 != nil {
+		return *m.RequiredInt32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSint32() int32 {
+	if m != nil && m.RequiredSint32 != nil {
+		return *m.RequiredSint32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredUint32() uint32 {
+	if m != nil && m.RequiredUint32 != nil {
+		return *m.RequiredUint32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredInt64() int64 {
+	if m != nil && m.RequiredInt64 != nil {
+		return *m.RequiredInt64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSint64() int64 {
+	if m != nil && m.RequiredSint64 != nil {
+		return *m.RequiredSint64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredUint64() uint64 {
+	if m != nil && m.RequiredUint64 != nil {
+		return *m.RequiredUint64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFixed32() uint32 {
+	if m != nil && m.RequiredFixed32 != nil {
+		return *m.RequiredFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSfixed32() int32 {
+	if m != nil && m.RequiredSfixed32 != nil {
+		return *m.RequiredSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFloat() float32 {
+	if m != nil && m.RequiredFloat != nil {
+		return *m.RequiredFloat
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFixed64() uint64 {
+	if m != nil && m.RequiredFixed64 != nil {
+		return *m.RequiredFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSfixed64() int64 {
+	if m != nil && m.RequiredSfixed64 != nil {
+		return *m.RequiredSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredDouble() float64 {
+	if m != nil && m.RequiredDouble != nil {
+		return *m.RequiredDouble
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredString() string {
+	if m != nil && m.RequiredString != nil {
+		return *m.RequiredString
+	}
+	return ""
+}
+
+func (m *Message) GetRequiredBytes() []byte {
+	if m != nil {
+		return m.RequiredBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
+	if m != nil && m.RequiredChildEnum != nil {
+		return *m.RequiredChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.RequiredChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
+	if m != nil {
+		return m.RequiredNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
+	if m != nil && m.RequiredSiblingEnum != nil {
+		return *m.RequiredSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.RequiredSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
+	if m != nil {
+		return m.Requiredgroup
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredDefaultedBool() bool {
+	if m != nil && m.RequiredDefaultedBool != nil {
+		return *m.RequiredDefaultedBool
+	}
+	return Default_Message_RequiredDefaultedBool
+}
+
+func (m *Message) GetRequiredDefaultedInt32() int32 {
+	if m != nil && m.RequiredDefaultedInt32 != nil {
+		return *m.RequiredDefaultedInt32
+	}
+	return Default_Message_RequiredDefaultedInt32
+}
+
+func (m *Message) GetRequiredDefaultedSint32() int32 {
+	if m != nil && m.RequiredDefaultedSint32 != nil {
+		return *m.RequiredDefaultedSint32
+	}
+	return Default_Message_RequiredDefaultedSint32
+}
+
+func (m *Message) GetRequiredDefaultedUint32() uint32 {
+	if m != nil && m.RequiredDefaultedUint32 != nil {
+		return *m.RequiredDefaultedUint32
+	}
+	return Default_Message_RequiredDefaultedUint32
+}
+
+func (m *Message) GetRequiredDefaultedInt64() int64 {
+	if m != nil && m.RequiredDefaultedInt64 != nil {
+		return *m.RequiredDefaultedInt64
+	}
+	return Default_Message_RequiredDefaultedInt64
+}
+
+func (m *Message) GetRequiredDefaultedSint64() int64 {
+	if m != nil && m.RequiredDefaultedSint64 != nil {
+		return *m.RequiredDefaultedSint64
+	}
+	return Default_Message_RequiredDefaultedSint64
+}
+
+func (m *Message) GetRequiredDefaultedUint64() uint64 {
+	if m != nil && m.RequiredDefaultedUint64 != nil {
+		return *m.RequiredDefaultedUint64
+	}
+	return Default_Message_RequiredDefaultedUint64
+}
+
+func (m *Message) GetRequiredDefaultedFixed32() uint32 {
+	if m != nil && m.RequiredDefaultedFixed32 != nil {
+		return *m.RequiredDefaultedFixed32
+	}
+	return Default_Message_RequiredDefaultedFixed32
+}
+
+func (m *Message) GetRequiredDefaultedSfixed32() int32 {
+	if m != nil && m.RequiredDefaultedSfixed32 != nil {
+		return *m.RequiredDefaultedSfixed32
+	}
+	return Default_Message_RequiredDefaultedSfixed32
+}
+
+func (m *Message) GetRequiredDefaultedFloat() float32 {
+	if m != nil && m.RequiredDefaultedFloat != nil {
+		return *m.RequiredDefaultedFloat
+	}
+	return Default_Message_RequiredDefaultedFloat
+}
+
+func (m *Message) GetRequiredDefaultedFixed64() uint64 {
+	if m != nil && m.RequiredDefaultedFixed64 != nil {
+		return *m.RequiredDefaultedFixed64
+	}
+	return Default_Message_RequiredDefaultedFixed64
+}
+
+func (m *Message) GetRequiredDefaultedSfixed64() int64 {
+	if m != nil && m.RequiredDefaultedSfixed64 != nil {
+		return *m.RequiredDefaultedSfixed64
+	}
+	return Default_Message_RequiredDefaultedSfixed64
+}
+
+func (m *Message) GetRequiredDefaultedDouble() float64 {
+	if m != nil && m.RequiredDefaultedDouble != nil {
+		return *m.RequiredDefaultedDouble
+	}
+	return Default_Message_RequiredDefaultedDouble
+}
+
+func (m *Message) GetRequiredDefaultedString() string {
+	if m != nil && m.RequiredDefaultedString != nil {
+		return *m.RequiredDefaultedString
+	}
+	return Default_Message_RequiredDefaultedString
+}
+
+func (m *Message) GetRequiredDefaultedBytes() []byte {
+	if m != nil && m.RequiredDefaultedBytes != nil {
+		return m.RequiredDefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
+}
+
+func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
+	if m != nil && m.RequiredDefaultedChildEnum != nil {
+		return *m.RequiredDefaultedChildEnum
+	}
+	return Default_Message_RequiredDefaultedChildEnum
+}
+
+func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
+	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
+		return *m.RequiredDefaultedSiblingEnum
+	}
+	return Default_Message_RequiredDefaultedSiblingEnum
+}
+
+func (m *Message) GetRepeatedBool() []bool {
+	if m != nil {
+		return m.RepeatedBool
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt32() []int32 {
+	if m != nil {
+		return m.RepeatedInt32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint32() []int32 {
+	if m != nil {
+		return m.RepeatedSint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint32() []uint32 {
+	if m != nil {
+		return m.RepeatedUint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt64() []int64 {
+	if m != nil {
+		return m.RepeatedInt64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint64() []int64 {
+	if m != nil {
+		return m.RepeatedSint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint64() []uint64 {
+	if m != nil {
+		return m.RepeatedUint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed32() []uint32 {
+	if m != nil {
+		return m.RepeatedFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed32() []int32 {
+	if m != nil {
+		return m.RepeatedSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFloat() []float32 {
+	if m != nil {
+		return m.RepeatedFloat
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed64() []uint64 {
+	if m != nil {
+		return m.RepeatedFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed64() []int64 {
+	if m != nil {
+		return m.RepeatedSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedDouble() []float64 {
+	if m != nil {
+		return m.RepeatedDouble
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedString() []string {
+	if m != nil {
+		return m.RepeatedString
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedBytes() [][]byte {
+	if m != nil {
+		return m.RepeatedBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
+	if m != nil {
+		return m.RepeatedChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
+	if m != nil {
+		return m.RepeatedChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
+	if m != nil {
+		return m.RepeatedNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
+	if m != nil {
+		return m.RepeatedSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
+	if m != nil {
+		return m.RepeatedSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
+	if m != nil {
+		return m.Repeatedgroup
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBool() map[bool]bool {
+	if m != nil {
+		return m.MapBoolBool
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolInt32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolUint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolInt64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolUint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFloat() map[bool]float32 {
+	if m != nil {
+		return m.MapBoolFloat
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolDouble() map[bool]float64 {
+	if m != nil {
+		return m.MapBoolDouble
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolString() map[bool]string {
+	if m != nil {
+		return m.MapBoolString
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBytes() map[bool][]byte {
+	if m != nil {
+		return m.MapBoolBytes
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
+	if m != nil {
+		return m.MapBoolChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
+	if m != nil {
+		return m.MapBoolChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
+	if m != nil {
+		return m.MapBoolNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
+	if m != nil {
+		return m.MapBoolSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
+	if m != nil {
+		return m.MapBoolSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapInt32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapSint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapUint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapInt64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapSint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint64Bool() map[uint64]bool {
+	if m != nil {
+		return m.MapUint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapFixed32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapFixed32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapStringBool() map[string]bool {
+	if m != nil {
+		return m.MapStringBool
+	}
+	return nil
+}
+
+func (m *Message) GetOneofBool() bool {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
+		return x.OneofBool
+	}
+	return false
+}
+
+func (m *Message) GetOneofInt32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
+		return x.OneofInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
+		return x.OneofSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
+		return x.OneofUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofInt64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
+		return x.OneofInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
+		return x.OneofSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
+		return x.OneofUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
+		return x.OneofFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
+		return x.OneofSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFloat() float32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
+		return x.OneofFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
+		return x.OneofFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
+		return x.OneofSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofDouble() float64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
+		return x.OneofDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOneofString() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
+		return x.OneofString
+	}
+	return ""
+}
+
+func (m *Message) GetOneofBytes() []byte {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
+		return x.OneofBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOneofChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
+		return x.OneofChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
+		return x.OneofChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
+	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
+		return x.OneofNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetOneofSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
+		return x.OneofSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
+		return x.OneofSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofgroup() *Message_OneofGroup {
+	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
+		return x.Oneofgroup
+	}
+	return nil
+}
+
+func (m *Message) GetOneofString1() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
+		return x.OneofString1
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString2() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
+		return x.OneofString2
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString3() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
+		return x.OneofString3
+	}
+	return ""
+}
+
+func (m *Message) GetOneofDefaultedBool() bool {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
+		return x.OneofDefaultedBool
+	}
+	return Default_Message_OneofDefaultedBool
+}
+
+func (m *Message) GetOneofDefaultedInt32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
+		return x.OneofDefaultedInt32
+	}
+	return Default_Message_OneofDefaultedInt32
+}
+
+func (m *Message) GetOneofDefaultedSint32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
+		return x.OneofDefaultedSint32
+	}
+	return Default_Message_OneofDefaultedSint32
+}
+
+func (m *Message) GetOneofDefaultedUint32() uint32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
+		return x.OneofDefaultedUint32
+	}
+	return Default_Message_OneofDefaultedUint32
+}
+
+func (m *Message) GetOneofDefaultedInt64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
+		return x.OneofDefaultedInt64
+	}
+	return Default_Message_OneofDefaultedInt64
+}
+
+func (m *Message) GetOneofDefaultedSint64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
+		return x.OneofDefaultedSint64
+	}
+	return Default_Message_OneofDefaultedSint64
+}
+
+func (m *Message) GetOneofDefaultedUint64() uint64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
+		return x.OneofDefaultedUint64
+	}
+	return Default_Message_OneofDefaultedUint64
+}
+
+func (m *Message) GetOneofDefaultedFixed32() uint32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
+		return x.OneofDefaultedFixed32
+	}
+	return Default_Message_OneofDefaultedFixed32
+}
+
+func (m *Message) GetOneofDefaultedSfixed32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
+		return x.OneofDefaultedSfixed32
+	}
+	return Default_Message_OneofDefaultedSfixed32
+}
+
+func (m *Message) GetOneofDefaultedFloat() float32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
+		return x.OneofDefaultedFloat
+	}
+	return Default_Message_OneofDefaultedFloat
+}
+
+func (m *Message) GetOneofDefaultedFixed64() uint64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
+		return x.OneofDefaultedFixed64
+	}
+	return Default_Message_OneofDefaultedFixed64
+}
+
+func (m *Message) GetOneofDefaultedSfixed64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
+		return x.OneofDefaultedSfixed64
+	}
+	return Default_Message_OneofDefaultedSfixed64
+}
+
+func (m *Message) GetOneofDefaultedDouble() float64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
+		return x.OneofDefaultedDouble
+	}
+	return Default_Message_OneofDefaultedDouble
+}
+
+func (m *Message) GetOneofDefaultedString() string {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
+		return x.OneofDefaultedString
+	}
+	return Default_Message_OneofDefaultedString
+}
+
+func (m *Message) GetOneofDefaultedBytes() []byte {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
+		return x.OneofDefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
+}
+
+func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
+		return x.OneofDefaultedChildEnum
+	}
+	return Default_Message_OneofDefaultedChildEnum
+}
+
+func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
+		return x.OneofDefaultedSiblingEnum
+	}
+	return Default_Message_OneofDefaultedSiblingEnum
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
+		(*Message_OneofBool)(nil),
+		(*Message_OneofInt32)(nil),
+		(*Message_OneofSint32)(nil),
+		(*Message_OneofUint32)(nil),
+		(*Message_OneofInt64)(nil),
+		(*Message_OneofSint64)(nil),
+		(*Message_OneofUint64)(nil),
+		(*Message_OneofFixed32)(nil),
+		(*Message_OneofSfixed32)(nil),
+		(*Message_OneofFloat)(nil),
+		(*Message_OneofFixed64)(nil),
+		(*Message_OneofSfixed64)(nil),
+		(*Message_OneofDouble)(nil),
+		(*Message_OneofString)(nil),
+		(*Message_OneofBytes)(nil),
+		(*Message_OneofChildEnum)(nil),
+		(*Message_OneofChildMessage)(nil),
+		(*Message_OneofNamedGroup)(nil),
+		(*Message_OneofSiblingEnum)(nil),
+		(*Message_OneofSiblingMessage)(nil),
+		(*Message_Oneofgroup)(nil),
+		(*Message_OneofString1)(nil),
+		(*Message_OneofString2)(nil),
+		(*Message_OneofString3)(nil),
+		(*Message_OneofDefaultedBool)(nil),
+		(*Message_OneofDefaultedInt32)(nil),
+		(*Message_OneofDefaultedSint32)(nil),
+		(*Message_OneofDefaultedUint32)(nil),
+		(*Message_OneofDefaultedInt64)(nil),
+		(*Message_OneofDefaultedSint64)(nil),
+		(*Message_OneofDefaultedUint64)(nil),
+		(*Message_OneofDefaultedFixed32)(nil),
+		(*Message_OneofDefaultedSfixed32)(nil),
+		(*Message_OneofDefaultedFloat)(nil),
+		(*Message_OneofDefaultedFixed64)(nil),
+		(*Message_OneofDefaultedSfixed64)(nil),
+		(*Message_OneofDefaultedDouble)(nil),
+		(*Message_OneofDefaultedString)(nil),
+		(*Message_OneofDefaultedBytes)(nil),
+		(*Message_OneofDefaultedChildEnum)(nil),
+		(*Message_OneofDefaultedSiblingEnum)(nil),
+	}
+}
+
+func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		t := uint64(0)
+		if x.OneofBool {
+			t = 1
+		}
+		b.EncodeVarint(700<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofInt32:
+		b.EncodeVarint(701<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		b.EncodeVarint(702<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofSint32))
+	case *Message_OneofUint32:
+		b.EncodeVarint(703<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		b.EncodeVarint(704<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		b.EncodeVarint(705<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofSint64))
+	case *Message_OneofUint64:
+		b.EncodeVarint(706<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		b.EncodeVarint(707<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofFixed32))
+	case *Message_OneofSfixed32:
+		b.EncodeVarint(708<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofSfixed32))
+	case *Message_OneofFloat:
+		b.EncodeVarint(709<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
+	case *Message_OneofFixed64:
+		b.EncodeVarint(710<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofFixed64))
+	case *Message_OneofSfixed64:
+		b.EncodeVarint(711<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofSfixed64))
+	case *Message_OneofDouble:
+		b.EncodeVarint(712<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
+	case *Message_OneofString:
+		b.EncodeVarint(713<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString)
+	case *Message_OneofBytes:
+		b.EncodeVarint(714<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		b.EncodeVarint(715<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		b.EncodeVarint(716<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
+			return err
+		}
+	case *Message_OneofNamedGroup:
+		b.EncodeVarint(717<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofNamedGroup); err != nil {
+			return err
+		}
+	case *Message_OneofSiblingEnum:
+		b.EncodeVarint(718<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		b.EncodeVarint(719<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
+			return err
+		}
+	case *Message_Oneofgroup:
+		b.EncodeVarint(720<<3 | proto.WireStartGroup)
+		if err := b.Marshal(x.Oneofgroup); err != nil {
+			return err
+		}
+		b.EncodeVarint(720<<3 | proto.WireEndGroup)
+	case *Message_OneofString1:
+		b.EncodeVarint(721<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString1)
+	case *Message_OneofString2:
+		b.EncodeVarint(722<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString2)
+	case *Message_OneofString3:
+		b.EncodeVarint(723<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString3)
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
+	}
+	// oneof_defaulted_union
+	switch x := m.OneofDefaultedUnion.(type) {
+	case *Message_OneofDefaultedBool:
+		t := uint64(0)
+		if x.OneofDefaultedBool {
+			t = 1
+		}
+		b.EncodeVarint(800<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofDefaultedInt32:
+		b.EncodeVarint(801<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedInt32))
+	case *Message_OneofDefaultedSint32:
+		b.EncodeVarint(802<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofDefaultedSint32))
+	case *Message_OneofDefaultedUint32:
+		b.EncodeVarint(803<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedUint32))
+	case *Message_OneofDefaultedInt64:
+		b.EncodeVarint(804<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedInt64))
+	case *Message_OneofDefaultedSint64:
+		b.EncodeVarint(805<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofDefaultedSint64))
+	case *Message_OneofDefaultedUint64:
+		b.EncodeVarint(806<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedUint64))
+	case *Message_OneofDefaultedFixed32:
+		b.EncodeVarint(807<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofDefaultedFixed32))
+	case *Message_OneofDefaultedSfixed32:
+		b.EncodeVarint(808<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofDefaultedSfixed32))
+	case *Message_OneofDefaultedFloat:
+		b.EncodeVarint(809<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofDefaultedFloat)))
+	case *Message_OneofDefaultedFixed64:
+		b.EncodeVarint(810<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofDefaultedFixed64))
+	case *Message_OneofDefaultedSfixed64:
+		b.EncodeVarint(811<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofDefaultedSfixed64))
+	case *Message_OneofDefaultedDouble:
+		b.EncodeVarint(812<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDefaultedDouble))
+	case *Message_OneofDefaultedString:
+		b.EncodeVarint(813<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofDefaultedString)
+	case *Message_OneofDefaultedBytes:
+		b.EncodeVarint(814<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofDefaultedBytes)
+	case *Message_OneofDefaultedChildEnum:
+		b.EncodeVarint(815<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedChildEnum))
+	case *Message_OneofDefaultedSiblingEnum:
+		b.EncodeVarint(816<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedSiblingEnum))
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofDefaultedUnion has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Message)
+	switch tag {
+	case 700: // oneof_union.oneof_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofBool{x != 0}
+		return true, err
+	case 701: // oneof_union.oneof_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt32{int32(x)}
+		return true, err
+	case 702: // oneof_union.oneof_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofUnion = &Message_OneofSint32{int32(x)}
+		return true, err
+	case 703: // oneof_union.oneof_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint32{uint32(x)}
+		return true, err
+	case 704: // oneof_union.oneof_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt64{int64(x)}
+		return true, err
+	case 705: // oneof_union.oneof_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofUnion = &Message_OneofSint64{int64(x)}
+		return true, err
+	case 706: // oneof_union.oneof_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint64{x}
+		return true, err
+	case 707: // oneof_union.oneof_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
+		return true, err
+	case 708: // oneof_union.oneof_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
+		return true, err
+	case 709: // oneof_union.oneof_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 710: // oneof_union.oneof_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofFixed64{x}
+		return true, err
+	case 711: // oneof_union.oneof_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
+		return true, err
+	case 712: // oneof_union.oneof_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
+		return true, err
+	case 713: // oneof_union.oneof_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString{x}
+		return true, err
+	case 714: // oneof_union.oneof_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofUnion = &Message_OneofBytes{x}
+		return true, err
+	case 715: // oneof_union.oneof_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 716: // oneof_union.oneof_child_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_ChildMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofChildMessage{msg}
+		return true, err
+	case 717: // oneof_union.oneof_named_group
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_NamedGroup)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofNamedGroup{msg}
+		return true, err
+	case 718: // oneof_union.oneof_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
+		return true, err
+	case 719: // oneof_union.oneof_sibling_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(SiblingMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofSiblingMessage{msg}
+		return true, err
+	case 720: // oneof_union.oneofgroup
+		if wire != proto.WireStartGroup {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_OneofGroup)
+		err := b.DecodeGroup(msg)
+		m.OneofUnion = &Message_Oneofgroup{msg}
+		return true, err
+	case 721: // oneof_union.oneof_string1
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString1{x}
+		return true, err
+	case 722: // oneof_union.oneof_string2
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString2{x}
+		return true, err
+	case 723: // oneof_union.oneof_string3
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString3{x}
+		return true, err
+	case 800: // oneof_defaulted_union.oneof_defaulted_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedBool{x != 0}
+		return true, err
+	case 801: // oneof_defaulted_union.oneof_defaulted_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedInt32{int32(x)}
+		return true, err
+	case 802: // oneof_defaulted_union.oneof_defaulted_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSint32{int32(x)}
+		return true, err
+	case 803: // oneof_defaulted_union.oneof_defaulted_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedUint32{uint32(x)}
+		return true, err
+	case 804: // oneof_defaulted_union.oneof_defaulted_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedInt64{int64(x)}
+		return true, err
+	case 805: // oneof_defaulted_union.oneof_defaulted_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSint64{int64(x)}
+		return true, err
+	case 806: // oneof_defaulted_union.oneof_defaulted_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedUint64{x}
+		return true, err
+	case 807: // oneof_defaulted_union.oneof_defaulted_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed32{uint32(x)}
+		return true, err
+	case 808: // oneof_defaulted_union.oneof_defaulted_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed32{int32(x)}
+		return true, err
+	case 809: // oneof_defaulted_union.oneof_defaulted_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 810: // oneof_defaulted_union.oneof_defaulted_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed64{x}
+		return true, err
+	case 811: // oneof_defaulted_union.oneof_defaulted_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed64{int64(x)}
+		return true, err
+	case 812: // oneof_defaulted_union.oneof_defaulted_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedDouble{math.Float64frombits(x)}
+		return true, err
+	case 813: // oneof_defaulted_union.oneof_defaulted_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedString{x}
+		return true, err
+	case 814: // oneof_defaulted_union.oneof_defaulted_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofDefaultedUnion = &Message_OneofDefaultedBytes{x}
+		return true, err
+	case 815: // oneof_defaulted_union.oneof_defaulted_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 816: // oneof_defaulted_union.oneof_defaulted_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSiblingEnum{SiblingEnum(x)}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Message_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		n += proto.SizeVarint(700<<3 | proto.WireVarint)
+		n += 1
+	case *Message_OneofInt32:
+		n += proto.SizeVarint(701<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		n += proto.SizeVarint(702<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
+	case *Message_OneofUint32:
+		n += proto.SizeVarint(703<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		n += proto.SizeVarint(704<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		n += proto.SizeVarint(705<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
+	case *Message_OneofUint64:
+		n += proto.SizeVarint(706<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		n += proto.SizeVarint(707<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofSfixed32:
+		n += proto.SizeVarint(708<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFloat:
+		n += proto.SizeVarint(709<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFixed64:
+		n += proto.SizeVarint(710<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofSfixed64:
+		n += proto.SizeVarint(711<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDouble:
+		n += proto.SizeVarint(712<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofString:
+		n += proto.SizeVarint(713<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString)))
+		n += len(x.OneofString)
+	case *Message_OneofBytes:
+		n += proto.SizeVarint(714<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
+		n += len(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		n += proto.SizeVarint(715<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		s := proto.Size(x.OneofChildMessage)
+		n += proto.SizeVarint(716<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofNamedGroup:
+		s := proto.Size(x.OneofNamedGroup)
+		n += proto.SizeVarint(717<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofSiblingEnum:
+		n += proto.SizeVarint(718<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		s := proto.Size(x.OneofSiblingMessage)
+		n += proto.SizeVarint(719<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_Oneofgroup:
+		n += proto.SizeVarint(720<<3 | proto.WireStartGroup)
+		n += proto.Size(x.Oneofgroup)
+		n += proto.SizeVarint(720<<3 | proto.WireEndGroup)
+	case *Message_OneofString1:
+		n += proto.SizeVarint(721<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString1)))
+		n += len(x.OneofString1)
+	case *Message_OneofString2:
+		n += proto.SizeVarint(722<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString2)))
+		n += len(x.OneofString2)
+	case *Message_OneofString3:
+		n += proto.SizeVarint(723<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString3)))
+		n += len(x.OneofString3)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	// oneof_defaulted_union
+	switch x := m.OneofDefaultedUnion.(type) {
+	case *Message_OneofDefaultedBool:
+		n += proto.SizeVarint(800<<3 | proto.WireVarint)
+		n += 1
+	case *Message_OneofDefaultedInt32:
+		n += proto.SizeVarint(801<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedInt32))
+	case *Message_OneofDefaultedSint32:
+		n += proto.SizeVarint(802<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64((uint32(x.OneofDefaultedSint32) << 1) ^ uint32((int32(x.OneofDefaultedSint32) >> 31))))
+	case *Message_OneofDefaultedUint32:
+		n += proto.SizeVarint(803<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedUint32))
+	case *Message_OneofDefaultedInt64:
+		n += proto.SizeVarint(804<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedInt64))
+	case *Message_OneofDefaultedSint64:
+		n += proto.SizeVarint(805<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(uint64(x.OneofDefaultedSint64<<1) ^ uint64((int64(x.OneofDefaultedSint64) >> 63))))
+	case *Message_OneofDefaultedUint64:
+		n += proto.SizeVarint(806<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedUint64))
+	case *Message_OneofDefaultedFixed32:
+		n += proto.SizeVarint(807<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofDefaultedSfixed32:
+		n += proto.SizeVarint(808<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofDefaultedFloat:
+		n += proto.SizeVarint(809<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofDefaultedFixed64:
+		n += proto.SizeVarint(810<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDefaultedSfixed64:
+		n += proto.SizeVarint(811<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDefaultedDouble:
+		n += proto.SizeVarint(812<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDefaultedString:
+		n += proto.SizeVarint(813<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofDefaultedString)))
+		n += len(x.OneofDefaultedString)
+	case *Message_OneofDefaultedBytes:
+		n += proto.SizeVarint(814<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofDefaultedBytes)))
+		n += len(x.OneofDefaultedBytes)
+	case *Message_OneofDefaultedChildEnum:
+		n += proto.SizeVarint(815<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedChildEnum))
+	case *Message_OneofDefaultedSiblingEnum:
+		n += proto.SizeVarint(816<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedSiblingEnum))
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         10000,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_bool",
+	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
+}
+
+var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10001,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_int32",
+	Tag:           "varint,10001,opt,name=extension_optional_int32,json=extensionOptionalInt32",
+}
+
+var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10002,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sint32",
+	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32,json=extensionOptionalSint32",
+}
+
+var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         10003,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_uint32",
+	Tag:           "varint,10003,opt,name=extension_optional_uint32,json=extensionOptionalUint32",
+}
+
+var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10004,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_int64",
+	Tag:           "varint,10004,opt,name=extension_optional_int64,json=extensionOptionalInt64",
+}
+
+var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10005,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sint64",
+	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64,json=extensionOptionalSint64",
+}
+
+var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         10006,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_uint64",
+	Tag:           "varint,10006,opt,name=extension_optional_uint64,json=extensionOptionalUint64",
+}
+
+var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         10007,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_fixed32",
+	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32,json=extensionOptionalFixed32",
+}
+
+var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10008,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sfixed32",
+	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32,json=extensionOptionalSfixed32",
+}
+
+var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         10009,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_float",
+	Tag:           "fixed32,10009,opt,name=extension_optional_float,json=extensionOptionalFloat",
+}
+
+var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         10010,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_fixed64",
+	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64,json=extensionOptionalFixed64",
+}
+
+var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10011,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sfixed64",
+	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64,json=extensionOptionalSfixed64",
+}
+
+var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         10012,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_double",
+	Tag:           "fixed64,10012,opt,name=extension_optional_double,json=extensionOptionalDouble",
+}
+
+var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         10013,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_string",
+	Tag:           "bytes,10013,opt,name=extension_optional_string,json=extensionOptionalString",
+}
+
+var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         10014,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_bytes",
+	Tag:           "bytes,10014,opt,name=extension_optional_bytes,json=extensionOptionalBytes",
+}
+
+var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildEnum)(nil),
+	Field:         10015,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_child_enum",
+	Tag:           "varint,10015,opt,name=extension_optional_child_enum,json=extensionOptionalChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum",
+}
+
+var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildMessage)(nil),
+	Field:         10016,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_child_message",
+	Tag:           "bytes,10016,opt,name=extension_optional_child_message,json=extensionOptionalChildMessage",
+}
+
+var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_NamedGroup)(nil),
+	Field:         10017,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_named_group",
+	Tag:           "bytes,10017,opt,name=extension_optional_named_group,json=extensionOptionalNamedGroup",
+}
+
+var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingEnum)(nil),
+	Field:         10018,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sibling_enum",
+	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,json=extensionOptionalSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum",
+}
+
+var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingMessage)(nil),
+	Field:         10019,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sibling_message",
+	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message,json=extensionOptionalSiblingMessage",
+}
+
+var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
+	Field:         10020,
+	Name:          "google.golang.org.proto2_20160225.Message.extensionoptionalgroup",
+	Tag:           "group,10020,opt,name=ExtensionOptionalGroup,json=extensionoptionalgroup",
+}
+
+var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         20000,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_bool",
+	Tag:           "varint,20000,opt,name=extension_defaulted_bool,json=extensionDefaultedBool,def=1",
+}
+
+var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20001,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_int32",
+	Tag:           "varint,20001,opt,name=extension_defaulted_int32,json=extensionDefaultedInt32,def=-12345",
+}
+
+var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20002,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_sint32",
+	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,json=extensionDefaultedSint32,def=-3200",
+}
+
+var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         20003,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_uint32",
+	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,json=extensionDefaultedUint32,def=3200",
+}
+
+var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20004,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_int64",
+	Tag:           "varint,20004,opt,name=extension_defaulted_int64,json=extensionDefaultedInt64,def=-123456789",
+}
+
+var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20005,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_sint64",
+	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,json=extensionDefaultedSint64,def=-6400",
+}
+
+var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         20006,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_uint64",
+	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,json=extensionDefaultedUint64,def=6400",
+}
+
+var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         20007,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_fixed32",
+	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,json=extensionDefaultedFixed32,def=320000",
+}
+
+var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20008,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_sfixed32",
+	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,json=extensionDefaultedSfixed32,def=-320000",
+}
+
+var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         20009,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_float",
+	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,json=extensionDefaultedFloat,def=3.14159",
+}
+
+var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         20010,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_fixed64",
+	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,json=extensionDefaultedFixed64,def=640000",
+}
+
+var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20011,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_sfixed64",
+	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,json=extensionDefaultedSfixed64,def=-640000",
+}
+
+var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         20012,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_double",
+	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,json=extensionDefaultedDouble,def=3.14159265359",
+}
+
+var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         20013,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_string",
+	Tag:           "bytes,20013,opt,name=extension_defaulted_string,json=extensionDefaultedString,def=hello, \"world!\"\n",
+}
+
+var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         20014,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_bytes",
+	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,json=extensionDefaultedBytes,def=dead\\336\\255\\276\\357beef",
+}
+
+var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildEnum)(nil),
+	Field:         20015,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_child_enum",
+	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,json=extensionDefaultedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum,def=0",
+}
+
+var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingEnum)(nil),
+	Field:         20016,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_sibling_enum",
+	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,json=extensionDefaultedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum,def=0",
+}
+
+var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]bool)(nil),
+	Field:         30000,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_bool",
+	Tag:           "varint,30000,rep,name=extension_repeated_bool,json=extensionRepeatedBool",
+}
+
+var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30001,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_int32",
+	Tag:           "varint,30001,rep,name=extension_repeated_int32,json=extensionRepeatedInt32",
+}
+
+var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30002,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sint32",
+	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32,json=extensionRepeatedSint32",
+}
+
+var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         30003,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_uint32",
+	Tag:           "varint,30003,rep,name=extension_repeated_uint32,json=extensionRepeatedUint32",
+}
+
+var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30004,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_int64",
+	Tag:           "varint,30004,rep,name=extension_repeated_int64,json=extensionRepeatedInt64",
+}
+
+var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30005,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sint64",
+	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64,json=extensionRepeatedSint64",
+}
+
+var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         30006,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_uint64",
+	Tag:           "varint,30006,rep,name=extension_repeated_uint64,json=extensionRepeatedUint64",
+}
+
+var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         30007,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_fixed32",
+	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32,json=extensionRepeatedFixed32",
+}
+
+var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30008,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sfixed32",
+	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32,json=extensionRepeatedSfixed32",
+}
+
+var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]float32)(nil),
+	Field:         30009,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_float",
+	Tag:           "fixed32,30009,rep,name=extension_repeated_float,json=extensionRepeatedFloat",
+}
+
+var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         30010,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_fixed64",
+	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64,json=extensionRepeatedFixed64",
+}
+
+var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30011,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sfixed64",
+	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64,json=extensionRepeatedSfixed64",
+}
+
+var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]float64)(nil),
+	Field:         30012,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_double",
+	Tag:           "fixed64,30012,rep,name=extension_repeated_double,json=extensionRepeatedDouble",
+}
+
+var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]string)(nil),
+	Field:         30013,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_string",
+	Tag:           "bytes,30013,rep,name=extension_repeated_string,json=extensionRepeatedString",
+}
+
+var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([][]byte)(nil),
+	Field:         30014,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_bytes",
+	Tag:           "bytes,30014,rep,name=extension_repeated_bytes,json=extensionRepeatedBytes",
+}
+
+var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]Message_ChildEnum)(nil),
+	Field:         30015,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_child_enum",
+	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,json=extensionRepeatedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum",
+}
+
+var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_ChildMessage)(nil),
+	Field:         30016,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_child_message",
+	Tag:           "bytes,30016,rep,name=extension_repeated_child_message,json=extensionRepeatedChildMessage",
+}
+
+var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_NamedGroup)(nil),
+	Field:         30017,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_named_group",
+	Tag:           "bytes,30017,rep,name=extension_repeated_named_group,json=extensionRepeatedNamedGroup",
+}
+
+var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]SiblingEnum)(nil),
+	Field:         30018,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sibling_enum",
+	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,json=extensionRepeatedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum",
+}
+
+var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*SiblingMessage)(nil),
+	Field:         30019,
+	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sibling_message",
+	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message,json=extensionRepeatedSiblingMessage",
+}
+
+var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
+	Field:         30020,
+	Name:          "google.golang.org.proto2_20160225.Message.extensionrepeatedgroup",
+	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
+}
+
+type Message_ChildMessage struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
+func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
+func (*Message_ChildMessage) ProtoMessage()               {}
+func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+func (m *Message_ChildMessage) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *Message_ChildMessage) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message_NamedGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_NamedGroup) Reset()                    { *m = Message_NamedGroup{} }
+func (m *Message_NamedGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_NamedGroup) ProtoMessage()               {}
+func (*Message_NamedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} }
+
+func (m *Message_NamedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_NamedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_NamedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *Message_NamedGroup) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message_OptionalGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_OptionalGroup) Reset()                    { *m = Message_OptionalGroup{} }
+func (m *Message_OptionalGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_OptionalGroup) ProtoMessage()               {}
+func (*Message_OptionalGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 2} }
+
+func (m *Message_OptionalGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_OptionalGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_OptionalGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_RequiredGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_RequiredGroup) Reset()                    { *m = Message_RequiredGroup{} }
+func (m *Message_RequiredGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_RequiredGroup) ProtoMessage()               {}
+func (*Message_RequiredGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 3} }
+
+func (m *Message_RequiredGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_RequiredGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_RequiredGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_RepeatedGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_RepeatedGroup) Reset()                    { *m = Message_RepeatedGroup{} }
+func (m *Message_RepeatedGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_RepeatedGroup) ProtoMessage()               {}
+func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 4} }
+
+func (m *Message_RepeatedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_RepeatedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_RepeatedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_OneofGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_OneofGroup) Reset()                    { *m = Message_OneofGroup{} }
+func (m *Message_OneofGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_OneofGroup) ProtoMessage()               {}
+func (*Message_OneofGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 33} }
+
+func (m *Message_OneofGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_OneofGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_OneofGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_ExtensionOptionalGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
+func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
+func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{1, 34}
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_ExtensionRepeatedGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
+func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
+func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{1, 35}
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20160225.SiblingMessage")
+	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20160225.Message")
+	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20160225.Message.ChildMessage")
+	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20160225.Message.NamedGroup")
+	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20160225.Message.OptionalGroup")
+	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20160225.Message.RequiredGroup")
+	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20160225.Message.RepeatedGroup")
+	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20160225.Message.OneofGroup")
+	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20160225.Message.ExtensionOptionalGroup")
+	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20160225.Message.ExtensionRepeatedGroup")
+	proto.RegisterEnum("google.golang.org.proto2_20160225.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
+	proto.RegisterEnum("google.golang.org.proto2_20160225.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
+	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
+	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
+	proto.RegisterExtension(E_Message_ExtensionOptionalString)
+	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
+	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
+	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
+	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
+	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
+}
+
+var fileDescriptor0 = []byte{
+	// 4493 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x69, 0x70, 0x1c, 0xc7,
+	0x75, 0xc6, 0xec, 0x62, 0x17, 0x44, 0x13, 0x0b, 0x2c, 0x86, 0x24, 0x30, 0x84, 0xa4, 0x68, 0xcd,
+	0x38, 0xce, 0x86, 0x11, 0x41, 0x60, 0xd0, 0x68, 0x4a, 0x1b, 0x1d, 0x26, 0x24, 0xca, 0x2b, 0xc7,
+	0x5a, 0xa5, 0x46, 0xc5, 0x94, 0xcb, 0xa5, 0x0a, 0x03, 0x12, 0x0b, 0x70, 0xa5, 0x3d, 0x20, 0x60,
+	0x97, 0x12, 0x63, 0xa7, 0xc4, 0x38, 0xe7, 0x4f, 0xf9, 0xbe, 0xd6, 0xb6, 0xac, 0xdb, 0x96, 0x44,
+	0xc9, 0xf7, 0xa5, 0xcb, 0x47, 0x12, 0xf9, 0xbe, 0x72, 0x38, 0x97, 0x73, 0x5f, 0xce, 0x7d, 0xdf,
+	0x47, 0x75, 0xbf, 0xee, 0xe9, 0xee, 0x99, 0x9e, 0x05, 0x7a, 0xd6, 0xa5, 0x1f, 0xaa, 0x12, 0x7b,
+	0x5f, 0xbf, 0xaf, 0xdf, 0xb7, 0xfd, 0xde, 0xfb, 0xd0, 0x33, 0xbd, 0xe8, 0xf0, 0xe6, 0x56, 0xa7,
+	0xdb, 0xf1, 0xe7, 0xcf, 0x2d, 0xcc, 0x2f, 0xcc, 0x2f, 0x1c, 0xf1, 0x17, 0x16, 0xc9, 0x82, 0xef,
+	0x2f, 0x1f, 0xf1, 0xd7, 0xcf, 0x2c, 0x2c, 0x2f, 0x9d, 0x59, 0x3e, 0xda, 0xad, 0x6f, 0x77, 0xe7,
+	0x99, 0x91, 0xfb, 0x92, 0x8d, 0x4e, 0x67, 0xa3, 0x59, 0x9f, 0xdf, 0xe8, 0x34, 0x57, 0xdb, 0x1b,
+	0xf3, 0x9d, 0xad, 0x0d, 0xf8, 0xc0, 0x3f, 0x25, 0xa6, 0x1d, 0x7a, 0x1d, 0x9a, 0xbc, 0xb5, 0x71,
+	0xba, 0xd9, 0x68, 0x6f, 0xdc, 0x5c, 0xdf, 0xde, 0x5e, 0xdd, 0xa8, 0xbb, 0x93, 0x28, 0xb3, 0xbe,
+	0xe8, 0x39, 0x25, 0xa7, 0x3c, 0x1e, 0x64, 0xd6, 0x17, 0xd9, 0xbf, 0x7d, 0x2f, 0x53, 0xca, 0xb0,
+	0x7f, 0xfb, 0xec, 0xdf, 0x4b, 0x5e, 0xb6, 0x94, 0x65, 0xff, 0x5e, 0x72, 0x2b, 0x28, 0xb3, 0x8e,
+	0xbd, 0xd1, 0x92, 0x53, 0xde, 0xeb, 0x1f, 0x9e, 0xdf, 0x11, 0x71, 0x9e, 0xe3, 0x04, 0x99, 0x75,
+	0x7c, 0xe8, 0x3b, 0x8f, 0x39, 0x68, 0x4c, 0x00, 0x9f, 0x44, 0xa8, 0xbd, 0xda, 0xaa, 0xaf, 0x6d,
+	0x6c, 0x75, 0x7a, 0x9b, 0x6c, 0x01, 0xc8, 0x5f, 0xde, 0xbd, 0xc3, 0xf9, 0x1a, 0x9d, 0xfc, 0x0a,
+	0x3a, 0x39, 0x50, 0x1c, 0xb9, 0xdf, 0x8f, 0x0a, 0x9d, 0xcd, 0x6e, 0xa3, 0xd3, 0x5e, 0x6d, 0x9e,
+	0x3a, 0xdd, 0xe9, 0x34, 0xbd, 0xb5, 0x92, 0x53, 0xde, 0x13, 0x4c, 0x88, 0xc1, 0x95, 0x4e, 0xa7,
+	0xe9, 0xfe, 0x00, 0x9a, 0x0c, 0x8d, 0x1a, 0xed, 0xee, 0x92, 0xef, 0xd5, 0x4b, 0x4e, 0x39, 0x17,
+	0x84, 0x53, 0x6f, 0xa2, 0x83, 0xee, 0x0f, 0xa2, 0xa9, 0xd0, 0x6c, 0x1b, 0xec, 0xd6, 0x4b, 0x4e,
+	0x79, 0x3a, 0x08, 0x67, 0xdf, 0xda, 0x88, 0x19, 0xf6, 0xc0, 0x70, 0xa3, 0xe4, 0x94, 0x0b, 0xd2,
+	0xf0, 0x24, 0x18, 0x46, 0x80, 0x09, 0xf6, 0xce, 0x96, 0x9c, 0x72, 0x56, 0x03, 0x26, 0x38, 0x06,
+	0x4c, 0xb0, 0xd7, 0x28, 0x39, 0x65, 0x57, 0x07, 0x8e, 0x18, 0xf6, 0xc0, 0xf0, 0xf6, 0x92, 0x53,
+	0x1e, 0xd5, 0x81, 0x09, 0x76, 0x7f, 0x08, 0x15, 0x43, 0xc3, 0xf5, 0xc6, 0xdd, 0xf5, 0xb5, 0x25,
+	0xdf, 0xbb, 0xa3, 0xe4, 0x94, 0xc7, 0x82, 0xd0, 0xc1, 0x8d, 0x30, 0xec, 0xfe, 0x30, 0x9a, 0x96,
+	0xe0, 0xc2, 0xb6, 0x59, 0x72, 0xca, 0x53, 0x41, 0xe8, 0xe3, 0x56, 0x3e, 0xae, 0x05, 0xb4, 0xde,
+	0xec, 0xac, 0x76, 0xbd, 0x56, 0xc9, 0x29, 0x67, 0x64, 0x40, 0x37, 0xd2, 0xc1, 0x38, 0x3c, 0xc1,
+	0x5e, 0xbb, 0xe4, 0x94, 0xf3, 0x11, 0x78, 0x82, 0x0d, 0xf0, 0x04, 0x7b, 0x9d, 0x92, 0x53, 0x2e,
+	0x46, 0xe1, 0x23, 0xf1, 0xaf, 0x75, 0x7a, 0xa7, 0x9b, 0x75, 0x6f, 0xb3, 0xe4, 0x94, 0x1d, 0x19,
+	0xff, 0x0d, 0x6c, 0x54, 0x67, 0xb4, 0xbb, 0xd5, 0x68, 0x6f, 0x78, 0x77, 0xb2, 0x3d, 0x2f, 0x19,
+	0x65, 0xa3, 0x5a, 0x40, 0xa7, 0xcf, 0x77, 0xeb, 0xdb, 0xde, 0x56, 0xc9, 0x29, 0x4f, 0xc8, 0x80,
+	0x56, 0xe8, 0xa0, 0xbb, 0x86, 0xf6, 0x85, 0x66, 0x67, 0xce, 0x36, 0x9a, 0x6b, 0xa7, 0xea, 0xed,
+	0x5e, 0xcb, 0xdb, 0x2e, 0x39, 0xe5, 0x49, 0x1f, 0x5b, 0x6c, 0xe3, 0xeb, 0xe9, 0xe4, 0x13, 0xed,
+	0x5e, 0x2b, 0x08, 0xc3, 0x0e, 0x87, 0xdc, 0x16, 0x9a, 0x89, 0xa0, 0xb4, 0x60, 0x9a, 0xd7, 0x65,
+	0x09, 0x78, 0xcc, 0x16, 0x48, 0x64, 0xe3, 0x7e, 0x0d, 0x4b, 0xa4, 0xe4, 0x06, 0x0a, 0xc7, 0x4f,
+	0xb1, 0x94, 0x3a, 0x05, 0xc9, 0xd9, 0x63, 0x60, 0x29, 0x93, 0xd3, 0x15, 0x2e, 0xe5, 0x98, 0x7b,
+	0x1a, 0x1d, 0x50, 0xf6, 0x37, 0xab, 0x47, 0xc0, 0xdf, 0x39, 0xc6, 0xdf, 0xfc, 0x2e, 0x90, 0x78,
+	0x19, 0x63, 0xcc, 0xed, 0x93, 0x59, 0x11, 0x0e, 0xba, 0x77, 0x20, 0x2f, 0x86, 0x21, 0xd8, 0xbb,
+	0x8b, 0x05, 0xb4, 0xb8, 0x7b, 0x18, 0xc1, 0xdb, 0x4c, 0x04, 0x49, 0x30, 0xf7, 0x13, 0xb2, 0xea,
+	0x00, 0x65, 0x77, 0xb3, 0x7a, 0x76, 0xa5, 0x05, 0x65, 0xb7, 0xf0, 0xf9, 0xc0, 0x9a, 0xee, 0xce,
+	0xbd, 0x02, 0x4d, 0xae, 0xd5, 0xd7, 0x57, 0x7b, 0xcd, 0x6e, 0x7d, 0x0d, 0xca, 0xda, 0x0b, 0xb4,
+	0x62, 0xee, 0xa9, 0x8c, 0x76, 0xb7, 0x7a, 0xf5, 0xa0, 0x10, 0x7e, 0xc8, 0xca, 0xdb, 0x02, 0x9a,
+	0x92, 0xd6, 0x50, 0x8e, 0xbe, 0x40, 0xcd, 0x73, 0x95, 0xfc, 0x91, 0x45, 0x7f, 0x09, 0x2f, 0x07,
+	0xd2, 0x1b, 0x54, 0xba, 0x45, 0x54, 0x94, 0x33, 0x78, 0xa9, 0xfb, 0x22, 0x9d, 0x32, 0x5d, 0xc9,
+	0x1d, 0x59, 0xf2, 0x17, 0x16, 0x02, 0xe9, 0x91, 0xd7, 0xbc, 0x05, 0x75, 0x0a, 0x2f, 0x7a, 0x5f,
+	0xa2, 0x53, 0x0a, 0x95, 0xd1, 0xc8, 0x0c, 0x5e, 0xfc, 0x70, 0x64, 0x59, 0x04, 0x7b, 0x5f, 0xa6,
+	0x13, 0xb2, 0x15, 0x04, 0xcb, 0x22, 0xc7, 0xae, 0xbc, 0x4a, 0x5f, 0x1a, 0xc1, 0xf1, 0xa5, 0x11,
+	0xec, 0x7d, 0x85, 0x4e, 0x73, 0x2b, 0xb9, 0x23, 0x04, 0xc7, 0x96, 0x46, 0x70, 0x7c, 0x69, 0x04,
+	0x7b, 0x5f, 0xa5, 0x53, 0x46, 0x2b, 0xa3, 0x91, 0x19, 0xbc, 0x3c, 0x62, 0x34, 0x2d, 0x67, 0x88,
+	0x9a, 0xf7, 0x35, 0x3a, 0x65, 0xac, 0x92, 0xa7, 0xd1, 0x2c, 0x2c, 0x04, 0xd2, 0xa7, 0xa8, 0x94,
+	0xc7, 0x90, 0xab, 0x2c, 0x4d, 0x4c, 0xfb, 0x3a, 0x9d, 0x36, 0x55, 0x19, 0x3b, 0xc2, 0xe7, 0x49,
+	0xcf, 0x61, 0xd5, 0x5c, 0x54, 0x99, 0x80, 0xb2, 0xf9, 0x0d, 0x3a, 0x2b, 0x53, 0x19, 0x5b, 0x9a,
+	0x5f, 0xc4, 0x8b, 0xcb, 0x2a, 0x0d, 0x50, 0x41, 0xe3, 0x2b, 0x24, 0xd8, 0xfb, 0x26, 0x9d, 0x94,
+	0xaf, 0xe4, 0x69, 0x50, 0xf1, 0x15, 0x12, 0x6c, 0x5a, 0x21, 0xc1, 0xde, 0xb7, 0xe8, 0xb4, 0x62,
+	0x65, 0xec, 0x08, 0x9f, 0x17, 0x5d, 0x21, 0xc1, 0xee, 0x55, 0x2a, 0x85, 0xbc, 0xb2, 0xfe, 0x1a,
+	0x9d, 0xe6, 0x54, 0x0a, 0x7c, 0x89, 0x3e, 0x59, 0x5e, 0x5a, 0xbe, 0x4a, 0xe1, 0x92, 0x97, 0xda,
+	0xab, 0xb5, 0x2f, 0x0c, 0x6a, 0xed, 0xaf, 0x33, 0x81, 0x51, 0x29, 0x9e, 0xad, 0x37, 0x9b, 0x9d,
+	0x2b, 0x4a, 0x87, 0xee, 0xea, 0x6c, 0x35, 0xd7, 0x5e, 0x72, 0x08, 0xa9, 0xdf, 0x1d, 0xd4, 0xdf,
+	0x15, 0x95, 0x1a, 0x28, 0xc0, 0xbf, 0x41, 0x27, 0x4f, 0x54, 0xbc, 0xb5, 0xfa, 0xea, 0xda, 0x6d,
+	0x4b, 0x4b, 0xe4, 0x36, 0x7f, 0x79, 0xf9, 0x36, 0xff, 0x18, 0xb9, 0x6d, 0x69, 0xf9, 0xd8, 0xe9,
+	0x7a, 0x7d, 0x5d, 0xe1, 0x0a, 0x8a, 0x73, 0x1b, 0xed, 0x97, 0x3e, 0x94, 0xea, 0xfc, 0x9b, 0x4e,
+	0xfa, 0xf2, 0x5c, 0xc9, 0x1d, 0x7f, 0xd5, 0x8f, 0x55, 0x8f, 0x07, 0x92, 0x4f, 0x59, 0xa6, 0x9b,
+	0x68, 0x46, 0xdd, 0xa2, 0x4a, 0x3d, 0xfb, 0xb6, 0x93, 0xa6, 0xa0, 0x09, 0xac, 0xfd, 0xca, 0xc6,
+	0x96, 0x85, 0xed, 0xa5, 0xa8, 0xb0, 0x55, 0xbf, 0xb3, 0xd7, 0xd8, 0x12, 0xa5, 0xe0, 0x71, 0xaa,
+	0xd6, 0xf6, 0x04, 0x13, 0x62, 0x94, 0xd5, 0x80, 0x97, 0xa1, 0xc9, 0xd0, 0x0a, 0x92, 0xf3, 0x09,
+	0x6a, 0x96, 0x0b, 0xc2, 0xc9, 0x90, 0xf9, 0x65, 0x34, 0x15, 0xda, 0xf1, 0xc4, 0xbf, 0x48, 0x0d,
+	0xa7, 0x83, 0x70, 0x3e, 0x4f, 0x78, 0xd5, 0x92, 0xe7, 0xfb, 0x93, 0xd4, 0xb2, 0x20, 0x2d, 0x79,
+	0xa2, 0x47, 0xb0, 0x09, 0xf6, 0x9e, 0xa2, 0x86, 0x59, 0x0d, 0x9b, 0xe0, 0x18, 0x36, 0xc1, 0xde,
+	0x07, 0xa9, 0xa1, 0xab, 0x63, 0x47, 0x2c, 0x79, 0x42, 0x7f, 0x88, 0x5a, 0x8e, 0xea, 0xd8, 0x04,
+	0xbb, 0x87, 0x51, 0x31, 0xb4, 0x14, 0x19, 0xf9, 0x61, 0x6a, 0x3a, 0x16, 0x84, 0x2e, 0x44, 0xfe,
+	0x5e, 0x81, 0xa6, 0x25, 0xbe, 0x30, 0xfe, 0x08, 0x35, 0x9e, 0x0a, 0x42, 0x2f, 0x61, 0xd2, 0xaa,
+	0x51, 0x41, 0xce, 0x7e, 0x94, 0x9a, 0x66, 0x64, 0x54, 0x90, 0xa9, 0xb1, 0x15, 0x10, 0xec, 0x7d,
+	0x8c, 0x5a, 0xe6, 0x23, 0x2b, 0x20, 0xd8, 0xb0, 0x02, 0x82, 0xbd, 0x8f, 0x53, 0xe3, 0x62, 0x74,
+	0x05, 0x11, 0x16, 0x78, 0x4e, 0x7e, 0x82, 0xda, 0x3a, 0x92, 0x05, 0x9e, 0x83, 0x1a, 0xb3, 0x90,
+	0x82, 0x9f, 0x04, 0x4d, 0x2f, 0x99, 0x85, 0x7c, 0x53, 0xa3, 0x82, 0x74, 0xfb, 0x14, 0x35, 0x9c,
+	0x90, 0x51, 0x41, 0x4e, 0xd5, 0xd1, 0xbe, 0xd0, 0x4e, 0x49, 0xa9, 0x4f, 0x53, 0xe3, 0xd4, 0x8a,
+	0x47, 0x78, 0x94, 0xa9, 0xd4, 0x46, 0x33, 0x11, 0x18, 0xd1, 0xb3, 0x9f, 0xa6, 0x48, 0xc3, 0x48,
+	0x1e, 0x0d, 0x4c, 0x34, 0xee, 0xb3, 0x28, 0x1c, 0xd7, 0x24, 0xcf, 0x33, 0x80, 0x96, 0x56, 0xf3,
+	0x08, 0x9f, 0x8a, 0xe6, 0x39, 0x83, 0x0e, 0x28, 0x9b, 0x5d, 0xa9, 0x11, 0xcf, 0x02, 0x85, 0xd6,
+	0xa2, 0x47, 0xa6, 0x88, 0xac, 0x0d, 0x4d, 0xe4, 0xc5, 0x40, 0x04, 0x81, 0xcf, 0x41, 0x48, 0x69,
+	0x54, 0x4f, 0x04, 0x4a, 0x90, 0x77, 0x4a, 0x56, 0x22, 0x60, 0xed, 0x79, 0x0a, 0x61, 0x27, 0x7b,
+	0x02, 0xee, 0x80, 0xcb, 0x1e, 0xcd, 0x9f, 0x7b, 0x0d, 0x9a, 0x95, 0x1b, 0x5e, 0xd7, 0x3f, 0xf7,
+	0x66, 0x69, 0xd1, 0xe3, 0xfa, 0x27, 0x64, 0xf6, 0x06, 0x4d, 0x07, 0x1d, 0x57, 0xd8, 0x88, 0x0a,
+	0xa2, 0x37, 0xd0, 0xf9, 0x52, 0x10, 0xcd, 0xc4, 0x3c, 0x40, 0x79, 0x5c, 0x41, 0x07, 0x0d, 0x2e,
+	0x78, 0xa1, 0x7c, 0x23, 0xf5, 0x11, 0x2a, 0xa4, 0xd9, 0x98, 0x0b, 0x5e, 0x38, 0x8f, 0x1b, 0x7d,
+	0xf0, 0x12, 0xfa, 0x26, 0xea, 0x43, 0x48, 0xa6, 0xb8, 0x0b, 0x5e, 0x51, 0x4f, 0x24, 0x45, 0x42,
+	0xb0, 0xf7, 0x66, 0xea, 0x41, 0xd7, 0x50, 0xc6, 0x68, 0x08, 0x1e, 0x10, 0x0d, 0xc1, 0xde, 0x5b,
+	0xa8, 0x9f, 0x50, 0x54, 0x99, 0xa3, 0x21, 0x78, 0x40, 0x34, 0x04, 0x7b, 0x6f, 0xa5, 0x3e, 0x84,
+	0xca, 0x32, 0x47, 0x43, 0xb0, 0x7b, 0x02, 0xcd, 0x19, 0x5c, 0x88, 0x02, 0xfc, 0x36, 0xea, 0x43,
+	0xca, 0x2e, 0x2f, 0xe6, 0x45, 0x94, 0xef, 0x2a, 0xba, 0xc4, 0x14, 0x8d, 0xf0, 0xf3, 0x76, 0xea,
+	0x47, 0xd1, 0x61, 0x07, 0xe3, 0x11, 0x89, 0xd2, 0xbe, 0x62, 0xa4, 0x17, 0x8a, 0xfc, 0x3b, 0xa8,
+	0x1b, 0x45, 0x98, 0xc5, 0xb9, 0x85, 0xb2, 0x3f, 0x20, 0x28, 0x82, 0xbd, 0x77, 0x52, 0x2f, 0x52,
+	0xa9, 0x25, 0x04, 0x45, 0xf0, 0xc0, 0xa0, 0x08, 0xf6, 0xde, 0x45, 0xfd, 0x28, 0xd2, 0x2d, 0x29,
+	0x28, 0x82, 0xdd, 0x57, 0x1a, 0xbf, 0x28, 0xde, 0x37, 0xfa, 0xd4, 0x4f, 0x4c, 0xcb, 0xc5, 0xbf,
+	0x31, 0xde, 0x4f, 0x6e, 0x36, 0x6f, 0x1c, 0xe8, 0x2c, 0xef, 0xa6, 0xbe, 0x4c, 0xe2, 0xce, 0xb0,
+	0x87, 0xa0, 0xe9, 0xdc, 0x6a, 0xe4, 0x1b, 0xda, 0xcf, 0x7b, 0xa8, 0xb7, 0x41, 0x6a, 0x2f, 0xfe,
+	0x05, 0x40, 0x87, 0xba, 0x07, 0x5d, 0x66, 0x70, 0xaa, 0xf4, 0xaa, 0xf7, 0x66, 0xd3, 0xf7, 0x2a,
+	0x21, 0xc9, 0xe6, 0x62, 0xe0, 0xb2, 0x77, 0xfd, 0x34, 0xba, 0xdc, 0x98, 0x5d, 0x4a, 0xad, 0xbf,
+	0x2f, 0x9b, 0xa6, 0xd6, 0x0b, 0xf0, 0x4b, 0x0d, 0x39, 0x19, 0xd1, 0x85, 0x9b, 0xf5, 0xd5, 0xb0,
+	0x44, 0xfe, 0x73, 0xb6, 0x94, 0x05, 0x5d, 0x08, 0xa3, 0x52, 0x17, 0x72, 0x2b, 0xa8, 0x40, 0xff,
+	0x42, 0xcd, 0x98, 0x2e, 0x84, 0x61, 0x45, 0x17, 0x72, 0x3b, 0x5e, 0xee, 0xfe, 0x95, 0x1a, 0x32,
+	0x5d, 0x08, 0xe3, 0xaa, 0x2e, 0xe4, 0x96, 0xbc, 0xa8, 0xfd, 0x1b, 0xb5, 0x2c, 0x48, 0x4b, 0x55,
+	0x17, 0x4a, 0x6c, 0x82, 0xbd, 0x7f, 0xa7, 0x86, 0x59, 0x0d, 0x5b, 0xe8, 0x1c, 0x05, 0x9b, 0x60,
+	0xef, 0x3f, 0xa8, 0xa1, 0xab, 0x63, 0x47, 0x2c, 0x79, 0x09, 0xfa, 0x4f, 0x6a, 0x39, 0xaa, 0x63,
+	0x0b, 0x5d, 0xc8, 0x2d, 0x45, 0x85, 0xf8, 0x2f, 0x6a, 0xca, 0x74, 0x21, 0x7c, 0xa0, 0xe9, 0x42,
+	0x81, 0x2f, 0x8c, 0xff, 0x9b, 0x1a, 0x33, 0x5d, 0xc8, 0x57, 0xa0, 0xe9, 0x42, 0xe1, 0x99, 0x95,
+	0x8c, 0xff, 0xa1, 0xa6, 0x19, 0x19, 0x95, 0xa2, 0x0b, 0xd5, 0x15, 0x10, 0xec, 0xfd, 0x2f, 0xb5,
+	0xcc, 0x47, 0x56, 0x20, 0x74, 0xa1, 0xb6, 0x02, 0x82, 0xbd, 0xff, 0xa3, 0xc6, 0xc5, 0xe8, 0x0a,
+	0x22, 0x2c, 0xf0, 0xfc, 0xbe, 0x30, 0x5a, 0xca, 0x82, 0x2e, 0x84, 0x71, 0x55, 0x17, 0x0a, 0xbf,
+	0x90, 0xbd, 0x3f, 0x33, 0xca, 0xce, 0x76, 0x25, 0xb3, 0x8a, 0x2e, 0x14, 0xbb, 0x89, 0x25, 0xe6,
+	0xeb, 0xa9, 0xe1, 0x84, 0x8c, 0x4a, 0xd1, 0x85, 0xdc, 0x4e, 0xc9, 0xb5, 0x9f, 0xa5, 0xc6, 0x43,
+	0xe8, 0x42, 0xf0, 0x18, 0xd1, 0x85, 0x1a, 0x8c, 0x90, 0x35, 0x3f, 0x47, 0x91, 0x86, 0xd3, 0x85,
+	0x0a, 0x98, 0xa6, 0x0b, 0x39, 0x9e, 0xaa, 0x0b, 0x7f, 0x1e, 0xd0, 0xd2, 0xeb, 0x42, 0xf0, 0x19,
+	0xd5, 0x85, 0xe1, 0x66, 0x57, 0x6a, 0xc5, 0x2f, 0x00, 0x85, 0x29, 0x74, 0xa1, 0x48, 0x91, 0x88,
+	0x2e, 0x8c, 0x80, 0x08, 0x02, 0x7f, 0x11, 0x42, 0x4a, 0xa7, 0x0b, 0x35, 0x28, 0x4d, 0x17, 0xc2,
+	0x27, 0xc0, 0xda, 0x2f, 0x51, 0x08, 0x5b, 0x5d, 0x08, 0x0e, 0x42, 0x5d, 0xa8, 0xf8, 0x73, 0x7f,
+	0x12, 0x15, 0x5a, 0xab, 0x9b, 0xac, 0xca, 0x41, 0xa9, 0xfb, 0x36, 0xc4, 0xf0, 0x23, 0x16, 0x00,
+	0x37, 0xaf, 0x6e, 0xd2, 0x82, 0x48, 0xff, 0x3b, 0xd1, 0xee, 0x6e, 0x9d, 0x0f, 0xf6, 0xb6, 0xe4,
+	0x88, 0x7b, 0x06, 0x4d, 0x86, 0x08, 0x50, 0xd3, 0x7e, 0x0b, 0x20, 0xae, 0xb6, 0x87, 0x60, 0x05,
+	0x15, 0x30, 0x26, 0x5a, 0xca, 0x90, 0xbb, 0x8e, 0xa6, 0x42, 0x10, 0x5e, 0x63, 0x7f, 0x1b, 0x50,
+	0xae, 0xb1, 0x47, 0x81, 0x6a, 0x0c, 0x30, 0x85, 0x96, 0x3a, 0xa6, 0xe1, 0xf0, 0x0a, 0xfd, 0x3b,
+	0xa9, 0x71, 0x4e, 0x1a, 0x70, 0x78, 0x7d, 0x8f, 0x90, 0x46, 0xb0, 0xf7, 0xbb, 0xc3, 0x90, 0x46,
+	0x70, 0x8c, 0x34, 0x82, 0x63, 0xa4, 0x11, 0xec, 0xfd, 0xde, 0x50, 0xa4, 0x09, 0x18, 0x95, 0xb4,
+	0x08, 0x0e, 0x6f, 0x2d, 0xdf, 0x19, 0x8a, 0xb4, 0x28, 0x0e, 0x6f, 0x4c, 0x0d, 0x54, 0x0c, 0x71,
+	0x44, 0xaf, 0xf9, 0x7d, 0x00, 0xba, 0xd6, 0x1e, 0x88, 0xb7, 0x30, 0x40, 0x9a, 0x6c, 0x69, 0x83,
+	0x6e, 0x13, 0x4d, 0x4b, 0xea, 0x04, 0xd6, 0x1f, 0x00, 0xd6, 0x75, 0x29, 0xc8, 0x5b, 0x57, 0xc1,
+	0xa6, 0x5a, 0xfa, 0xa8, 0xb6, 0x1b, 0xa0, 0x2f, 0xfe, 0x61, 0xea, 0xdd, 0xc0, 0x3a, 0xa8, 0xbe,
+	0x1b, 0xa0, 0xa9, 0xc6, 0xd8, 0x23, 0xd8, 0xfb, 0xa3, 0xe1, 0xd8, 0x13, 0xdf, 0x93, 0xc6, 0x1e,
+	0xc1, 0x06, 0xf6, 0x08, 0xf6, 0xfe, 0x78, 0x48, 0xf6, 0x04, 0x98, 0xce, 0x5e, 0x64, 0xfb, 0xf1,
+	0x9e, 0xfe, 0x27, 0xa9, 0xb7, 0x1f, 0x74, 0x7f, 0x7d, 0xfb, 0x71, 0x45, 0xa0, 0xa5, 0x13, 0x28,
+	0x82, 0x3f, 0x4d, 0x9f, 0x4e, 0xcc, 0x41, 0x24, 0x9d, 0x40, 0x4f, 0xa8, 0xbb, 0x01, 0xf4, 0xc4,
+	0x9f, 0xa5, 0xde, 0x0d, 0x4c, 0x79, 0xe8, 0xbb, 0x01, 0xc4, 0xc8, 0x26, 0xda, 0x17, 0x82, 0x28,
+	0x62, 0xe4, 0xcf, 0x01, 0xe9, 0xe5, 0xf6, 0x48, 0xa1, 0x00, 0x01, 0xb4, 0x62, 0x2b, 0x32, 0xec,
+	0x9e, 0x47, 0x33, 0x11, 0x44, 0xd1, 0x56, 0xff, 0x02, 0x40, 0xaf, 0x4f, 0x09, 0xca, 0xc7, 0x00,
+	0x77, 0x5f, 0x2b, 0xfe, 0x89, 0xbb, 0x8d, 0xf6, 0x87, 0xd0, 0xaa, 0x44, 0xf9, 0x4b, 0x00, 0x3e,
+	0x6e, 0x0f, 0x2c, 0x55, 0x09, 0xc0, 0x4e, 0xb7, 0xa2, 0xe3, 0xee, 0x39, 0x74, 0x40, 0xa9, 0xbe,
+	0x8a, 0x5a, 0xf9, 0x2e, 0xa0, 0xae, 0xa4, 0xa9, 0xc1, 0xa1, 0x4e, 0x01, 0x58, 0xb7, 0x15, 0xfb,
+	0xc0, 0xbd, 0x07, 0x79, 0x31, 0x5c, 0xc1, 0xf4, 0x5f, 0x01, 0xf4, 0x89, 0xd4, 0xd0, 0x1a, 0xd7,
+	0x07, 0x5a, 0xa6, 0xcf, 0xc4, 0xfe, 0x65, 0x8d, 0x0e, 0x34, 0xc7, 0x5f, 0xa7, 0xda, 0xbf, 0xac,
+	0xf3, 0x4b, 0xd1, 0x41, 0xf7, 0x6f, 0x38, 0x24, 0x92, 0x71, 0x5b, 0x41, 0xf9, 0x9b, 0x54, 0xc9,
+	0x08, 0x8d, 0x5f, 0xc2, 0xd0, 0x64, 0x94, 0x63, 0x02, 0xa7, 0xa7, 0xe0, 0xfc, 0x6d, 0x2a, 0x9c,
+	0x93, 0x06, 0x1c, 0x39, 0xa6, 0x90, 0x46, 0x30, 0xc0, 0xfc, 0x5d, 0x5a, 0xd2, 0x08, 0x8e, 0x91,
+	0x06, 0x43, 0x2a, 0x69, 0x02, 0xe5, 0xef, 0x53, 0x93, 0xa6, 0xc2, 0x08, 0xd2, 0x74, 0x9c, 0x9e,
+	0x82, 0xf3, 0x0f, 0xa9, 0x49, 0x8b, 0xe2, 0xc8, 0x31, 0xd1, 0xd2, 0x78, 0x1b, 0x05, 0xa0, 0x7f,
+	0x4c, 0xd5, 0xd2, 0x78, 0xdf, 0x97, 0x48, 0xf4, 0xdb, 0x50, 0x06, 0x43, 0xea, 0x58, 0x89, 0x06,
+	0xa4, 0x7f, 0x4a, 0x47, 0x1d, 0xf3, 0x10, 0xa1, 0x2e, 0x1c, 0x73, 0x4b, 0x08, 0x75, 0xda, 0xf5,
+	0xce, 0x3a, 0x40, 0x3c, 0x9d, 0x2b, 0x39, 0xe5, 0x3d, 0xd5, 0x91, 0x60, 0x9c, 0x0d, 0x32, 0x8b,
+	0x43, 0x68, 0x2f, 0x58, 0x80, 0x3c, 0x7d, 0x86, 0x9a, 0xe4, 0xaa, 0x23, 0x01, 0xcc, 0x03, 0xb9,
+	0xfc, 0x52, 0x34, 0x01, 0x36, 0x5c, 0x2b, 0x3f, 0x4b, 0x8d, 0xa6, 0xab, 0x23, 0x01, 0x4c, 0xe5,
+	0x62, 0x37, 0xb4, 0xe2, 0x4a, 0xf7, 0x39, 0x6a, 0x55, 0x08, 0xad, 0xb8, 0x54, 0x55, 0xf1, 0x08,
+	0xf6, 0x9e, 0xa7, 0x46, 0x59, 0x15, 0x8f, 0x60, 0x1d, 0x8f, 0x60, 0xef, 0x33, 0xd4, 0xc8, 0xd5,
+	0xf0, 0x54, 0x2b, 0x2e, 0x12, 0x3f, 0x4b, 0xad, 0x46, 0x35, 0x3c, 0x82, 0xdd, 0x97, 0xa1, 0x02,
+	0x58, 0x09, 0xd9, 0xf5, 0x39, 0x6a, 0x36, 0x56, 0x1d, 0x09, 0x60, 0xb6, 0x90, 0x68, 0x65, 0x34,
+	0xc9, 0x31, 0x85, 0xe1, 0xe7, 0xa9, 0xe1, 0x54, 0x75, 0x24, 0x00, 0x07, 0xa1, 0xbc, 0x0a, 0x23,
+	0x00, 0x6d, 0xf5, 0xcb, 0xd4, 0x2c, 0x13, 0x46, 0x00, 0xea, 0x48, 0x47, 0x25, 0xd8, 0xfb, 0x15,
+	0x6a, 0x95, 0xd7, 0x51, 0xd9, 0x01, 0x82, 0x86, 0x4a, 0xb0, 0xf7, 0xab, 0xd4, 0xb0, 0x18, 0x41,
+	0x55, 0xa3, 0xe5, 0x9a, 0xe4, 0x05, 0x6a, 0xe7, 0x84, 0xd1, 0x72, 0x51, 0x21, 0x99, 0x03, 0x45,
+	0xf1, 0x05, 0x6a, 0x35, 0x2e, 0x99, 0x03, 0x49, 0x10, 0x46, 0x00, 0x7a, 0xe0, 0x8b, 0xd4, 0x68,
+	0x22, 0x8c, 0x00, 0x3a, 0xfa, 0x2a, 0x2a, 0x82, 0x8d, 0xd2, 0xce, 0xbf, 0x94, 0x4b, 0xff, 0x18,
+	0xb7, 0x3a, 0x12, 0x40, 0xa8, 0xb2, 0x85, 0xdf, 0x8e, 0xf6, 0xa9, 0x10, 0xa2, 0xab, 0x7c, 0x39,
+	0x37, 0xd4, 0x2b, 0x36, 0xd5, 0x91, 0x60, 0x5a, 0x02, 0x89, 0x2e, 0xb2, 0x86, 0x60, 0x50, 0x6b,
+	0xd8, 0x5f, 0xc9, 0x0d, 0xf1, 0x7e, 0x4d, 0x75, 0x24, 0x98, 0x62, 0x2e, 0x95, 0x26, 0x7d, 0x0a,
+	0xb9, 0x62, 0xe3, 0x2a, 0x1d, 0xfa, 0xab, 0xb9, 0x34, 0xcf, 0xa2, 0xab, 0x23, 0x41, 0x91, 0x6f,
+	0x77, 0xd9, 0x8d, 0xcf, 0xa2, 0x03, 0x3a, 0x80, 0x20, 0xed, 0x6b, 0xb9, 0x94, 0x6f, 0xd6, 0x54,
+	0x47, 0x82, 0x7d, 0x2a, 0x8c, 0x20, 0xec, 0xd5, 0xbc, 0x72, 0x00, 0x53, 0x5f, 0xcf, 0x59, 0xbf,
+	0x26, 0x78, 0x0b, 0x9d, 0x2d, 0x98, 0x52, 0x7c, 0xc9, 0xdc, 0x80, 0x3d, 0xba, 0xe8, 0x7d, 0x43,
+	0x6c, 0xd2, 0x09, 0x65, 0x93, 0x2e, 0x46, 0xed, 0x7c, 0xef, 0x9b, 0x26, 0x3b, 0x3f, 0x6a, 0xb7,
+	0xe4, 0x7d, 0xcb, 0x64, 0xb7, 0xe4, 0x5e, 0x85, 0xf6, 0xf3, 0x0c, 0xd2, 0x1f, 0x68, 0xdd, 0x97,
+	0x97, 0x2f, 0xf4, 0x54, 0x9d, 0x00, 0xbe, 0x41, 0xfd, 0x79, 0xd6, 0x35, 0x82, 0xf6, 0xe8, 0xc3,
+	0xac, 0xf7, 0xe5, 0xd5, 0xb7, 0x7b, 0xaa, 0x0e, 0xe7, 0x32, 0xf2, 0x2c, 0xeb, 0x5a, 0x34, 0x13,
+	0x9d, 0xce, 0x2b, 0xe9, 0xfd, 0x79, 0xe5, 0x55, 0x9f, 0xaa, 0x13, 0xec, 0xd7, 0xa7, 0xf3, 0xca,
+	0x7a, 0x4d, 0x7c, 0x3e, 0xaf, 0xb1, 0x0f, 0xe4, 0xe5, 0x7b, 0x3f, 0xf1, 0xe9, 0x27, 0xc5, 0x63,
+	0x30, 0xd3, 0xea, 0x09, 0xf6, 0x1e, 0xcc, 0x47, 0x5f, 0x02, 0x32, 0x46, 0x40, 0x70, 0x52, 0x04,
+	0x04, 0x7b, 0x0f, 0xe5, 0x95, 0x37, 0x82, 0xcc, 0x11, 0x10, 0x9c, 0x14, 0x01, 0xc1, 0xde, 0xc3,
+	0x79, 0xf9, 0x7a, 0x90, 0x39, 0x02, 0xf6, 0xe8, 0x6b, 0x36, 0x3a, 0x5d, 0x54, 0xe9, 0x47, 0xf2,
+	0xea, 0xbb, 0x42, 0x55, 0x27, 0x38, 0xa0, 0x7b, 0x10, 0xf5, 0xfd, 0x06, 0xe4, 0xc5, 0x22, 0x10,
+	0x3e, 0x1e, 0xcd, 0x6b, 0x2f, 0x0e, 0x55, 0x9d, 0x60, 0x26, 0x12, 0x85, 0xa8, 0xfd, 0xd7, 0xc6,
+	0xa9, 0x84, 0x2e, 0xf0, 0xfe, 0xbc, 0xf6, 0x16, 0x51, 0x9c, 0x47, 0xe8, 0x0b, 0x49, 0x81, 0x10,
+	0xec, 0x7d, 0x20, 0xaf, 0xbe, 0x52, 0x94, 0x10, 0x08, 0xc1, 0xc9, 0x81, 0x10, 0xec, 0x3d, 0x96,
+	0xd7, 0xde, 0x2f, 0x4a, 0x0a, 0x84, 0x60, 0xf7, 0xc6, 0xf8, 0x17, 0xc2, 0x1b, 0xcb, 0xe3, 0x79,
+	0xc3, 0xcb, 0x46, 0xf1, 0x6f, 0x86, 0x37, 0x9c, 0x9b, 0x0c, 0x1b, 0x03, 0x5a, 0xcf, 0x13, 0x79,
+	0xf3, 0x9b, 0x47, 0x86, 0x3d, 0x02, 0x5d, 0xe9, 0x96, 0x38, 0xb7, 0xd0, 0x9f, 0x2e, 0xe6, 0x07,
+	0xbf, 0x86, 0x14, 0x27, 0x1b, 0x5a, 0xd8, 0x6b, 0xd1, 0x5c, 0xd4, 0xa1, 0xd2, 0xcc, 0x9e, 0xcc,
+	0x0f, 0xfd, 0x4e, 0x52, 0xd5, 0x09, 0x66, 0x75, 0x60, 0xf5, 0xef, 0xd3, 0x4b, 0xe3, 0x19, 0xa3,
+	0x34, 0x85, 0xa7, 0xf2, 0x43, 0xbc, 0xa0, 0x54, 0x75, 0x82, 0x83, 0xd1, 0x3c, 0x0b, 0x6d, 0xe6,
+	0x7e, 0x0a, 0x4d, 0x68, 0xbd, 0xef, 0x45, 0x7c, 0xd3, 0x7c, 0xee, 0x6e, 0x84, 0x94, 0x7e, 0xf8,
+	0x62, 0x22, 0x5f, 0x87, 0x0a, 0xda, 0x9b, 0x9c, 0xb6, 0xe0, 0xd4, 0x81, 0xf6, 0x4e, 0x44, 0x3a,
+	0x07, 0xca, 0xe1, 0xb9, 0xb5, 0x83, 0x6b, 0x51, 0x31, 0x7a, 0x38, 0xee, 0x16, 0x51, 0xf6, 0x8e,
+	0xfa, 0x79, 0xe6, 0x64, 0x4f, 0x40, 0xff, 0xd7, 0xdd, 0x8f, 0x72, 0xe7, 0x56, 0x9b, 0xbd, 0xba,
+	0x97, 0x61, 0x63, 0xf0, 0x8f, 0x4a, 0xe6, 0x4a, 0x67, 0xee, 0x3a, 0x34, 0x1d, 0x3b, 0xf9, 0xde,
+	0xc9, 0x41, 0x4e, 0x75, 0xf0, 0x72, 0xe4, 0xc6, 0x0f, 0xb5, 0x77, 0xf2, 0x30, 0x6d, 0xf6, 0x70,
+	0x72, 0xf7, 0x1e, 0x0a, 0x89, 0x41, 0xf0, 0x53, 0xba, 0x9d, 0x1c, 0x64, 0x93, 0x83, 0xd8, 0xa5,
+	0x07, 0x37, 0x39, 0x88, 0x5d, 0x7a, 0x18, 0x55, 0x3d, 0x1c, 0x47, 0xfb, 0x0c, 0xe7, 0xc2, 0x3b,
+	0xb9, 0x18, 0x53, 0x5d, 0xac, 0xa0, 0xfd, 0xa6, 0xe3, 0xde, 0x9d, 0x7c, 0x4c, 0x99, 0xb9, 0x94,
+	0xe7, 0xb8, 0x3b, 0x39, 0xc8, 0x0c, 0x88, 0x63, 0x97, 0x54, 0xe4, 0x07, 0xc5, 0xb1, 0x4b, 0x1f,
+	0x45, 0xf3, 0x17, 0xa2, 0x1c, 0xa8, 0xee, 0xe4, 0xc1, 0x49, 0xd8, 0x14, 0xf2, 0xa8, 0x74, 0x27,
+	0x0f, 0xe3, 0x66, 0x2e, 0xe5, 0x29, 0xe8, 0x4e, 0x0e, 0x26, 0x54, 0x07, 0xe7, 0xd1, 0x01, 0xe3,
+	0xe1, 0xa6, 0xc1, 0xc9, 0x2b, 0x55, 0x27, 0x69, 0x1f, 0xe6, 0x2a, 0xd0, 0xf7, 0x20, 0x2f, 0xe9,
+	0x88, 0xd3, 0x80, 0x7e, 0xb3, 0x8a, 0x3e, 0xc4, 0x03, 0x5e, 0x65, 0x01, 0xaf, 0x45, 0x33, 0xe6,
+	0xa3, 0x4e, 0x03, 0xfc, 0x8f, 0xea, 0xf0, 0x29, 0x9f, 0xf8, 0x2a, 0xe0, 0x3d, 0x34, 0x9b, 0x70,
+	0xe2, 0x69, 0x40, 0xbf, 0x41, 0xa7, 0xde, 0xf6, 0x21, 0xb0, 0x16, 0xf3, 0x5c, 0xf2, 0x69, 0xa7,
+	0x01, 0xf9, 0x15, 0x7a, 0xdc, 0x29, 0x1e, 0x0b, 0xc7, 0x76, 0xab, 0x7e, 0xe6, 0xa9, 0x62, 0xe6,
+	0x76, 0xea, 0x25, 0x90, 0x30, 0x91, 0xe3, 0x4c, 0xd5, 0xc3, 0xf4, 0xee, 0x3c, 0x9c, 0x4c, 0xf6,
+	0x50, 0xd8, 0x5d, 0x3f, 0xd3, 0xcf, 0x20, 0x55, 0x07, 0xd9, 0xdd, 0x07, 0x91, 0xe0, 0xc1, 0xdd,
+	0x7d, 0x10, 0x09, 0x1e, 0x46, 0x77, 0xf2, 0x00, 0x25, 0x34, 0x7a, 0x22, 0xa8, 0xba, 0x18, 0xdb,
+	0x65, 0x18, 0xfa, 0x51, 0x9f, 0xea, 0x61, 0x7c, 0x27, 0x0f, 0x57, 0x23, 0x24, 0xff, 0x1e, 0xb7,
+	0xd6, 0x25, 0x55, 0x34, 0x73, 0xe2, 0xee, 0x6e, 0xbd, 0xbd, 0xdd, 0xe8, 0xb4, 0x87, 0xd3, 0x58,
+	0xaa, 0xa7, 0xa1, 0xb4, 0xd2, 0xa1, 0x79, 0x34, 0x2e, 0xc5, 0xf6, 0x38, 0x02, 0x5d, 0x5c, 0x1c,
+	0xa1, 0xff, 0xbb, 0x12, 0x1c, 0xff, 0xf1, 0x5b, 0x8a, 0x8e, 0xbb, 0x17, 0x8d, 0x5d, 0x5f, 0x3d,
+	0x1e, 0xbc, 0xea, 0xa6, 0x13, 0xc5, 0xcc, 0xe1, 0xf1, 0x3d, 0xf7, 0xd6, 0x8a, 0x17, 0x2e, 0x5c,
+	0xb8, 0x90, 0xf1, 0xcf, 0xa0, 0xd9, 0xba, 0x58, 0xc4, 0x29, 0xed, 0xce, 0xa2, 0x6b, 0x21, 0x3a,
+	0xbd, 0x7b, 0x6b, 0x8c, 0xe5, 0x03, 0xf5, 0x28, 0x35, 0xf4, 0x2b, 0xf2, 0xeb, 0xc8, 0x33, 0x80,
+	0xc0, 0x1f, 0xe4, 0x36, 0x28, 0x6f, 0xa8, 0xb1, 0x6c, 0x9d, 0x89, 0xa1, 0xb0, 0xdc, 0xf6, 0x37,
+	0xd0, 0x41, 0x03, 0xcc, 0xb6, 0x3d, 0xce, 0x1b, 0x6b, 0x2c, 0xa7, 0x67, 0x63, 0x38, 0x50, 0x02,
+	0x12, 0x80, 0x7a, 0xf6, 0x40, 0x6f, 0xaa, 0xb1, 0xd4, 0x8f, 0x03, 0x41, 0xa5, 0x48, 0x26, 0x8e,
+	0x60, 0x2b, 0x9c, 0x37, 0xd7, 0x58, 0x85, 0x30, 0x12, 0x47, 0xf0, 0x00, 0xe2, 0x2c, 0x71, 0xde,
+	0x52, 0x63, 0x75, 0xc4, 0x4c, 0x5c, 0x22, 0x50, 0xcf, 0x1e, 0xe8, 0xad, 0x35, 0x56, 0x6e, 0xcc,
+	0xc4, 0x11, 0xec, 0x37, 0xd0, 0x9c, 0x01, 0x48, 0x9c, 0x5c, 0xd8, 0x20, 0xbd, 0xad, 0xc6, 0xaa,
+	0x92, 0x17, 0x43, 0xe2, 0x55, 0xcc, 0xbf, 0x03, 0x5d, 0x62, 0x22, 0x2f, 0x0d, 0xd6, 0xdb, 0x6b,
+	0x4c, 0xb4, 0x1e, 0x8c, 0xd3, 0xc7, 0xbd, 0x25, 0x6c, 0x88, 0x75, 0x78, 0xb5, 0xcf, 0x02, 0xe9,
+	0x1d, 0x35, 0xa6, 0x6e, 0xe3, 0x1b, 0x82, 0x69, 0xe3, 0x41, 0xf4, 0x59, 0x7e, 0x51, 0xef, 0xac,
+	0x31, 0x0d, 0x9c, 0x40, 0x1f, 0xc1, 0x03, 0xe9, 0xb3, 0xc4, 0x7a, 0x57, 0x8d, 0x69, 0xe5, 0x24,
+	0xfa, 0x12, 0xf7, 0x1f, 0x1c, 0xf6, 0x58, 0x41, 0xf5, 0x6b, 0x4c, 0x54, 0xc7, 0xf7, 0x1f, 0x68,
+	0xf2, 0xa4, 0x8c, 0x82, 0xc3, 0x1d, 0x1b, 0xa0, 0x77, 0xd7, 0x58, 0x17, 0x30, 0x64, 0x14, 0x9c,
+	0xf8, 0x9a, 0x37, 0x04, 0x3b, 0x2b, 0xb2, 0xc2, 0x79, 0x4f, 0x8d, 0x49, 0xf4, 0xf8, 0x86, 0x60,
+	0x02, 0xdf, 0x7f, 0xd0, 0x41, 0x97, 0x19, 0x70, 0xe4, 0x11, 0x92, 0x15, 0xd8, 0x7b, 0x6b, 0x43,
+	0x48, 0xf9, 0xb9, 0xd8, 0x12, 0xc3, 0xcf, 0xfc, 0x27, 0x1c, 0x54, 0x4a, 0x5c, 0x26, 0x7f, 0x3c,
+	0x60, 0xb5, 0xd2, 0xfb, 0x6a, 0xc3, 0xc9, 0xfe, 0xcb, 0xcc, 0x8b, 0xe5, 0x1f, 0xfb, 0x8f, 0x38,
+	0xe8, 0xfb, 0x0c, 0xeb, 0x55, 0x9e, 0xcb, 0x58, 0xad, 0xf6, 0x7d, 0xb5, 0x61, 0xfe, 0x4a, 0xb8,
+	0x24, 0xb6, 0x56, 0xf9, 0xa1, 0x7f, 0xbf, 0x83, 0x2e, 0x37, 0xf6, 0x08, 0x79, 0x8c, 0x67, 0xb5,
+	0xd4, 0xfb, 0x6b, 0xa9, 0xfe, 0xa4, 0xb8, 0xd4, 0xd0, 0x59, 0xc2, 0x4f, 0xfd, 0xc7, 0x1c, 0x74,
+	0x68, 0xc0, 0x22, 0xd3, 0x6c, 0x80, 0x07, 0x6a, 0x69, 0xff, 0x00, 0xb9, 0x3c, 0x69, 0xa9, 0xe2,
+	0xcb, 0x7f, 0xd8, 0x41, 0x32, 0xdd, 0xf4, 0x9b, 0xd6, 0x36, 0x2b, 0x7c, 0xb0, 0xc6, 0x1e, 0x47,
+	0xd9, 0xbc, 0x69, 0x63, 0x16, 0xb0, 0x41, 0xc2, 0x6a, 0xfc, 0xa6, 0x5a, 0x63, 0xf4, 0x07, 0x46,
+	0x76, 0xc9, 0xd4, 0x57, 0xaf, 0x8b, 0x4b, 0x34, 0xed, 0xf9, 0x92, 0xbf, 0xa9, 0x96, 0xce, 0xc8,
+	0x33, 0x26, 0xbb, 0x6c, 0xe8, 0xeb, 0xd7, 0xcd, 0x67, 0xe3, 0x80, 0xa0, 0x1b, 0xef, 0x54, 0xbb,
+	0x5d, 0xf4, 0xb1, 0x94, 0xdd, 0xae, 0xee, 0x6b, 0xd7, 0xd5, 0xbd, 0x38, 0x22, 0x57, 0x90, 0x9b,
+	0x66, 0xc8, 0x14, 0x12, 0xf2, 0x81, 0xbe, 0x7a, 0xdd, 0xdd, 0x80, 0xc8, 0xa5, 0x64, 0x37, 0x91,
+	0x56, 0xcb, 0x2e, 0xfb, 0x60, 0x3f, 0x7e, 0x5d, 0xde, 0x4c, 0x2d, 0xc1, 0x83, 0xa8, 0xb5, 0x84,
+	0x7d, 0xa8, 0xaf, 0x5d, 0xb7, 0x4f, 0xa0, 0x96, 0xe0, 0x41, 0xd4, 0x5a, 0x42, 0x3e, 0xdc, 0x57,
+	0xaf, 0xeb, 0x27, 0x50, 0x4b, 0xb0, 0xdf, 0x55, 0x25, 0x4c, 0xec, 0xa9, 0x9c, 0x15, 0xe4, 0x23,
+	0x7d, 0xfd, 0xba, 0xff, 0xc1, 0x38, 0xa8, 0xd0, 0x9d, 0x77, 0xa1, 0x4b, 0x8d, 0xd4, 0xa6, 0x81,
+	0x7d, 0xb4, 0x1f, 0xf9, 0xb9, 0x80, 0x39, 0x03, 0xbd, 0x42, 0x83, 0xde, 0x69, 0xde, 0x49, 0xf6,
+	0x22, 0xf4, 0xfd, 0xfd, 0xc8, 0xcf, 0x0d, 0x18, 0xb6, 0x11, 0xe8, 0xd1, 0x41, 0x0c, 0x5b, 0x7e,
+	0xa9, 0x1f, 0xe8, 0xeb, 0x3f, 0x57, 0x90, 0xc4, 0x30, 0xc1, 0x83, 0x19, 0xb6, 0x84, 0x7d, 0xac,
+	0x1f, 0xf9, 0xb9, 0x83, 0x44, 0x86, 0x09, 0xf6, 0xcf, 0x9b, 0xb7, 0x70, 0x0a, 0x9d, 0xfa, 0x78,
+	0xdf, 0xf8, 0x73, 0x09, 0x86, 0xbd, 0xcc, 0x85, 0xeb, 0xeb, 0x12, 0x12, 0xd6, 0x5e, 0xb9, 0x3e,
+	0xd1, 0x4f, 0xfa, 0xb9, 0x05, 0x53, 0xee, 0x82, 0x9a, 0x7d, 0xbd, 0x63, 0xde, 0x5b, 0xf6, 0x7a,
+	0xf6, 0x62, 0x7f, 0xa7, 0xdf, 0x6b, 0x30, 0x6c, 0x36, 0xd0, 0xba, 0x17, 0x35, 0x51, 0x66, 0x7a,
+	0x5e, 0x6a, 0xb5, 0x92, 0x27, 0xfb, 0xdf, 0x83, 0x1f, 0x7c, 0xb8, 0x24, 0xbe, 0x58, 0xa9, 0x7a,
+	0x1f, 0xd7, 0x54, 0xaf, 0xf9, 0x19, 0xab, 0xd5, 0x92, 0x9f, 0xea, 0x0f, 0xf5, 0x8b, 0x11, 0x97,
+	0x99, 0x6a, 0xb3, 0x54, 0x69, 0x6b, 0xea, 0x91, 0x93, 0x76, 0x59, 0xd0, 0x6e, 0x91, 0xdf, 0x75,
+	0xd8, 0xcd, 0x42, 0x79, 0xe6, 0x14, 0x28, 0x57, 0x0c, 0xfd, 0x75, 0x55, 0xb4, 0xe8, 0x97, 0x0d,
+	0xad, 0x60, 0x3e, 0xc8, 0x60, 0xd4, 0x43, 0xa7, 0x40, 0xbd, 0xa2, 0xe8, 0x9f, 0x55, 0x77, 0x6c,
+	0xe4, 0xb2, 0xa2, 0x15, 0xd0, 0x87, 0x18, 0x90, 0x7a, 0xea, 0x14, 0x68, 0x57, 0x1c, 0x13, 0x90,
+	0x52, 0x48, 0x86, 0x0f, 0x33, 0xa4, 0x82, 0x01, 0x89, 0x6b, 0x85, 0x44, 0xee, 0x2c, 0x8b, 0xde,
+	0x47, 0x18, 0x50, 0xd6, 0xcc, 0x1d, 0xc1, 0x03, 0xb8, 0xb3, 0x04, 0xfa, 0x28, 0x03, 0x72, 0x13,
+	0xb8, 0x4b, 0x44, 0x4a, 0xa1, 0x09, 0x3e, 0xc6, 0x90, 0x46, 0x13, 0xb8, 0x23, 0xd8, 0xbf, 0x5d,
+	0x2d, 0xa0, 0xd1, 0xcb, 0x9e, 0x56, 0x50, 0x1f, 0x67, 0x50, 0xea, 0xd1, 0x53, 0xa0, 0x5f, 0x11,
+	0xf5, 0x9b, 0x6a, 0x5b, 0x8c, 0x5d, 0x16, 0xb5, 0x02, 0xfb, 0x04, 0x03, 0x53, 0xcf, 0x9e, 0x82,
+	0xc8, 0x15, 0xd3, 0x84, 0x5d, 0x61, 0xdf, 0xf6, 0x3f, 0xc9, 0xa0, 0x32, 0x86, 0x5d, 0x01, 0xcd,
+	0x7e, 0x00, 0x83, 0x96, 0x5f, 0xd6, 0xa7, 0x18, 0x52, 0x3e, 0x89, 0x41, 0x82, 0x07, 0x32, 0x68,
+	0x09, 0xf6, 0x69, 0x06, 0x56, 0x4c, 0x64, 0x30, 0x71, 0x17, 0xa6, 0x68, 0xeb, 0x4f, 0x33, 0x2c,
+	0xc7, 0xb0, 0x0b, 0x79, 0x1b, 0x4f, 0xc8, 0x2c, 0xfb, 0x2e, 0xfe, 0x0c, 0x43, 0x1a, 0x37, 0x65,
+	0x16, 0xb4, 0x6c, 0xf3, 0xae, 0xb0, 0x6f, 0xd8, 0xcf, 0x32, 0xa0, 0x09, 0xc3, 0xae, 0x80, 0xae,
+	0xfc, 0x90, 0x76, 0x02, 0x65, 0xb8, 0xed, 0x6b, 0x85, 0xf6, 0x1c, 0x43, 0x1b, 0xfe, 0x08, 0x2a,
+	0x88, 0xde, 0x11, 0xa6, 0xea, 0xa1, 0x94, 0xb8, 0xce, 0x34, 0x27, 0x10, 0xcf, 0xb3, 0xa5, 0x7e,
+	0x4f, 0xce, 0xa0, 0x02, 0xc3, 0x25, 0x63, 0xff, 0x51, 0x4d, 0xee, 0x98, 0xee, 0x1b, 0x5b, 0x2d,
+	0xf7, 0x33, 0x7c, 0xb9, 0x43, 0x1f, 0x42, 0x05, 0xb1, 0x5b, 0xca, 0xfe, 0x03, 0xda, 0x21, 0x94,
+	0xf1, 0xc2, 0xb2, 0xd5, 0x5a, 0x3f, 0xcb, 0x77, 0x41, 0xfa, 0x53, 0xa8, 0x20, 0x7e, 0xcd, 0x99,
+	0xca, 0xb1, 0x43, 0x03, 0x56, 0x99, 0x66, 0x0f, 0x7c, 0x8e, 0x93, 0x3a, 0xd4, 0x31, 0x54, 0x60,
+	0xbc, 0x27, 0xed, 0x3f, 0xa2, 0x1e, 0x43, 0xe9, 0x37, 0x9c, 0x6d, 0x96, 0xf8, 0x79, 0xb6, 0xc4,
+	0x94, 0xe7, 0x50, 0xfa, 0x3d, 0xeb, 0x84, 0xe5, 0xac, 0x14, 0xc4, 0xab, 0xfa, 0xbd, 0x76, 0xa3,
+	0xd3, 0x5e, 0x99, 0x8d, 0xbf, 0x23, 0xc9, 0x3e, 0x38, 0xbc, 0x88, 0xf6, 0xaa, 0xef, 0x89, 0x9b,
+	0x1e, 0x88, 0x22, 0x77, 0x42, 0x3e, 0x10, 0x7d, 0xc1, 0x59, 0x79, 0xcd, 0x6b, 0x5e, 0xbd, 0xd1,
+	0xe8, 0x9e, 0xed, 0x9d, 0x9e, 0x3f, 0xd3, 0x69, 0x1d, 0x85, 0xa5, 0x1f, 0x65, 0xcb, 0x3e, 0xdd,
+	0x5b, 0x3f, 0x7a, 0xce, 0x3f, 0xda, 0x68, 0x77, 0xeb, 0x5b, 0xed, 0xd5, 0x26, 0xfb, 0xa9, 0x5b,
+	0xf6, 0xc1, 0xf6, 0xd1, 0x66, 0x7d, 0x63, 0xf5, 0xcc, 0xf9, 0xa3, 0x3b, 0xfc, 0x38, 0xee, 0xff,
+	0x07, 0x00, 0x00, 0xff, 0xff, 0xa0, 0xb6, 0xee, 0xa8, 0x3e, 0x57, 0x00, 0x00,
+}
diff --git a/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5/test.proto b/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5/test.proto
new file mode 100644
index 0000000..47e0a36
--- /dev/null
+++ b/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5/test.proto
@@ -0,0 +1,333 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto2";
+
+package google.golang.org.proto2_20160225;
+option go_package = "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5";
+
+enum SiblingEnum {
+	ALPHA   = 0;
+	BRAVO   = 10;
+	CHARLIE = 200;
+}
+
+message SiblingMessage {
+	optional string  f1 = 1;
+	required string  f2 = 2;
+	repeated string  f3 = 3;
+	optional Message f4 = 4;
+}
+
+message Message {
+	enum ChildEnum {
+		ALPHA   = 0;
+		BRAVO   = 1;
+		CHARLIE = 2;
+	}
+	message ChildMessage {
+		optional string  f1 = 1;
+		required string  f2 = 2;
+		repeated string  f3 = 3;
+	    optional Message f4 = 4;
+	}
+	optional group NamedGroup = 1 {
+		optional string  f1 = 1;
+		required string  f2 = 2;
+		repeated string  f3 = 3;
+	    optional Message f4 = 4;
+	}
+
+	// Optional fields.
+	optional bool     optional_bool     = 100;
+	optional int32    optional_int32    = 101;
+	optional sint32   optional_sint32   = 102;
+	optional uint32   optional_uint32   = 103;
+	optional int64    optional_int64    = 104;
+	optional sint64   optional_sint64   = 105;
+	optional uint64   optional_uint64   = 106;
+	optional fixed32  optional_fixed32  = 107;
+	optional sfixed32 optional_sfixed32 = 108;
+	optional float    optional_float    = 109;
+	optional fixed64  optional_fixed64  = 110;
+	optional sfixed64 optional_sfixed64 = 111;
+	optional double   optional_double   = 112;
+	optional string   optional_string   = 113;
+	optional bytes    optional_bytes    = 114;
+
+	optional ChildEnum      optional_child_enum      = 115;
+	optional ChildMessage   optional_child_message   = 116;
+	optional NamedGroup     optional_named_group     = 117;
+	optional SiblingEnum    optional_sibling_enum    = 118;
+	optional SiblingMessage optional_sibling_message = 119;
+	optional group OptionalGroup = 120 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+
+	// Optional default fields.
+	optional bool      defaulted_bool     = 200 [default = true];
+	optional int32     defaulted_int32    = 201 [default = -12345];
+	optional sint32    defaulted_sint32   = 202 [default = -3200];
+	optional uint32    defaulted_uint32   = 203 [default = 3200];
+	optional int64     defaulted_int64    = 204 [default = -123456789];
+	optional sint64    defaulted_sint64   = 205 [default = -6400];
+	optional uint64    defaulted_uint64   = 206 [default = 6400];
+	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
+	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
+	optional float     defaulted_float    = 209 [default = 3.14159];
+	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
+	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
+	optional double    defaulted_double   = 212 [default = 3.14159265359];
+	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
+	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];
+
+	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
+	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];
+
+	// Required fields.
+	required bool     required_bool     = 300;
+	required int32    required_int32    = 301;
+	required sint32   required_sint32   = 302;
+	required uint32   required_uint32   = 303;
+	required int64    required_int64    = 304;
+	required sint64   required_sint64   = 305;
+	required uint64   required_uint64   = 306;
+	required fixed32  required_fixed32  = 307;
+	required sfixed32 required_sfixed32 = 308;
+	required float    required_float    = 309;
+	required fixed64  required_fixed64  = 310;
+	required sfixed64 required_sfixed64 = 311;
+	required double   required_double   = 312;
+	required string   required_string   = 313;
+	required bytes    required_bytes    = 314;
+
+	required ChildEnum      required_child_enum      = 315;
+	required ChildMessage   required_child_message   = 316;
+	required NamedGroup     required_named_group     = 317;
+	required SiblingEnum    required_sibling_enum    = 318;
+	required SiblingMessage required_sibling_message = 319;
+	required group RequiredGroup = 320 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+	// Required default fields.
+	required bool      required_defaulted_bool     = 400 [default = true];
+	required int32     required_defaulted_int32    = 401 [default = -12345];
+	required sint32    required_defaulted_sint32   = 402 [default = -3200];
+	required uint32    required_defaulted_uint32   = 403 [default = 3200];
+	required int64     required_defaulted_int64    = 404 [default = -123456789];
+	required sint64    required_defaulted_sint64   = 405 [default = -6400];
+	required uint64    required_defaulted_uint64   = 406 [default = 6400];
+	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
+	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
+	required float     required_defaulted_float    = 409 [default = 3.14159];
+	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
+	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
+	required double    required_defaulted_double   = 412 [default = 3.14159265359];
+	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
+	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];
+
+	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
+	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];
+
+	// Repeated fields.
+	repeated bool     repeated_bool     = 500;
+	repeated int32    repeated_int32    = 501;
+	repeated sint32   repeated_sint32   = 502;
+	repeated uint32   repeated_uint32   = 503;
+	repeated int64    repeated_int64    = 504;
+	repeated sint64   repeated_sint64   = 505;
+	repeated uint64   repeated_uint64   = 506;
+	repeated fixed32  repeated_fixed32  = 507;
+	repeated sfixed32 repeated_sfixed32 = 508;
+	repeated float    repeated_float    = 509;
+	repeated fixed64  repeated_fixed64  = 510;
+	repeated sfixed64 repeated_sfixed64 = 511;
+	repeated double   repeated_double   = 512;
+	repeated string   repeated_string   = 513;
+	repeated bytes    repeated_bytes    = 514;
+
+	repeated ChildEnum      repeated_child_enum      = 515;
+	repeated ChildMessage   repeated_child_message   = 516;
+	repeated NamedGroup     repeated_named_group     = 517;
+	repeated SiblingEnum    repeated_sibling_enum    = 518;
+	repeated SiblingMessage repeated_sibling_message = 519;
+	repeated group RepeatedGroup = 520 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+
+	// Map fields.
+	map<bool, bool>     map_bool_bool     = 600;
+	map<bool, int32>    map_bool_int32    = 601;
+	map<bool, sint32>   map_bool_sint32   = 602;
+	map<bool, uint32>   map_bool_uint32   = 603;
+	map<bool, int64>    map_bool_int64    = 604;
+	map<bool, sint64>   map_bool_sint64   = 605;
+	map<bool, uint64>   map_bool_uint64   = 606;
+	map<bool, fixed32>  map_bool_fixed32  = 607;
+	map<bool, sfixed32> map_bool_sfixed32 = 608;
+	map<bool, float>    map_bool_float    = 609;
+	map<bool, fixed64>  map_bool_fixed64  = 610;
+	map<bool, sfixed64> map_bool_sfixed64 = 611;
+	map<bool, double>   map_bool_double   = 612;
+	map<bool, string>   map_bool_string   = 613;
+	map<bool, bytes>    map_bool_bytes    = 614;
+
+	map<bool, ChildEnum>      map_bool_child_enum      = 615;
+	map<bool, ChildMessage>   map_bool_child_message   = 616;
+	map<bool, NamedGroup>     map_bool_named_group     = 617;
+	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
+	map<bool, SiblingMessage> map_bool_sibling_message = 619;
+
+	map<int32, bool>   map_int32_bool   = 620;
+	map<sint32, bool>  map_sint32_bool  = 621;
+	map<uint32, bool>  map_uint32_bool  = 622;
+	map<int64, bool>   map_int64_bool   = 623;
+	map<sint64, bool>  map_sint64_bool  = 624;
+	map<uint64, bool>  map_uint64_bool  = 625;
+	map<fixed32, bool> map_fixed32_bool = 626;
+	map<string, bool>  map_string_bool  = 627;
+
+	// Oneof fields.
+	oneof oneof_union {
+		bool     oneof_bool     = 700;
+		int32    oneof_int32    = 701;
+		sint32   oneof_sint32   = 702;
+		uint32   oneof_uint32   = 703;
+		int64    oneof_int64    = 704;
+		sint64   oneof_sint64   = 705;
+		uint64   oneof_uint64   = 706;
+		fixed32  oneof_fixed32  = 707;
+		sfixed32 oneof_sfixed32 = 708;
+		float    oneof_float    = 709;
+		fixed64  oneof_fixed64  = 710;
+		sfixed64 oneof_sfixed64 = 711;
+		double   oneof_double   = 712;
+		string   oneof_string   = 713;
+		bytes    oneof_bytes    = 714;
+
+		ChildEnum      oneof_child_enum      = 715;
+		ChildMessage   oneof_child_message   = 716;
+		NamedGroup     oneof_named_group     = 717;
+		SiblingEnum    oneof_sibling_enum    = 718;
+		SiblingMessage oneof_sibling_message = 719;
+		group OneofGroup = 720 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+
+		string oneof_string1 = 721;
+		string oneof_string2 = 722;
+		string oneof_string3 = 723;
+	}
+
+	// Oneof default fields.
+	oneof oneof_defaulted_union {
+		bool      oneof_defaulted_bool     = 800 [default = true];
+		int32     oneof_defaulted_int32    = 801 [default = -12345];
+		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
+		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
+		int64     oneof_defaulted_int64    = 804 [default = -123456789];
+		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
+		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
+		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
+		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
+		float     oneof_defaulted_float    = 809 [default = 3.14159];
+		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
+		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
+		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
+		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
+		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];
+
+		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
+		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
+	}
+
+	// Extension fields.
+	extend Message {
+		// Optional fields.
+		optional bool     extension_optional_bool     = 10000;
+		optional int32    extension_optional_int32    = 10001;
+		optional sint32   extension_optional_sint32   = 10002;
+		optional uint32   extension_optional_uint32   = 10003;
+		optional int64    extension_optional_int64    = 10004;
+		optional sint64   extension_optional_sint64   = 10005;
+		optional uint64   extension_optional_uint64   = 10006;
+		optional fixed32  extension_optional_fixed32  = 10007;
+		optional sfixed32 extension_optional_sfixed32 = 10008;
+		optional float    extension_optional_float    = 10009;
+		optional fixed64  extension_optional_fixed64  = 10010;
+		optional sfixed64 extension_optional_sfixed64 = 10011;
+		optional double   extension_optional_double   = 10012;
+		optional string   extension_optional_string   = 10013;
+		optional bytes    extension_optional_bytes    = 10014;
+
+		optional ChildEnum      extension_optional_child_enum      = 10015;
+		optional ChildMessage   extension_optional_child_message   = 10016;
+		optional NamedGroup     extension_optional_named_group     = 10017;
+		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
+		optional SiblingMessage extension_optional_sibling_message = 10019;
+		optional group ExtensionOptionalGroup = 10020 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+
+		// Optional default fields.
+		optional bool      extension_defaulted_bool     = 20000 [default = true];
+		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
+		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
+		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
+		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
+		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
+		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
+		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
+		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
+		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
+		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
+		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
+		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
+		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
+		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];
+
+		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
+		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];
+
+		// Repeated fields.
+		repeated bool     extension_repeated_bool     = 30000;
+		repeated int32    extension_repeated_int32    = 30001;
+		repeated sint32   extension_repeated_sint32   = 30002;
+		repeated uint32   extension_repeated_uint32   = 30003;
+		repeated int64    extension_repeated_int64    = 30004;
+		repeated sint64   extension_repeated_sint64   = 30005;
+		repeated uint64   extension_repeated_uint64   = 30006;
+		repeated fixed32  extension_repeated_fixed32  = 30007;
+		repeated sfixed32 extension_repeated_sfixed32 = 30008;
+		repeated float    extension_repeated_float    = 30009;
+		repeated fixed64  extension_repeated_fixed64  = 30010;
+		repeated sfixed64 extension_repeated_sfixed64 = 30011;
+		repeated double   extension_repeated_double   = 30012;
+		repeated string   extension_repeated_string   = 30013;
+		repeated bytes    extension_repeated_bytes    = 30014;
+
+		repeated ChildEnum      extension_repeated_child_enum      = 30015;
+		repeated ChildMessage   extension_repeated_child_message   = 30016;
+		repeated NamedGroup     extension_repeated_named_group     = 30017;
+		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
+		repeated SiblingMessage extension_repeated_sibling_message = 30019;
+		repeated group ExtensionRepeatedGroup = 30020 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+	}
+
+	extensions 10000 to max;
+}
diff --git a/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5/test.pb.go b/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5/test.pb.go
new file mode 100644
index 0000000..2cfedc0
--- /dev/null
+++ b/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5/test.pb.go
@@ -0,0 +1,3529 @@
+// Code generated by protoc-gen-go.
+// source: proto2.v0.0.0-20160519-a4ab9ec5/test.proto
+// DO NOT EDIT!
+
+/*
+Package proto2_v0_0_0_20160519_a4ab9ec5 is a generated protocol buffer package.
+
+It is generated from these files:
+	proto2.v0.0.0-20160519-a4ab9ec5/test.proto
+
+It has these top-level messages:
+	SiblingMessage
+	Message
+*/
+package proto2_v0_0_0_20160519_a4ab9ec5
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+const _ = proto.ProtoPackageIsVersion1
+
+type SiblingEnum int32
+
+const (
+	SiblingEnum_ALPHA   SiblingEnum = 0
+	SiblingEnum_BRAVO   SiblingEnum = 10
+	SiblingEnum_CHARLIE SiblingEnum = 200
+)
+
+var SiblingEnum_name = map[int32]string{
+	0:   "ALPHA",
+	10:  "BRAVO",
+	200: "CHARLIE",
+}
+var SiblingEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   10,
+	"CHARLIE": 200,
+}
+
+func (x SiblingEnum) Enum() *SiblingEnum {
+	p := new(SiblingEnum)
+	*p = x
+	return p
+}
+func (x SiblingEnum) String() string {
+	return proto.EnumName(SiblingEnum_name, int32(x))
+}
+func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
+	if err != nil {
+		return err
+	}
+	*x = SiblingEnum(value)
+	return nil
+}
+func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+type Message_ChildEnum int32
+
+const (
+	Message_ALPHA   Message_ChildEnum = 0
+	Message_BRAVO   Message_ChildEnum = 1
+	Message_CHARLIE Message_ChildEnum = 2
+)
+
+var Message_ChildEnum_name = map[int32]string{
+	0: "ALPHA",
+	1: "BRAVO",
+	2: "CHARLIE",
+}
+var Message_ChildEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   1,
+	"CHARLIE": 2,
+}
+
+func (x Message_ChildEnum) Enum() *Message_ChildEnum {
+	p := new(Message_ChildEnum)
+	*p = x
+	return p
+}
+func (x Message_ChildEnum) String() string {
+	return proto.EnumName(Message_ChildEnum_name, int32(x))
+}
+func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
+	if err != nil {
+		return err
+	}
+	*x = Message_ChildEnum(value)
+	return nil
+}
+func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+type SiblingMessage struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
+func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
+func (*SiblingMessage) ProtoMessage()               {}
+func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *SiblingMessage) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *SiblingMessage) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message struct {
+	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
+	// Optional fields.
+	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
+	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
+	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
+	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum" json:"optional_child_enum,omitempty"`
+	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
+	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
+	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum" json:"optional_sibling_enum,omitempty"`
+	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
+	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
+	// Optional default fields.
+	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
+	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
+	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
+	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
+	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
+	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
+	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
+	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
+	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
+	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
+	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
+	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
+	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
+	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
+	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
+	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
+	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
+	// Required fields.
+	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
+	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
+	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
+	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
+	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
+	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
+	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
+	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
+	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
+	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
+	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
+	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
+	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
+	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
+	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
+	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum" json:"required_child_enum,omitempty"`
+	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
+	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
+	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum" json:"required_sibling_enum,omitempty"`
+	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
+	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
+	// Required default fields.
+	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
+	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
+	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
+	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
+	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
+	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
+	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
+	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
+	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
+	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
+	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
+	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
+	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
+	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
+	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
+	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
+	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
+	// Repeated fields.
+	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
+	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
+	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
+	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
+	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
+	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
+	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	// Map fields.
+	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20160519.Message_ChildEnum"`
+	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20160519.SiblingEnum"`
+	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	// Oneof fields.
+	//
+	// Types that are valid to be assigned to OneofUnion:
+	//	*Message_OneofBool
+	//	*Message_OneofInt32
+	//	*Message_OneofSint32
+	//	*Message_OneofUint32
+	//	*Message_OneofInt64
+	//	*Message_OneofSint64
+	//	*Message_OneofUint64
+	//	*Message_OneofFixed32
+	//	*Message_OneofSfixed32
+	//	*Message_OneofFloat
+	//	*Message_OneofFixed64
+	//	*Message_OneofSfixed64
+	//	*Message_OneofDouble
+	//	*Message_OneofString
+	//	*Message_OneofBytes
+	//	*Message_OneofChildEnum
+	//	*Message_OneofChildMessage
+	//	*Message_OneofNamedGroup
+	//	*Message_OneofSiblingEnum
+	//	*Message_OneofSiblingMessage
+	//	*Message_Oneofgroup
+	//	*Message_OneofString1
+	//	*Message_OneofString2
+	//	*Message_OneofString3
+	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
+	// Oneof default fields.
+	//
+	// Types that are valid to be assigned to OneofDefaultedUnion:
+	//	*Message_OneofDefaultedBool
+	//	*Message_OneofDefaultedInt32
+	//	*Message_OneofDefaultedSint32
+	//	*Message_OneofDefaultedUint32
+	//	*Message_OneofDefaultedInt64
+	//	*Message_OneofDefaultedSint64
+	//	*Message_OneofDefaultedUint64
+	//	*Message_OneofDefaultedFixed32
+	//	*Message_OneofDefaultedSfixed32
+	//	*Message_OneofDefaultedFloat
+	//	*Message_OneofDefaultedFixed64
+	//	*Message_OneofDefaultedSfixed64
+	//	*Message_OneofDefaultedDouble
+	//	*Message_OneofDefaultedString
+	//	*Message_OneofDefaultedBytes
+	//	*Message_OneofDefaultedChildEnum
+	//	*Message_OneofDefaultedSiblingEnum
+	OneofDefaultedUnion isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
+	XXX_extensions      map[int32]proto.Extension     `json:"-"`
+	XXX_unrecognized    []byte                        `json:"-"`
+}
+
+func (m *Message) Reset()                    { *m = Message{} }
+func (m *Message) String() string            { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()               {}
+func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+var extRange_Message = []proto.ExtensionRange{
+	{10000, 536870911},
+}
+
+func (*Message) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_Message
+}
+func (m *Message) ExtensionMap() map[int32]proto.Extension {
+	if m.XXX_extensions == nil {
+		m.XXX_extensions = make(map[int32]proto.Extension)
+	}
+	return m.XXX_extensions
+}
+
+const Default_Message_DefaultedBool bool = true
+const Default_Message_DefaultedInt32 int32 = -12345
+const Default_Message_DefaultedSint32 int32 = -3200
+const Default_Message_DefaultedUint32 uint32 = 3200
+const Default_Message_DefaultedInt64 int64 = -123456789
+const Default_Message_DefaultedSint64 int64 = -6400
+const Default_Message_DefaultedUint64 uint64 = 6400
+const Default_Message_DefaultedFixed32 uint32 = 320000
+const Default_Message_DefaultedSfixed32 int32 = -320000
+const Default_Message_DefaultedFloat float32 = 3.14159
+const Default_Message_DefaultedFixed64 uint64 = 640000
+const Default_Message_DefaultedSfixed64 int64 = -640000
+const Default_Message_DefaultedDouble float64 = 3.14159265359
+const Default_Message_DefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_DefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
+
+const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+const Default_Message_RequiredDefaultedBool bool = true
+const Default_Message_RequiredDefaultedInt32 int32 = -12345
+const Default_Message_RequiredDefaultedSint32 int32 = -3200
+const Default_Message_RequiredDefaultedUint32 uint32 = 3200
+const Default_Message_RequiredDefaultedInt64 int64 = -123456789
+const Default_Message_RequiredDefaultedSint64 int64 = -6400
+const Default_Message_RequiredDefaultedUint64 uint64 = 6400
+const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
+const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
+const Default_Message_RequiredDefaultedFloat float32 = 3.14159
+const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
+const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
+const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
+const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_RequiredDefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
+
+const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+const Default_Message_OneofDefaultedBool bool = true
+const Default_Message_OneofDefaultedInt32 int32 = -12345
+const Default_Message_OneofDefaultedSint32 int32 = -3200
+const Default_Message_OneofDefaultedUint32 uint32 = 3200
+const Default_Message_OneofDefaultedInt64 int64 = -123456789
+const Default_Message_OneofDefaultedSint64 int64 = -6400
+const Default_Message_OneofDefaultedUint64 uint64 = 6400
+const Default_Message_OneofDefaultedFixed32 uint32 = 320000
+const Default_Message_OneofDefaultedSfixed32 int32 = -320000
+const Default_Message_OneofDefaultedFloat float32 = 3.14159
+const Default_Message_OneofDefaultedFixed64 uint64 = 640000
+const Default_Message_OneofDefaultedSfixed64 int64 = -640000
+const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
+const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_OneofDefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
+
+const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+
+type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
+type isMessage_OneofDefaultedUnion interface{ isMessage_OneofDefaultedUnion() }
+
+type Message_OneofBool struct {
+	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
+}
+type Message_OneofInt32 struct {
+	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
+}
+type Message_OneofSint32 struct {
+	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
+}
+type Message_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
+}
+type Message_OneofInt64 struct {
+	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
+}
+type Message_OneofSint64 struct {
+	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
+}
+type Message_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
+}
+type Message_OneofFixed32 struct {
+	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
+}
+type Message_OneofSfixed32 struct {
+	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
+}
+type Message_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
+}
+type Message_OneofFixed64 struct {
+	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
+}
+type Message_OneofSfixed64 struct {
+	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
+}
+type Message_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
+}
+type Message_OneofString struct {
+	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
+}
+type Message_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
+}
+type Message_OneofChildEnum struct {
+	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum,oneof"`
+}
+type Message_OneofChildMessage struct {
+	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
+}
+type Message_OneofNamedGroup struct {
+	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
+}
+type Message_OneofSiblingEnum struct {
+	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum,oneof"`
+}
+type Message_OneofSiblingMessage struct {
+	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
+}
+type Message_Oneofgroup struct {
+	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
+}
+type Message_OneofString1 struct {
+	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
+}
+type Message_OneofString2 struct {
+	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
+}
+type Message_OneofString3 struct {
+	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
+}
+type Message_OneofDefaultedBool struct {
+	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
+}
+type Message_OneofDefaultedInt32 struct {
+	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
+}
+type Message_OneofDefaultedSint32 struct {
+	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
+}
+type Message_OneofDefaultedUint32 struct {
+	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
+}
+type Message_OneofDefaultedInt64 struct {
+	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
+}
+type Message_OneofDefaultedSint64 struct {
+	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
+}
+type Message_OneofDefaultedUint64 struct {
+	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
+}
+type Message_OneofDefaultedFixed32 struct {
+	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
+}
+type Message_OneofDefaultedSfixed32 struct {
+	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
+}
+type Message_OneofDefaultedFloat struct {
+	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
+}
+type Message_OneofDefaultedFixed64 struct {
+	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
+}
+type Message_OneofDefaultedSfixed64 struct {
+	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
+}
+type Message_OneofDefaultedDouble struct {
+	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
+}
+type Message_OneofDefaultedString struct {
+	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
+}
+type Message_OneofDefaultedBytes struct {
+	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
+}
+type Message_OneofDefaultedChildEnum struct {
+	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum,oneof,def=0"`
+}
+type Message_OneofDefaultedSiblingEnum struct {
+	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum,oneof,def=0"`
+}
+
+func (*Message_OneofBool) isMessage_OneofUnion()                          {}
+func (*Message_OneofInt32) isMessage_OneofUnion()                         {}
+func (*Message_OneofSint32) isMessage_OneofUnion()                        {}
+func (*Message_OneofUint32) isMessage_OneofUnion()                        {}
+func (*Message_OneofInt64) isMessage_OneofUnion()                         {}
+func (*Message_OneofSint64) isMessage_OneofUnion()                        {}
+func (*Message_OneofUint64) isMessage_OneofUnion()                        {}
+func (*Message_OneofFixed32) isMessage_OneofUnion()                       {}
+func (*Message_OneofSfixed32) isMessage_OneofUnion()                      {}
+func (*Message_OneofFloat) isMessage_OneofUnion()                         {}
+func (*Message_OneofFixed64) isMessage_OneofUnion()                       {}
+func (*Message_OneofSfixed64) isMessage_OneofUnion()                      {}
+func (*Message_OneofDouble) isMessage_OneofUnion()                        {}
+func (*Message_OneofString) isMessage_OneofUnion()                        {}
+func (*Message_OneofBytes) isMessage_OneofUnion()                         {}
+func (*Message_OneofChildEnum) isMessage_OneofUnion()                     {}
+func (*Message_OneofChildMessage) isMessage_OneofUnion()                  {}
+func (*Message_OneofNamedGroup) isMessage_OneofUnion()                    {}
+func (*Message_OneofSiblingEnum) isMessage_OneofUnion()                   {}
+func (*Message_OneofSiblingMessage) isMessage_OneofUnion()                {}
+func (*Message_Oneofgroup) isMessage_OneofUnion()                         {}
+func (*Message_OneofString1) isMessage_OneofUnion()                       {}
+func (*Message_OneofString2) isMessage_OneofUnion()                       {}
+func (*Message_OneofString3) isMessage_OneofUnion()                       {}
+func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion()        {}
+func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion()     {}
+func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion()    {}
+func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion()     {}
+func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion()    {}
+func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion()   {}
+func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}
+
+func (m *Message) GetOneofUnion() isMessage_OneofUnion {
+	if m != nil {
+		return m.OneofUnion
+	}
+	return nil
+}
+func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
+	if m != nil {
+		return m.OneofDefaultedUnion
+	}
+	return nil
+}
+
+func (m *Message) GetNamedgroup() *Message_NamedGroup {
+	if m != nil {
+		return m.Namedgroup
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalBool() bool {
+	if m != nil && m.OptionalBool != nil {
+		return *m.OptionalBool
+	}
+	return false
+}
+
+func (m *Message) GetOptionalInt32() int32 {
+	if m != nil && m.OptionalInt32 != nil {
+		return *m.OptionalInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint32() int32 {
+	if m != nil && m.OptionalSint32 != nil {
+		return *m.OptionalSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint32() uint32 {
+	if m != nil && m.OptionalUint32 != nil {
+		return *m.OptionalUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalInt64() int64 {
+	if m != nil && m.OptionalInt64 != nil {
+		return *m.OptionalInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint64() int64 {
+	if m != nil && m.OptionalSint64 != nil {
+		return *m.OptionalSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint64() uint64 {
+	if m != nil && m.OptionalUint64 != nil {
+		return *m.OptionalUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed32() uint32 {
+	if m != nil && m.OptionalFixed32 != nil {
+		return *m.OptionalFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed32() int32 {
+	if m != nil && m.OptionalSfixed32 != nil {
+		return *m.OptionalSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFloat() float32 {
+	if m != nil && m.OptionalFloat != nil {
+		return *m.OptionalFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed64() uint64 {
+	if m != nil && m.OptionalFixed64 != nil {
+		return *m.OptionalFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed64() int64 {
+	if m != nil && m.OptionalSfixed64 != nil {
+		return *m.OptionalSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalDouble() float64 {
+	if m != nil && m.OptionalDouble != nil {
+		return *m.OptionalDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalString() string {
+	if m != nil && m.OptionalString != nil {
+		return *m.OptionalString
+	}
+	return ""
+}
+
+func (m *Message) GetOptionalBytes() []byte {
+	if m != nil {
+		return m.OptionalBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
+	if m != nil && m.OptionalChildEnum != nil {
+		return *m.OptionalChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.OptionalChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
+	if m != nil {
+		return m.OptionalNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
+	if m != nil && m.OptionalSiblingEnum != nil {
+		return *m.OptionalSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.OptionalSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
+	if m != nil {
+		return m.Optionalgroup
+	}
+	return nil
+}
+
+func (m *Message) GetDefaultedBool() bool {
+	if m != nil && m.DefaultedBool != nil {
+		return *m.DefaultedBool
+	}
+	return Default_Message_DefaultedBool
+}
+
+func (m *Message) GetDefaultedInt32() int32 {
+	if m != nil && m.DefaultedInt32 != nil {
+		return *m.DefaultedInt32
+	}
+	return Default_Message_DefaultedInt32
+}
+
+func (m *Message) GetDefaultedSint32() int32 {
+	if m != nil && m.DefaultedSint32 != nil {
+		return *m.DefaultedSint32
+	}
+	return Default_Message_DefaultedSint32
+}
+
+func (m *Message) GetDefaultedUint32() uint32 {
+	if m != nil && m.DefaultedUint32 != nil {
+		return *m.DefaultedUint32
+	}
+	return Default_Message_DefaultedUint32
+}
+
+func (m *Message) GetDefaultedInt64() int64 {
+	if m != nil && m.DefaultedInt64 != nil {
+		return *m.DefaultedInt64
+	}
+	return Default_Message_DefaultedInt64
+}
+
+func (m *Message) GetDefaultedSint64() int64 {
+	if m != nil && m.DefaultedSint64 != nil {
+		return *m.DefaultedSint64
+	}
+	return Default_Message_DefaultedSint64
+}
+
+func (m *Message) GetDefaultedUint64() uint64 {
+	if m != nil && m.DefaultedUint64 != nil {
+		return *m.DefaultedUint64
+	}
+	return Default_Message_DefaultedUint64
+}
+
+func (m *Message) GetDefaultedFixed32() uint32 {
+	if m != nil && m.DefaultedFixed32 != nil {
+		return *m.DefaultedFixed32
+	}
+	return Default_Message_DefaultedFixed32
+}
+
+func (m *Message) GetDefaultedSfixed32() int32 {
+	if m != nil && m.DefaultedSfixed32 != nil {
+		return *m.DefaultedSfixed32
+	}
+	return Default_Message_DefaultedSfixed32
+}
+
+func (m *Message) GetDefaultedFloat() float32 {
+	if m != nil && m.DefaultedFloat != nil {
+		return *m.DefaultedFloat
+	}
+	return Default_Message_DefaultedFloat
+}
+
+func (m *Message) GetDefaultedFixed64() uint64 {
+	if m != nil && m.DefaultedFixed64 != nil {
+		return *m.DefaultedFixed64
+	}
+	return Default_Message_DefaultedFixed64
+}
+
+func (m *Message) GetDefaultedSfixed64() int64 {
+	if m != nil && m.DefaultedSfixed64 != nil {
+		return *m.DefaultedSfixed64
+	}
+	return Default_Message_DefaultedSfixed64
+}
+
+func (m *Message) GetDefaultedDouble() float64 {
+	if m != nil && m.DefaultedDouble != nil {
+		return *m.DefaultedDouble
+	}
+	return Default_Message_DefaultedDouble
+}
+
+func (m *Message) GetDefaultedString() string {
+	if m != nil && m.DefaultedString != nil {
+		return *m.DefaultedString
+	}
+	return Default_Message_DefaultedString
+}
+
+func (m *Message) GetDefaultedBytes() []byte {
+	if m != nil && m.DefaultedBytes != nil {
+		return m.DefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_DefaultedBytes...)
+}
+
+func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
+	if m != nil && m.DefaultedChildEnum != nil {
+		return *m.DefaultedChildEnum
+	}
+	return Default_Message_DefaultedChildEnum
+}
+
+func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
+	if m != nil && m.DefaultedSiblingEnum != nil {
+		return *m.DefaultedSiblingEnum
+	}
+	return Default_Message_DefaultedSiblingEnum
+}
+
+func (m *Message) GetRequiredBool() bool {
+	if m != nil && m.RequiredBool != nil {
+		return *m.RequiredBool
+	}
+	return false
+}
+
+func (m *Message) GetRequiredInt32() int32 {
+	if m != nil && m.RequiredInt32 != nil {
+		return *m.RequiredInt32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSint32() int32 {
+	if m != nil && m.RequiredSint32 != nil {
+		return *m.RequiredSint32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredUint32() uint32 {
+	if m != nil && m.RequiredUint32 != nil {
+		return *m.RequiredUint32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredInt64() int64 {
+	if m != nil && m.RequiredInt64 != nil {
+		return *m.RequiredInt64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSint64() int64 {
+	if m != nil && m.RequiredSint64 != nil {
+		return *m.RequiredSint64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredUint64() uint64 {
+	if m != nil && m.RequiredUint64 != nil {
+		return *m.RequiredUint64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFixed32() uint32 {
+	if m != nil && m.RequiredFixed32 != nil {
+		return *m.RequiredFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSfixed32() int32 {
+	if m != nil && m.RequiredSfixed32 != nil {
+		return *m.RequiredSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFloat() float32 {
+	if m != nil && m.RequiredFloat != nil {
+		return *m.RequiredFloat
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFixed64() uint64 {
+	if m != nil && m.RequiredFixed64 != nil {
+		return *m.RequiredFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSfixed64() int64 {
+	if m != nil && m.RequiredSfixed64 != nil {
+		return *m.RequiredSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredDouble() float64 {
+	if m != nil && m.RequiredDouble != nil {
+		return *m.RequiredDouble
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredString() string {
+	if m != nil && m.RequiredString != nil {
+		return *m.RequiredString
+	}
+	return ""
+}
+
+func (m *Message) GetRequiredBytes() []byte {
+	if m != nil {
+		return m.RequiredBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
+	if m != nil && m.RequiredChildEnum != nil {
+		return *m.RequiredChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.RequiredChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
+	if m != nil {
+		return m.RequiredNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
+	if m != nil && m.RequiredSiblingEnum != nil {
+		return *m.RequiredSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.RequiredSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
+	if m != nil {
+		return m.Requiredgroup
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredDefaultedBool() bool {
+	if m != nil && m.RequiredDefaultedBool != nil {
+		return *m.RequiredDefaultedBool
+	}
+	return Default_Message_RequiredDefaultedBool
+}
+
+func (m *Message) GetRequiredDefaultedInt32() int32 {
+	if m != nil && m.RequiredDefaultedInt32 != nil {
+		return *m.RequiredDefaultedInt32
+	}
+	return Default_Message_RequiredDefaultedInt32
+}
+
+func (m *Message) GetRequiredDefaultedSint32() int32 {
+	if m != nil && m.RequiredDefaultedSint32 != nil {
+		return *m.RequiredDefaultedSint32
+	}
+	return Default_Message_RequiredDefaultedSint32
+}
+
+func (m *Message) GetRequiredDefaultedUint32() uint32 {
+	if m != nil && m.RequiredDefaultedUint32 != nil {
+		return *m.RequiredDefaultedUint32
+	}
+	return Default_Message_RequiredDefaultedUint32
+}
+
+func (m *Message) GetRequiredDefaultedInt64() int64 {
+	if m != nil && m.RequiredDefaultedInt64 != nil {
+		return *m.RequiredDefaultedInt64
+	}
+	return Default_Message_RequiredDefaultedInt64
+}
+
+func (m *Message) GetRequiredDefaultedSint64() int64 {
+	if m != nil && m.RequiredDefaultedSint64 != nil {
+		return *m.RequiredDefaultedSint64
+	}
+	return Default_Message_RequiredDefaultedSint64
+}
+
+func (m *Message) GetRequiredDefaultedUint64() uint64 {
+	if m != nil && m.RequiredDefaultedUint64 != nil {
+		return *m.RequiredDefaultedUint64
+	}
+	return Default_Message_RequiredDefaultedUint64
+}
+
+func (m *Message) GetRequiredDefaultedFixed32() uint32 {
+	if m != nil && m.RequiredDefaultedFixed32 != nil {
+		return *m.RequiredDefaultedFixed32
+	}
+	return Default_Message_RequiredDefaultedFixed32
+}
+
+func (m *Message) GetRequiredDefaultedSfixed32() int32 {
+	if m != nil && m.RequiredDefaultedSfixed32 != nil {
+		return *m.RequiredDefaultedSfixed32
+	}
+	return Default_Message_RequiredDefaultedSfixed32
+}
+
+func (m *Message) GetRequiredDefaultedFloat() float32 {
+	if m != nil && m.RequiredDefaultedFloat != nil {
+		return *m.RequiredDefaultedFloat
+	}
+	return Default_Message_RequiredDefaultedFloat
+}
+
+func (m *Message) GetRequiredDefaultedFixed64() uint64 {
+	if m != nil && m.RequiredDefaultedFixed64 != nil {
+		return *m.RequiredDefaultedFixed64
+	}
+	return Default_Message_RequiredDefaultedFixed64
+}
+
+func (m *Message) GetRequiredDefaultedSfixed64() int64 {
+	if m != nil && m.RequiredDefaultedSfixed64 != nil {
+		return *m.RequiredDefaultedSfixed64
+	}
+	return Default_Message_RequiredDefaultedSfixed64
+}
+
+func (m *Message) GetRequiredDefaultedDouble() float64 {
+	if m != nil && m.RequiredDefaultedDouble != nil {
+		return *m.RequiredDefaultedDouble
+	}
+	return Default_Message_RequiredDefaultedDouble
+}
+
+func (m *Message) GetRequiredDefaultedString() string {
+	if m != nil && m.RequiredDefaultedString != nil {
+		return *m.RequiredDefaultedString
+	}
+	return Default_Message_RequiredDefaultedString
+}
+
+func (m *Message) GetRequiredDefaultedBytes() []byte {
+	if m != nil && m.RequiredDefaultedBytes != nil {
+		return m.RequiredDefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
+}
+
+func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
+	if m != nil && m.RequiredDefaultedChildEnum != nil {
+		return *m.RequiredDefaultedChildEnum
+	}
+	return Default_Message_RequiredDefaultedChildEnum
+}
+
+func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
+	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
+		return *m.RequiredDefaultedSiblingEnum
+	}
+	return Default_Message_RequiredDefaultedSiblingEnum
+}
+
+func (m *Message) GetRepeatedBool() []bool {
+	if m != nil {
+		return m.RepeatedBool
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt32() []int32 {
+	if m != nil {
+		return m.RepeatedInt32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint32() []int32 {
+	if m != nil {
+		return m.RepeatedSint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint32() []uint32 {
+	if m != nil {
+		return m.RepeatedUint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt64() []int64 {
+	if m != nil {
+		return m.RepeatedInt64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint64() []int64 {
+	if m != nil {
+		return m.RepeatedSint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint64() []uint64 {
+	if m != nil {
+		return m.RepeatedUint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed32() []uint32 {
+	if m != nil {
+		return m.RepeatedFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed32() []int32 {
+	if m != nil {
+		return m.RepeatedSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFloat() []float32 {
+	if m != nil {
+		return m.RepeatedFloat
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed64() []uint64 {
+	if m != nil {
+		return m.RepeatedFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed64() []int64 {
+	if m != nil {
+		return m.RepeatedSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedDouble() []float64 {
+	if m != nil {
+		return m.RepeatedDouble
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedString() []string {
+	if m != nil {
+		return m.RepeatedString
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedBytes() [][]byte {
+	if m != nil {
+		return m.RepeatedBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
+	if m != nil {
+		return m.RepeatedChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
+	if m != nil {
+		return m.RepeatedChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
+	if m != nil {
+		return m.RepeatedNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
+	if m != nil {
+		return m.RepeatedSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
+	if m != nil {
+		return m.RepeatedSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
+	if m != nil {
+		return m.Repeatedgroup
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBool() map[bool]bool {
+	if m != nil {
+		return m.MapBoolBool
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolInt32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolUint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolInt64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolUint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFloat() map[bool]float32 {
+	if m != nil {
+		return m.MapBoolFloat
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolDouble() map[bool]float64 {
+	if m != nil {
+		return m.MapBoolDouble
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolString() map[bool]string {
+	if m != nil {
+		return m.MapBoolString
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBytes() map[bool][]byte {
+	if m != nil {
+		return m.MapBoolBytes
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
+	if m != nil {
+		return m.MapBoolChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
+	if m != nil {
+		return m.MapBoolChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
+	if m != nil {
+		return m.MapBoolNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
+	if m != nil {
+		return m.MapBoolSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
+	if m != nil {
+		return m.MapBoolSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapInt32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapSint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapUint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapInt64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapSint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint64Bool() map[uint64]bool {
+	if m != nil {
+		return m.MapUint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapFixed32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapFixed32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapStringBool() map[string]bool {
+	if m != nil {
+		return m.MapStringBool
+	}
+	return nil
+}
+
+func (m *Message) GetOneofBool() bool {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
+		return x.OneofBool
+	}
+	return false
+}
+
+func (m *Message) GetOneofInt32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
+		return x.OneofInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
+		return x.OneofSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
+		return x.OneofUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofInt64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
+		return x.OneofInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
+		return x.OneofSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
+		return x.OneofUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
+		return x.OneofFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
+		return x.OneofSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFloat() float32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
+		return x.OneofFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
+		return x.OneofFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
+		return x.OneofSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofDouble() float64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
+		return x.OneofDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOneofString() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
+		return x.OneofString
+	}
+	return ""
+}
+
+func (m *Message) GetOneofBytes() []byte {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
+		return x.OneofBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOneofChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
+		return x.OneofChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
+		return x.OneofChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
+	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
+		return x.OneofNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetOneofSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
+		return x.OneofSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
+		return x.OneofSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofgroup() *Message_OneofGroup {
+	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
+		return x.Oneofgroup
+	}
+	return nil
+}
+
+func (m *Message) GetOneofString1() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
+		return x.OneofString1
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString2() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
+		return x.OneofString2
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString3() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
+		return x.OneofString3
+	}
+	return ""
+}
+
+func (m *Message) GetOneofDefaultedBool() bool {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
+		return x.OneofDefaultedBool
+	}
+	return Default_Message_OneofDefaultedBool
+}
+
+func (m *Message) GetOneofDefaultedInt32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
+		return x.OneofDefaultedInt32
+	}
+	return Default_Message_OneofDefaultedInt32
+}
+
+func (m *Message) GetOneofDefaultedSint32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
+		return x.OneofDefaultedSint32
+	}
+	return Default_Message_OneofDefaultedSint32
+}
+
+func (m *Message) GetOneofDefaultedUint32() uint32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
+		return x.OneofDefaultedUint32
+	}
+	return Default_Message_OneofDefaultedUint32
+}
+
+func (m *Message) GetOneofDefaultedInt64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
+		return x.OneofDefaultedInt64
+	}
+	return Default_Message_OneofDefaultedInt64
+}
+
+func (m *Message) GetOneofDefaultedSint64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
+		return x.OneofDefaultedSint64
+	}
+	return Default_Message_OneofDefaultedSint64
+}
+
+func (m *Message) GetOneofDefaultedUint64() uint64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
+		return x.OneofDefaultedUint64
+	}
+	return Default_Message_OneofDefaultedUint64
+}
+
+func (m *Message) GetOneofDefaultedFixed32() uint32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
+		return x.OneofDefaultedFixed32
+	}
+	return Default_Message_OneofDefaultedFixed32
+}
+
+func (m *Message) GetOneofDefaultedSfixed32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
+		return x.OneofDefaultedSfixed32
+	}
+	return Default_Message_OneofDefaultedSfixed32
+}
+
+func (m *Message) GetOneofDefaultedFloat() float32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
+		return x.OneofDefaultedFloat
+	}
+	return Default_Message_OneofDefaultedFloat
+}
+
+func (m *Message) GetOneofDefaultedFixed64() uint64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
+		return x.OneofDefaultedFixed64
+	}
+	return Default_Message_OneofDefaultedFixed64
+}
+
+func (m *Message) GetOneofDefaultedSfixed64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
+		return x.OneofDefaultedSfixed64
+	}
+	return Default_Message_OneofDefaultedSfixed64
+}
+
+func (m *Message) GetOneofDefaultedDouble() float64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
+		return x.OneofDefaultedDouble
+	}
+	return Default_Message_OneofDefaultedDouble
+}
+
+func (m *Message) GetOneofDefaultedString() string {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
+		return x.OneofDefaultedString
+	}
+	return Default_Message_OneofDefaultedString
+}
+
+func (m *Message) GetOneofDefaultedBytes() []byte {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
+		return x.OneofDefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
+}
+
+func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
+		return x.OneofDefaultedChildEnum
+	}
+	return Default_Message_OneofDefaultedChildEnum
+}
+
+func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
+		return x.OneofDefaultedSiblingEnum
+	}
+	return Default_Message_OneofDefaultedSiblingEnum
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
+		(*Message_OneofBool)(nil),
+		(*Message_OneofInt32)(nil),
+		(*Message_OneofSint32)(nil),
+		(*Message_OneofUint32)(nil),
+		(*Message_OneofInt64)(nil),
+		(*Message_OneofSint64)(nil),
+		(*Message_OneofUint64)(nil),
+		(*Message_OneofFixed32)(nil),
+		(*Message_OneofSfixed32)(nil),
+		(*Message_OneofFloat)(nil),
+		(*Message_OneofFixed64)(nil),
+		(*Message_OneofSfixed64)(nil),
+		(*Message_OneofDouble)(nil),
+		(*Message_OneofString)(nil),
+		(*Message_OneofBytes)(nil),
+		(*Message_OneofChildEnum)(nil),
+		(*Message_OneofChildMessage)(nil),
+		(*Message_OneofNamedGroup)(nil),
+		(*Message_OneofSiblingEnum)(nil),
+		(*Message_OneofSiblingMessage)(nil),
+		(*Message_Oneofgroup)(nil),
+		(*Message_OneofString1)(nil),
+		(*Message_OneofString2)(nil),
+		(*Message_OneofString3)(nil),
+		(*Message_OneofDefaultedBool)(nil),
+		(*Message_OneofDefaultedInt32)(nil),
+		(*Message_OneofDefaultedSint32)(nil),
+		(*Message_OneofDefaultedUint32)(nil),
+		(*Message_OneofDefaultedInt64)(nil),
+		(*Message_OneofDefaultedSint64)(nil),
+		(*Message_OneofDefaultedUint64)(nil),
+		(*Message_OneofDefaultedFixed32)(nil),
+		(*Message_OneofDefaultedSfixed32)(nil),
+		(*Message_OneofDefaultedFloat)(nil),
+		(*Message_OneofDefaultedFixed64)(nil),
+		(*Message_OneofDefaultedSfixed64)(nil),
+		(*Message_OneofDefaultedDouble)(nil),
+		(*Message_OneofDefaultedString)(nil),
+		(*Message_OneofDefaultedBytes)(nil),
+		(*Message_OneofDefaultedChildEnum)(nil),
+		(*Message_OneofDefaultedSiblingEnum)(nil),
+	}
+}
+
+func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		t := uint64(0)
+		if x.OneofBool {
+			t = 1
+		}
+		b.EncodeVarint(700<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofInt32:
+		b.EncodeVarint(701<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		b.EncodeVarint(702<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofSint32))
+	case *Message_OneofUint32:
+		b.EncodeVarint(703<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		b.EncodeVarint(704<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		b.EncodeVarint(705<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofSint64))
+	case *Message_OneofUint64:
+		b.EncodeVarint(706<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		b.EncodeVarint(707<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofFixed32))
+	case *Message_OneofSfixed32:
+		b.EncodeVarint(708<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofSfixed32))
+	case *Message_OneofFloat:
+		b.EncodeVarint(709<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
+	case *Message_OneofFixed64:
+		b.EncodeVarint(710<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofFixed64))
+	case *Message_OneofSfixed64:
+		b.EncodeVarint(711<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofSfixed64))
+	case *Message_OneofDouble:
+		b.EncodeVarint(712<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
+	case *Message_OneofString:
+		b.EncodeVarint(713<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString)
+	case *Message_OneofBytes:
+		b.EncodeVarint(714<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		b.EncodeVarint(715<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		b.EncodeVarint(716<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
+			return err
+		}
+	case *Message_OneofNamedGroup:
+		b.EncodeVarint(717<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofNamedGroup); err != nil {
+			return err
+		}
+	case *Message_OneofSiblingEnum:
+		b.EncodeVarint(718<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		b.EncodeVarint(719<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
+			return err
+		}
+	case *Message_Oneofgroup:
+		b.EncodeVarint(720<<3 | proto.WireStartGroup)
+		if err := b.Marshal(x.Oneofgroup); err != nil {
+			return err
+		}
+		b.EncodeVarint(720<<3 | proto.WireEndGroup)
+	case *Message_OneofString1:
+		b.EncodeVarint(721<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString1)
+	case *Message_OneofString2:
+		b.EncodeVarint(722<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString2)
+	case *Message_OneofString3:
+		b.EncodeVarint(723<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString3)
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
+	}
+	// oneof_defaulted_union
+	switch x := m.OneofDefaultedUnion.(type) {
+	case *Message_OneofDefaultedBool:
+		t := uint64(0)
+		if x.OneofDefaultedBool {
+			t = 1
+		}
+		b.EncodeVarint(800<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofDefaultedInt32:
+		b.EncodeVarint(801<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedInt32))
+	case *Message_OneofDefaultedSint32:
+		b.EncodeVarint(802<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofDefaultedSint32))
+	case *Message_OneofDefaultedUint32:
+		b.EncodeVarint(803<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedUint32))
+	case *Message_OneofDefaultedInt64:
+		b.EncodeVarint(804<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedInt64))
+	case *Message_OneofDefaultedSint64:
+		b.EncodeVarint(805<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofDefaultedSint64))
+	case *Message_OneofDefaultedUint64:
+		b.EncodeVarint(806<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedUint64))
+	case *Message_OneofDefaultedFixed32:
+		b.EncodeVarint(807<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofDefaultedFixed32))
+	case *Message_OneofDefaultedSfixed32:
+		b.EncodeVarint(808<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofDefaultedSfixed32))
+	case *Message_OneofDefaultedFloat:
+		b.EncodeVarint(809<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofDefaultedFloat)))
+	case *Message_OneofDefaultedFixed64:
+		b.EncodeVarint(810<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofDefaultedFixed64))
+	case *Message_OneofDefaultedSfixed64:
+		b.EncodeVarint(811<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofDefaultedSfixed64))
+	case *Message_OneofDefaultedDouble:
+		b.EncodeVarint(812<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDefaultedDouble))
+	case *Message_OneofDefaultedString:
+		b.EncodeVarint(813<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofDefaultedString)
+	case *Message_OneofDefaultedBytes:
+		b.EncodeVarint(814<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofDefaultedBytes)
+	case *Message_OneofDefaultedChildEnum:
+		b.EncodeVarint(815<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedChildEnum))
+	case *Message_OneofDefaultedSiblingEnum:
+		b.EncodeVarint(816<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedSiblingEnum))
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofDefaultedUnion has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Message)
+	switch tag {
+	case 700: // oneof_union.oneof_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofBool{x != 0}
+		return true, err
+	case 701: // oneof_union.oneof_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt32{int32(x)}
+		return true, err
+	case 702: // oneof_union.oneof_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofUnion = &Message_OneofSint32{int32(x)}
+		return true, err
+	case 703: // oneof_union.oneof_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint32{uint32(x)}
+		return true, err
+	case 704: // oneof_union.oneof_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt64{int64(x)}
+		return true, err
+	case 705: // oneof_union.oneof_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofUnion = &Message_OneofSint64{int64(x)}
+		return true, err
+	case 706: // oneof_union.oneof_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint64{x}
+		return true, err
+	case 707: // oneof_union.oneof_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
+		return true, err
+	case 708: // oneof_union.oneof_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
+		return true, err
+	case 709: // oneof_union.oneof_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 710: // oneof_union.oneof_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofFixed64{x}
+		return true, err
+	case 711: // oneof_union.oneof_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
+		return true, err
+	case 712: // oneof_union.oneof_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
+		return true, err
+	case 713: // oneof_union.oneof_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString{x}
+		return true, err
+	case 714: // oneof_union.oneof_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofUnion = &Message_OneofBytes{x}
+		return true, err
+	case 715: // oneof_union.oneof_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 716: // oneof_union.oneof_child_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_ChildMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofChildMessage{msg}
+		return true, err
+	case 717: // oneof_union.oneof_named_group
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_NamedGroup)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofNamedGroup{msg}
+		return true, err
+	case 718: // oneof_union.oneof_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
+		return true, err
+	case 719: // oneof_union.oneof_sibling_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(SiblingMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofSiblingMessage{msg}
+		return true, err
+	case 720: // oneof_union.oneofgroup
+		if wire != proto.WireStartGroup {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_OneofGroup)
+		err := b.DecodeGroup(msg)
+		m.OneofUnion = &Message_Oneofgroup{msg}
+		return true, err
+	case 721: // oneof_union.oneof_string1
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString1{x}
+		return true, err
+	case 722: // oneof_union.oneof_string2
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString2{x}
+		return true, err
+	case 723: // oneof_union.oneof_string3
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString3{x}
+		return true, err
+	case 800: // oneof_defaulted_union.oneof_defaulted_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedBool{x != 0}
+		return true, err
+	case 801: // oneof_defaulted_union.oneof_defaulted_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedInt32{int32(x)}
+		return true, err
+	case 802: // oneof_defaulted_union.oneof_defaulted_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSint32{int32(x)}
+		return true, err
+	case 803: // oneof_defaulted_union.oneof_defaulted_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedUint32{uint32(x)}
+		return true, err
+	case 804: // oneof_defaulted_union.oneof_defaulted_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedInt64{int64(x)}
+		return true, err
+	case 805: // oneof_defaulted_union.oneof_defaulted_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSint64{int64(x)}
+		return true, err
+	case 806: // oneof_defaulted_union.oneof_defaulted_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedUint64{x}
+		return true, err
+	case 807: // oneof_defaulted_union.oneof_defaulted_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed32{uint32(x)}
+		return true, err
+	case 808: // oneof_defaulted_union.oneof_defaulted_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed32{int32(x)}
+		return true, err
+	case 809: // oneof_defaulted_union.oneof_defaulted_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 810: // oneof_defaulted_union.oneof_defaulted_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed64{x}
+		return true, err
+	case 811: // oneof_defaulted_union.oneof_defaulted_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed64{int64(x)}
+		return true, err
+	case 812: // oneof_defaulted_union.oneof_defaulted_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedDouble{math.Float64frombits(x)}
+		return true, err
+	case 813: // oneof_defaulted_union.oneof_defaulted_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedString{x}
+		return true, err
+	case 814: // oneof_defaulted_union.oneof_defaulted_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofDefaultedUnion = &Message_OneofDefaultedBytes{x}
+		return true, err
+	case 815: // oneof_defaulted_union.oneof_defaulted_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 816: // oneof_defaulted_union.oneof_defaulted_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSiblingEnum{SiblingEnum(x)}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Message_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		n += proto.SizeVarint(700<<3 | proto.WireVarint)
+		n += 1
+	case *Message_OneofInt32:
+		n += proto.SizeVarint(701<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		n += proto.SizeVarint(702<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
+	case *Message_OneofUint32:
+		n += proto.SizeVarint(703<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		n += proto.SizeVarint(704<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		n += proto.SizeVarint(705<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
+	case *Message_OneofUint64:
+		n += proto.SizeVarint(706<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		n += proto.SizeVarint(707<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofSfixed32:
+		n += proto.SizeVarint(708<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFloat:
+		n += proto.SizeVarint(709<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFixed64:
+		n += proto.SizeVarint(710<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofSfixed64:
+		n += proto.SizeVarint(711<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDouble:
+		n += proto.SizeVarint(712<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofString:
+		n += proto.SizeVarint(713<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString)))
+		n += len(x.OneofString)
+	case *Message_OneofBytes:
+		n += proto.SizeVarint(714<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
+		n += len(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		n += proto.SizeVarint(715<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		s := proto.Size(x.OneofChildMessage)
+		n += proto.SizeVarint(716<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofNamedGroup:
+		s := proto.Size(x.OneofNamedGroup)
+		n += proto.SizeVarint(717<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofSiblingEnum:
+		n += proto.SizeVarint(718<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		s := proto.Size(x.OneofSiblingMessage)
+		n += proto.SizeVarint(719<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_Oneofgroup:
+		n += proto.SizeVarint(720<<3 | proto.WireStartGroup)
+		n += proto.Size(x.Oneofgroup)
+		n += proto.SizeVarint(720<<3 | proto.WireEndGroup)
+	case *Message_OneofString1:
+		n += proto.SizeVarint(721<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString1)))
+		n += len(x.OneofString1)
+	case *Message_OneofString2:
+		n += proto.SizeVarint(722<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString2)))
+		n += len(x.OneofString2)
+	case *Message_OneofString3:
+		n += proto.SizeVarint(723<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString3)))
+		n += len(x.OneofString3)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	// oneof_defaulted_union
+	switch x := m.OneofDefaultedUnion.(type) {
+	case *Message_OneofDefaultedBool:
+		n += proto.SizeVarint(800<<3 | proto.WireVarint)
+		n += 1
+	case *Message_OneofDefaultedInt32:
+		n += proto.SizeVarint(801<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedInt32))
+	case *Message_OneofDefaultedSint32:
+		n += proto.SizeVarint(802<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64((uint32(x.OneofDefaultedSint32) << 1) ^ uint32((int32(x.OneofDefaultedSint32) >> 31))))
+	case *Message_OneofDefaultedUint32:
+		n += proto.SizeVarint(803<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedUint32))
+	case *Message_OneofDefaultedInt64:
+		n += proto.SizeVarint(804<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedInt64))
+	case *Message_OneofDefaultedSint64:
+		n += proto.SizeVarint(805<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(uint64(x.OneofDefaultedSint64<<1) ^ uint64((int64(x.OneofDefaultedSint64) >> 63))))
+	case *Message_OneofDefaultedUint64:
+		n += proto.SizeVarint(806<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedUint64))
+	case *Message_OneofDefaultedFixed32:
+		n += proto.SizeVarint(807<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofDefaultedSfixed32:
+		n += proto.SizeVarint(808<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofDefaultedFloat:
+		n += proto.SizeVarint(809<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofDefaultedFixed64:
+		n += proto.SizeVarint(810<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDefaultedSfixed64:
+		n += proto.SizeVarint(811<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDefaultedDouble:
+		n += proto.SizeVarint(812<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDefaultedString:
+		n += proto.SizeVarint(813<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofDefaultedString)))
+		n += len(x.OneofDefaultedString)
+	case *Message_OneofDefaultedBytes:
+		n += proto.SizeVarint(814<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofDefaultedBytes)))
+		n += len(x.OneofDefaultedBytes)
+	case *Message_OneofDefaultedChildEnum:
+		n += proto.SizeVarint(815<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedChildEnum))
+	case *Message_OneofDefaultedSiblingEnum:
+		n += proto.SizeVarint(816<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedSiblingEnum))
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         10000,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_bool",
+	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
+}
+
+var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10001,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_int32",
+	Tag:           "varint,10001,opt,name=extension_optional_int32,json=extensionOptionalInt32",
+}
+
+var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10002,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sint32",
+	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32,json=extensionOptionalSint32",
+}
+
+var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         10003,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_uint32",
+	Tag:           "varint,10003,opt,name=extension_optional_uint32,json=extensionOptionalUint32",
+}
+
+var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10004,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_int64",
+	Tag:           "varint,10004,opt,name=extension_optional_int64,json=extensionOptionalInt64",
+}
+
+var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10005,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sint64",
+	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64,json=extensionOptionalSint64",
+}
+
+var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         10006,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_uint64",
+	Tag:           "varint,10006,opt,name=extension_optional_uint64,json=extensionOptionalUint64",
+}
+
+var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         10007,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_fixed32",
+	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32,json=extensionOptionalFixed32",
+}
+
+var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10008,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sfixed32",
+	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32,json=extensionOptionalSfixed32",
+}
+
+var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         10009,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_float",
+	Tag:           "fixed32,10009,opt,name=extension_optional_float,json=extensionOptionalFloat",
+}
+
+var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         10010,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_fixed64",
+	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64,json=extensionOptionalFixed64",
+}
+
+var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10011,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sfixed64",
+	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64,json=extensionOptionalSfixed64",
+}
+
+var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         10012,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_double",
+	Tag:           "fixed64,10012,opt,name=extension_optional_double,json=extensionOptionalDouble",
+}
+
+var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         10013,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_string",
+	Tag:           "bytes,10013,opt,name=extension_optional_string,json=extensionOptionalString",
+}
+
+var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         10014,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_bytes",
+	Tag:           "bytes,10014,opt,name=extension_optional_bytes,json=extensionOptionalBytes",
+}
+
+var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildEnum)(nil),
+	Field:         10015,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_child_enum",
+	Tag:           "varint,10015,opt,name=extension_optional_child_enum,json=extensionOptionalChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum",
+}
+
+var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildMessage)(nil),
+	Field:         10016,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_child_message",
+	Tag:           "bytes,10016,opt,name=extension_optional_child_message,json=extensionOptionalChildMessage",
+}
+
+var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_NamedGroup)(nil),
+	Field:         10017,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_named_group",
+	Tag:           "bytes,10017,opt,name=extension_optional_named_group,json=extensionOptionalNamedGroup",
+}
+
+var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingEnum)(nil),
+	Field:         10018,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sibling_enum",
+	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,json=extensionOptionalSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum",
+}
+
+var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingMessage)(nil),
+	Field:         10019,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sibling_message",
+	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message,json=extensionOptionalSiblingMessage",
+}
+
+var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
+	Field:         10020,
+	Name:          "google.golang.org.proto2_20160519.Message.extensionoptionalgroup",
+	Tag:           "group,10020,opt,name=ExtensionOptionalGroup,json=extensionoptionalgroup",
+}
+
+var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         20000,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_bool",
+	Tag:           "varint,20000,opt,name=extension_defaulted_bool,json=extensionDefaultedBool,def=1",
+}
+
+var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20001,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_int32",
+	Tag:           "varint,20001,opt,name=extension_defaulted_int32,json=extensionDefaultedInt32,def=-12345",
+}
+
+var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20002,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_sint32",
+	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,json=extensionDefaultedSint32,def=-3200",
+}
+
+var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         20003,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_uint32",
+	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,json=extensionDefaultedUint32,def=3200",
+}
+
+var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20004,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_int64",
+	Tag:           "varint,20004,opt,name=extension_defaulted_int64,json=extensionDefaultedInt64,def=-123456789",
+}
+
+var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20005,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_sint64",
+	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,json=extensionDefaultedSint64,def=-6400",
+}
+
+var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         20006,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_uint64",
+	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,json=extensionDefaultedUint64,def=6400",
+}
+
+var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         20007,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_fixed32",
+	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,json=extensionDefaultedFixed32,def=320000",
+}
+
+var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20008,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_sfixed32",
+	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,json=extensionDefaultedSfixed32,def=-320000",
+}
+
+var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         20009,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_float",
+	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,json=extensionDefaultedFloat,def=3.14159",
+}
+
+var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         20010,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_fixed64",
+	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,json=extensionDefaultedFixed64,def=640000",
+}
+
+var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20011,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_sfixed64",
+	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,json=extensionDefaultedSfixed64,def=-640000",
+}
+
+var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         20012,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_double",
+	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,json=extensionDefaultedDouble,def=3.14159265359",
+}
+
+var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         20013,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_string",
+	Tag:           "bytes,20013,opt,name=extension_defaulted_string,json=extensionDefaultedString,def=hello, \"world!\"\n",
+}
+
+var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         20014,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_bytes",
+	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,json=extensionDefaultedBytes,def=dead\\336\\255\\276\\357beef",
+}
+
+var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildEnum)(nil),
+	Field:         20015,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_child_enum",
+	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,json=extensionDefaultedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum,def=0",
+}
+
+var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingEnum)(nil),
+	Field:         20016,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_sibling_enum",
+	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,json=extensionDefaultedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum,def=0",
+}
+
+var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]bool)(nil),
+	Field:         30000,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_bool",
+	Tag:           "varint,30000,rep,name=extension_repeated_bool,json=extensionRepeatedBool",
+}
+
+var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30001,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_int32",
+	Tag:           "varint,30001,rep,name=extension_repeated_int32,json=extensionRepeatedInt32",
+}
+
+var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30002,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sint32",
+	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32,json=extensionRepeatedSint32",
+}
+
+var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         30003,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_uint32",
+	Tag:           "varint,30003,rep,name=extension_repeated_uint32,json=extensionRepeatedUint32",
+}
+
+var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30004,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_int64",
+	Tag:           "varint,30004,rep,name=extension_repeated_int64,json=extensionRepeatedInt64",
+}
+
+var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30005,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sint64",
+	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64,json=extensionRepeatedSint64",
+}
+
+var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         30006,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_uint64",
+	Tag:           "varint,30006,rep,name=extension_repeated_uint64,json=extensionRepeatedUint64",
+}
+
+var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         30007,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_fixed32",
+	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32,json=extensionRepeatedFixed32",
+}
+
+var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30008,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sfixed32",
+	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32,json=extensionRepeatedSfixed32",
+}
+
+var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]float32)(nil),
+	Field:         30009,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_float",
+	Tag:           "fixed32,30009,rep,name=extension_repeated_float,json=extensionRepeatedFloat",
+}
+
+var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         30010,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_fixed64",
+	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64,json=extensionRepeatedFixed64",
+}
+
+var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30011,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sfixed64",
+	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64,json=extensionRepeatedSfixed64",
+}
+
+var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]float64)(nil),
+	Field:         30012,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_double",
+	Tag:           "fixed64,30012,rep,name=extension_repeated_double,json=extensionRepeatedDouble",
+}
+
+var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]string)(nil),
+	Field:         30013,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_string",
+	Tag:           "bytes,30013,rep,name=extension_repeated_string,json=extensionRepeatedString",
+}
+
+var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([][]byte)(nil),
+	Field:         30014,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_bytes",
+	Tag:           "bytes,30014,rep,name=extension_repeated_bytes,json=extensionRepeatedBytes",
+}
+
+var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]Message_ChildEnum)(nil),
+	Field:         30015,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_child_enum",
+	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,json=extensionRepeatedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum",
+}
+
+var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_ChildMessage)(nil),
+	Field:         30016,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_child_message",
+	Tag:           "bytes,30016,rep,name=extension_repeated_child_message,json=extensionRepeatedChildMessage",
+}
+
+var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_NamedGroup)(nil),
+	Field:         30017,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_named_group",
+	Tag:           "bytes,30017,rep,name=extension_repeated_named_group,json=extensionRepeatedNamedGroup",
+}
+
+var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]SiblingEnum)(nil),
+	Field:         30018,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sibling_enum",
+	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,json=extensionRepeatedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum",
+}
+
+var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*SiblingMessage)(nil),
+	Field:         30019,
+	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sibling_message",
+	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message,json=extensionRepeatedSiblingMessage",
+}
+
+var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
+	Field:         30020,
+	Name:          "google.golang.org.proto2_20160519.Message.extensionrepeatedgroup",
+	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
+}
+
+type Message_ChildMessage struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
+func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
+func (*Message_ChildMessage) ProtoMessage()               {}
+func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+func (m *Message_ChildMessage) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *Message_ChildMessage) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message_NamedGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_NamedGroup) Reset()                    { *m = Message_NamedGroup{} }
+func (m *Message_NamedGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_NamedGroup) ProtoMessage()               {}
+func (*Message_NamedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} }
+
+func (m *Message_NamedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_NamedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_NamedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *Message_NamedGroup) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message_OptionalGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_OptionalGroup) Reset()                    { *m = Message_OptionalGroup{} }
+func (m *Message_OptionalGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_OptionalGroup) ProtoMessage()               {}
+func (*Message_OptionalGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 2} }
+
+func (m *Message_OptionalGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_OptionalGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_OptionalGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_RequiredGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_RequiredGroup) Reset()                    { *m = Message_RequiredGroup{} }
+func (m *Message_RequiredGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_RequiredGroup) ProtoMessage()               {}
+func (*Message_RequiredGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 3} }
+
+func (m *Message_RequiredGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_RequiredGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_RequiredGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_RepeatedGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_RepeatedGroup) Reset()                    { *m = Message_RepeatedGroup{} }
+func (m *Message_RepeatedGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_RepeatedGroup) ProtoMessage()               {}
+func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 4} }
+
+func (m *Message_RepeatedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_RepeatedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_RepeatedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_OneofGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_OneofGroup) Reset()                    { *m = Message_OneofGroup{} }
+func (m *Message_OneofGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_OneofGroup) ProtoMessage()               {}
+func (*Message_OneofGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 33} }
+
+func (m *Message_OneofGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_OneofGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_OneofGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_ExtensionOptionalGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
+func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
+func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{1, 34}
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_ExtensionRepeatedGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
+func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
+func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{1, 35}
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20160519.SiblingMessage")
+	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20160519.Message")
+	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20160519.Message.ChildMessage")
+	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20160519.Message.NamedGroup")
+	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20160519.Message.OptionalGroup")
+	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20160519.Message.RequiredGroup")
+	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20160519.Message.RepeatedGroup")
+	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20160519.Message.OneofGroup")
+	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20160519.Message.ExtensionOptionalGroup")
+	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20160519.Message.ExtensionRepeatedGroup")
+	proto.RegisterEnum("google.golang.org.proto2_20160519.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
+	proto.RegisterEnum("google.golang.org.proto2_20160519.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
+	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
+	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
+	proto.RegisterExtension(E_Message_ExtensionOptionalString)
+	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
+	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
+	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
+	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
+	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
+}
+
+var fileDescriptor0 = []byte{
+	// 4492 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x67, 0x70, 0x24, 0xc7,
+	0x75, 0xc6, 0xec, 0x62, 0x17, 0x87, 0x3e, 0x2c, 0xb0, 0x98, 0xbb, 0x03, 0xe6, 0x40, 0xd2, 0x5c,
+	0x9d, 0x65, 0x79, 0x7d, 0xe6, 0xe1, 0x80, 0x41, 0xa3, 0x8f, 0xb7, 0x66, 0xd0, 0x81, 0x3c, 0x6a,
+	0x29, 0x8b, 0x4b, 0xd7, 0xb0, 0xce, 0xa5, 0x52, 0xb1, 0x0c, 0x03, 0x87, 0x05, 0x0e, 0xe4, 0x06,
+	0x10, 0xd8, 0x3d, 0xf2, 0x2c, 0xb9, 0x78, 0x96, 0xe3, 0x4f, 0x2a, 0xa7, 0x95, 0x44, 0x31, 0x4b,
+	0x8c, 0xca, 0x89, 0x49, 0xc1, 0x36, 0x95, 0x93, 0x83, 0x9c, 0xe4, 0x9c, 0xe4, 0x9c, 0x73, 0xa8,
+	0xee, 0xd7, 0x3d, 0xdd, 0x3d, 0xd3, 0xb3, 0x40, 0xcf, 0xaa, 0xf8, 0x83, 0x55, 0xbc, 0xde, 0xd7,
+	0xef, 0xeb, 0xf7, 0x6d, 0xbf, 0xf7, 0x3e, 0xf4, 0x4c, 0x2f, 0x3a, 0xba, 0xb5, 0xdd, 0xee, 0xb4,
+	0xfd, 0xd9, 0xf3, 0x73, 0xb3, 0x73, 0xb3, 0x73, 0xc7, 0xfc, 0xb9, 0x79, 0x32, 0xb7, 0x38, 0x7f,
+	0xf2, 0xd8, 0x0a, 0x5e, 0x59, 0x3d, 0x59, 0x3f, 0xbb, 0x78, 0xbc, 0x53, 0xdf, 0xe9, 0xcc, 0x32,
+	0x23, 0xf7, 0x25, 0x1b, 0xed, 0xf6, 0x46, 0xa3, 0x3e, 0xbb, 0xd1, 0x6e, 0xac, 0xb4, 0x36, 0x66,
+	0xdb, 0xdb, 0x1b, 0xf0, 0x81, 0xbf, 0x2c, 0xa6, 0x1d, 0x79, 0x1d, 0x1a, 0xbf, 0x65, 0x73, 0xb5,
+	0xb1, 0xd9, 0xda, 0xb8, 0xa9, 0xbe, 0xb3, 0xb3, 0xb2, 0x51, 0x77, 0xc7, 0x51, 0x66, 0x7d, 0xde,
+	0x73, 0x4a, 0x4e, 0x79, 0x34, 0xc8, 0xac, 0xcf, 0xb3, 0x7f, 0xfb, 0x5e, 0xa6, 0x94, 0x61, 0xff,
+	0xf6, 0xd9, 0xbf, 0x17, 0xbc, 0x6c, 0x29, 0xcb, 0xfe, 0xbd, 0xe0, 0x56, 0x50, 0x66, 0x1d, 0x7b,
+	0xc3, 0x25, 0xa7, 0xbc, 0xdf, 0x3f, 0x3a, 0xbb, 0x2b, 0xe2, 0x2c, 0xc7, 0x09, 0x32, 0xeb, 0xf8,
+	0xc8, 0x77, 0x1e, 0x75, 0xd0, 0x88, 0x00, 0x3e, 0x83, 0x50, 0x6b, 0xa5, 0x59, 0x5f, 0xdb, 0xd8,
+	0x6e, 0x77, 0xb7, 0xd8, 0x02, 0x90, 0xbf, 0xb8, 0x77, 0x87, 0xb3, 0x35, 0x3a, 0xf9, 0x15, 0x74,
+	0x72, 0xa0, 0x38, 0x72, 0xbf, 0x1f, 0x15, 0xda, 0x5b, 0x9d, 0xcd, 0x76, 0x6b, 0xa5, 0xb1, 0xbc,
+	0xda, 0x6e, 0x37, 0xbc, 0xb5, 0x92, 0x53, 0xde, 0x17, 0x8c, 0x89, 0xc1, 0xa5, 0x76, 0xbb, 0xe1,
+	0xfe, 0x00, 0x1a, 0x0f, 0x8d, 0x36, 0x5b, 0x9d, 0x05, 0xdf, 0xab, 0x97, 0x9c, 0x72, 0x2e, 0x08,
+	0xa7, 0xde, 0x48, 0x07, 0xdd, 0x1f, 0x44, 0x13, 0xa1, 0xd9, 0x0e, 0xd8, 0xad, 0x97, 0x9c, 0xf2,
+	0x64, 0x10, 0xce, 0xbe, 0x65, 0x33, 0x66, 0xd8, 0x05, 0xc3, 0x8d, 0x92, 0x53, 0x2e, 0x48, 0xc3,
+	0x33, 0x60, 0x18, 0x01, 0x26, 0xd8, 0x3b, 0x57, 0x72, 0xca, 0x59, 0x0d, 0x98, 0xe0, 0x18, 0x30,
+	0xc1, 0xde, 0x66, 0xc9, 0x29, 0xbb, 0x3a, 0x70, 0xc4, 0xb0, 0x0b, 0x86, 0xb7, 0x95, 0x9c, 0xf2,
+	0xb0, 0x0e, 0x4c, 0xb0, 0xfb, 0x43, 0xa8, 0x18, 0x1a, 0xae, 0x6f, 0xde, 0x55, 0x5f, 0x5b, 0xf0,
+	0xbd, 0xdb, 0x4b, 0x4e, 0x79, 0x24, 0x08, 0x1d, 0xdc, 0x00, 0xc3, 0xee, 0x0f, 0xa3, 0x49, 0x09,
+	0x2e, 0x6c, 0x1b, 0x25, 0xa7, 0x3c, 0x11, 0x84, 0x3e, 0x6e, 0xe1, 0xe3, 0x5a, 0x40, 0xeb, 0x8d,
+	0xf6, 0x4a, 0xc7, 0x6b, 0x96, 0x9c, 0x72, 0x46, 0x06, 0x74, 0x03, 0x1d, 0x8c, 0xc3, 0x13, 0xec,
+	0xb5, 0x4a, 0x4e, 0x39, 0x1f, 0x81, 0x27, 0xd8, 0x00, 0x4f, 0xb0, 0xd7, 0x2e, 0x39, 0xe5, 0x62,
+	0x14, 0x3e, 0x12, 0xff, 0x5a, 0xbb, 0xbb, 0xda, 0xa8, 0x7b, 0x5b, 0x25, 0xa7, 0xec, 0xc8, 0xf8,
+	0xaf, 0x67, 0xa3, 0x3a, 0xa3, 0x9d, 0xed, 0xcd, 0xd6, 0x86, 0x77, 0x07, 0xdb, 0xf3, 0x92, 0x51,
+	0x36, 0xaa, 0x05, 0xb4, 0x7a, 0xa1, 0x53, 0xdf, 0xf1, 0xb6, 0x4b, 0x4e, 0x79, 0x4c, 0x06, 0xb4,
+	0x44, 0x07, 0xdd, 0x35, 0x74, 0x20, 0x34, 0x3b, 0x7b, 0x6e, 0xb3, 0xb1, 0xb6, 0x5c, 0x6f, 0x75,
+	0x9b, 0xde, 0x4e, 0xc9, 0x29, 0x8f, 0xfb, 0xd8, 0x62, 0x1b, 0x5f, 0x47, 0x27, 0x9f, 0x6e, 0x75,
+	0x9b, 0x41, 0x18, 0x76, 0x38, 0xe4, 0x36, 0xd1, 0x54, 0x04, 0xa5, 0x09, 0xd3, 0xbc, 0x0e, 0x4b,
+	0xc0, 0x13, 0xb6, 0x40, 0x22, 0x1b, 0x0f, 0x6a, 0x58, 0x22, 0x25, 0x37, 0x50, 0x38, 0xbe, 0xcc,
+	0x52, 0x6a, 0x19, 0x92, 0xb3, 0xcb, 0xc0, 0x52, 0x26, 0xa7, 0x2b, 0x5c, 0xca, 0x31, 0x77, 0x15,
+	0x1d, 0x52, 0xf6, 0x37, 0xab, 0x47, 0xc0, 0xdf, 0x79, 0xc6, 0xdf, 0xec, 0x1e, 0x90, 0x78, 0x19,
+	0x63, 0xcc, 0x1d, 0x90, 0x59, 0x11, 0x0e, 0xba, 0xb7, 0x23, 0x2f, 0x86, 0x21, 0xd8, 0xbb, 0x93,
+	0x05, 0x34, 0xbf, 0x77, 0x18, 0xc1, 0xdb, 0x54, 0x04, 0x49, 0x30, 0xf7, 0x13, 0xb2, 0xea, 0x00,
+	0x65, 0x77, 0xb1, 0x7a, 0x76, 0xa5, 0x05, 0x65, 0x37, 0xf3, 0xf9, 0xc0, 0x9a, 0xee, 0xce, 0xbd,
+	0x02, 0x8d, 0xaf, 0xd5, 0xd7, 0x57, 0xba, 0x8d, 0x4e, 0x7d, 0x0d, 0xca, 0xda, 0x0b, 0xb4, 0x62,
+	0xee, 0xab, 0x0c, 0x77, 0xb6, 0xbb, 0xf5, 0xa0, 0x10, 0x7e, 0xc8, 0xca, 0xdb, 0x1c, 0x9a, 0x90,
+	0xd6, 0x50, 0x8e, 0xbe, 0x40, 0xcd, 0x73, 0x95, 0xfc, 0xb1, 0x79, 0x7f, 0x01, 0x2f, 0x06, 0xd2,
+	0x1b, 0x54, 0xba, 0x79, 0x54, 0x94, 0x33, 0x78, 0xa9, 0xfb, 0x22, 0x9d, 0x32, 0x59, 0xc9, 0x1d,
+	0x5b, 0xf0, 0xe7, 0xe6, 0x02, 0xe9, 0x91, 0xd7, 0xbc, 0x39, 0x75, 0x0a, 0x2f, 0x7a, 0x5f, 0xa2,
+	0x53, 0x0a, 0x95, 0xe1, 0xc8, 0x0c, 0x5e, 0xfc, 0x70, 0x64, 0x59, 0x04, 0x7b, 0x5f, 0xa6, 0x13,
+	0xb2, 0x15, 0x04, 0xcb, 0x22, 0x27, 0xae, 0x3c, 0xa9, 0x2f, 0x8d, 0xe0, 0xf8, 0xd2, 0x08, 0xf6,
+	0xbe, 0x42, 0xa7, 0xb9, 0x95, 0xdc, 0x31, 0x82, 0x63, 0x4b, 0x23, 0x38, 0xbe, 0x34, 0x82, 0xbd,
+	0xaf, 0xd2, 0x29, 0xc3, 0x95, 0xe1, 0xc8, 0x0c, 0x5e, 0x1e, 0x31, 0x9a, 0x94, 0x33, 0x44, 0xcd,
+	0xfb, 0x1a, 0x9d, 0x32, 0x52, 0xc9, 0xd3, 0x68, 0xe6, 0xe6, 0x02, 0xe9, 0x53, 0x54, 0xca, 0x13,
+	0xc8, 0x55, 0x96, 0x26, 0xa6, 0x7d, 0x9d, 0x4e, 0x9b, 0xa8, 0x8c, 0x1c, 0xe3, 0xf3, 0xa4, 0xe7,
+	0xb0, 0x6a, 0xce, 0xab, 0x4c, 0x40, 0xd9, 0xfc, 0x06, 0x9d, 0x95, 0xa9, 0x8c, 0x2c, 0xcc, 0xce,
+	0xe3, 0xf9, 0x45, 0x95, 0x06, 0xa8, 0xa0, 0xf1, 0x15, 0x12, 0xec, 0x7d, 0x93, 0x4e, 0xca, 0x57,
+	0xf2, 0x34, 0xa8, 0xf8, 0x0a, 0x09, 0x36, 0xad, 0x90, 0x60, 0xef, 0x5b, 0x74, 0x5a, 0xb1, 0x32,
+	0x72, 0x8c, 0xcf, 0x8b, 0xae, 0x90, 0x60, 0xf7, 0xa4, 0x4a, 0x21, 0xaf, 0xac, 0xbf, 0x46, 0xa7,
+	0x39, 0x95, 0x02, 0x5f, 0xa2, 0x4f, 0x16, 0x17, 0x16, 0x4f, 0x2a, 0x5c, 0xf2, 0x52, 0x7b, 0x95,
+	0xf6, 0x85, 0x41, 0xad, 0xfd, 0x75, 0x26, 0x30, 0x2a, 0xc5, 0x73, 0xf5, 0x46, 0xa3, 0x7d, 0x45,
+	0xe9, 0xc8, 0x9d, 0xed, 0xed, 0xc6, 0xda, 0x4b, 0x8e, 0x20, 0xf5, 0xbb, 0x83, 0xfa, 0xbb, 0xa4,
+	0x52, 0x03, 0x05, 0xf8, 0x37, 0xe8, 0xe4, 0xb1, 0x8a, 0xb7, 0x56, 0x5f, 0x59, 0xbb, 0x75, 0x61,
+	0x81, 0xdc, 0xea, 0x2f, 0x2e, 0xde, 0xea, 0x9f, 0x20, 0xb7, 0x2e, 0x2c, 0x9e, 0x58, 0xad, 0xd7,
+	0xd7, 0x15, 0xae, 0xa0, 0x38, 0xb7, 0xd0, 0x41, 0xe9, 0x43, 0xa9, 0xce, 0xbf, 0xe9, 0xa4, 0x2f,
+	0xcf, 0x95, 0xdc, 0xa9, 0x57, 0xfd, 0x58, 0xf5, 0x54, 0x20, 0xf9, 0x94, 0x65, 0xba, 0x81, 0xa6,
+	0xd4, 0x2d, 0xaa, 0xd4, 0xb3, 0x6f, 0x3b, 0x69, 0x0a, 0x9a, 0xc0, 0x3a, 0xa8, 0x6c, 0x6c, 0x59,
+	0xd8, 0x5e, 0x8a, 0x0a, 0xdb, 0xf5, 0x3b, 0xba, 0x9b, 0xdb, 0xa2, 0x14, 0x3c, 0x46, 0xd5, 0xda,
+	0xbe, 0x60, 0x4c, 0x8c, 0xb2, 0x1a, 0xf0, 0x32, 0x34, 0x1e, 0x5a, 0x41, 0x72, 0x3e, 0x4e, 0xcd,
+	0x72, 0x41, 0x38, 0x19, 0x32, 0xbf, 0x8c, 0x26, 0x42, 0x3b, 0x9e, 0xf8, 0x4f, 0x50, 0xc3, 0xc9,
+	0x20, 0x9c, 0xcf, 0x13, 0x5e, 0xb5, 0xe4, 0xf9, 0xfe, 0x24, 0xb5, 0x2c, 0x48, 0x4b, 0x9e, 0xe8,
+	0x11, 0x6c, 0x82, 0xbd, 0xa7, 0xa8, 0x61, 0x56, 0xc3, 0x26, 0x38, 0x86, 0x4d, 0xb0, 0xf7, 0x41,
+	0x6a, 0xe8, 0xea, 0xd8, 0x11, 0x4b, 0x9e, 0xd0, 0x1f, 0xa2, 0x96, 0xc3, 0x3a, 0x36, 0xc1, 0xee,
+	0x51, 0x54, 0x0c, 0x2d, 0x45, 0x46, 0x7e, 0x98, 0x9a, 0x8e, 0x04, 0xa1, 0x0b, 0x91, 0xbf, 0x57,
+	0xa0, 0x49, 0x89, 0x2f, 0x8c, 0x3f, 0x42, 0x8d, 0x27, 0x82, 0xd0, 0x4b, 0x98, 0xb4, 0x6a, 0x54,
+	0x90, 0xb3, 0x1f, 0xa5, 0xa6, 0x19, 0x19, 0x15, 0x64, 0x6a, 0x6c, 0x05, 0x04, 0x7b, 0x1f, 0xa3,
+	0x96, 0xf9, 0xc8, 0x0a, 0x08, 0x36, 0xac, 0x80, 0x60, 0xef, 0xe3, 0xd4, 0xb8, 0x18, 0x5d, 0x41,
+	0x84, 0x05, 0x9e, 0x93, 0x9f, 0xa0, 0xb6, 0x8e, 0x64, 0x81, 0xe7, 0xa0, 0xc6, 0x2c, 0xa4, 0xe0,
+	0x27, 0x41, 0xd3, 0x4b, 0x66, 0x21, 0xdf, 0xd4, 0xa8, 0x20, 0xdd, 0x3e, 0x45, 0x0d, 0xc7, 0x64,
+	0x54, 0x90, 0x53, 0x75, 0x74, 0x20, 0xb4, 0x53, 0x52, 0xea, 0xd3, 0xd4, 0x38, 0xb5, 0xe2, 0x11,
+	0x1e, 0x65, 0x2a, 0xb5, 0xd0, 0x54, 0x04, 0x46, 0xf4, 0xec, 0xa7, 0x29, 0xd2, 0x20, 0x92, 0x47,
+	0x03, 0x13, 0x8d, 0xfb, 0x1c, 0x0a, 0xc7, 0x35, 0xc9, 0xf3, 0x0c, 0xa0, 0xa5, 0xd5, 0x3c, 0xc2,
+	0xa7, 0xa2, 0x79, 0xce, 0xa2, 0x43, 0xca, 0x66, 0x57, 0x6a, 0xc4, 0xb3, 0x40, 0xa1, 0xb5, 0xe8,
+	0x91, 0x29, 0x22, 0x6b, 0x43, 0x03, 0x79, 0x31, 0x10, 0x41, 0xe0, 0x73, 0x10, 0x52, 0x1a, 0xd5,
+	0x13, 0x81, 0x12, 0xe4, 0x2d, 0xcb, 0x4a, 0x04, 0xac, 0x3d, 0x4f, 0x21, 0xec, 0x64, 0x4f, 0xc0,
+	0x1d, 0x70, 0xd9, 0xa3, 0xf9, 0x73, 0xaf, 0x46, 0xd3, 0x72, 0xc3, 0xeb, 0xfa, 0xe7, 0x9e, 0x2c,
+	0x2d, 0x7a, 0x5c, 0xff, 0x84, 0xcc, 0x5e, 0xaf, 0xe9, 0xa0, 0x53, 0x0a, 0x1b, 0x51, 0x41, 0xf4,
+	0x06, 0x3a, 0x5f, 0x0a, 0xa2, 0xa9, 0x98, 0x07, 0x28, 0x8f, 0x4b, 0xe8, 0xb0, 0xc1, 0x05, 0x2f,
+	0x94, 0x6f, 0xa4, 0x3e, 0x42, 0x85, 0x34, 0x1d, 0x73, 0xc1, 0x0b, 0xe7, 0x29, 0xa3, 0x0f, 0x5e,
+	0x42, 0xdf, 0x44, 0x7d, 0x08, 0xc9, 0x14, 0x77, 0xc1, 0x2b, 0xea, 0xe9, 0xa4, 0x48, 0x08, 0xf6,
+	0xde, 0x4c, 0x3d, 0xe8, 0x1a, 0xca, 0x18, 0x0d, 0xc1, 0x7d, 0xa2, 0x21, 0xd8, 0x7b, 0x0b, 0xf5,
+	0x13, 0x8a, 0x2a, 0x73, 0x34, 0x04, 0xf7, 0x89, 0x86, 0x60, 0xef, 0xad, 0xd4, 0x87, 0x50, 0x59,
+	0xe6, 0x68, 0x08, 0x76, 0x4f, 0xa3, 0x19, 0x83, 0x0b, 0x51, 0x80, 0xdf, 0x46, 0x7d, 0x48, 0xd9,
+	0xe5, 0xc5, 0xbc, 0x88, 0xf2, 0x5d, 0x45, 0x97, 0x98, 0xa2, 0x11, 0x7e, 0xde, 0x4e, 0xfd, 0x28,
+	0x3a, 0xec, 0x70, 0x3c, 0x22, 0x51, 0xda, 0x97, 0x8c, 0xf4, 0x42, 0x91, 0x7f, 0x07, 0x75, 0xa3,
+	0x08, 0xb3, 0x38, 0xb7, 0x50, 0xf6, 0xfb, 0x04, 0x45, 0xb0, 0xf7, 0x4e, 0xea, 0x45, 0x2a, 0xb5,
+	0x84, 0xa0, 0x08, 0xee, 0x1b, 0x14, 0xc1, 0xde, 0xbb, 0xa8, 0x1f, 0x45, 0xba, 0x25, 0x05, 0x45,
+	0xb0, 0xfb, 0x4a, 0xe3, 0x17, 0xc5, 0xfb, 0x46, 0x8f, 0xfa, 0x89, 0x69, 0xb9, 0xf8, 0x37, 0xc6,
+	0xfb, 0xc9, 0x4d, 0xe6, 0x8d, 0x03, 0x9d, 0xe5, 0xdd, 0xd4, 0x97, 0x49, 0xdc, 0x19, 0xf6, 0x10,
+	0x34, 0x9d, 0x5b, 0x8c, 0x7c, 0x43, 0xfb, 0x79, 0x0f, 0xf5, 0xd6, 0x4f, 0xed, 0xc5, 0xbf, 0x00,
+	0xe8, 0x50, 0x77, 0xa3, 0xcb, 0x0c, 0x4e, 0x95, 0x5e, 0xf5, 0xde, 0x6c, 0xfa, 0x5e, 0x25, 0x24,
+	0xd9, 0x4c, 0x0c, 0x5c, 0xf6, 0xae, 0x9f, 0x46, 0x97, 0x1b, 0xb3, 0x4b, 0xa9, 0xf5, 0xf7, 0x66,
+	0xd3, 0xd4, 0x7a, 0x01, 0x7e, 0xa9, 0x21, 0x27, 0x23, 0xba, 0x70, 0xab, 0xbe, 0x12, 0x96, 0xc8,
+	0x7f, 0xce, 0x96, 0xb2, 0xa0, 0x0b, 0x61, 0x54, 0xea, 0x42, 0x6e, 0x05, 0x15, 0xe8, 0x5f, 0xa8,
+	0x19, 0xd3, 0x85, 0x30, 0xac, 0xe8, 0x42, 0x6e, 0xc7, 0xcb, 0xdd, 0xbf, 0x52, 0x43, 0xa6, 0x0b,
+	0x61, 0x5c, 0xd5, 0x85, 0xdc, 0x92, 0x17, 0xb5, 0x7f, 0xa3, 0x96, 0x05, 0x69, 0xa9, 0xea, 0x42,
+	0x89, 0x4d, 0xb0, 0xf7, 0xef, 0xd4, 0x30, 0xab, 0x61, 0x0b, 0x9d, 0xa3, 0x60, 0x13, 0xec, 0xfd,
+	0x07, 0x35, 0x74, 0x75, 0xec, 0x88, 0x25, 0x2f, 0x41, 0xff, 0x49, 0x2d, 0x87, 0x75, 0x6c, 0xa1,
+	0x0b, 0xb9, 0xa5, 0xa8, 0x10, 0xff, 0x45, 0x4d, 0x99, 0x2e, 0x84, 0x0f, 0x34, 0x5d, 0x28, 0xf0,
+	0x85, 0xf1, 0x7f, 0x53, 0x63, 0xa6, 0x0b, 0xf9, 0x0a, 0x34, 0x5d, 0x28, 0x3c, 0xb3, 0x92, 0xf1,
+	0x3f, 0xd4, 0x34, 0x23, 0xa3, 0x52, 0x74, 0xa1, 0xba, 0x02, 0x82, 0xbd, 0xff, 0xa5, 0x96, 0xf9,
+	0xc8, 0x0a, 0x84, 0x2e, 0xd4, 0x56, 0x40, 0xb0, 0xf7, 0x7f, 0xd4, 0xb8, 0x18, 0x5d, 0x41, 0x84,
+	0x05, 0x9e, 0xdf, 0x17, 0x87, 0x4b, 0x59, 0xd0, 0x85, 0x30, 0xae, 0xea, 0x42, 0xe1, 0x17, 0xb2,
+	0xf7, 0x67, 0x86, 0xd9, 0xd9, 0xae, 0x64, 0x56, 0xd1, 0x85, 0x62, 0x37, 0xb1, 0xc4, 0x7c, 0x3d,
+	0x35, 0x1c, 0x93, 0x51, 0x29, 0xba, 0x90, 0xdb, 0x29, 0xb9, 0xf6, 0xb3, 0xd4, 0x78, 0x00, 0x5d,
+	0x08, 0x1e, 0x23, 0xba, 0x50, 0x83, 0x11, 0xb2, 0xe6, 0xe7, 0x28, 0xd2, 0x60, 0xba, 0x50, 0x01,
+	0xd3, 0x74, 0x21, 0xc7, 0x53, 0x75, 0xe1, 0xcf, 0x03, 0x5a, 0x7a, 0x5d, 0x08, 0x3e, 0xa3, 0xba,
+	0x30, 0xdc, 0xec, 0x4a, 0xad, 0xf8, 0x05, 0xa0, 0x30, 0x85, 0x2e, 0x14, 0x29, 0x12, 0xd1, 0x85,
+	0x11, 0x10, 0x41, 0xe0, 0x2f, 0x42, 0x48, 0xe9, 0x74, 0xa1, 0x06, 0xa5, 0xe9, 0x42, 0xf8, 0x04,
+	0x58, 0xfb, 0x25, 0x0a, 0x61, 0xab, 0x0b, 0xc1, 0x41, 0xa8, 0x0b, 0x15, 0x7f, 0xee, 0x4f, 0xa2,
+	0x42, 0x73, 0x65, 0x8b, 0x55, 0x39, 0x28, 0x75, 0xdf, 0x86, 0x18, 0x7e, 0xc4, 0x02, 0xe0, 0xa6,
+	0x95, 0x2d, 0x5a, 0x10, 0xe9, 0x7f, 0xa7, 0x5b, 0x9d, 0xed, 0x0b, 0xc1, 0xfe, 0xa6, 0x1c, 0x71,
+	0xcf, 0xa2, 0xf1, 0x10, 0x01, 0x6a, 0xda, 0x6f, 0x01, 0xc4, 0x55, 0xf6, 0x10, 0xac, 0xa0, 0x02,
+	0xc6, 0x58, 0x53, 0x19, 0x72, 0xd7, 0xd1, 0x44, 0x08, 0xc2, 0x6b, 0xec, 0x6f, 0x03, 0xca, 0xd5,
+	0xf6, 0x28, 0x50, 0x8d, 0x01, 0xa6, 0xd0, 0x54, 0xc7, 0x34, 0x1c, 0x5e, 0xa1, 0x7f, 0x27, 0x35,
+	0xce, 0x19, 0x03, 0x0e, 0xaf, 0xef, 0x11, 0xd2, 0x08, 0xf6, 0x7e, 0x77, 0x10, 0xd2, 0x08, 0x8e,
+	0x91, 0x46, 0x70, 0x8c, 0x34, 0x82, 0xbd, 0xdf, 0x1b, 0x88, 0x34, 0x01, 0xa3, 0x92, 0x16, 0xc1,
+	0xe1, 0xad, 0xe5, 0x3b, 0x03, 0x91, 0x16, 0xc5, 0xe1, 0x8d, 0x69, 0x13, 0x15, 0x43, 0x1c, 0xd1,
+	0x6b, 0x7e, 0x1f, 0x80, 0xae, 0xb1, 0x07, 0xe2, 0x2d, 0x0c, 0x90, 0xc6, 0x9b, 0xda, 0xa0, 0xdb,
+	0x40, 0x93, 0x92, 0x3a, 0x81, 0xf5, 0x07, 0x80, 0x75, 0x6d, 0x0a, 0xf2, 0xd6, 0x55, 0xb0, 0x89,
+	0xa6, 0x3e, 0xaa, 0xed, 0x06, 0xe8, 0x8b, 0x7f, 0x98, 0x7a, 0x37, 0xb0, 0x0e, 0xaa, 0xef, 0x06,
+	0x68, 0xaa, 0x31, 0xf6, 0x08, 0xf6, 0xfe, 0x68, 0x30, 0xf6, 0xc4, 0xf7, 0xa4, 0xb1, 0x47, 0xb0,
+	0x81, 0x3d, 0x82, 0xbd, 0x3f, 0x1e, 0x90, 0x3d, 0x01, 0xa6, 0xb3, 0x17, 0xd9, 0x7e, 0xbc, 0xa7,
+	0xff, 0x49, 0xea, 0xed, 0x07, 0xdd, 0x5f, 0xdf, 0x7e, 0x5c, 0x11, 0x68, 0xe9, 0x04, 0x8a, 0xe0,
+	0x4f, 0xd3, 0xa7, 0x13, 0x73, 0x10, 0x49, 0x27, 0xd0, 0x13, 0xea, 0x6e, 0x00, 0x3d, 0xf1, 0x67,
+	0xa9, 0x77, 0x03, 0x53, 0x1e, 0xfa, 0x6e, 0x00, 0x31, 0xb2, 0x85, 0x0e, 0x84, 0x20, 0x8a, 0x18,
+	0xf9, 0x73, 0x40, 0x7a, 0xb9, 0x3d, 0x52, 0x28, 0x40, 0x00, 0xad, 0xd8, 0x8c, 0x0c, 0xbb, 0x17,
+	0xd0, 0x54, 0x04, 0x51, 0xb4, 0xd5, 0xbf, 0x00, 0xd0, 0xeb, 0x52, 0x82, 0xf2, 0x31, 0xc0, 0x3d,
+	0xd0, 0x8c, 0x7f, 0xe2, 0xee, 0xa0, 0x83, 0x21, 0xb4, 0x2a, 0x51, 0xfe, 0x12, 0x80, 0x4f, 0xd9,
+	0x03, 0x4b, 0x55, 0x02, 0xb0, 0x93, 0xcd, 0xe8, 0xb8, 0x7b, 0x1e, 0x1d, 0x52, 0xaa, 0xaf, 0xa2,
+	0x56, 0xbe, 0x0b, 0xa8, 0x4b, 0x69, 0x6a, 0x70, 0xa8, 0x53, 0x00, 0xd6, 0x6d, 0xc6, 0x3e, 0x70,
+	0xef, 0x46, 0x5e, 0x0c, 0x57, 0x30, 0xfd, 0x57, 0x00, 0x7d, 0x3a, 0x35, 0xb4, 0xc6, 0xf5, 0xa1,
+	0xa6, 0xe9, 0x33, 0xb1, 0x7f, 0x59, 0xa3, 0x03, 0xcd, 0xf1, 0xd7, 0xa9, 0xf6, 0x2f, 0xeb, 0xfc,
+	0x52, 0x74, 0xd0, 0xfd, 0x1b, 0x0e, 0x89, 0x64, 0xdc, 0x51, 0x50, 0xfe, 0x26, 0x55, 0x32, 0x42,
+	0xe3, 0x97, 0x30, 0x34, 0x19, 0xe5, 0x98, 0xc0, 0xe9, 0x2a, 0x38, 0x7f, 0x9b, 0x0a, 0xe7, 0x8c,
+	0x01, 0x47, 0x8e, 0x29, 0xa4, 0x11, 0x0c, 0x30, 0x7f, 0x97, 0x96, 0x34, 0x82, 0x63, 0xa4, 0xc1,
+	0x90, 0x4a, 0x9a, 0x40, 0xf9, 0xfb, 0xd4, 0xa4, 0xa9, 0x30, 0x82, 0x34, 0x1d, 0xa7, 0xab, 0xe0,
+	0xfc, 0x43, 0x6a, 0xd2, 0xa2, 0x38, 0x72, 0x4c, 0xb4, 0x34, 0xde, 0x46, 0x01, 0xe8, 0x1f, 0x53,
+	0xb5, 0x34, 0xde, 0xf7, 0x25, 0x12, 0xfd, 0x36, 0x94, 0xc1, 0x90, 0x3a, 0x56, 0xa2, 0x01, 0xe9,
+	0x9f, 0xd2, 0x51, 0xc7, 0x3c, 0x44, 0xa8, 0x0b, 0xc7, 0xdc, 0x12, 0x42, 0xed, 0x56, 0xbd, 0xbd,
+	0x0e, 0x10, 0x4f, 0xe7, 0x4a, 0x4e, 0x79, 0x5f, 0x75, 0x28, 0x18, 0x65, 0x83, 0xcc, 0xe2, 0x08,
+	0xda, 0x0f, 0x16, 0x20, 0x4f, 0x9f, 0xa1, 0x26, 0xb9, 0xea, 0x50, 0x00, 0xf3, 0x40, 0x2e, 0xbf,
+	0x14, 0x8d, 0x81, 0x0d, 0xd7, 0xca, 0xcf, 0x52, 0xa3, 0xc9, 0xea, 0x50, 0x00, 0x53, 0xb9, 0xd8,
+	0x0d, 0xad, 0xb8, 0xd2, 0x7d, 0x8e, 0x5a, 0x15, 0x42, 0x2b, 0x2e, 0x55, 0x55, 0x3c, 0x82, 0xbd,
+	0xe7, 0xa9, 0x51, 0x56, 0xc5, 0x23, 0x58, 0xc7, 0x23, 0xd8, 0xfb, 0x0c, 0x35, 0x72, 0x35, 0x3c,
+	0xd5, 0x8a, 0x8b, 0xc4, 0xcf, 0x52, 0xab, 0x61, 0x0d, 0x8f, 0x60, 0xf7, 0x65, 0xa8, 0x00, 0x56,
+	0x42, 0x76, 0x7d, 0x8e, 0x9a, 0x8d, 0x54, 0x87, 0x02, 0x98, 0x2d, 0x24, 0x5a, 0x19, 0x8d, 0x73,
+	0x4c, 0x61, 0xf8, 0x79, 0x6a, 0x38, 0x51, 0x1d, 0x0a, 0xc0, 0x41, 0x28, 0xaf, 0xc2, 0x08, 0x40,
+	0x5b, 0xfd, 0x32, 0x35, 0xcb, 0x84, 0x11, 0x80, 0x3a, 0xd2, 0x51, 0x09, 0xf6, 0x7e, 0x85, 0x5a,
+	0xe5, 0x75, 0x54, 0x76, 0x80, 0xa0, 0xa1, 0x12, 0xec, 0xfd, 0x2a, 0x35, 0x2c, 0x46, 0x50, 0xd5,
+	0x68, 0xb9, 0x26, 0x79, 0x81, 0xda, 0x39, 0x61, 0xb4, 0x5c, 0x54, 0x48, 0xe6, 0x40, 0x51, 0x7c,
+	0x81, 0x5a, 0x8d, 0x4a, 0xe6, 0x40, 0x12, 0x84, 0x11, 0x80, 0x1e, 0xf8, 0x22, 0x35, 0x1a, 0x0b,
+	0x23, 0x80, 0x8e, 0xbe, 0x82, 0x8a, 0x60, 0xa3, 0xb4, 0xf3, 0x2f, 0xe5, 0xd2, 0x3f, 0xc6, 0xad,
+	0x0e, 0x05, 0x10, 0xaa, 0x6c, 0xe1, 0xb7, 0xa1, 0x03, 0x2a, 0x84, 0xe8, 0x2a, 0x5f, 0xce, 0x0d,
+	0xf4, 0x8a, 0x4d, 0x75, 0x28, 0x98, 0x94, 0x40, 0xa2, 0x8b, 0xac, 0x21, 0x18, 0xd4, 0x1a, 0xf6,
+	0x57, 0x72, 0x03, 0xbc, 0x5f, 0x53, 0x1d, 0x0a, 0x26, 0x98, 0x4b, 0xa5, 0x49, 0x2f, 0x23, 0x57,
+	0x6c, 0x5c, 0xa5, 0x43, 0x7f, 0x35, 0x97, 0xe6, 0x59, 0x74, 0x75, 0x28, 0x28, 0xf2, 0xed, 0x2e,
+	0xbb, 0xf1, 0x39, 0x74, 0x48, 0x07, 0x10, 0xa4, 0x7d, 0x2d, 0x97, 0xf2, 0xcd, 0x9a, 0xea, 0x50,
+	0x70, 0x40, 0x85, 0x11, 0x84, 0xbd, 0x9a, 0x57, 0x0e, 0x60, 0xea, 0xeb, 0x39, 0xeb, 0xd7, 0x04,
+	0x6f, 0xa6, 0xb3, 0x05, 0x53, 0x8a, 0x2f, 0x99, 0x1b, 0xb0, 0x47, 0xe7, 0xbd, 0x6f, 0x88, 0x4d,
+	0x3a, 0xa6, 0x6c, 0xd2, 0xf9, 0xa8, 0x9d, 0xef, 0x7d, 0xd3, 0x64, 0xe7, 0x47, 0xed, 0x16, 0xbc,
+	0x6f, 0x99, 0xec, 0x16, 0xdc, 0x93, 0xe8, 0x20, 0xcf, 0x20, 0xfd, 0x81, 0xd6, 0xbd, 0x79, 0xf9,
+	0x42, 0x4f, 0xd5, 0x09, 0xe0, 0x1b, 0xd4, 0x9f, 0x67, 0x5d, 0x2d, 0x68, 0x8f, 0x3e, 0xcc, 0x7a,
+	0x5f, 0x5e, 0x7d, 0xbb, 0xa7, 0xea, 0x70, 0x2e, 0x23, 0xcf, 0xb2, 0xae, 0x41, 0x53, 0xd1, 0xe9,
+	0xbc, 0x92, 0xde, 0x97, 0x57, 0x5e, 0xf5, 0xa9, 0x3a, 0xc1, 0x41, 0x7d, 0x3a, 0xaf, 0xac, 0x57,
+	0xc7, 0xe7, 0xf3, 0x1a, 0x7b, 0x7f, 0x5e, 0xbe, 0xf7, 0x13, 0x9f, 0x7e, 0x46, 0x3c, 0x06, 0x33,
+	0xad, 0x9e, 0x60, 0xef, 0x81, 0x7c, 0xf4, 0x25, 0x20, 0x63, 0x04, 0x04, 0x27, 0x45, 0x40, 0xb0,
+	0xf7, 0x60, 0x5e, 0x79, 0x23, 0xc8, 0x1c, 0x01, 0xc1, 0x49, 0x11, 0x10, 0xec, 0x3d, 0x94, 0x97,
+	0xaf, 0x07, 0x99, 0x23, 0x60, 0x8f, 0xbe, 0xa6, 0xa3, 0xd3, 0x45, 0x95, 0x7e, 0x38, 0xaf, 0xbe,
+	0x2b, 0x54, 0x75, 0x82, 0x43, 0xba, 0x07, 0x51, 0xdf, 0xaf, 0x47, 0x5e, 0x2c, 0x02, 0xe1, 0xe3,
+	0x91, 0xbc, 0xf6, 0xe2, 0x50, 0xd5, 0x09, 0xa6, 0x22, 0x51, 0x88, 0xda, 0x7f, 0x4d, 0x9c, 0x4a,
+	0xe8, 0x02, 0xef, 0xcf, 0x6b, 0x6f, 0x11, 0xc5, 0x79, 0x84, 0xbe, 0x90, 0x14, 0x08, 0xc1, 0xde,
+	0x07, 0xf2, 0xea, 0x2b, 0x45, 0x09, 0x81, 0x10, 0x9c, 0x1c, 0x08, 0xc1, 0xde, 0xa3, 0x79, 0xed,
+	0xfd, 0xa2, 0xa4, 0x40, 0x08, 0x76, 0x6f, 0x88, 0x7f, 0x21, 0xbc, 0xb1, 0x3c, 0x96, 0x37, 0xbc,
+	0x6c, 0x14, 0xff, 0x66, 0x78, 0xc3, 0xb9, 0xd1, 0xb0, 0x31, 0xa0, 0xf5, 0x3c, 0x9e, 0x37, 0xbf,
+	0x79, 0x64, 0xd8, 0x23, 0xd0, 0x95, 0x6e, 0x8e, 0x73, 0x0b, 0xfd, 0xe9, 0x89, 0x7c, 0xff, 0xd7,
+	0x90, 0xe2, 0x64, 0x43, 0x0b, 0x7b, 0x2d, 0x9a, 0x89, 0x3a, 0x54, 0x9a, 0xd9, 0x93, 0xf9, 0x81,
+	0xdf, 0x49, 0xaa, 0x3a, 0xc1, 0xb4, 0x0e, 0xac, 0xfe, 0x7d, 0x7a, 0x69, 0x3c, 0x63, 0x94, 0xa6,
+	0xf0, 0x54, 0x7e, 0x80, 0x17, 0x94, 0xaa, 0x4e, 0x70, 0x38, 0x9a, 0x67, 0xa1, 0xcd, 0xcc, 0x4f,
+	0xa1, 0x31, 0xad, 0xf7, 0xbd, 0x88, 0x6f, 0x9a, 0xcf, 0xdc, 0x85, 0x90, 0xd2, 0x0f, 0x5f, 0x4c,
+	0xe4, 0x6b, 0x51, 0x41, 0x7b, 0x93, 0xd3, 0x16, 0x9c, 0x3a, 0xd0, 0xde, 0x89, 0x48, 0xe7, 0x40,
+	0x39, 0x3c, 0xb7, 0x76, 0x70, 0x0d, 0x2a, 0x46, 0x0f, 0xc7, 0xdd, 0x22, 0xca, 0xde, 0x5e, 0xbf,
+	0xc0, 0x9c, 0xec, 0x0b, 0xe8, 0xff, 0xba, 0x07, 0x51, 0xee, 0xfc, 0x4a, 0xa3, 0x5b, 0xf7, 0x32,
+	0x6c, 0x0c, 0xfe, 0x51, 0xc9, 0x5c, 0xe9, 0xcc, 0x5c, 0x8b, 0x26, 0x63, 0x27, 0xdf, 0xbb, 0x39,
+	0xc8, 0xa9, 0x0e, 0x5e, 0x8e, 0xdc, 0xf8, 0xa1, 0xf6, 0x6e, 0x1e, 0x26, 0xcd, 0x1e, 0xce, 0xec,
+	0xdd, 0x43, 0x21, 0x31, 0x08, 0x7e, 0x4a, 0xb7, 0x9b, 0x83, 0x6c, 0x72, 0x10, 0x7b, 0xf4, 0xe0,
+	0x26, 0x07, 0xb1, 0x47, 0x0f, 0xc3, 0xaa, 0x87, 0x53, 0xe8, 0x80, 0xe1, 0x5c, 0x78, 0x37, 0x17,
+	0x23, 0xaa, 0x8b, 0x25, 0x74, 0xd0, 0x74, 0xdc, 0xbb, 0x9b, 0x8f, 0x09, 0x33, 0x97, 0xf2, 0x1c,
+	0x77, 0x37, 0x07, 0x99, 0x3e, 0x71, 0xec, 0x91, 0x8a, 0x7c, 0xbf, 0x38, 0xf6, 0xe8, 0xa3, 0x68,
+	0xfe, 0x42, 0x94, 0x03, 0xd5, 0xdd, 0x3c, 0x38, 0x09, 0x9b, 0x42, 0x1e, 0x95, 0xee, 0xe6, 0x61,
+	0xd4, 0xcc, 0xa5, 0x3c, 0x05, 0xdd, 0xcd, 0xc1, 0x98, 0xea, 0xe0, 0x02, 0x3a, 0x64, 0x3c, 0xdc,
+	0x34, 0x38, 0x79, 0xa5, 0xea, 0x24, 0xed, 0xc3, 0x5c, 0x05, 0xfa, 0x6e, 0xe4, 0x25, 0x1d, 0x71,
+	0x1a, 0xd0, 0x6f, 0x52, 0xd1, 0x07, 0x78, 0xc0, 0xab, 0x2c, 0xe0, 0xb5, 0x68, 0xca, 0x7c, 0xd4,
+	0x69, 0x80, 0xff, 0x51, 0x1d, 0x3e, 0xe5, 0x13, 0x5f, 0x05, 0xbc, 0x8b, 0xa6, 0x13, 0x4e, 0x3c,
+	0x0d, 0xe8, 0xd7, 0xeb, 0xd4, 0xdb, 0x3e, 0x04, 0xd6, 0x62, 0x9e, 0x49, 0x3e, 0xed, 0x34, 0x20,
+	0xbf, 0x42, 0x8f, 0x3b, 0xc5, 0x63, 0xe1, 0xd8, 0x6e, 0xd5, 0xcf, 0x3c, 0x55, 0xcc, 0xdc, 0x6e,
+	0xbd, 0x04, 0x12, 0x26, 0x72, 0x9c, 0xa9, 0x7a, 0x98, 0xdc, 0x9b, 0x87, 0x33, 0xc9, 0x1e, 0x0a,
+	0x7b, 0xeb, 0x67, 0xfa, 0x19, 0xa4, 0xea, 0x20, 0xbb, 0xf7, 0x20, 0x12, 0x3c, 0xb8, 0x7b, 0x0f,
+	0x22, 0xc1, 0xc3, 0xf0, 0x6e, 0x1e, 0xa0, 0x84, 0x46, 0x4f, 0x04, 0x55, 0x17, 0x23, 0x7b, 0x0c,
+	0x43, 0x3f, 0xea, 0x53, 0x3d, 0x8c, 0xee, 0xe6, 0xe1, 0x2a, 0x84, 0xe4, 0xdf, 0xe3, 0xd6, 0xba,
+	0xa4, 0x8a, 0xa6, 0x4e, 0xdf, 0xd5, 0xa9, 0xb7, 0x76, 0x36, 0xdb, 0xad, 0xc1, 0x34, 0x96, 0xea,
+	0x69, 0x20, 0xad, 0x74, 0x64, 0x16, 0x8d, 0x4a, 0xb1, 0x3d, 0x8a, 0x40, 0x17, 0x17, 0x87, 0xe8,
+	0xff, 0x2e, 0x05, 0xa7, 0x7e, 0xfc, 0xe6, 0xa2, 0xe3, 0xee, 0x47, 0x23, 0xd7, 0x55, 0x4f, 0x05,
+	0xaf, 0xba, 0xf1, 0x74, 0x31, 0x73, 0x74, 0x74, 0xdf, 0x3d, 0xb5, 0xe2, 0xc5, 0x8b, 0x17, 0x2f,
+	0x66, 0xfc, 0xb3, 0x68, 0xba, 0x2e, 0x16, 0xb1, 0xac, 0xdd, 0x59, 0x74, 0x2d, 0x44, 0xa7, 0x77,
+	0x4f, 0x8d, 0xb1, 0x7c, 0xa8, 0x1e, 0xa5, 0x86, 0x7e, 0x45, 0x7e, 0x1d, 0x79, 0x06, 0x10, 0xf8,
+	0x83, 0xdc, 0x06, 0xe5, 0x0d, 0x35, 0x96, 0xad, 0x53, 0x31, 0x14, 0x96, 0xdb, 0xfe, 0x06, 0x3a,
+	0x6c, 0x80, 0xd9, 0xb1, 0xc7, 0x79, 0x63, 0x8d, 0xe5, 0xf4, 0x74, 0x0c, 0x07, 0x4a, 0x40, 0x02,
+	0x50, 0xd7, 0x1e, 0xe8, 0x4d, 0x35, 0x96, 0xfa, 0x71, 0x20, 0xa8, 0x14, 0xc9, 0xc4, 0x11, 0x6c,
+	0x85, 0xf3, 0xe6, 0x1a, 0xab, 0x10, 0x46, 0xe2, 0x08, 0xee, 0x43, 0x9c, 0x25, 0xce, 0x5b, 0x6a,
+	0xac, 0x8e, 0x98, 0x89, 0x4b, 0x04, 0xea, 0xda, 0x03, 0xbd, 0xb5, 0xc6, 0xca, 0x8d, 0x99, 0x38,
+	0x82, 0xfd, 0x4d, 0x34, 0x63, 0x00, 0x12, 0x27, 0x17, 0x36, 0x48, 0x6f, 0xab, 0xb1, 0xaa, 0xe4,
+	0xc5, 0x90, 0x78, 0x15, 0xf3, 0x6f, 0x47, 0x97, 0x98, 0xc8, 0x4b, 0x83, 0xf5, 0xf6, 0x1a, 0x13,
+	0xad, 0x87, 0xe3, 0xf4, 0x71, 0x6f, 0x09, 0x1b, 0x62, 0x1d, 0x5e, 0xed, 0xb3, 0x40, 0x7a, 0x47,
+	0x8d, 0xa9, 0xdb, 0xf8, 0x86, 0x60, 0xda, 0xb8, 0x1f, 0x7d, 0x96, 0x5f, 0xd4, 0x3b, 0x6b, 0x4c,
+	0x03, 0x27, 0xd0, 0x47, 0x70, 0x5f, 0xfa, 0x2c, 0xb1, 0xde, 0x55, 0x63, 0x5a, 0x39, 0x89, 0xbe,
+	0xc4, 0xfd, 0x07, 0x87, 0x3d, 0x56, 0x50, 0xbd, 0x1a, 0x13, 0xd5, 0xf1, 0xfd, 0x07, 0x9a, 0x3c,
+	0x29, 0xa3, 0xe0, 0x70, 0xc7, 0x06, 0xe8, 0xdd, 0x35, 0xd6, 0x05, 0x0c, 0x19, 0x05, 0x27, 0xbe,
+	0xe6, 0x0d, 0xc1, 0xce, 0x8a, 0xac, 0x70, 0xde, 0x53, 0x63, 0x12, 0x3d, 0xbe, 0x21, 0x98, 0xc0,
+	0xf7, 0x1f, 0x70, 0xd0, 0x65, 0x06, 0x1c, 0x79, 0x84, 0x64, 0x05, 0xf6, 0xde, 0xda, 0x00, 0x52,
+	0x7e, 0x26, 0xb6, 0xc4, 0xf0, 0x33, 0xff, 0x71, 0x07, 0x95, 0x12, 0x97, 0xc9, 0x1f, 0x0f, 0x58,
+	0xad, 0xf4, 0xde, 0xda, 0x60, 0xb2, 0xff, 0x32, 0xf3, 0x62, 0xf9, 0xc7, 0xfe, 0xc3, 0x0e, 0xfa,
+	0x3e, 0xc3, 0x7a, 0x95, 0xe7, 0x32, 0x56, 0xab, 0x7d, 0x5f, 0x6d, 0x90, 0xbf, 0x12, 0x2e, 0x89,
+	0xad, 0x55, 0x7e, 0xe8, 0xdf, 0xe7, 0xa0, 0xcb, 0x8d, 0x3d, 0x42, 0x1e, 0xe3, 0x59, 0x2d, 0xf5,
+	0xbe, 0x5a, 0xaa, 0x3f, 0x29, 0x2e, 0x35, 0x74, 0x96, 0xf0, 0x53, 0xff, 0x51, 0x07, 0x1d, 0xe9,
+	0xb3, 0xc8, 0x34, 0x1b, 0xe0, 0xfe, 0x5a, 0xda, 0x3f, 0x40, 0x2e, 0x4f, 0x5a, 0xaa, 0xf8, 0xf2,
+	0x1f, 0x72, 0x90, 0x4c, 0x37, 0xfd, 0xa6, 0xb5, 0xcd, 0x0a, 0x1f, 0xa8, 0xb1, 0xc7, 0x51, 0x36,
+	0x6f, 0xda, 0x98, 0x05, 0x6c, 0x90, 0xb0, 0x1a, 0xbf, 0xa1, 0xd6, 0x18, 0xfd, 0x81, 0x91, 0x5d,
+	0x32, 0xf5, 0xd4, 0xeb, 0xe2, 0x12, 0x4d, 0x7b, 0xbe, 0xe4, 0x6f, 0xa9, 0xa5, 0x33, 0xf2, 0x8c,
+	0xc9, 0x2e, 0x1b, 0x7a, 0xfa, 0x75, 0xf3, 0xe9, 0x38, 0x20, 0xe8, 0xc6, 0x3b, 0xd4, 0x6e, 0x17,
+	0x7d, 0x2c, 0x65, 0xb7, 0xab, 0x7b, 0xda, 0x75, 0x75, 0x2f, 0x8e, 0xc8, 0x15, 0xe4, 0x96, 0x19,
+	0x32, 0x85, 0x84, 0xbc, 0xbf, 0xa7, 0x5e, 0x77, 0x37, 0x20, 0x72, 0x29, 0xd9, 0x49, 0xa4, 0xd5,
+	0xb2, 0xcb, 0x3e, 0xd0, 0x8b, 0x5f, 0x97, 0x37, 0x53, 0x4b, 0x70, 0x3f, 0x6a, 0x2d, 0x61, 0x1f,
+	0xec, 0x69, 0xd7, 0xed, 0x13, 0xa8, 0x25, 0xb8, 0x1f, 0xb5, 0x96, 0x90, 0x0f, 0xf5, 0xd4, 0xeb,
+	0xfa, 0x09, 0xd4, 0x12, 0xec, 0x77, 0x54, 0x09, 0x13, 0x7b, 0x2a, 0x67, 0x05, 0xf9, 0x70, 0x4f,
+	0xbf, 0xee, 0x7f, 0x38, 0x0e, 0x2a, 0x74, 0xe7, 0x9d, 0xe8, 0x52, 0x23, 0xb5, 0x69, 0x60, 0x1f,
+	0xe9, 0x45, 0x7e, 0x2e, 0x60, 0xc6, 0x40, 0xaf, 0xd0, 0xa0, 0x77, 0x98, 0x77, 0x92, 0xbd, 0x08,
+	0x7d, 0x7f, 0x2f, 0xf2, 0x73, 0x03, 0x86, 0x6d, 0x04, 0x7a, 0xb4, 0x1f, 0xc3, 0x96, 0x5f, 0xea,
+	0x07, 0x7a, 0xfa, 0xcf, 0x15, 0x24, 0x31, 0x4c, 0x70, 0x7f, 0x86, 0x2d, 0x61, 0x1f, 0xed, 0x45,
+	0x7e, 0xee, 0x20, 0x91, 0x61, 0x82, 0xfd, 0x0b, 0xe6, 0x2d, 0x9c, 0x42, 0xa7, 0x3e, 0xd6, 0x33,
+	0xfe, 0x5c, 0x82, 0x61, 0x2f, 0x73, 0xe1, 0xfa, 0xba, 0x84, 0x84, 0xb5, 0x57, 0xae, 0x8f, 0xf7,
+	0x92, 0x7e, 0x6e, 0xc1, 0x94, 0xbb, 0xa0, 0x66, 0x5f, 0xef, 0x98, 0xf7, 0x96, 0xbd, 0x9e, 0x7d,
+	0xa2, 0xb7, 0xdb, 0xef, 0x35, 0x18, 0x36, 0x1b, 0x68, 0xdd, 0x27, 0x34, 0x51, 0x66, 0x7a, 0x5e,
+	0x6a, 0xb5, 0x92, 0x27, 0x7b, 0xdf, 0x83, 0x1f, 0x7c, 0xb8, 0x24, 0xbe, 0x58, 0xa9, 0x7a, 0x1f,
+	0xd3, 0x54, 0xaf, 0xf9, 0x19, 0xab, 0xd5, 0x92, 0x9f, 0xea, 0x0d, 0xf4, 0x8b, 0x11, 0x97, 0x99,
+	0x6a, 0xb3, 0x54, 0x69, 0x6b, 0xea, 0x91, 0x93, 0x76, 0x59, 0xd0, 0x6e, 0x91, 0xdf, 0x75, 0xd8,
+	0xcd, 0x42, 0x79, 0xe6, 0x14, 0x28, 0x57, 0x0c, 0xfd, 0x75, 0x55, 0xb4, 0xe8, 0x97, 0x0d, 0xad,
+	0x60, 0x3e, 0xc8, 0x60, 0xd4, 0x43, 0xa7, 0x40, 0xbd, 0xa2, 0xe8, 0x9f, 0x53, 0x77, 0x6c, 0xe4,
+	0xb2, 0xa2, 0x15, 0xd0, 0x87, 0x18, 0x90, 0x7a, 0xea, 0x14, 0x68, 0x57, 0x1c, 0x13, 0x90, 0x52,
+	0x48, 0x86, 0x0f, 0x33, 0xa4, 0x82, 0x01, 0x89, 0x6b, 0x85, 0x44, 0xee, 0x2c, 0x8b, 0xde, 0x47,
+	0x18, 0x50, 0xd6, 0xcc, 0x1d, 0xc1, 0x7d, 0xb8, 0xb3, 0x04, 0xfa, 0x28, 0x03, 0x72, 0x13, 0xb8,
+	0x4b, 0x44, 0x4a, 0xa1, 0x09, 0x3e, 0xc6, 0x90, 0x86, 0x13, 0xb8, 0x23, 0xd8, 0xbf, 0x4d, 0x2d,
+	0xa0, 0xd1, 0xcb, 0x9e, 0x56, 0x50, 0x1f, 0x67, 0x50, 0xea, 0xd1, 0x53, 0xa0, 0x5f, 0x11, 0xf5,
+	0x1b, 0x6a, 0x5b, 0x8c, 0x5d, 0x16, 0xb5, 0x02, 0xfb, 0x04, 0x03, 0x53, 0xcf, 0x9e, 0x82, 0xc8,
+	0x15, 0xd3, 0x84, 0x5d, 0x61, 0xdf, 0xf6, 0x3f, 0xc9, 0xa0, 0x32, 0x86, 0x5d, 0x01, 0xcd, 0xbe,
+	0x0f, 0x83, 0x96, 0x5f, 0xd6, 0xa7, 0x18, 0x52, 0x3e, 0x89, 0x41, 0x82, 0xfb, 0x32, 0x68, 0x09,
+	0xf6, 0x69, 0x06, 0x56, 0x4c, 0x64, 0x30, 0x71, 0x17, 0xa6, 0x68, 0xeb, 0x4f, 0x33, 0x2c, 0xc7,
+	0xb0, 0x0b, 0x79, 0x1b, 0x4f, 0xc8, 0x2c, 0xfb, 0x2e, 0xfe, 0x0c, 0x43, 0x1a, 0x35, 0x65, 0x16,
+	0xb4, 0x6c, 0xf3, 0xae, 0xb0, 0x6f, 0xd8, 0xcf, 0x32, 0xa0, 0x31, 0xc3, 0xae, 0x80, 0xae, 0xfc,
+	0xa0, 0x76, 0x02, 0x65, 0xb8, 0xed, 0x6b, 0x85, 0xf6, 0x1c, 0x43, 0x1b, 0xfc, 0x08, 0x2a, 0x88,
+	0xde, 0x11, 0xa6, 0xea, 0xa1, 0x94, 0xb8, 0xce, 0x34, 0x27, 0x10, 0xcf, 0xb3, 0xa5, 0x7e, 0x4f,
+	0xce, 0xa0, 0x02, 0xc3, 0x25, 0x63, 0xff, 0x11, 0x4d, 0xee, 0x98, 0xee, 0x1b, 0x5b, 0x2d, 0xf7,
+	0x33, 0x7c, 0xb9, 0x03, 0x1f, 0x42, 0x05, 0xb1, 0x5b, 0xca, 0xfe, 0xfd, 0xda, 0x21, 0x94, 0xf1,
+	0xc2, 0xb2, 0xd5, 0x5a, 0x3f, 0xcb, 0x77, 0x41, 0xfa, 0x53, 0xa8, 0x20, 0x7e, 0xcd, 0x99, 0xca,
+	0xb1, 0x23, 0x7d, 0x56, 0x99, 0x66, 0x0f, 0x7c, 0x8e, 0x93, 0x3a, 0xd0, 0x31, 0x54, 0x60, 0xbc,
+	0x27, 0xed, 0x3f, 0xac, 0x1e, 0x43, 0xe9, 0x37, 0x9c, 0x6d, 0x96, 0xf8, 0x79, 0xb6, 0xc4, 0x94,
+	0xe7, 0x50, 0xfa, 0x3d, 0xeb, 0x84, 0xe5, 0x2c, 0x15, 0xc4, 0xab, 0xfa, 0xdd, 0xd6, 0x66, 0xbb,
+	0xb5, 0x34, 0x1d, 0x7f, 0x47, 0x92, 0x7d, 0x70, 0x74, 0x1e, 0xed, 0x57, 0xdf, 0x13, 0x37, 0x3d,
+	0x10, 0x45, 0xee, 0x98, 0x7c, 0x20, 0xfa, 0x82, 0xb3, 0xf4, 0x9a, 0xd7, 0xbc, 0x7a, 0x63, 0xb3,
+	0x73, 0xae, 0xbb, 0x3a, 0x7b, 0xb6, 0xdd, 0x3c, 0x0e, 0x4b, 0x3f, 0xce, 0x96, 0xbd, 0xda, 0x5d,
+	0x3f, 0x7e, 0xde, 0x3f, 0xbe, 0xd9, 0xea, 0xd4, 0xb7, 0x5b, 0x2b, 0x0d, 0xf6, 0x53, 0xb7, 0xec,
+	0x83, 0x9d, 0xe3, 0x8d, 0xfa, 0xc6, 0xca, 0xd9, 0x0b, 0xc7, 0x77, 0xf9, 0x71, 0xdc, 0xff, 0x0f,
+	0x00, 0x00, 0xff, 0xff, 0x2f, 0xb5, 0x6d, 0xc6, 0x3e, 0x57, 0x00, 0x00,
+}
diff --git a/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5/test.proto b/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5/test.proto
new file mode 100644
index 0000000..ad2764c
--- /dev/null
+++ b/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5/test.proto
@@ -0,0 +1,333 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto2";
+
+package google.golang.org.proto2_20160519;
+option go_package = "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5";
+
+enum SiblingEnum {
+	ALPHA   = 0;
+	BRAVO   = 10;
+	CHARLIE = 200;
+}
+
+message SiblingMessage {
+	optional string  f1 = 1;
+	required string  f2 = 2;
+	repeated string  f3 = 3;
+	optional Message f4 = 4;
+}
+
+message Message {
+	enum ChildEnum {
+		ALPHA   = 0;
+		BRAVO   = 1;
+		CHARLIE = 2;
+	}
+	message ChildMessage {
+		optional string  f1 = 1;
+		required string  f2 = 2;
+		repeated string  f3 = 3;
+	    optional Message f4 = 4;
+	}
+	optional group NamedGroup = 1 {
+		optional string  f1 = 1;
+		required string  f2 = 2;
+		repeated string  f3 = 3;
+	    optional Message f4 = 4;
+	}
+
+	// Optional fields.
+	optional bool     optional_bool     = 100;
+	optional int32    optional_int32    = 101;
+	optional sint32   optional_sint32   = 102;
+	optional uint32   optional_uint32   = 103;
+	optional int64    optional_int64    = 104;
+	optional sint64   optional_sint64   = 105;
+	optional uint64   optional_uint64   = 106;
+	optional fixed32  optional_fixed32  = 107;
+	optional sfixed32 optional_sfixed32 = 108;
+	optional float    optional_float    = 109;
+	optional fixed64  optional_fixed64  = 110;
+	optional sfixed64 optional_sfixed64 = 111;
+	optional double   optional_double   = 112;
+	optional string   optional_string   = 113;
+	optional bytes    optional_bytes    = 114;
+
+	optional ChildEnum      optional_child_enum      = 115;
+	optional ChildMessage   optional_child_message   = 116;
+	optional NamedGroup     optional_named_group     = 117;
+	optional SiblingEnum    optional_sibling_enum    = 118;
+	optional SiblingMessage optional_sibling_message = 119;
+	optional group OptionalGroup = 120 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+
+	// Optional default fields.
+	optional bool      defaulted_bool     = 200 [default = true];
+	optional int32     defaulted_int32    = 201 [default = -12345];
+	optional sint32    defaulted_sint32   = 202 [default = -3200];
+	optional uint32    defaulted_uint32   = 203 [default = 3200];
+	optional int64     defaulted_int64    = 204 [default = -123456789];
+	optional sint64    defaulted_sint64   = 205 [default = -6400];
+	optional uint64    defaulted_uint64   = 206 [default = 6400];
+	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
+	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
+	optional float     defaulted_float    = 209 [default = 3.14159];
+	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
+	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
+	optional double    defaulted_double   = 212 [default = 3.14159265359];
+	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
+	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];
+
+	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
+	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];
+
+	// Required fields.
+	required bool     required_bool     = 300;
+	required int32    required_int32    = 301;
+	required sint32   required_sint32   = 302;
+	required uint32   required_uint32   = 303;
+	required int64    required_int64    = 304;
+	required sint64   required_sint64   = 305;
+	required uint64   required_uint64   = 306;
+	required fixed32  required_fixed32  = 307;
+	required sfixed32 required_sfixed32 = 308;
+	required float    required_float    = 309;
+	required fixed64  required_fixed64  = 310;
+	required sfixed64 required_sfixed64 = 311;
+	required double   required_double   = 312;
+	required string   required_string   = 313;
+	required bytes    required_bytes    = 314;
+
+	required ChildEnum      required_child_enum      = 315;
+	required ChildMessage   required_child_message   = 316;
+	required NamedGroup     required_named_group     = 317;
+	required SiblingEnum    required_sibling_enum    = 318;
+	required SiblingMessage required_sibling_message = 319;
+	required group RequiredGroup = 320 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+	// Required default fields.
+	required bool      required_defaulted_bool     = 400 [default = true];
+	required int32     required_defaulted_int32    = 401 [default = -12345];
+	required sint32    required_defaulted_sint32   = 402 [default = -3200];
+	required uint32    required_defaulted_uint32   = 403 [default = 3200];
+	required int64     required_defaulted_int64    = 404 [default = -123456789];
+	required sint64    required_defaulted_sint64   = 405 [default = -6400];
+	required uint64    required_defaulted_uint64   = 406 [default = 6400];
+	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
+	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
+	required float     required_defaulted_float    = 409 [default = 3.14159];
+	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
+	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
+	required double    required_defaulted_double   = 412 [default = 3.14159265359];
+	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
+	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];
+
+	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
+	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];
+
+	// Repeated fields.
+	repeated bool     repeated_bool     = 500;
+	repeated int32    repeated_int32    = 501;
+	repeated sint32   repeated_sint32   = 502;
+	repeated uint32   repeated_uint32   = 503;
+	repeated int64    repeated_int64    = 504;
+	repeated sint64   repeated_sint64   = 505;
+	repeated uint64   repeated_uint64   = 506;
+	repeated fixed32  repeated_fixed32  = 507;
+	repeated sfixed32 repeated_sfixed32 = 508;
+	repeated float    repeated_float    = 509;
+	repeated fixed64  repeated_fixed64  = 510;
+	repeated sfixed64 repeated_sfixed64 = 511;
+	repeated double   repeated_double   = 512;
+	repeated string   repeated_string   = 513;
+	repeated bytes    repeated_bytes    = 514;
+
+	repeated ChildEnum      repeated_child_enum      = 515;
+	repeated ChildMessage   repeated_child_message   = 516;
+	repeated NamedGroup     repeated_named_group     = 517;
+	repeated SiblingEnum    repeated_sibling_enum    = 518;
+	repeated SiblingMessage repeated_sibling_message = 519;
+	repeated group RepeatedGroup = 520 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+
+	// Map fields.
+	map<bool, bool>     map_bool_bool     = 600;
+	map<bool, int32>    map_bool_int32    = 601;
+	map<bool, sint32>   map_bool_sint32   = 602;
+	map<bool, uint32>   map_bool_uint32   = 603;
+	map<bool, int64>    map_bool_int64    = 604;
+	map<bool, sint64>   map_bool_sint64   = 605;
+	map<bool, uint64>   map_bool_uint64   = 606;
+	map<bool, fixed32>  map_bool_fixed32  = 607;
+	map<bool, sfixed32> map_bool_sfixed32 = 608;
+	map<bool, float>    map_bool_float    = 609;
+	map<bool, fixed64>  map_bool_fixed64  = 610;
+	map<bool, sfixed64> map_bool_sfixed64 = 611;
+	map<bool, double>   map_bool_double   = 612;
+	map<bool, string>   map_bool_string   = 613;
+	map<bool, bytes>    map_bool_bytes    = 614;
+
+	map<bool, ChildEnum>      map_bool_child_enum      = 615;
+	map<bool, ChildMessage>   map_bool_child_message   = 616;
+	map<bool, NamedGroup>     map_bool_named_group     = 617;
+	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
+	map<bool, SiblingMessage> map_bool_sibling_message = 619;
+
+	map<int32, bool>   map_int32_bool   = 620;
+	map<sint32, bool>  map_sint32_bool  = 621;
+	map<uint32, bool>  map_uint32_bool  = 622;
+	map<int64, bool>   map_int64_bool   = 623;
+	map<sint64, bool>  map_sint64_bool  = 624;
+	map<uint64, bool>  map_uint64_bool  = 625;
+	map<fixed32, bool> map_fixed32_bool = 626;
+	map<string, bool>  map_string_bool  = 627;
+
+	// Oneof fields.
+	oneof oneof_union {
+		bool     oneof_bool     = 700;
+		int32    oneof_int32    = 701;
+		sint32   oneof_sint32   = 702;
+		uint32   oneof_uint32   = 703;
+		int64    oneof_int64    = 704;
+		sint64   oneof_sint64   = 705;
+		uint64   oneof_uint64   = 706;
+		fixed32  oneof_fixed32  = 707;
+		sfixed32 oneof_sfixed32 = 708;
+		float    oneof_float    = 709;
+		fixed64  oneof_fixed64  = 710;
+		sfixed64 oneof_sfixed64 = 711;
+		double   oneof_double   = 712;
+		string   oneof_string   = 713;
+		bytes    oneof_bytes    = 714;
+
+		ChildEnum      oneof_child_enum      = 715;
+		ChildMessage   oneof_child_message   = 716;
+		NamedGroup     oneof_named_group     = 717;
+		SiblingEnum    oneof_sibling_enum    = 718;
+		SiblingMessage oneof_sibling_message = 719;
+		group OneofGroup = 720 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+
+		string oneof_string1 = 721;
+		string oneof_string2 = 722;
+		string oneof_string3 = 723;
+	}
+
+	// Oneof default fields.
+	oneof oneof_defaulted_union {
+		bool      oneof_defaulted_bool     = 800 [default = true];
+		int32     oneof_defaulted_int32    = 801 [default = -12345];
+		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
+		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
+		int64     oneof_defaulted_int64    = 804 [default = -123456789];
+		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
+		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
+		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
+		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
+		float     oneof_defaulted_float    = 809 [default = 3.14159];
+		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
+		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
+		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
+		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
+		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];
+
+		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
+		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
+	}
+
+	// Extension fields.
+	extend Message {
+		// Optional fields.
+		optional bool     extension_optional_bool     = 10000;
+		optional int32    extension_optional_int32    = 10001;
+		optional sint32   extension_optional_sint32   = 10002;
+		optional uint32   extension_optional_uint32   = 10003;
+		optional int64    extension_optional_int64    = 10004;
+		optional sint64   extension_optional_sint64   = 10005;
+		optional uint64   extension_optional_uint64   = 10006;
+		optional fixed32  extension_optional_fixed32  = 10007;
+		optional sfixed32 extension_optional_sfixed32 = 10008;
+		optional float    extension_optional_float    = 10009;
+		optional fixed64  extension_optional_fixed64  = 10010;
+		optional sfixed64 extension_optional_sfixed64 = 10011;
+		optional double   extension_optional_double   = 10012;
+		optional string   extension_optional_string   = 10013;
+		optional bytes    extension_optional_bytes    = 10014;
+
+		optional ChildEnum      extension_optional_child_enum      = 10015;
+		optional ChildMessage   extension_optional_child_message   = 10016;
+		optional NamedGroup     extension_optional_named_group     = 10017;
+		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
+		optional SiblingMessage extension_optional_sibling_message = 10019;
+		optional group ExtensionOptionalGroup = 10020 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+
+		// Optional default fields.
+		optional bool      extension_defaulted_bool     = 20000 [default = true];
+		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
+		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
+		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
+		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
+		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
+		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
+		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
+		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
+		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
+		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
+		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
+		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
+		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
+		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];
+
+		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
+		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];
+
+		// Repeated fields.
+		repeated bool     extension_repeated_bool     = 30000;
+		repeated int32    extension_repeated_int32    = 30001;
+		repeated sint32   extension_repeated_sint32   = 30002;
+		repeated uint32   extension_repeated_uint32   = 30003;
+		repeated int64    extension_repeated_int64    = 30004;
+		repeated sint64   extension_repeated_sint64   = 30005;
+		repeated uint64   extension_repeated_uint64   = 30006;
+		repeated fixed32  extension_repeated_fixed32  = 30007;
+		repeated sfixed32 extension_repeated_sfixed32 = 30008;
+		repeated float    extension_repeated_float    = 30009;
+		repeated fixed64  extension_repeated_fixed64  = 30010;
+		repeated sfixed64 extension_repeated_sfixed64 = 30011;
+		repeated double   extension_repeated_double   = 30012;
+		repeated string   extension_repeated_string   = 30013;
+		repeated bytes    extension_repeated_bytes    = 30014;
+
+		repeated ChildEnum      extension_repeated_child_enum      = 30015;
+		repeated ChildMessage   extension_repeated_child_message   = 30016;
+		repeated NamedGroup     extension_repeated_named_group     = 30017;
+		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
+		repeated SiblingMessage extension_repeated_sibling_message = 30019;
+		repeated group ExtensionRepeatedGroup = 30020 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+	}
+
+	extensions 10000 to max;
+}
diff --git a/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152/test.pb.go b/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152/test.pb.go
new file mode 100644
index 0000000..12f197a
--- /dev/null
+++ b/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152/test.pb.go
@@ -0,0 +1,3585 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: proto2.v1.0.0-20180125-92554152/test.proto
+
+/*
+Package proto2_v1_0_0_20180125_92554152 is a generated protocol buffer package.
+
+It is generated from these files:
+	proto2.v1.0.0-20180125-92554152/test.proto
+
+It has these top-level messages:
+	SiblingMessage
+	Message
+*/
+package proto2_v1_0_0_20180125_92554152
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type SiblingEnum int32
+
+const (
+	SiblingEnum_ALPHA   SiblingEnum = 0
+	SiblingEnum_BRAVO   SiblingEnum = 10
+	SiblingEnum_CHARLIE SiblingEnum = 200
+)
+
+var SiblingEnum_name = map[int32]string{
+	0:   "ALPHA",
+	10:  "BRAVO",
+	200: "CHARLIE",
+}
+var SiblingEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   10,
+	"CHARLIE": 200,
+}
+
+func (x SiblingEnum) Enum() *SiblingEnum {
+	p := new(SiblingEnum)
+	*p = x
+	return p
+}
+func (x SiblingEnum) String() string {
+	return proto.EnumName(SiblingEnum_name, int32(x))
+}
+func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
+	if err != nil {
+		return err
+	}
+	*x = SiblingEnum(value)
+	return nil
+}
+func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+type Message_ChildEnum int32
+
+const (
+	Message_ALPHA   Message_ChildEnum = 0
+	Message_BRAVO   Message_ChildEnum = 1
+	Message_CHARLIE Message_ChildEnum = 2
+)
+
+var Message_ChildEnum_name = map[int32]string{
+	0: "ALPHA",
+	1: "BRAVO",
+	2: "CHARLIE",
+}
+var Message_ChildEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   1,
+	"CHARLIE": 2,
+}
+
+func (x Message_ChildEnum) Enum() *Message_ChildEnum {
+	p := new(Message_ChildEnum)
+	*p = x
+	return p
+}
+func (x Message_ChildEnum) String() string {
+	return proto.EnumName(Message_ChildEnum_name, int32(x))
+}
+func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
+	if err != nil {
+		return err
+	}
+	*x = Message_ChildEnum(value)
+	return nil
+}
+func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+type SiblingMessage struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
+func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
+func (*SiblingMessage) ProtoMessage()               {}
+func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *SiblingMessage) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *SiblingMessage) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message struct {
+	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
+	// Optional fields.
+	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
+	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
+	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
+	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum" json:"optional_child_enum,omitempty"`
+	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
+	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
+	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum" json:"optional_sibling_enum,omitempty"`
+	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
+	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
+	// Optional default fields.
+	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
+	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
+	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
+	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
+	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
+	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
+	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
+	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
+	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
+	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
+	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
+	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
+	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
+	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
+	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
+	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
+	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
+	// Required fields.
+	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
+	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
+	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
+	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
+	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
+	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
+	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
+	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
+	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
+	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
+	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
+	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
+	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
+	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
+	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
+	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum" json:"required_child_enum,omitempty"`
+	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
+	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
+	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum" json:"required_sibling_enum,omitempty"`
+	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
+	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
+	// Required default fields.
+	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
+	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
+	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
+	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
+	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
+	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
+	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
+	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
+	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
+	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
+	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
+	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
+	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
+	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
+	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
+	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
+	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
+	// Repeated fields.
+	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
+	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
+	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
+	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
+	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
+	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
+	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	// Map fields.
+	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180125.Message_ChildEnum"`
+	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180125.SiblingEnum"`
+	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	// Oneof fields.
+	//
+	// Types that are valid to be assigned to OneofUnion:
+	//	*Message_OneofBool
+	//	*Message_OneofInt32
+	//	*Message_OneofSint32
+	//	*Message_OneofUint32
+	//	*Message_OneofInt64
+	//	*Message_OneofSint64
+	//	*Message_OneofUint64
+	//	*Message_OneofFixed32
+	//	*Message_OneofSfixed32
+	//	*Message_OneofFloat
+	//	*Message_OneofFixed64
+	//	*Message_OneofSfixed64
+	//	*Message_OneofDouble
+	//	*Message_OneofString
+	//	*Message_OneofBytes
+	//	*Message_OneofChildEnum
+	//	*Message_OneofChildMessage
+	//	*Message_OneofNamedGroup
+	//	*Message_OneofSiblingEnum
+	//	*Message_OneofSiblingMessage
+	//	*Message_Oneofgroup
+	//	*Message_OneofString1
+	//	*Message_OneofString2
+	//	*Message_OneofString3
+	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
+	// Oneof default fields.
+	//
+	// Types that are valid to be assigned to OneofDefaultedUnion:
+	//	*Message_OneofDefaultedBool
+	//	*Message_OneofDefaultedInt32
+	//	*Message_OneofDefaultedSint32
+	//	*Message_OneofDefaultedUint32
+	//	*Message_OneofDefaultedInt64
+	//	*Message_OneofDefaultedSint64
+	//	*Message_OneofDefaultedUint64
+	//	*Message_OneofDefaultedFixed32
+	//	*Message_OneofDefaultedSfixed32
+	//	*Message_OneofDefaultedFloat
+	//	*Message_OneofDefaultedFixed64
+	//	*Message_OneofDefaultedSfixed64
+	//	*Message_OneofDefaultedDouble
+	//	*Message_OneofDefaultedString
+	//	*Message_OneofDefaultedBytes
+	//	*Message_OneofDefaultedChildEnum
+	//	*Message_OneofDefaultedSiblingEnum
+	OneofDefaultedUnion          isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+}
+
+func (m *Message) Reset()                    { *m = Message{} }
+func (m *Message) String() string            { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()               {}
+func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+var extRange_Message = []proto.ExtensionRange{
+	{10000, 536870911},
+}
+
+func (*Message) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_Message
+}
+
+const Default_Message_DefaultedBool bool = true
+const Default_Message_DefaultedInt32 int32 = -12345
+const Default_Message_DefaultedSint32 int32 = -3200
+const Default_Message_DefaultedUint32 uint32 = 3200
+const Default_Message_DefaultedInt64 int64 = -123456789
+const Default_Message_DefaultedSint64 int64 = -6400
+const Default_Message_DefaultedUint64 uint64 = 6400
+const Default_Message_DefaultedFixed32 uint32 = 320000
+const Default_Message_DefaultedSfixed32 int32 = -320000
+const Default_Message_DefaultedFloat float32 = 3.14159
+const Default_Message_DefaultedFixed64 uint64 = 640000
+const Default_Message_DefaultedSfixed64 int64 = -640000
+const Default_Message_DefaultedDouble float64 = 3.14159265359
+const Default_Message_DefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_DefaultedBytes []byte = []byte("deadÞ­\xbe\xefbeef")
+
+const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+const Default_Message_RequiredDefaultedBool bool = true
+const Default_Message_RequiredDefaultedInt32 int32 = -12345
+const Default_Message_RequiredDefaultedSint32 int32 = -3200
+const Default_Message_RequiredDefaultedUint32 uint32 = 3200
+const Default_Message_RequiredDefaultedInt64 int64 = -123456789
+const Default_Message_RequiredDefaultedSint64 int64 = -6400
+const Default_Message_RequiredDefaultedUint64 uint64 = 6400
+const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
+const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
+const Default_Message_RequiredDefaultedFloat float32 = 3.14159
+const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
+const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
+const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
+const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_RequiredDefaultedBytes []byte = []byte("deadÞ­\xbe\xefbeef")
+
+const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+const Default_Message_OneofDefaultedBool bool = true
+const Default_Message_OneofDefaultedInt32 int32 = -12345
+const Default_Message_OneofDefaultedSint32 int32 = -3200
+const Default_Message_OneofDefaultedUint32 uint32 = 3200
+const Default_Message_OneofDefaultedInt64 int64 = -123456789
+const Default_Message_OneofDefaultedSint64 int64 = -6400
+const Default_Message_OneofDefaultedUint64 uint64 = 6400
+const Default_Message_OneofDefaultedFixed32 uint32 = 320000
+const Default_Message_OneofDefaultedSfixed32 int32 = -320000
+const Default_Message_OneofDefaultedFloat float32 = 3.14159
+const Default_Message_OneofDefaultedFixed64 uint64 = 640000
+const Default_Message_OneofDefaultedSfixed64 int64 = -640000
+const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
+const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_OneofDefaultedBytes []byte = []byte("deadÞ­\xbe\xefbeef")
+
+const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+
+type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
+type isMessage_OneofDefaultedUnion interface{ isMessage_OneofDefaultedUnion() }
+
+type Message_OneofBool struct {
+	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
+}
+type Message_OneofInt32 struct {
+	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
+}
+type Message_OneofSint32 struct {
+	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
+}
+type Message_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
+}
+type Message_OneofInt64 struct {
+	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
+}
+type Message_OneofSint64 struct {
+	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
+}
+type Message_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
+}
+type Message_OneofFixed32 struct {
+	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
+}
+type Message_OneofSfixed32 struct {
+	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
+}
+type Message_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
+}
+type Message_OneofFixed64 struct {
+	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
+}
+type Message_OneofSfixed64 struct {
+	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
+}
+type Message_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
+}
+type Message_OneofString struct {
+	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
+}
+type Message_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
+}
+type Message_OneofChildEnum struct {
+	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum,oneof"`
+}
+type Message_OneofChildMessage struct {
+	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
+}
+type Message_OneofNamedGroup struct {
+	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
+}
+type Message_OneofSiblingEnum struct {
+	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum,oneof"`
+}
+type Message_OneofSiblingMessage struct {
+	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
+}
+type Message_Oneofgroup struct {
+	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
+}
+type Message_OneofString1 struct {
+	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
+}
+type Message_OneofString2 struct {
+	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
+}
+type Message_OneofString3 struct {
+	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
+}
+type Message_OneofDefaultedBool struct {
+	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
+}
+type Message_OneofDefaultedInt32 struct {
+	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
+}
+type Message_OneofDefaultedSint32 struct {
+	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
+}
+type Message_OneofDefaultedUint32 struct {
+	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
+}
+type Message_OneofDefaultedInt64 struct {
+	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
+}
+type Message_OneofDefaultedSint64 struct {
+	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
+}
+type Message_OneofDefaultedUint64 struct {
+	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
+}
+type Message_OneofDefaultedFixed32 struct {
+	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
+}
+type Message_OneofDefaultedSfixed32 struct {
+	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
+}
+type Message_OneofDefaultedFloat struct {
+	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
+}
+type Message_OneofDefaultedFixed64 struct {
+	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
+}
+type Message_OneofDefaultedSfixed64 struct {
+	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
+}
+type Message_OneofDefaultedDouble struct {
+	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
+}
+type Message_OneofDefaultedString struct {
+	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
+}
+type Message_OneofDefaultedBytes struct {
+	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
+}
+type Message_OneofDefaultedChildEnum struct {
+	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum,oneof,def=0"`
+}
+type Message_OneofDefaultedSiblingEnum struct {
+	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum,oneof,def=0"`
+}
+
+func (*Message_OneofBool) isMessage_OneofUnion()                          {}
+func (*Message_OneofInt32) isMessage_OneofUnion()                         {}
+func (*Message_OneofSint32) isMessage_OneofUnion()                        {}
+func (*Message_OneofUint32) isMessage_OneofUnion()                        {}
+func (*Message_OneofInt64) isMessage_OneofUnion()                         {}
+func (*Message_OneofSint64) isMessage_OneofUnion()                        {}
+func (*Message_OneofUint64) isMessage_OneofUnion()                        {}
+func (*Message_OneofFixed32) isMessage_OneofUnion()                       {}
+func (*Message_OneofSfixed32) isMessage_OneofUnion()                      {}
+func (*Message_OneofFloat) isMessage_OneofUnion()                         {}
+func (*Message_OneofFixed64) isMessage_OneofUnion()                       {}
+func (*Message_OneofSfixed64) isMessage_OneofUnion()                      {}
+func (*Message_OneofDouble) isMessage_OneofUnion()                        {}
+func (*Message_OneofString) isMessage_OneofUnion()                        {}
+func (*Message_OneofBytes) isMessage_OneofUnion()                         {}
+func (*Message_OneofChildEnum) isMessage_OneofUnion()                     {}
+func (*Message_OneofChildMessage) isMessage_OneofUnion()                  {}
+func (*Message_OneofNamedGroup) isMessage_OneofUnion()                    {}
+func (*Message_OneofSiblingEnum) isMessage_OneofUnion()                   {}
+func (*Message_OneofSiblingMessage) isMessage_OneofUnion()                {}
+func (*Message_Oneofgroup) isMessage_OneofUnion()                         {}
+func (*Message_OneofString1) isMessage_OneofUnion()                       {}
+func (*Message_OneofString2) isMessage_OneofUnion()                       {}
+func (*Message_OneofString3) isMessage_OneofUnion()                       {}
+func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion()        {}
+func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion()     {}
+func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion()    {}
+func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion()     {}
+func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion()    {}
+func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion()   {}
+func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}
+
+func (m *Message) GetOneofUnion() isMessage_OneofUnion {
+	if m != nil {
+		return m.OneofUnion
+	}
+	return nil
+}
+func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
+	if m != nil {
+		return m.OneofDefaultedUnion
+	}
+	return nil
+}
+
+func (m *Message) GetNamedgroup() *Message_NamedGroup {
+	if m != nil {
+		return m.Namedgroup
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalBool() bool {
+	if m != nil && m.OptionalBool != nil {
+		return *m.OptionalBool
+	}
+	return false
+}
+
+func (m *Message) GetOptionalInt32() int32 {
+	if m != nil && m.OptionalInt32 != nil {
+		return *m.OptionalInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint32() int32 {
+	if m != nil && m.OptionalSint32 != nil {
+		return *m.OptionalSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint32() uint32 {
+	if m != nil && m.OptionalUint32 != nil {
+		return *m.OptionalUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalInt64() int64 {
+	if m != nil && m.OptionalInt64 != nil {
+		return *m.OptionalInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint64() int64 {
+	if m != nil && m.OptionalSint64 != nil {
+		return *m.OptionalSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint64() uint64 {
+	if m != nil && m.OptionalUint64 != nil {
+		return *m.OptionalUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed32() uint32 {
+	if m != nil && m.OptionalFixed32 != nil {
+		return *m.OptionalFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed32() int32 {
+	if m != nil && m.OptionalSfixed32 != nil {
+		return *m.OptionalSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFloat() float32 {
+	if m != nil && m.OptionalFloat != nil {
+		return *m.OptionalFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed64() uint64 {
+	if m != nil && m.OptionalFixed64 != nil {
+		return *m.OptionalFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed64() int64 {
+	if m != nil && m.OptionalSfixed64 != nil {
+		return *m.OptionalSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalDouble() float64 {
+	if m != nil && m.OptionalDouble != nil {
+		return *m.OptionalDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalString() string {
+	if m != nil && m.OptionalString != nil {
+		return *m.OptionalString
+	}
+	return ""
+}
+
+func (m *Message) GetOptionalBytes() []byte {
+	if m != nil {
+		return m.OptionalBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
+	if m != nil && m.OptionalChildEnum != nil {
+		return *m.OptionalChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.OptionalChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
+	if m != nil {
+		return m.OptionalNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
+	if m != nil && m.OptionalSiblingEnum != nil {
+		return *m.OptionalSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.OptionalSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
+	if m != nil {
+		return m.Optionalgroup
+	}
+	return nil
+}
+
+func (m *Message) GetDefaultedBool() bool {
+	if m != nil && m.DefaultedBool != nil {
+		return *m.DefaultedBool
+	}
+	return Default_Message_DefaultedBool
+}
+
+func (m *Message) GetDefaultedInt32() int32 {
+	if m != nil && m.DefaultedInt32 != nil {
+		return *m.DefaultedInt32
+	}
+	return Default_Message_DefaultedInt32
+}
+
+func (m *Message) GetDefaultedSint32() int32 {
+	if m != nil && m.DefaultedSint32 != nil {
+		return *m.DefaultedSint32
+	}
+	return Default_Message_DefaultedSint32
+}
+
+func (m *Message) GetDefaultedUint32() uint32 {
+	if m != nil && m.DefaultedUint32 != nil {
+		return *m.DefaultedUint32
+	}
+	return Default_Message_DefaultedUint32
+}
+
+func (m *Message) GetDefaultedInt64() int64 {
+	if m != nil && m.DefaultedInt64 != nil {
+		return *m.DefaultedInt64
+	}
+	return Default_Message_DefaultedInt64
+}
+
+func (m *Message) GetDefaultedSint64() int64 {
+	if m != nil && m.DefaultedSint64 != nil {
+		return *m.DefaultedSint64
+	}
+	return Default_Message_DefaultedSint64
+}
+
+func (m *Message) GetDefaultedUint64() uint64 {
+	if m != nil && m.DefaultedUint64 != nil {
+		return *m.DefaultedUint64
+	}
+	return Default_Message_DefaultedUint64
+}
+
+func (m *Message) GetDefaultedFixed32() uint32 {
+	if m != nil && m.DefaultedFixed32 != nil {
+		return *m.DefaultedFixed32
+	}
+	return Default_Message_DefaultedFixed32
+}
+
+func (m *Message) GetDefaultedSfixed32() int32 {
+	if m != nil && m.DefaultedSfixed32 != nil {
+		return *m.DefaultedSfixed32
+	}
+	return Default_Message_DefaultedSfixed32
+}
+
+func (m *Message) GetDefaultedFloat() float32 {
+	if m != nil && m.DefaultedFloat != nil {
+		return *m.DefaultedFloat
+	}
+	return Default_Message_DefaultedFloat
+}
+
+func (m *Message) GetDefaultedFixed64() uint64 {
+	if m != nil && m.DefaultedFixed64 != nil {
+		return *m.DefaultedFixed64
+	}
+	return Default_Message_DefaultedFixed64
+}
+
+func (m *Message) GetDefaultedSfixed64() int64 {
+	if m != nil && m.DefaultedSfixed64 != nil {
+		return *m.DefaultedSfixed64
+	}
+	return Default_Message_DefaultedSfixed64
+}
+
+func (m *Message) GetDefaultedDouble() float64 {
+	if m != nil && m.DefaultedDouble != nil {
+		return *m.DefaultedDouble
+	}
+	return Default_Message_DefaultedDouble
+}
+
+func (m *Message) GetDefaultedString() string {
+	if m != nil && m.DefaultedString != nil {
+		return *m.DefaultedString
+	}
+	return Default_Message_DefaultedString
+}
+
+func (m *Message) GetDefaultedBytes() []byte {
+	if m != nil && m.DefaultedBytes != nil {
+		return m.DefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_DefaultedBytes...)
+}
+
+func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
+	if m != nil && m.DefaultedChildEnum != nil {
+		return *m.DefaultedChildEnum
+	}
+	return Default_Message_DefaultedChildEnum
+}
+
+func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
+	if m != nil && m.DefaultedSiblingEnum != nil {
+		return *m.DefaultedSiblingEnum
+	}
+	return Default_Message_DefaultedSiblingEnum
+}
+
+func (m *Message) GetRequiredBool() bool {
+	if m != nil && m.RequiredBool != nil {
+		return *m.RequiredBool
+	}
+	return false
+}
+
+func (m *Message) GetRequiredInt32() int32 {
+	if m != nil && m.RequiredInt32 != nil {
+		return *m.RequiredInt32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSint32() int32 {
+	if m != nil && m.RequiredSint32 != nil {
+		return *m.RequiredSint32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredUint32() uint32 {
+	if m != nil && m.RequiredUint32 != nil {
+		return *m.RequiredUint32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredInt64() int64 {
+	if m != nil && m.RequiredInt64 != nil {
+		return *m.RequiredInt64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSint64() int64 {
+	if m != nil && m.RequiredSint64 != nil {
+		return *m.RequiredSint64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredUint64() uint64 {
+	if m != nil && m.RequiredUint64 != nil {
+		return *m.RequiredUint64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFixed32() uint32 {
+	if m != nil && m.RequiredFixed32 != nil {
+		return *m.RequiredFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSfixed32() int32 {
+	if m != nil && m.RequiredSfixed32 != nil {
+		return *m.RequiredSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFloat() float32 {
+	if m != nil && m.RequiredFloat != nil {
+		return *m.RequiredFloat
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFixed64() uint64 {
+	if m != nil && m.RequiredFixed64 != nil {
+		return *m.RequiredFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSfixed64() int64 {
+	if m != nil && m.RequiredSfixed64 != nil {
+		return *m.RequiredSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredDouble() float64 {
+	if m != nil && m.RequiredDouble != nil {
+		return *m.RequiredDouble
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredString() string {
+	if m != nil && m.RequiredString != nil {
+		return *m.RequiredString
+	}
+	return ""
+}
+
+func (m *Message) GetRequiredBytes() []byte {
+	if m != nil {
+		return m.RequiredBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
+	if m != nil && m.RequiredChildEnum != nil {
+		return *m.RequiredChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.RequiredChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
+	if m != nil {
+		return m.RequiredNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
+	if m != nil && m.RequiredSiblingEnum != nil {
+		return *m.RequiredSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.RequiredSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
+	if m != nil {
+		return m.Requiredgroup
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredDefaultedBool() bool {
+	if m != nil && m.RequiredDefaultedBool != nil {
+		return *m.RequiredDefaultedBool
+	}
+	return Default_Message_RequiredDefaultedBool
+}
+
+func (m *Message) GetRequiredDefaultedInt32() int32 {
+	if m != nil && m.RequiredDefaultedInt32 != nil {
+		return *m.RequiredDefaultedInt32
+	}
+	return Default_Message_RequiredDefaultedInt32
+}
+
+func (m *Message) GetRequiredDefaultedSint32() int32 {
+	if m != nil && m.RequiredDefaultedSint32 != nil {
+		return *m.RequiredDefaultedSint32
+	}
+	return Default_Message_RequiredDefaultedSint32
+}
+
+func (m *Message) GetRequiredDefaultedUint32() uint32 {
+	if m != nil && m.RequiredDefaultedUint32 != nil {
+		return *m.RequiredDefaultedUint32
+	}
+	return Default_Message_RequiredDefaultedUint32
+}
+
+func (m *Message) GetRequiredDefaultedInt64() int64 {
+	if m != nil && m.RequiredDefaultedInt64 != nil {
+		return *m.RequiredDefaultedInt64
+	}
+	return Default_Message_RequiredDefaultedInt64
+}
+
+func (m *Message) GetRequiredDefaultedSint64() int64 {
+	if m != nil && m.RequiredDefaultedSint64 != nil {
+		return *m.RequiredDefaultedSint64
+	}
+	return Default_Message_RequiredDefaultedSint64
+}
+
+func (m *Message) GetRequiredDefaultedUint64() uint64 {
+	if m != nil && m.RequiredDefaultedUint64 != nil {
+		return *m.RequiredDefaultedUint64
+	}
+	return Default_Message_RequiredDefaultedUint64
+}
+
+func (m *Message) GetRequiredDefaultedFixed32() uint32 {
+	if m != nil && m.RequiredDefaultedFixed32 != nil {
+		return *m.RequiredDefaultedFixed32
+	}
+	return Default_Message_RequiredDefaultedFixed32
+}
+
+func (m *Message) GetRequiredDefaultedSfixed32() int32 {
+	if m != nil && m.RequiredDefaultedSfixed32 != nil {
+		return *m.RequiredDefaultedSfixed32
+	}
+	return Default_Message_RequiredDefaultedSfixed32
+}
+
+func (m *Message) GetRequiredDefaultedFloat() float32 {
+	if m != nil && m.RequiredDefaultedFloat != nil {
+		return *m.RequiredDefaultedFloat
+	}
+	return Default_Message_RequiredDefaultedFloat
+}
+
+func (m *Message) GetRequiredDefaultedFixed64() uint64 {
+	if m != nil && m.RequiredDefaultedFixed64 != nil {
+		return *m.RequiredDefaultedFixed64
+	}
+	return Default_Message_RequiredDefaultedFixed64
+}
+
+func (m *Message) GetRequiredDefaultedSfixed64() int64 {
+	if m != nil && m.RequiredDefaultedSfixed64 != nil {
+		return *m.RequiredDefaultedSfixed64
+	}
+	return Default_Message_RequiredDefaultedSfixed64
+}
+
+func (m *Message) GetRequiredDefaultedDouble() float64 {
+	if m != nil && m.RequiredDefaultedDouble != nil {
+		return *m.RequiredDefaultedDouble
+	}
+	return Default_Message_RequiredDefaultedDouble
+}
+
+func (m *Message) GetRequiredDefaultedString() string {
+	if m != nil && m.RequiredDefaultedString != nil {
+		return *m.RequiredDefaultedString
+	}
+	return Default_Message_RequiredDefaultedString
+}
+
+func (m *Message) GetRequiredDefaultedBytes() []byte {
+	if m != nil && m.RequiredDefaultedBytes != nil {
+		return m.RequiredDefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
+}
+
+func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
+	if m != nil && m.RequiredDefaultedChildEnum != nil {
+		return *m.RequiredDefaultedChildEnum
+	}
+	return Default_Message_RequiredDefaultedChildEnum
+}
+
+func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
+	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
+		return *m.RequiredDefaultedSiblingEnum
+	}
+	return Default_Message_RequiredDefaultedSiblingEnum
+}
+
+func (m *Message) GetRepeatedBool() []bool {
+	if m != nil {
+		return m.RepeatedBool
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt32() []int32 {
+	if m != nil {
+		return m.RepeatedInt32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint32() []int32 {
+	if m != nil {
+		return m.RepeatedSint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint32() []uint32 {
+	if m != nil {
+		return m.RepeatedUint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt64() []int64 {
+	if m != nil {
+		return m.RepeatedInt64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint64() []int64 {
+	if m != nil {
+		return m.RepeatedSint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint64() []uint64 {
+	if m != nil {
+		return m.RepeatedUint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed32() []uint32 {
+	if m != nil {
+		return m.RepeatedFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed32() []int32 {
+	if m != nil {
+		return m.RepeatedSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFloat() []float32 {
+	if m != nil {
+		return m.RepeatedFloat
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed64() []uint64 {
+	if m != nil {
+		return m.RepeatedFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed64() []int64 {
+	if m != nil {
+		return m.RepeatedSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedDouble() []float64 {
+	if m != nil {
+		return m.RepeatedDouble
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedString() []string {
+	if m != nil {
+		return m.RepeatedString
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedBytes() [][]byte {
+	if m != nil {
+		return m.RepeatedBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
+	if m != nil {
+		return m.RepeatedChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
+	if m != nil {
+		return m.RepeatedChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
+	if m != nil {
+		return m.RepeatedNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
+	if m != nil {
+		return m.RepeatedSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
+	if m != nil {
+		return m.RepeatedSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
+	if m != nil {
+		return m.Repeatedgroup
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBool() map[bool]bool {
+	if m != nil {
+		return m.MapBoolBool
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolInt32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolUint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolInt64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolUint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFloat() map[bool]float32 {
+	if m != nil {
+		return m.MapBoolFloat
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolDouble() map[bool]float64 {
+	if m != nil {
+		return m.MapBoolDouble
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolString() map[bool]string {
+	if m != nil {
+		return m.MapBoolString
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBytes() map[bool][]byte {
+	if m != nil {
+		return m.MapBoolBytes
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
+	if m != nil {
+		return m.MapBoolChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
+	if m != nil {
+		return m.MapBoolChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
+	if m != nil {
+		return m.MapBoolNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
+	if m != nil {
+		return m.MapBoolSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
+	if m != nil {
+		return m.MapBoolSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapInt32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapSint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapUint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapInt64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapSint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint64Bool() map[uint64]bool {
+	if m != nil {
+		return m.MapUint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapFixed32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapFixed32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapStringBool() map[string]bool {
+	if m != nil {
+		return m.MapStringBool
+	}
+	return nil
+}
+
+func (m *Message) GetOneofBool() bool {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
+		return x.OneofBool
+	}
+	return false
+}
+
+func (m *Message) GetOneofInt32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
+		return x.OneofInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
+		return x.OneofSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
+		return x.OneofUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofInt64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
+		return x.OneofInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
+		return x.OneofSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
+		return x.OneofUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
+		return x.OneofFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
+		return x.OneofSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFloat() float32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
+		return x.OneofFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
+		return x.OneofFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
+		return x.OneofSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofDouble() float64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
+		return x.OneofDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOneofString() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
+		return x.OneofString
+	}
+	return ""
+}
+
+func (m *Message) GetOneofBytes() []byte {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
+		return x.OneofBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOneofChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
+		return x.OneofChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
+		return x.OneofChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
+	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
+		return x.OneofNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetOneofSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
+		return x.OneofSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
+		return x.OneofSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofgroup() *Message_OneofGroup {
+	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
+		return x.Oneofgroup
+	}
+	return nil
+}
+
+func (m *Message) GetOneofString1() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
+		return x.OneofString1
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString2() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
+		return x.OneofString2
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString3() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
+		return x.OneofString3
+	}
+	return ""
+}
+
+func (m *Message) GetOneofDefaultedBool() bool {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
+		return x.OneofDefaultedBool
+	}
+	return Default_Message_OneofDefaultedBool
+}
+
+func (m *Message) GetOneofDefaultedInt32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
+		return x.OneofDefaultedInt32
+	}
+	return Default_Message_OneofDefaultedInt32
+}
+
+func (m *Message) GetOneofDefaultedSint32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
+		return x.OneofDefaultedSint32
+	}
+	return Default_Message_OneofDefaultedSint32
+}
+
+func (m *Message) GetOneofDefaultedUint32() uint32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
+		return x.OneofDefaultedUint32
+	}
+	return Default_Message_OneofDefaultedUint32
+}
+
+func (m *Message) GetOneofDefaultedInt64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
+		return x.OneofDefaultedInt64
+	}
+	return Default_Message_OneofDefaultedInt64
+}
+
+func (m *Message) GetOneofDefaultedSint64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
+		return x.OneofDefaultedSint64
+	}
+	return Default_Message_OneofDefaultedSint64
+}
+
+func (m *Message) GetOneofDefaultedUint64() uint64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
+		return x.OneofDefaultedUint64
+	}
+	return Default_Message_OneofDefaultedUint64
+}
+
+func (m *Message) GetOneofDefaultedFixed32() uint32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
+		return x.OneofDefaultedFixed32
+	}
+	return Default_Message_OneofDefaultedFixed32
+}
+
+func (m *Message) GetOneofDefaultedSfixed32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
+		return x.OneofDefaultedSfixed32
+	}
+	return Default_Message_OneofDefaultedSfixed32
+}
+
+func (m *Message) GetOneofDefaultedFloat() float32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
+		return x.OneofDefaultedFloat
+	}
+	return Default_Message_OneofDefaultedFloat
+}
+
+func (m *Message) GetOneofDefaultedFixed64() uint64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
+		return x.OneofDefaultedFixed64
+	}
+	return Default_Message_OneofDefaultedFixed64
+}
+
+func (m *Message) GetOneofDefaultedSfixed64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
+		return x.OneofDefaultedSfixed64
+	}
+	return Default_Message_OneofDefaultedSfixed64
+}
+
+func (m *Message) GetOneofDefaultedDouble() float64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
+		return x.OneofDefaultedDouble
+	}
+	return Default_Message_OneofDefaultedDouble
+}
+
+func (m *Message) GetOneofDefaultedString() string {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
+		return x.OneofDefaultedString
+	}
+	return Default_Message_OneofDefaultedString
+}
+
+func (m *Message) GetOneofDefaultedBytes() []byte {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
+		return x.OneofDefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
+}
+
+func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
+		return x.OneofDefaultedChildEnum
+	}
+	return Default_Message_OneofDefaultedChildEnum
+}
+
+func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
+		return x.OneofDefaultedSiblingEnum
+	}
+	return Default_Message_OneofDefaultedSiblingEnum
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
+		(*Message_OneofBool)(nil),
+		(*Message_OneofInt32)(nil),
+		(*Message_OneofSint32)(nil),
+		(*Message_OneofUint32)(nil),
+		(*Message_OneofInt64)(nil),
+		(*Message_OneofSint64)(nil),
+		(*Message_OneofUint64)(nil),
+		(*Message_OneofFixed32)(nil),
+		(*Message_OneofSfixed32)(nil),
+		(*Message_OneofFloat)(nil),
+		(*Message_OneofFixed64)(nil),
+		(*Message_OneofSfixed64)(nil),
+		(*Message_OneofDouble)(nil),
+		(*Message_OneofString)(nil),
+		(*Message_OneofBytes)(nil),
+		(*Message_OneofChildEnum)(nil),
+		(*Message_OneofChildMessage)(nil),
+		(*Message_OneofNamedGroup)(nil),
+		(*Message_OneofSiblingEnum)(nil),
+		(*Message_OneofSiblingMessage)(nil),
+		(*Message_Oneofgroup)(nil),
+		(*Message_OneofString1)(nil),
+		(*Message_OneofString2)(nil),
+		(*Message_OneofString3)(nil),
+		(*Message_OneofDefaultedBool)(nil),
+		(*Message_OneofDefaultedInt32)(nil),
+		(*Message_OneofDefaultedSint32)(nil),
+		(*Message_OneofDefaultedUint32)(nil),
+		(*Message_OneofDefaultedInt64)(nil),
+		(*Message_OneofDefaultedSint64)(nil),
+		(*Message_OneofDefaultedUint64)(nil),
+		(*Message_OneofDefaultedFixed32)(nil),
+		(*Message_OneofDefaultedSfixed32)(nil),
+		(*Message_OneofDefaultedFloat)(nil),
+		(*Message_OneofDefaultedFixed64)(nil),
+		(*Message_OneofDefaultedSfixed64)(nil),
+		(*Message_OneofDefaultedDouble)(nil),
+		(*Message_OneofDefaultedString)(nil),
+		(*Message_OneofDefaultedBytes)(nil),
+		(*Message_OneofDefaultedChildEnum)(nil),
+		(*Message_OneofDefaultedSiblingEnum)(nil),
+	}
+}
+
+func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		t := uint64(0)
+		if x.OneofBool {
+			t = 1
+		}
+		b.EncodeVarint(700<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofInt32:
+		b.EncodeVarint(701<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		b.EncodeVarint(702<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofSint32))
+	case *Message_OneofUint32:
+		b.EncodeVarint(703<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		b.EncodeVarint(704<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		b.EncodeVarint(705<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofSint64))
+	case *Message_OneofUint64:
+		b.EncodeVarint(706<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		b.EncodeVarint(707<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofFixed32))
+	case *Message_OneofSfixed32:
+		b.EncodeVarint(708<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofSfixed32))
+	case *Message_OneofFloat:
+		b.EncodeVarint(709<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
+	case *Message_OneofFixed64:
+		b.EncodeVarint(710<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofFixed64))
+	case *Message_OneofSfixed64:
+		b.EncodeVarint(711<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofSfixed64))
+	case *Message_OneofDouble:
+		b.EncodeVarint(712<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
+	case *Message_OneofString:
+		b.EncodeVarint(713<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString)
+	case *Message_OneofBytes:
+		b.EncodeVarint(714<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		b.EncodeVarint(715<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		b.EncodeVarint(716<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
+			return err
+		}
+	case *Message_OneofNamedGroup:
+		b.EncodeVarint(717<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofNamedGroup); err != nil {
+			return err
+		}
+	case *Message_OneofSiblingEnum:
+		b.EncodeVarint(718<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		b.EncodeVarint(719<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
+			return err
+		}
+	case *Message_Oneofgroup:
+		b.EncodeVarint(720<<3 | proto.WireStartGroup)
+		if err := b.Marshal(x.Oneofgroup); err != nil {
+			return err
+		}
+		b.EncodeVarint(720<<3 | proto.WireEndGroup)
+	case *Message_OneofString1:
+		b.EncodeVarint(721<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString1)
+	case *Message_OneofString2:
+		b.EncodeVarint(722<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString2)
+	case *Message_OneofString3:
+		b.EncodeVarint(723<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString3)
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
+	}
+	// oneof_defaulted_union
+	switch x := m.OneofDefaultedUnion.(type) {
+	case *Message_OneofDefaultedBool:
+		t := uint64(0)
+		if x.OneofDefaultedBool {
+			t = 1
+		}
+		b.EncodeVarint(800<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofDefaultedInt32:
+		b.EncodeVarint(801<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedInt32))
+	case *Message_OneofDefaultedSint32:
+		b.EncodeVarint(802<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofDefaultedSint32))
+	case *Message_OneofDefaultedUint32:
+		b.EncodeVarint(803<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedUint32))
+	case *Message_OneofDefaultedInt64:
+		b.EncodeVarint(804<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedInt64))
+	case *Message_OneofDefaultedSint64:
+		b.EncodeVarint(805<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofDefaultedSint64))
+	case *Message_OneofDefaultedUint64:
+		b.EncodeVarint(806<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedUint64))
+	case *Message_OneofDefaultedFixed32:
+		b.EncodeVarint(807<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofDefaultedFixed32))
+	case *Message_OneofDefaultedSfixed32:
+		b.EncodeVarint(808<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofDefaultedSfixed32))
+	case *Message_OneofDefaultedFloat:
+		b.EncodeVarint(809<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofDefaultedFloat)))
+	case *Message_OneofDefaultedFixed64:
+		b.EncodeVarint(810<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofDefaultedFixed64))
+	case *Message_OneofDefaultedSfixed64:
+		b.EncodeVarint(811<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofDefaultedSfixed64))
+	case *Message_OneofDefaultedDouble:
+		b.EncodeVarint(812<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDefaultedDouble))
+	case *Message_OneofDefaultedString:
+		b.EncodeVarint(813<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofDefaultedString)
+	case *Message_OneofDefaultedBytes:
+		b.EncodeVarint(814<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofDefaultedBytes)
+	case *Message_OneofDefaultedChildEnum:
+		b.EncodeVarint(815<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedChildEnum))
+	case *Message_OneofDefaultedSiblingEnum:
+		b.EncodeVarint(816<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedSiblingEnum))
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofDefaultedUnion has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Message)
+	switch tag {
+	case 700: // oneof_union.oneof_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofBool{x != 0}
+		return true, err
+	case 701: // oneof_union.oneof_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt32{int32(x)}
+		return true, err
+	case 702: // oneof_union.oneof_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofUnion = &Message_OneofSint32{int32(x)}
+		return true, err
+	case 703: // oneof_union.oneof_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint32{uint32(x)}
+		return true, err
+	case 704: // oneof_union.oneof_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt64{int64(x)}
+		return true, err
+	case 705: // oneof_union.oneof_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofUnion = &Message_OneofSint64{int64(x)}
+		return true, err
+	case 706: // oneof_union.oneof_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint64{x}
+		return true, err
+	case 707: // oneof_union.oneof_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
+		return true, err
+	case 708: // oneof_union.oneof_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
+		return true, err
+	case 709: // oneof_union.oneof_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 710: // oneof_union.oneof_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofFixed64{x}
+		return true, err
+	case 711: // oneof_union.oneof_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
+		return true, err
+	case 712: // oneof_union.oneof_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
+		return true, err
+	case 713: // oneof_union.oneof_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString{x}
+		return true, err
+	case 714: // oneof_union.oneof_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofUnion = &Message_OneofBytes{x}
+		return true, err
+	case 715: // oneof_union.oneof_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 716: // oneof_union.oneof_child_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_ChildMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofChildMessage{msg}
+		return true, err
+	case 717: // oneof_union.oneof_named_group
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_NamedGroup)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofNamedGroup{msg}
+		return true, err
+	case 718: // oneof_union.oneof_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
+		return true, err
+	case 719: // oneof_union.oneof_sibling_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(SiblingMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofSiblingMessage{msg}
+		return true, err
+	case 720: // oneof_union.oneofgroup
+		if wire != proto.WireStartGroup {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_OneofGroup)
+		err := b.DecodeGroup(msg)
+		m.OneofUnion = &Message_Oneofgroup{msg}
+		return true, err
+	case 721: // oneof_union.oneof_string1
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString1{x}
+		return true, err
+	case 722: // oneof_union.oneof_string2
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString2{x}
+		return true, err
+	case 723: // oneof_union.oneof_string3
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString3{x}
+		return true, err
+	case 800: // oneof_defaulted_union.oneof_defaulted_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedBool{x != 0}
+		return true, err
+	case 801: // oneof_defaulted_union.oneof_defaulted_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedInt32{int32(x)}
+		return true, err
+	case 802: // oneof_defaulted_union.oneof_defaulted_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSint32{int32(x)}
+		return true, err
+	case 803: // oneof_defaulted_union.oneof_defaulted_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedUint32{uint32(x)}
+		return true, err
+	case 804: // oneof_defaulted_union.oneof_defaulted_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedInt64{int64(x)}
+		return true, err
+	case 805: // oneof_defaulted_union.oneof_defaulted_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSint64{int64(x)}
+		return true, err
+	case 806: // oneof_defaulted_union.oneof_defaulted_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedUint64{x}
+		return true, err
+	case 807: // oneof_defaulted_union.oneof_defaulted_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed32{uint32(x)}
+		return true, err
+	case 808: // oneof_defaulted_union.oneof_defaulted_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed32{int32(x)}
+		return true, err
+	case 809: // oneof_defaulted_union.oneof_defaulted_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 810: // oneof_defaulted_union.oneof_defaulted_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed64{x}
+		return true, err
+	case 811: // oneof_defaulted_union.oneof_defaulted_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed64{int64(x)}
+		return true, err
+	case 812: // oneof_defaulted_union.oneof_defaulted_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedDouble{math.Float64frombits(x)}
+		return true, err
+	case 813: // oneof_defaulted_union.oneof_defaulted_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedString{x}
+		return true, err
+	case 814: // oneof_defaulted_union.oneof_defaulted_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofDefaultedUnion = &Message_OneofDefaultedBytes{x}
+		return true, err
+	case 815: // oneof_defaulted_union.oneof_defaulted_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 816: // oneof_defaulted_union.oneof_defaulted_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSiblingEnum{SiblingEnum(x)}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Message_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		n += proto.SizeVarint(700<<3 | proto.WireVarint)
+		n += 1
+	case *Message_OneofInt32:
+		n += proto.SizeVarint(701<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		n += proto.SizeVarint(702<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
+	case *Message_OneofUint32:
+		n += proto.SizeVarint(703<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		n += proto.SizeVarint(704<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		n += proto.SizeVarint(705<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
+	case *Message_OneofUint64:
+		n += proto.SizeVarint(706<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		n += proto.SizeVarint(707<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofSfixed32:
+		n += proto.SizeVarint(708<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFloat:
+		n += proto.SizeVarint(709<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFixed64:
+		n += proto.SizeVarint(710<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofSfixed64:
+		n += proto.SizeVarint(711<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDouble:
+		n += proto.SizeVarint(712<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofString:
+		n += proto.SizeVarint(713<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString)))
+		n += len(x.OneofString)
+	case *Message_OneofBytes:
+		n += proto.SizeVarint(714<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
+		n += len(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		n += proto.SizeVarint(715<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		s := proto.Size(x.OneofChildMessage)
+		n += proto.SizeVarint(716<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofNamedGroup:
+		s := proto.Size(x.OneofNamedGroup)
+		n += proto.SizeVarint(717<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofSiblingEnum:
+		n += proto.SizeVarint(718<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		s := proto.Size(x.OneofSiblingMessage)
+		n += proto.SizeVarint(719<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_Oneofgroup:
+		n += proto.SizeVarint(720<<3 | proto.WireStartGroup)
+		n += proto.Size(x.Oneofgroup)
+		n += proto.SizeVarint(720<<3 | proto.WireEndGroup)
+	case *Message_OneofString1:
+		n += proto.SizeVarint(721<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString1)))
+		n += len(x.OneofString1)
+	case *Message_OneofString2:
+		n += proto.SizeVarint(722<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString2)))
+		n += len(x.OneofString2)
+	case *Message_OneofString3:
+		n += proto.SizeVarint(723<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString3)))
+		n += len(x.OneofString3)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	// oneof_defaulted_union
+	switch x := m.OneofDefaultedUnion.(type) {
+	case *Message_OneofDefaultedBool:
+		n += proto.SizeVarint(800<<3 | proto.WireVarint)
+		n += 1
+	case *Message_OneofDefaultedInt32:
+		n += proto.SizeVarint(801<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedInt32))
+	case *Message_OneofDefaultedSint32:
+		n += proto.SizeVarint(802<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64((uint32(x.OneofDefaultedSint32) << 1) ^ uint32((int32(x.OneofDefaultedSint32) >> 31))))
+	case *Message_OneofDefaultedUint32:
+		n += proto.SizeVarint(803<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedUint32))
+	case *Message_OneofDefaultedInt64:
+		n += proto.SizeVarint(804<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedInt64))
+	case *Message_OneofDefaultedSint64:
+		n += proto.SizeVarint(805<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(uint64(x.OneofDefaultedSint64<<1) ^ uint64((int64(x.OneofDefaultedSint64) >> 63))))
+	case *Message_OneofDefaultedUint64:
+		n += proto.SizeVarint(806<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedUint64))
+	case *Message_OneofDefaultedFixed32:
+		n += proto.SizeVarint(807<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofDefaultedSfixed32:
+		n += proto.SizeVarint(808<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofDefaultedFloat:
+		n += proto.SizeVarint(809<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofDefaultedFixed64:
+		n += proto.SizeVarint(810<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDefaultedSfixed64:
+		n += proto.SizeVarint(811<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDefaultedDouble:
+		n += proto.SizeVarint(812<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDefaultedString:
+		n += proto.SizeVarint(813<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofDefaultedString)))
+		n += len(x.OneofDefaultedString)
+	case *Message_OneofDefaultedBytes:
+		n += proto.SizeVarint(814<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofDefaultedBytes)))
+		n += len(x.OneofDefaultedBytes)
+	case *Message_OneofDefaultedChildEnum:
+		n += proto.SizeVarint(815<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedChildEnum))
+	case *Message_OneofDefaultedSiblingEnum:
+		n += proto.SizeVarint(816<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofDefaultedSiblingEnum))
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         10000,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_bool",
+	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10001,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_int32",
+	Tag:           "varint,10001,opt,name=extension_optional_int32,json=extensionOptionalInt32",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10002,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sint32",
+	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32,json=extensionOptionalSint32",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         10003,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_uint32",
+	Tag:           "varint,10003,opt,name=extension_optional_uint32,json=extensionOptionalUint32",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10004,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_int64",
+	Tag:           "varint,10004,opt,name=extension_optional_int64,json=extensionOptionalInt64",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10005,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sint64",
+	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64,json=extensionOptionalSint64",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         10006,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_uint64",
+	Tag:           "varint,10006,opt,name=extension_optional_uint64,json=extensionOptionalUint64",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         10007,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_fixed32",
+	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32,json=extensionOptionalFixed32",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10008,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sfixed32",
+	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32,json=extensionOptionalSfixed32",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         10009,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_float",
+	Tag:           "fixed32,10009,opt,name=extension_optional_float,json=extensionOptionalFloat",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         10010,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_fixed64",
+	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64,json=extensionOptionalFixed64",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10011,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sfixed64",
+	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64,json=extensionOptionalSfixed64",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         10012,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_double",
+	Tag:           "fixed64,10012,opt,name=extension_optional_double,json=extensionOptionalDouble",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         10013,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_string",
+	Tag:           "bytes,10013,opt,name=extension_optional_string,json=extensionOptionalString",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         10014,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_bytes",
+	Tag:           "bytes,10014,opt,name=extension_optional_bytes,json=extensionOptionalBytes",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildEnum)(nil),
+	Field:         10015,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_child_enum",
+	Tag:           "varint,10015,opt,name=extension_optional_child_enum,json=extensionOptionalChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildMessage)(nil),
+	Field:         10016,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_child_message",
+	Tag:           "bytes,10016,opt,name=extension_optional_child_message,json=extensionOptionalChildMessage",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_NamedGroup)(nil),
+	Field:         10017,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_named_group",
+	Tag:           "bytes,10017,opt,name=extension_optional_named_group,json=extensionOptionalNamedGroup",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingEnum)(nil),
+	Field:         10018,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sibling_enum",
+	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,json=extensionOptionalSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingMessage)(nil),
+	Field:         10019,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sibling_message",
+	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message,json=extensionOptionalSiblingMessage",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
+	Field:         10020,
+	Name:          "google.golang.org.proto2_20180125.Message.extensionoptionalgroup",
+	Tag:           "group,10020,opt,name=ExtensionOptionalGroup,json=extensionoptionalgroup",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         20000,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_bool",
+	Tag:           "varint,20000,opt,name=extension_defaulted_bool,json=extensionDefaultedBool,def=1",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20001,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_int32",
+	Tag:           "varint,20001,opt,name=extension_defaulted_int32,json=extensionDefaultedInt32,def=-12345",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20002,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_sint32",
+	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,json=extensionDefaultedSint32,def=-3200",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         20003,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_uint32",
+	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,json=extensionDefaultedUint32,def=3200",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20004,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_int64",
+	Tag:           "varint,20004,opt,name=extension_defaulted_int64,json=extensionDefaultedInt64,def=-123456789",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20005,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_sint64",
+	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,json=extensionDefaultedSint64,def=-6400",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         20006,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_uint64",
+	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,json=extensionDefaultedUint64,def=6400",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         20007,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_fixed32",
+	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,json=extensionDefaultedFixed32,def=320000",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20008,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_sfixed32",
+	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,json=extensionDefaultedSfixed32,def=-320000",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         20009,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_float",
+	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,json=extensionDefaultedFloat,def=3.14159",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         20010,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_fixed64",
+	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,json=extensionDefaultedFixed64,def=640000",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20011,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_sfixed64",
+	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,json=extensionDefaultedSfixed64,def=-640000",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         20012,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_double",
+	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,json=extensionDefaultedDouble,def=3.14159265359",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         20013,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_string",
+	Tag:           "bytes,20013,opt,name=extension_defaulted_string,json=extensionDefaultedString,def=hello, \"world!\"\n",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         20014,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_bytes",
+	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,json=extensionDefaultedBytes,def=dead\\336\\255\\276\\357beef",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildEnum)(nil),
+	Field:         20015,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_child_enum",
+	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,json=extensionDefaultedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum,def=0",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingEnum)(nil),
+	Field:         20016,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_sibling_enum",
+	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,json=extensionDefaultedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum,def=0",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]bool)(nil),
+	Field:         30000,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_bool",
+	Tag:           "varint,30000,rep,name=extension_repeated_bool,json=extensionRepeatedBool",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30001,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_int32",
+	Tag:           "varint,30001,rep,name=extension_repeated_int32,json=extensionRepeatedInt32",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30002,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sint32",
+	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32,json=extensionRepeatedSint32",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         30003,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_uint32",
+	Tag:           "varint,30003,rep,name=extension_repeated_uint32,json=extensionRepeatedUint32",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30004,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_int64",
+	Tag:           "varint,30004,rep,name=extension_repeated_int64,json=extensionRepeatedInt64",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30005,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sint64",
+	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64,json=extensionRepeatedSint64",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         30006,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_uint64",
+	Tag:           "varint,30006,rep,name=extension_repeated_uint64,json=extensionRepeatedUint64",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         30007,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_fixed32",
+	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32,json=extensionRepeatedFixed32",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30008,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sfixed32",
+	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32,json=extensionRepeatedSfixed32",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]float32)(nil),
+	Field:         30009,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_float",
+	Tag:           "fixed32,30009,rep,name=extension_repeated_float,json=extensionRepeatedFloat",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         30010,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_fixed64",
+	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64,json=extensionRepeatedFixed64",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30011,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sfixed64",
+	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64,json=extensionRepeatedSfixed64",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]float64)(nil),
+	Field:         30012,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_double",
+	Tag:           "fixed64,30012,rep,name=extension_repeated_double,json=extensionRepeatedDouble",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]string)(nil),
+	Field:         30013,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_string",
+	Tag:           "bytes,30013,rep,name=extension_repeated_string,json=extensionRepeatedString",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([][]byte)(nil),
+	Field:         30014,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_bytes",
+	Tag:           "bytes,30014,rep,name=extension_repeated_bytes,json=extensionRepeatedBytes",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]Message_ChildEnum)(nil),
+	Field:         30015,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_child_enum",
+	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,json=extensionRepeatedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_ChildMessage)(nil),
+	Field:         30016,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_child_message",
+	Tag:           "bytes,30016,rep,name=extension_repeated_child_message,json=extensionRepeatedChildMessage",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_NamedGroup)(nil),
+	Field:         30017,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_named_group",
+	Tag:           "bytes,30017,rep,name=extension_repeated_named_group,json=extensionRepeatedNamedGroup",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]SiblingEnum)(nil),
+	Field:         30018,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sibling_enum",
+	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,json=extensionRepeatedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*SiblingMessage)(nil),
+	Field:         30019,
+	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sibling_message",
+	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message,json=extensionRepeatedSiblingMessage",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
+	Field:         30020,
+	Name:          "google.golang.org.proto2_20180125.Message.extensionrepeatedgroup",
+	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
+	Filename:      "proto2.v1.0.0-20180125-92554152/test.proto",
+}
+
+type Message_ChildMessage struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
+func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
+func (*Message_ChildMessage) ProtoMessage()               {}
+func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+func (m *Message_ChildMessage) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *Message_ChildMessage) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message_NamedGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_NamedGroup) Reset()                    { *m = Message_NamedGroup{} }
+func (m *Message_NamedGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_NamedGroup) ProtoMessage()               {}
+func (*Message_NamedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} }
+
+func (m *Message_NamedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_NamedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_NamedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *Message_NamedGroup) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message_OptionalGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_OptionalGroup) Reset()                    { *m = Message_OptionalGroup{} }
+func (m *Message_OptionalGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_OptionalGroup) ProtoMessage()               {}
+func (*Message_OptionalGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 2} }
+
+func (m *Message_OptionalGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_OptionalGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_OptionalGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_RequiredGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_RequiredGroup) Reset()                    { *m = Message_RequiredGroup{} }
+func (m *Message_RequiredGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_RequiredGroup) ProtoMessage()               {}
+func (*Message_RequiredGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 3} }
+
+func (m *Message_RequiredGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_RequiredGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_RequiredGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_RepeatedGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_RepeatedGroup) Reset()                    { *m = Message_RepeatedGroup{} }
+func (m *Message_RepeatedGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_RepeatedGroup) ProtoMessage()               {}
+func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 4} }
+
+func (m *Message_RepeatedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_RepeatedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_RepeatedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_OneofGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_OneofGroup) Reset()                    { *m = Message_OneofGroup{} }
+func (m *Message_OneofGroup) String() string            { return proto.CompactTextString(m) }
+func (*Message_OneofGroup) ProtoMessage()               {}
+func (*Message_OneofGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 33} }
+
+func (m *Message_OneofGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_OneofGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_OneofGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_ExtensionOptionalGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
+func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
+func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{1, 34}
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_ExtensionRepeatedGroup struct {
+	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
+func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
+func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{1, 35}
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20180125.SiblingMessage")
+	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20180125.Message")
+	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20180125.Message.ChildMessage")
+	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20180125.Message.NamedGroup")
+	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20180125.Message.OptionalGroup")
+	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20180125.Message.RequiredGroup")
+	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20180125.Message.RepeatedGroup")
+	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20180125.Message.OneofGroup")
+	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20180125.Message.ExtensionOptionalGroup")
+	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20180125.Message.ExtensionRepeatedGroup")
+	proto.RegisterEnum("google.golang.org.proto2_20180125.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
+	proto.RegisterEnum("google.golang.org.proto2_20180125.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
+	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
+	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
+	proto.RegisterExtension(E_Message_ExtensionOptionalString)
+	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
+	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
+	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
+	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
+	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
+}
+
+func init() { proto.RegisterFile("proto2.v1.0.0-20180125-92554152/test.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 4492 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x69, 0x70, 0x1c, 0xc7,
+	0x75, 0xc6, 0xec, 0x62, 0x17, 0x44, 0x13, 0x0b, 0x2c, 0x86, 0x24, 0x30, 0x84, 0xa4, 0x68, 0xcd,
+	0x38, 0xce, 0x86, 0x11, 0x41, 0x60, 0xd0, 0x68, 0x8a, 0x1b, 0x1d, 0x26, 0x24, 0xca, 0x2b, 0xc7,
+	0x5a, 0xa5, 0x46, 0xc5, 0x94, 0xcb, 0xa5, 0x0a, 0x03, 0x12, 0x0b, 0x70, 0xa5, 0x3d, 0x20, 0x60,
+	0x97, 0x12, 0x63, 0xa7, 0xc4, 0x38, 0xe7, 0x4f, 0xf9, 0xbe, 0xd6, 0xb6, 0xac, 0xdb, 0xd6, 0xe9,
+	0xfb, 0xd2, 0xe5, 0x23, 0x89, 0x7c, 0x5f, 0x39, 0x9c, 0xcb, 0xb9, 0x2f, 0xe7, 0xbe, 0xef, 0xa3,
+	0xba, 0x5f, 0xf7, 0x74, 0xf7, 0x4c, 0xcf, 0x02, 0x3d, 0xeb, 0xd2, 0x0f, 0x55, 0x89, 0xbd, 0xaf,
+	0xdf, 0xd7, 0xef, 0xdb, 0x7e, 0xef, 0x7d, 0xe8, 0x99, 0x5e, 0x74, 0x78, 0x73, 0xab, 0xd3, 0xed,
+	0xf8, 0xf3, 0xe7, 0x17, 0xe7, 0x17, 0xe6, 0x17, 0x8e, 0xf8, 0x0b, 0x8b, 0x57, 0x2e, 0x2c, 0xfa,
+	0xcb, 0x47, 0x8e, 0xfb, 0xcb, 0xcb, 0x78, 0x71, 0xd9, 0x3f, 0xda, 0xad, 0x6f, 0x77, 0xe7, 0x99,
+	0x91, 0xfb, 0x92, 0x8d, 0x4e, 0x67, 0xa3, 0x59, 0x9f, 0xdf, 0xe8, 0x34, 0x57, 0xdb, 0x1b, 0xf3,
+	0x9d, 0xad, 0x0d, 0xf8, 0xc0, 0x3f, 0x2d, 0xa6, 0x1d, 0x7a, 0x1d, 0x9a, 0xbc, 0xa5, 0x71, 0xa6,
+	0xd9, 0x68, 0x6f, 0xdc, 0x54, 0xdf, 0xde, 0x5e, 0xdd, 0xa8, 0xbb, 0x93, 0x28, 0xb3, 0xbe, 0xe8,
+	0x39, 0x25, 0xa7, 0x3c, 0x1e, 0x64, 0xd6, 0x17, 0xd9, 0xbf, 0x7d, 0x2f, 0x53, 0xca, 0xb0, 0x7f,
+	0xfb, 0xec, 0xdf, 0x4b, 0x5e, 0xb6, 0x94, 0x65, 0xff, 0x5e, 0x72, 0x2b, 0x28, 0xb3, 0x8e, 0xbd,
+	0xd1, 0x92, 0x53, 0xde, 0xeb, 0x1f, 0x9e, 0xdf, 0x11, 0x71, 0x9e, 0xe3, 0x04, 0x99, 0x75, 0x7c,
+	0xe8, 0x3b, 0x8f, 0x3a, 0x68, 0x4c, 0x00, 0x9f, 0x42, 0xa8, 0xbd, 0xda, 0xaa, 0xaf, 0x6d, 0x6c,
+	0x75, 0x7a, 0x9b, 0x6c, 0x01, 0xc8, 0x5f, 0xde, 0xbd, 0xc3, 0xf9, 0x1a, 0x9d, 0xfc, 0x0a, 0x3a,
+	0x39, 0x50, 0x1c, 0xb9, 0xdf, 0x8f, 0x0a, 0x9d, 0xcd, 0x6e, 0xa3, 0xd3, 0x5e, 0x6d, 0x9e, 0x3e,
+	0xd3, 0xe9, 0x34, 0xbd, 0xb5, 0x92, 0x53, 0xde, 0x13, 0x4c, 0x88, 0xc1, 0x95, 0x4e, 0xa7, 0xe9,
+	0xfe, 0x00, 0x9a, 0x0c, 0x8d, 0x1a, 0xed, 0xee, 0x92, 0xef, 0xd5, 0x4b, 0x4e, 0x39, 0x17, 0x84,
+	0x53, 0x6f, 0xa4, 0x83, 0xee, 0x0f, 0xa2, 0xa9, 0xd0, 0x6c, 0x1b, 0xec, 0xd6, 0x4b, 0x4e, 0x79,
+	0x3a, 0x08, 0x67, 0xdf, 0xd2, 0x88, 0x19, 0xf6, 0xc0, 0x70, 0xa3, 0xe4, 0x94, 0x0b, 0xd2, 0xf0,
+	0x14, 0x18, 0x46, 0x80, 0x09, 0xf6, 0xce, 0x95, 0x9c, 0x72, 0x56, 0x03, 0x26, 0x38, 0x06, 0x4c,
+	0xb0, 0xd7, 0x28, 0x39, 0x65, 0x57, 0x07, 0x8e, 0x18, 0xf6, 0xc0, 0xf0, 0xb6, 0x92, 0x53, 0x1e,
+	0xd5, 0x81, 0x09, 0x76, 0x7f, 0x08, 0x15, 0x43, 0xc3, 0xf5, 0xc6, 0x5d, 0xf5, 0xb5, 0x25, 0xdf,
+	0xbb, 0xbd, 0xe4, 0x94, 0xc7, 0x82, 0xd0, 0xc1, 0x0d, 0x30, 0xec, 0xfe, 0x30, 0x9a, 0x96, 0xe0,
+	0xc2, 0xb6, 0x59, 0x72, 0xca, 0x53, 0x41, 0xe8, 0xe3, 0x16, 0x3e, 0xae, 0x05, 0xb4, 0xde, 0xec,
+	0xac, 0x76, 0xbd, 0x56, 0xc9, 0x29, 0x67, 0x64, 0x40, 0x37, 0xd0, 0xc1, 0x38, 0x3c, 0xc1, 0x5e,
+	0xbb, 0xe4, 0x94, 0xf3, 0x11, 0x78, 0x82, 0x0d, 0xf0, 0x04, 0x7b, 0x9d, 0x92, 0x53, 0x2e, 0x46,
+	0xe1, 0x23, 0xf1, 0xaf, 0x75, 0x7a, 0x67, 0x9a, 0x75, 0x6f, 0xb3, 0xe4, 0x94, 0x1d, 0x19, 0xff,
+	0xf5, 0x6c, 0x54, 0x67, 0xb4, 0xbb, 0xd5, 0x68, 0x6f, 0x78, 0x77, 0xb0, 0x3d, 0x2f, 0x19, 0x65,
+	0xa3, 0x5a, 0x40, 0x67, 0x2e, 0x74, 0xeb, 0xdb, 0xde, 0x56, 0xc9, 0x29, 0x4f, 0xc8, 0x80, 0x56,
+	0xe8, 0xa0, 0xbb, 0x86, 0xf6, 0x85, 0x66, 0x67, 0xcf, 0x35, 0x9a, 0x6b, 0xa7, 0xeb, 0xed, 0x5e,
+	0xcb, 0xdb, 0x2e, 0x39, 0xe5, 0x49, 0x1f, 0x5b, 0x6c, 0xe3, 0xeb, 0xe8, 0xe4, 0x93, 0xed, 0x5e,
+	0x2b, 0x08, 0xc3, 0x0e, 0x87, 0xdc, 0x16, 0x9a, 0x89, 0xa0, 0xb4, 0x60, 0x9a, 0xd7, 0x65, 0x09,
+	0x78, 0xcc, 0x16, 0x48, 0x64, 0xe3, 0x7e, 0x0d, 0x4b, 0xa4, 0xe4, 0x06, 0x0a, 0xc7, 0x4f, 0xb3,
+	0x94, 0x3a, 0x0d, 0xc9, 0xd9, 0x63, 0x60, 0x29, 0x93, 0xd3, 0x15, 0x2e, 0xe5, 0x98, 0x7b, 0x06,
+	0x1d, 0x50, 0xf6, 0x37, 0xab, 0x47, 0xc0, 0xdf, 0x79, 0xc6, 0xdf, 0xfc, 0x2e, 0x90, 0x78, 0x19,
+	0x63, 0xcc, 0xed, 0x93, 0x59, 0x11, 0x0e, 0xba, 0xb7, 0x23, 0x2f, 0x86, 0x21, 0xd8, 0xbb, 0x93,
+	0x05, 0xb4, 0xb8, 0x7b, 0x18, 0xc1, 0xdb, 0x4c, 0x04, 0x49, 0x30, 0xf7, 0x13, 0xb2, 0xea, 0x00,
+	0x65, 0x77, 0xb1, 0x7a, 0x76, 0xa5, 0x05, 0x65, 0x37, 0xf3, 0xf9, 0xc0, 0x9a, 0xee, 0xce, 0xbd,
+	0x02, 0x4d, 0xae, 0xd5, 0xd7, 0x57, 0x7b, 0xcd, 0x6e, 0x7d, 0x0d, 0xca, 0xda, 0x0b, 0xb4, 0x62,
+	0xee, 0xa9, 0x8c, 0x76, 0xb7, 0x7a, 0xf5, 0xa0, 0x10, 0x7e, 0xc8, 0xca, 0xdb, 0x02, 0x9a, 0x92,
+	0xd6, 0x50, 0x8e, 0xbe, 0x40, 0xcd, 0x73, 0x95, 0xfc, 0x91, 0x45, 0x7f, 0x09, 0x2f, 0x07, 0xd2,
+	0x1b, 0x54, 0xba, 0x45, 0x54, 0x94, 0x33, 0x78, 0xa9, 0xfb, 0x22, 0x9d, 0x32, 0x5d, 0xc9, 0x1d,
+	0x59, 0xf2, 0x17, 0x16, 0x02, 0xe9, 0x91, 0xd7, 0xbc, 0x05, 0x75, 0x0a, 0x2f, 0x7a, 0x5f, 0xa2,
+	0x53, 0x0a, 0x95, 0xd1, 0xc8, 0x0c, 0x5e, 0xfc, 0x70, 0x64, 0x59, 0x04, 0x7b, 0x5f, 0xa6, 0x13,
+	0xb2, 0x15, 0x04, 0xcb, 0x22, 0xc7, 0xae, 0x3c, 0xae, 0x2f, 0x8d, 0xe0, 0xf8, 0xd2, 0x08, 0xf6,
+	0xbe, 0x42, 0xa7, 0xb9, 0x95, 0xdc, 0x11, 0x82, 0x63, 0x4b, 0x23, 0x38, 0xbe, 0x34, 0x82, 0xbd,
+	0xaf, 0xd2, 0x29, 0xa3, 0x95, 0xd1, 0xc8, 0x0c, 0x5e, 0x1e, 0x31, 0x9a, 0x96, 0x33, 0x44, 0xcd,
+	0xfb, 0x1a, 0x9d, 0x32, 0x56, 0xc9, 0xd3, 0x68, 0x16, 0x16, 0x02, 0xe9, 0x53, 0x54, 0xca, 0x63,
+	0xc8, 0x55, 0x96, 0x26, 0xa6, 0x7d, 0x9d, 0x4e, 0x9b, 0xaa, 0x8c, 0x1d, 0xe1, 0xf3, 0xa4, 0xe7,
+	0xb0, 0x6a, 0x2e, 0xaa, 0x4c, 0x40, 0xd9, 0xfc, 0x06, 0x9d, 0x95, 0xa9, 0x8c, 0x2d, 0xcd, 0x2f,
+	0xe2, 0xc5, 0x65, 0x95, 0x06, 0xa8, 0xa0, 0xf1, 0x15, 0x12, 0xec, 0x7d, 0x93, 0x4e, 0xca, 0x57,
+	0xf2, 0x34, 0xa8, 0xf8, 0x0a, 0x09, 0x36, 0xad, 0x90, 0x60, 0xef, 0x5b, 0x74, 0x5a, 0xb1, 0x32,
+	0x76, 0x84, 0xcf, 0x8b, 0xae, 0x90, 0x60, 0xf7, 0xb8, 0x4a, 0x21, 0xaf, 0xac, 0xbf, 0x46, 0xa7,
+	0x39, 0x95, 0x02, 0x5f, 0xa2, 0x4f, 0x96, 0x97, 0x96, 0x8f, 0x2b, 0x5c, 0xf2, 0x52, 0x7b, 0x95,
+	0xf6, 0x85, 0x41, 0xad, 0xfd, 0x75, 0x26, 0x30, 0x2a, 0xc5, 0x73, 0xf5, 0x66, 0xb3, 0x73, 0x45,
+	0xe9, 0xd0, 0x9d, 0x9d, 0xad, 0xe6, 0xda, 0x4b, 0x0e, 0x21, 0xf5, 0xbb, 0x83, 0xfa, 0xbb, 0xa2,
+	0x52, 0x03, 0x05, 0xf8, 0x37, 0xe8, 0xe4, 0x89, 0x8a, 0xb7, 0x56, 0x5f, 0x5d, 0xbb, 0x75, 0x69,
+	0x89, 0xdc, 0xea, 0x2f, 0x2f, 0xdf, 0xea, 0x1f, 0x23, 0xb7, 0x2e, 0x2d, 0x1f, 0x3b, 0x53, 0xaf,
+	0xaf, 0x2b, 0x5c, 0x41, 0x71, 0x6e, 0xa3, 0xfd, 0xd2, 0x87, 0x52, 0x9d, 0x7f, 0xd3, 0x49, 0x5f,
+	0x9e, 0x2b, 0xb9, 0x13, 0xaf, 0xfa, 0xb1, 0xea, 0x89, 0x40, 0xf2, 0x29, 0xcb, 0x74, 0x13, 0xcd,
+	0xa8, 0x5b, 0x54, 0xa9, 0x67, 0xdf, 0x76, 0xd2, 0x14, 0x34, 0x81, 0xb5, 0x5f, 0xd9, 0xd8, 0xb2,
+	0xb0, 0xbd, 0x14, 0x15, 0xb6, 0xea, 0x77, 0xf4, 0x1a, 0x5b, 0xa2, 0x14, 0x3c, 0x46, 0xd5, 0xda,
+	0x9e, 0x60, 0x42, 0x8c, 0xb2, 0x1a, 0xf0, 0x32, 0x34, 0x19, 0x5a, 0x41, 0x72, 0x3e, 0x4e, 0xcd,
+	0x72, 0x41, 0x38, 0x19, 0x32, 0xbf, 0x8c, 0xa6, 0x42, 0x3b, 0x9e, 0xf8, 0x4f, 0x50, 0xc3, 0xe9,
+	0x20, 0x9c, 0xcf, 0x13, 0x5e, 0xb5, 0xe4, 0xf9, 0xfe, 0x24, 0xb5, 0x2c, 0x48, 0x4b, 0x9e, 0xe8,
+	0x11, 0x6c, 0x82, 0xbd, 0xa7, 0xa8, 0x61, 0x56, 0xc3, 0x26, 0x38, 0x86, 0x4d, 0xb0, 0xf7, 0x41,
+	0x6a, 0xe8, 0xea, 0xd8, 0x11, 0x4b, 0x9e, 0xd0, 0x1f, 0xa2, 0x96, 0xa3, 0x3a, 0x36, 0xc1, 0xee,
+	0x61, 0x54, 0x0c, 0x2d, 0x45, 0x46, 0x7e, 0x98, 0x9a, 0x8e, 0x05, 0xa1, 0x0b, 0x91, 0xbf, 0x57,
+	0xa0, 0x69, 0x89, 0x2f, 0x8c, 0x3f, 0x42, 0x8d, 0xa7, 0x82, 0xd0, 0x4b, 0x98, 0xb4, 0x6a, 0x54,
+	0x90, 0xb3, 0x1f, 0xa5, 0xa6, 0x19, 0x19, 0x15, 0x64, 0x6a, 0x6c, 0x05, 0x04, 0x7b, 0x1f, 0xa3,
+	0x96, 0xf9, 0xc8, 0x0a, 0x08, 0x36, 0xac, 0x80, 0x60, 0xef, 0xe3, 0xd4, 0xb8, 0x18, 0x5d, 0x41,
+	0x84, 0x05, 0x9e, 0x93, 0x9f, 0xa0, 0xb6, 0x8e, 0x64, 0x81, 0xe7, 0xa0, 0xc6, 0x2c, 0xa4, 0xe0,
+	0x27, 0x41, 0xd3, 0x4b, 0x66, 0x21, 0xdf, 0xd4, 0xa8, 0x20, 0xdd, 0x3e, 0x45, 0x0d, 0x27, 0x64,
+	0x54, 0x90, 0x53, 0x75, 0xb4, 0x2f, 0xb4, 0x53, 0x52, 0xea, 0xd3, 0xd4, 0x38, 0xb5, 0xe2, 0x11,
+	0x1e, 0x65, 0x2a, 0xb5, 0xd1, 0x4c, 0x04, 0x46, 0xf4, 0xec, 0xa7, 0x29, 0xd2, 0x30, 0x92, 0x47,
+	0x03, 0x13, 0x8d, 0xfb, 0x1c, 0x0a, 0xc7, 0x35, 0xc9, 0xf3, 0x0c, 0xa0, 0xa5, 0xd5, 0x3c, 0xc2,
+	0xa7, 0xa2, 0x79, 0xce, 0xa2, 0x03, 0xca, 0x66, 0x57, 0x6a, 0xc4, 0xb3, 0x40, 0xa1, 0xb5, 0xe8,
+	0x91, 0x29, 0x22, 0x6b, 0x43, 0x13, 0x79, 0x31, 0x10, 0x41, 0xe0, 0x73, 0x10, 0x52, 0x1a, 0xd5,
+	0x13, 0x81, 0x12, 0xe4, 0x9d, 0x96, 0x95, 0x08, 0x58, 0x7b, 0x9e, 0x42, 0xd8, 0xc9, 0x9e, 0x80,
+	0x3b, 0xe0, 0xb2, 0x47, 0xf3, 0xe7, 0x5e, 0x8d, 0x66, 0xe5, 0x86, 0xd7, 0xf5, 0xcf, 0x3d, 0x59,
+	0x5a, 0xf4, 0xb8, 0xfe, 0x09, 0x99, 0xbd, 0x5e, 0xd3, 0x41, 0x27, 0x14, 0x36, 0xa2, 0x82, 0xe8,
+	0x0d, 0x74, 0xbe, 0x14, 0x44, 0x33, 0x31, 0x0f, 0x50, 0x1e, 0x57, 0xd0, 0x41, 0x83, 0x0b, 0x5e,
+	0x28, 0xdf, 0x48, 0x7d, 0x84, 0x0a, 0x69, 0x36, 0xe6, 0x82, 0x17, 0xce, 0x13, 0x46, 0x1f, 0xbc,
+	0x84, 0xbe, 0x89, 0xfa, 0x10, 0x92, 0x29, 0xee, 0x82, 0x57, 0xd4, 0x93, 0x49, 0x91, 0x10, 0xec,
+	0xbd, 0x99, 0x7a, 0xd0, 0x35, 0x94, 0x31, 0x1a, 0x82, 0x07, 0x44, 0x43, 0xb0, 0xf7, 0x16, 0xea,
+	0x27, 0x14, 0x55, 0xe6, 0x68, 0x08, 0x1e, 0x10, 0x0d, 0xc1, 0xde, 0x5b, 0xa9, 0x0f, 0xa1, 0xb2,
+	0xcc, 0xd1, 0x10, 0xec, 0x9e, 0x44, 0x73, 0x06, 0x17, 0xa2, 0x00, 0xbf, 0x8d, 0xfa, 0x90, 0xb2,
+	0xcb, 0x8b, 0x79, 0x11, 0xe5, 0xbb, 0x8a, 0x2e, 0x31, 0x45, 0x23, 0xfc, 0xbc, 0x9d, 0xfa, 0x51,
+	0x74, 0xd8, 0xc1, 0x78, 0x44, 0xa2, 0xb4, 0xaf, 0x18, 0xe9, 0x85, 0x22, 0xff, 0x0e, 0xea, 0x46,
+	0x11, 0x66, 0x71, 0x6e, 0xa1, 0xec, 0x0f, 0x08, 0x8a, 0x60, 0xef, 0x9d, 0xd4, 0x8b, 0x54, 0x6a,
+	0x09, 0x41, 0x11, 0x3c, 0x30, 0x28, 0x82, 0xbd, 0x77, 0x51, 0x3f, 0x8a, 0x74, 0x4b, 0x0a, 0x8a,
+	0x60, 0xf7, 0x95, 0xc6, 0x2f, 0x8a, 0xf7, 0x8d, 0x3e, 0xf5, 0x13, 0xd3, 0x72, 0xf1, 0x6f, 0x8c,
+	0xf7, 0x93, 0x9b, 0xcc, 0x1b, 0x07, 0x3a, 0xcb, 0xbb, 0xa9, 0x2f, 0x93, 0xb8, 0x33, 0xec, 0x21,
+	0x68, 0x3a, 0xb7, 0x18, 0xf9, 0x86, 0xf6, 0xf3, 0x1e, 0xea, 0x6d, 0x90, 0xda, 0x8b, 0x7f, 0x01,
+	0xd0, 0xa1, 0xee, 0x46, 0x97, 0x19, 0x9c, 0x2a, 0xbd, 0xea, 0xbd, 0xd9, 0xf4, 0xbd, 0x4a, 0x48,
+	0xb2, 0xb9, 0x18, 0xb8, 0xec, 0x5d, 0x3f, 0x8d, 0x2e, 0x37, 0x66, 0x97, 0x52, 0xeb, 0xef, 0xcd,
+	0xa6, 0xa9, 0xf5, 0x02, 0xfc, 0x52, 0x43, 0x4e, 0x46, 0x74, 0xe1, 0x66, 0x7d, 0x35, 0x2c, 0x91,
+	0xff, 0x9c, 0x2d, 0x65, 0x41, 0x17, 0xc2, 0xa8, 0xd4, 0x85, 0xdc, 0x0a, 0x2a, 0xd0, 0xbf, 0x50,
+	0x33, 0xa6, 0x0b, 0x61, 0x58, 0xd1, 0x85, 0xdc, 0x8e, 0x97, 0xbb, 0x7f, 0xa5, 0x86, 0x4c, 0x17,
+	0xc2, 0xb8, 0xaa, 0x0b, 0xb9, 0x25, 0x2f, 0x6a, 0xff, 0x46, 0x2d, 0x0b, 0xd2, 0x52, 0xd5, 0x85,
+	0x12, 0x9b, 0x60, 0xef, 0xdf, 0xa9, 0x61, 0x56, 0xc3, 0x16, 0x3a, 0x47, 0xc1, 0x26, 0xd8, 0xfb,
+	0x0f, 0x6a, 0xe8, 0xea, 0xd8, 0x11, 0x4b, 0x5e, 0x82, 0xfe, 0x93, 0x5a, 0x8e, 0xea, 0xd8, 0x42,
+	0x17, 0x72, 0x4b, 0x51, 0x21, 0xfe, 0x8b, 0x9a, 0x32, 0x5d, 0x08, 0x1f, 0x68, 0xba, 0x50, 0xe0,
+	0x0b, 0xe3, 0xff, 0xa6, 0xc6, 0x4c, 0x17, 0xf2, 0x15, 0x68, 0xba, 0x50, 0x78, 0x66, 0x25, 0xe3,
+	0x7f, 0xa8, 0x69, 0x46, 0x46, 0xa5, 0xe8, 0x42, 0x75, 0x05, 0x04, 0x7b, 0xff, 0x4b, 0x2d, 0xf3,
+	0x91, 0x15, 0x08, 0x5d, 0xa8, 0xad, 0x80, 0x60, 0xef, 0xff, 0xa8, 0x71, 0x31, 0xba, 0x82, 0x08,
+	0x0b, 0x3c, 0xbf, 0x2f, 0x8e, 0x96, 0xb2, 0xa0, 0x0b, 0x61, 0x5c, 0xd5, 0x85, 0xc2, 0x2f, 0x64,
+	0xef, 0xcf, 0x8c, 0xb2, 0xb3, 0x5d, 0xc9, 0xac, 0xa2, 0x0b, 0xc5, 0x6e, 0x62, 0x89, 0xf9, 0x7a,
+	0x6a, 0x38, 0x21, 0xa3, 0x52, 0x74, 0x21, 0xb7, 0x53, 0x72, 0xed, 0x67, 0xa9, 0xf1, 0x10, 0xba,
+	0x10, 0x3c, 0x46, 0x74, 0xa1, 0x06, 0x23, 0x64, 0xcd, 0xcf, 0x51, 0xa4, 0xe1, 0x74, 0xa1, 0x02,
+	0xa6, 0xe9, 0x42, 0x8e, 0xa7, 0xea, 0xc2, 0x9f, 0x07, 0xb4, 0xf4, 0xba, 0x10, 0x7c, 0x46, 0x75,
+	0x61, 0xb8, 0xd9, 0x95, 0x5a, 0xf1, 0x0b, 0x40, 0x61, 0x0a, 0x5d, 0x28, 0x52, 0x24, 0xa2, 0x0b,
+	0x23, 0x20, 0x82, 0xc0, 0x5f, 0x84, 0x90, 0xd2, 0xe9, 0x42, 0x0d, 0x4a, 0xd3, 0x85, 0xf0, 0x09,
+	0xb0, 0xf6, 0x4b, 0x14, 0xc2, 0x56, 0x17, 0x82, 0x83, 0x50, 0x17, 0x2a, 0xfe, 0xdc, 0x9f, 0x44,
+	0x85, 0xd6, 0xea, 0x26, 0xab, 0x72, 0x50, 0xea, 0xbe, 0x0d, 0x31, 0xfc, 0x88, 0x05, 0xc0, 0x4d,
+	0xab, 0x9b, 0xb4, 0x20, 0xd2, 0xff, 0x4e, 0xb6, 0xbb, 0x5b, 0x17, 0x82, 0xbd, 0x2d, 0x39, 0xe2,
+	0x9e, 0x45, 0x93, 0x21, 0x02, 0xd4, 0xb4, 0xdf, 0x02, 0x88, 0xab, 0xec, 0x21, 0x58, 0x41, 0x05,
+	0x8c, 0x89, 0x96, 0x32, 0xe4, 0xae, 0xa3, 0xa9, 0x10, 0x84, 0xd7, 0xd8, 0xdf, 0x06, 0x94, 0xab,
+	0xed, 0x51, 0xa0, 0x1a, 0x03, 0x4c, 0xa1, 0xa5, 0x8e, 0x69, 0x38, 0xbc, 0x42, 0xff, 0x4e, 0x6a,
+	0x9c, 0x53, 0x06, 0x1c, 0x5e, 0xdf, 0x23, 0xa4, 0x11, 0xec, 0xfd, 0xee, 0x30, 0xa4, 0x11, 0x1c,
+	0x23, 0x8d, 0xe0, 0x18, 0x69, 0x04, 0x7b, 0xbf, 0x37, 0x14, 0x69, 0x02, 0x46, 0x25, 0x2d, 0x82,
+	0xc3, 0x5b, 0xcb, 0x77, 0x86, 0x22, 0x2d, 0x8a, 0xc3, 0x1b, 0x53, 0x03, 0x15, 0x43, 0x1c, 0xd1,
+	0x6b, 0x7e, 0x1f, 0x80, 0xae, 0xb1, 0x07, 0xe2, 0x2d, 0x0c, 0x90, 0x26, 0x5b, 0xda, 0xa0, 0xdb,
+	0x44, 0xd3, 0x92, 0x3a, 0x81, 0xf5, 0x07, 0x80, 0x75, 0x6d, 0x0a, 0xf2, 0xd6, 0x55, 0xb0, 0xa9,
+	0x96, 0x3e, 0xaa, 0xed, 0x06, 0xe8, 0x8b, 0x7f, 0x98, 0x7a, 0x37, 0xb0, 0x0e, 0xaa, 0xef, 0x06,
+	0x68, 0xaa, 0x31, 0xf6, 0x08, 0xf6, 0xfe, 0x68, 0x38, 0xf6, 0xc4, 0xf7, 0xa4, 0xb1, 0x47, 0xb0,
+	0x81, 0x3d, 0x82, 0xbd, 0x3f, 0x1e, 0x92, 0x3d, 0x01, 0xa6, 0xb3, 0x17, 0xd9, 0x7e, 0xbc, 0xa7,
+	0xff, 0x49, 0xea, 0xed, 0x07, 0xdd, 0x5f, 0xdf, 0x7e, 0x5c, 0x11, 0x68, 0xe9, 0x04, 0x8a, 0xe0,
+	0x4f, 0xd3, 0xa7, 0x13, 0x73, 0x10, 0x49, 0x27, 0xd0, 0x13, 0xea, 0x6e, 0x00, 0x3d, 0xf1, 0x67,
+	0xa9, 0x77, 0x03, 0x53, 0x1e, 0xfa, 0x6e, 0x00, 0x31, 0xb2, 0x89, 0xf6, 0x85, 0x20, 0x8a, 0x18,
+	0xf9, 0x73, 0x40, 0x7a, 0xb9, 0x3d, 0x52, 0x28, 0x40, 0x00, 0xad, 0xd8, 0x8a, 0x0c, 0xbb, 0x17,
+	0xd0, 0x4c, 0x04, 0x51, 0xb4, 0xd5, 0xbf, 0x00, 0xd0, 0xeb, 0x52, 0x82, 0xf2, 0x31, 0xc0, 0xdd,
+	0xd7, 0x8a, 0x7f, 0xe2, 0x6e, 0xa3, 0xfd, 0x21, 0xb4, 0x2a, 0x51, 0xfe, 0x12, 0x80, 0x4f, 0xd8,
+	0x03, 0x4b, 0x55, 0x02, 0xb0, 0xd3, 0xad, 0xe8, 0xb8, 0x7b, 0x1e, 0x1d, 0x50, 0xaa, 0xaf, 0xa2,
+	0x56, 0xbe, 0x0b, 0xa8, 0x2b, 0x69, 0x6a, 0x70, 0xa8, 0x53, 0x00, 0xd6, 0x6d, 0xc5, 0x3e, 0x70,
+	0xef, 0x46, 0x5e, 0x0c, 0x57, 0x30, 0xfd, 0x57, 0x00, 0x7d, 0x32, 0x35, 0xb4, 0xc6, 0xf5, 0x81,
+	0x96, 0xe9, 0x33, 0xb1, 0x7f, 0x59, 0xa3, 0x03, 0xcd, 0xf1, 0xd7, 0xa9, 0xf6, 0x2f, 0xeb, 0xfc,
+	0x52, 0x74, 0xd0, 0xfd, 0x1b, 0x0e, 0x89, 0x64, 0xdc, 0x56, 0x50, 0xfe, 0x26, 0x55, 0x32, 0x42,
+	0xe3, 0x97, 0x30, 0x34, 0x19, 0xe5, 0x98, 0xc0, 0xe9, 0x29, 0x38, 0x7f, 0x9b, 0x0a, 0xe7, 0x94,
+	0x01, 0x47, 0x8e, 0x29, 0xa4, 0x11, 0x0c, 0x30, 0x7f, 0x97, 0x96, 0x34, 0x82, 0x63, 0xa4, 0xc1,
+	0x90, 0x4a, 0x9a, 0x40, 0xf9, 0xfb, 0xd4, 0xa4, 0xa9, 0x30, 0x82, 0x34, 0x1d, 0xa7, 0xa7, 0xe0,
+	0xfc, 0x43, 0x6a, 0xd2, 0xa2, 0x38, 0x72, 0x4c, 0xb4, 0x34, 0xde, 0x46, 0x01, 0xe8, 0x1f, 0x53,
+	0xb5, 0x34, 0xde, 0xf7, 0x25, 0x12, 0xfd, 0x36, 0x94, 0xc1, 0x90, 0x3a, 0x56, 0xa2, 0x01, 0xe9,
+	0x9f, 0xd2, 0x51, 0xc7, 0x3c, 0x44, 0xa8, 0x0b, 0xc7, 0xdc, 0x12, 0x42, 0x9d, 0x76, 0xbd, 0xb3,
+	0x0e, 0x10, 0x4f, 0xe7, 0x4a, 0x4e, 0x79, 0x4f, 0x75, 0x24, 0x18, 0x67, 0x83, 0xcc, 0xe2, 0x10,
+	0xda, 0x0b, 0x16, 0x20, 0x4f, 0x9f, 0xa1, 0x26, 0xb9, 0xea, 0x48, 0x00, 0xf3, 0x40, 0x2e, 0xbf,
+	0x14, 0x4d, 0x80, 0x0d, 0xd7, 0xca, 0xcf, 0x52, 0xa3, 0xe9, 0xea, 0x48, 0x00, 0x53, 0xb9, 0xd8,
+	0x0d, 0xad, 0xb8, 0xd2, 0x7d, 0x8e, 0x5a, 0x15, 0x42, 0x2b, 0x2e, 0x55, 0x55, 0x3c, 0x82, 0xbd,
+	0xe7, 0xa9, 0x51, 0x56, 0xc5, 0x23, 0x58, 0xc7, 0x23, 0xd8, 0xfb, 0x0c, 0x35, 0x72, 0x35, 0x3c,
+	0xd5, 0x8a, 0x8b, 0xc4, 0xcf, 0x52, 0xab, 0x51, 0x0d, 0x8f, 0x60, 0xf7, 0x65, 0xa8, 0x00, 0x56,
+	0x42, 0x76, 0x7d, 0x8e, 0x9a, 0x8d, 0x55, 0x47, 0x02, 0x98, 0x2d, 0x24, 0x5a, 0x19, 0x4d, 0x72,
+	0x4c, 0x61, 0xf8, 0x79, 0x6a, 0x38, 0x55, 0x1d, 0x09, 0xc0, 0x41, 0x28, 0xaf, 0xc2, 0x08, 0x40,
+	0x5b, 0xfd, 0x32, 0x35, 0xcb, 0x84, 0x11, 0x80, 0x3a, 0xd2, 0x51, 0x09, 0xf6, 0x7e, 0x85, 0x5a,
+	0xe5, 0x75, 0x54, 0x76, 0x80, 0xa0, 0xa1, 0x12, 0xec, 0xfd, 0x2a, 0x35, 0x2c, 0x46, 0x50, 0xd5,
+	0x68, 0xb9, 0x26, 0x79, 0x81, 0xda, 0x39, 0x61, 0xb4, 0x5c, 0x54, 0x48, 0xe6, 0x40, 0x51, 0x7c,
+	0x81, 0x5a, 0x8d, 0x4b, 0xe6, 0x40, 0x12, 0x84, 0x11, 0x80, 0x1e, 0xf8, 0x22, 0x35, 0x9a, 0x08,
+	0x23, 0x80, 0x8e, 0xbe, 0x8a, 0x8a, 0x60, 0xa3, 0xb4, 0xf3, 0x2f, 0xe5, 0xd2, 0x3f, 0xc6, 0xad,
+	0x8e, 0x04, 0x10, 0xaa, 0x6c, 0xe1, 0xb7, 0xa1, 0x7d, 0x2a, 0x84, 0xe8, 0x2a, 0x5f, 0xce, 0x0d,
+	0xf5, 0x8a, 0x4d, 0x75, 0x24, 0x98, 0x96, 0x40, 0xa2, 0x8b, 0xac, 0x21, 0x18, 0xd4, 0x1a, 0xf6,
+	0x57, 0x72, 0x43, 0xbc, 0x5f, 0x53, 0x1d, 0x09, 0xa6, 0x98, 0x4b, 0xa5, 0x49, 0x9f, 0x46, 0xae,
+	0xd8, 0xb8, 0x4a, 0x87, 0xfe, 0x6a, 0x2e, 0xcd, 0xb3, 0xe8, 0xea, 0x48, 0x50, 0xe4, 0xdb, 0x5d,
+	0x76, 0xe3, 0x73, 0xe8, 0x80, 0x0e, 0x20, 0x48, 0xfb, 0x5a, 0x2e, 0xe5, 0x9b, 0x35, 0xd5, 0x91,
+	0x60, 0x9f, 0x0a, 0x23, 0x08, 0x7b, 0x35, 0xaf, 0x1c, 0xc0, 0xd4, 0xd7, 0x73, 0xd6, 0xaf, 0x09,
+	0xde, 0x4c, 0x67, 0x0b, 0xa6, 0x14, 0x5f, 0x32, 0x37, 0x60, 0x8f, 0x2e, 0x7a, 0xdf, 0x10, 0x9b,
+	0x74, 0x42, 0xd9, 0xa4, 0x8b, 0x51, 0x3b, 0xdf, 0xfb, 0xa6, 0xc9, 0xce, 0x8f, 0xda, 0x2d, 0x79,
+	0xdf, 0x32, 0xd9, 0x2d, 0xb9, 0xc7, 0xd1, 0x7e, 0x9e, 0x41, 0xfa, 0x03, 0xad, 0x7b, 0xf3, 0xf2,
+	0x85, 0x9e, 0xaa, 0x13, 0xc0, 0x37, 0xa8, 0x3f, 0xcf, 0xba, 0x5a, 0xd0, 0x1e, 0x7d, 0x98, 0xf5,
+	0xbe, 0xbc, 0xfa, 0x76, 0x4f, 0xd5, 0xe1, 0x5c, 0x46, 0x9e, 0x65, 0x5d, 0x83, 0x66, 0xa2, 0xd3,
+	0x79, 0x25, 0xbd, 0x2f, 0xaf, 0xbc, 0xea, 0x53, 0x75, 0x82, 0xfd, 0xfa, 0x74, 0x5e, 0x59, 0xaf,
+	0x8e, 0xcf, 0xe7, 0x35, 0xf6, 0xfe, 0xbc, 0x7c, 0xef, 0x27, 0x3e, 0xfd, 0x94, 0x78, 0x0c, 0x66,
+	0x5a, 0x3d, 0xc1, 0xde, 0x03, 0xf9, 0xe8, 0x4b, 0x40, 0xc6, 0x08, 0x08, 0x4e, 0x8a, 0x80, 0x60,
+	0xef, 0xc1, 0xbc, 0xf2, 0x46, 0x90, 0x39, 0x02, 0x82, 0x93, 0x22, 0x20, 0xd8, 0x7b, 0x28, 0x2f,
+	0x5f, 0x0f, 0x32, 0x47, 0xc0, 0x1e, 0x7d, 0xcd, 0x46, 0xa7, 0x8b, 0x2a, 0xfd, 0x70, 0x5e, 0x7d,
+	0x57, 0xa8, 0xea, 0x04, 0x07, 0x74, 0x0f, 0xa2, 0xbe, 0x5f, 0x8f, 0xbc, 0x58, 0x04, 0xc2, 0xc7,
+	0x23, 0x79, 0xed, 0xc5, 0xa1, 0xaa, 0x13, 0xcc, 0x44, 0xa2, 0x10, 0xb5, 0xff, 0x9a, 0x38, 0x95,
+	0xd0, 0x05, 0xde, 0x9f, 0xd7, 0xde, 0x22, 0x8a, 0xf3, 0x08, 0x7d, 0x21, 0x29, 0x10, 0x82, 0xbd,
+	0x0f, 0xe4, 0xd5, 0x57, 0x8a, 0x12, 0x02, 0x21, 0x38, 0x39, 0x10, 0x82, 0xbd, 0x47, 0xf3, 0xda,
+	0xfb, 0x45, 0x49, 0x81, 0x10, 0xec, 0xde, 0x10, 0xff, 0x42, 0x78, 0x63, 0x79, 0x2c, 0x6f, 0x78,
+	0xd9, 0x28, 0xfe, 0xcd, 0xf0, 0x86, 0x73, 0xa3, 0x61, 0x63, 0x40, 0xeb, 0x79, 0x3c, 0x6f, 0x7e,
+	0xf3, 0xc8, 0xb0, 0x47, 0xa0, 0x2b, 0xdd, 0x1c, 0xe7, 0x16, 0xfa, 0xd3, 0x13, 0xf9, 0xc1, 0xaf,
+	0x21, 0xc5, 0xc9, 0x86, 0x16, 0xf6, 0x5a, 0x34, 0x17, 0x75, 0xa8, 0x34, 0xb3, 0x27, 0xf3, 0x43,
+	0xbf, 0x93, 0x54, 0x75, 0x82, 0x59, 0x1d, 0x58, 0xfd, 0xfb, 0xf4, 0xd2, 0x78, 0xc6, 0x28, 0x4d,
+	0xe1, 0xa9, 0xfc, 0x10, 0x2f, 0x28, 0x55, 0x9d, 0xe0, 0x60, 0x34, 0xcf, 0x42, 0x9b, 0xb9, 0x9f,
+	0x42, 0x13, 0x5a, 0xef, 0x7b, 0x11, 0xdf, 0x34, 0x9f, 0xbb, 0x0b, 0x21, 0xa5, 0x1f, 0xbe, 0x98,
+	0xc8, 0xd7, 0xa2, 0x82, 0xf6, 0x26, 0xa7, 0x2d, 0x38, 0x75, 0xa0, 0xbd, 0x13, 0x91, 0xce, 0x81,
+	0x72, 0x78, 0x6e, 0xed, 0xe0, 0x1a, 0x54, 0x8c, 0x1e, 0x8e, 0xbb, 0x45, 0x94, 0xbd, 0xbd, 0x7e,
+	0x81, 0x39, 0xd9, 0x13, 0xd0, 0xff, 0x75, 0xf7, 0xa3, 0xdc, 0xf9, 0xd5, 0x66, 0xaf, 0xee, 0x65,
+	0xd8, 0x18, 0xfc, 0xa3, 0x92, 0xb9, 0xd2, 0x99, 0xbb, 0x16, 0x4d, 0xc7, 0x4e, 0xbe, 0x77, 0x72,
+	0x90, 0x53, 0x1d, 0xbc, 0x1c, 0xb9, 0xf1, 0x43, 0xed, 0x9d, 0x3c, 0x4c, 0x9b, 0x3d, 0x9c, 0xda,
+	0xbd, 0x87, 0x42, 0x62, 0x10, 0xfc, 0x94, 0x6e, 0x27, 0x07, 0xd9, 0xe4, 0x20, 0x76, 0xe9, 0xc1,
+	0x4d, 0x0e, 0x62, 0x97, 0x1e, 0x46, 0x55, 0x0f, 0x27, 0xd0, 0x3e, 0xc3, 0xb9, 0xf0, 0x4e, 0x2e,
+	0xc6, 0x54, 0x17, 0x2b, 0x68, 0xbf, 0xe9, 0xb8, 0x77, 0x27, 0x1f, 0x53, 0x66, 0x2e, 0xe5, 0x39,
+	0xee, 0x4e, 0x0e, 0x32, 0x03, 0xe2, 0xd8, 0x25, 0x15, 0xf9, 0x41, 0x71, 0xec, 0xd2, 0x47, 0xd1,
+	0xfc, 0x85, 0x28, 0x07, 0xaa, 0x3b, 0x79, 0x70, 0x12, 0x36, 0x85, 0x3c, 0x2a, 0xdd, 0xc9, 0xc3,
+	0xb8, 0x99, 0x4b, 0x79, 0x0a, 0xba, 0x93, 0x83, 0x09, 0xd5, 0xc1, 0x05, 0x74, 0xc0, 0x78, 0xb8,
+	0x69, 0x70, 0xf2, 0x4a, 0xd5, 0x49, 0xda, 0x87, 0xb9, 0x0a, 0xf4, 0xdd, 0xc8, 0x4b, 0x3a, 0xe2,
+	0x34, 0xa0, 0xdf, 0xa4, 0xa2, 0x0f, 0xf1, 0x80, 0x57, 0x59, 0xc0, 0x6b, 0xd1, 0x8c, 0xf9, 0xa8,
+	0xd3, 0x00, 0xff, 0xa3, 0x3a, 0x7c, 0xca, 0x27, 0xbe, 0x0a, 0x78, 0x0f, 0xcd, 0x26, 0x9c, 0x78,
+	0x1a, 0xd0, 0xaf, 0xd7, 0xa9, 0xb7, 0x7d, 0x08, 0xac, 0xc5, 0x3c, 0x97, 0x7c, 0xda, 0x69, 0x40,
+	0x7e, 0x85, 0x1e, 0x77, 0x8a, 0xc7, 0xc2, 0xb1, 0xdd, 0xaa, 0x9f, 0x79, 0xaa, 0x98, 0xb9, 0x9d,
+	0x7a, 0x09, 0x24, 0x4c, 0xe4, 0x38, 0x53, 0xf5, 0x30, 0xbd, 0x3b, 0x0f, 0xa7, 0x92, 0x3d, 0x14,
+	0x76, 0xd7, 0xcf, 0xf4, 0x33, 0x48, 0xd5, 0x41, 0x76, 0xf7, 0x41, 0x24, 0x78, 0x70, 0x77, 0x1f,
+	0x44, 0x82, 0x87, 0xd1, 0x9d, 0x3c, 0x40, 0x09, 0x8d, 0x9e, 0x08, 0xaa, 0x2e, 0xc6, 0x76, 0x19,
+	0x86, 0x7e, 0xd4, 0xa7, 0x7a, 0x18, 0xdf, 0xc9, 0xc3, 0x55, 0x08, 0xc9, 0xbf, 0xc7, 0xad, 0x75,
+	0x49, 0x15, 0xcd, 0x9c, 0xbc, 0xab, 0x5b, 0x6f, 0x6f, 0x37, 0x3a, 0xed, 0xe1, 0x34, 0x96, 0xea,
+	0x69, 0x28, 0xad, 0x74, 0x68, 0x1e, 0x8d, 0x4b, 0xb1, 0x3d, 0x8e, 0x40, 0x17, 0x17, 0x47, 0xe8,
+	0xff, 0xae, 0x04, 0x27, 0x7e, 0xfc, 0xe6, 0xa2, 0xe3, 0xee, 0x45, 0x63, 0xd7, 0x55, 0x4f, 0x04,
+	0xaf, 0xba, 0xf1, 0x64, 0x31, 0x73, 0x78, 0x7c, 0xcf, 0x3d, 0xb5, 0xe2, 0xc5, 0x8b, 0x17, 0x2f,
+	0x66, 0xfc, 0xb3, 0x68, 0xb6, 0x2e, 0x16, 0x71, 0x5a, 0xbb, 0xb3, 0xe8, 0x5a, 0x88, 0x4e, 0xef,
+	0x9e, 0x1a, 0x63, 0xf9, 0x40, 0x3d, 0x4a, 0x0d, 0xfd, 0x8a, 0xfc, 0x3a, 0xf2, 0x0c, 0x20, 0xf0,
+	0x07, 0xb9, 0x0d, 0xca, 0x1b, 0x6a, 0x2c, 0x5b, 0x67, 0x62, 0x28, 0x2c, 0xb7, 0xfd, 0x0d, 0x74,
+	0xd0, 0x00, 0xb3, 0x6d, 0x8f, 0xf3, 0xc6, 0x1a, 0xcb, 0xe9, 0xd9, 0x18, 0x0e, 0x94, 0x80, 0x04,
+	0xa0, 0x9e, 0x3d, 0xd0, 0x9b, 0x6a, 0x2c, 0xf5, 0xe3, 0x40, 0x50, 0x29, 0x92, 0x89, 0x23, 0xd8,
+	0x0a, 0xe7, 0xcd, 0x35, 0x56, 0x21, 0x8c, 0xc4, 0x11, 0x3c, 0x80, 0x38, 0x4b, 0x9c, 0xb7, 0xd4,
+	0x58, 0x1d, 0x31, 0x13, 0x97, 0x08, 0xd4, 0xb3, 0x07, 0x7a, 0x6b, 0x8d, 0x95, 0x1b, 0x33, 0x71,
+	0x04, 0xfb, 0x0d, 0x34, 0x67, 0x00, 0x12, 0x27, 0x17, 0x36, 0x48, 0x6f, 0xab, 0xb1, 0xaa, 0xe4,
+	0xc5, 0x90, 0x78, 0x15, 0xf3, 0x6f, 0x47, 0x97, 0x98, 0xc8, 0x4b, 0x83, 0xf5, 0xf6, 0x1a, 0x13,
+	0xad, 0x07, 0xe3, 0xf4, 0x71, 0x6f, 0x09, 0x1b, 0x62, 0x1d, 0x5e, 0xed, 0xb3, 0x40, 0x7a, 0x47,
+	0x8d, 0xa9, 0xdb, 0xf8, 0x86, 0x60, 0xda, 0x78, 0x10, 0x7d, 0x96, 0x5f, 0xd4, 0x3b, 0x6b, 0x4c,
+	0x03, 0x27, 0xd0, 0x47, 0xf0, 0x40, 0xfa, 0x2c, 0xb1, 0xde, 0x55, 0x63, 0x5a, 0x39, 0x89, 0xbe,
+	0xc4, 0xfd, 0x07, 0x87, 0x3d, 0x56, 0x50, 0xfd, 0x1a, 0x13, 0xd5, 0xf1, 0xfd, 0x07, 0x9a, 0x3c,
+	0x29, 0xa3, 0xe0, 0x70, 0xc7, 0x06, 0xe8, 0xdd, 0x35, 0xd6, 0x05, 0x0c, 0x19, 0x05, 0x27, 0xbe,
+	0xe6, 0x0d, 0xc1, 0xce, 0x8a, 0xac, 0x70, 0xde, 0x53, 0x63, 0x12, 0x3d, 0xbe, 0x21, 0x98, 0xc0,
+	0xf7, 0x1f, 0x70, 0xd0, 0x65, 0x06, 0x1c, 0x79, 0x84, 0x64, 0x05, 0xf6, 0xde, 0xda, 0x10, 0x52,
+	0x7e, 0x2e, 0xb6, 0xc4, 0xf0, 0x33, 0xff, 0x71, 0x07, 0x95, 0x12, 0x97, 0xc9, 0x1f, 0x0f, 0x58,
+	0xad, 0xf4, 0xde, 0xda, 0x70, 0xb2, 0xff, 0x32, 0xf3, 0x62, 0xf9, 0xc7, 0xfe, 0xc3, 0x0e, 0xfa,
+	0x3e, 0xc3, 0x7a, 0x95, 0xe7, 0x32, 0x56, 0xab, 0x7d, 0x5f, 0x6d, 0x98, 0xbf, 0x12, 0x2e, 0x89,
+	0xad, 0x55, 0x7e, 0xe8, 0xdf, 0xe7, 0xa0, 0xcb, 0x8d, 0x3d, 0x42, 0x1e, 0xe3, 0x59, 0x2d, 0xf5,
+	0xbe, 0x5a, 0xaa, 0x3f, 0x29, 0x2e, 0x35, 0x74, 0x96, 0xf0, 0x53, 0xff, 0x51, 0x07, 0x1d, 0x1a,
+	0xb0, 0xc8, 0x34, 0x1b, 0xe0, 0xfe, 0x5a, 0xda, 0x3f, 0x40, 0x2e, 0x4f, 0x5a, 0xaa, 0xf8, 0xf2,
+	0x1f, 0x72, 0x90, 0x4c, 0x37, 0xfd, 0xa6, 0xb5, 0xcd, 0x0a, 0x1f, 0xa8, 0xb1, 0xc7, 0x51, 0x36,
+	0x6f, 0xda, 0x98, 0x05, 0x6c, 0x90, 0xb0, 0x1a, 0xbf, 0xa9, 0xd6, 0x18, 0xfd, 0x81, 0x91, 0x5d,
+	0x32, 0xf5, 0xd5, 0xeb, 0xe2, 0x12, 0x4d, 0x7b, 0xbe, 0xe4, 0x6f, 0xaa, 0xa5, 0x33, 0xf2, 0x8c,
+	0xc9, 0x2e, 0x1b, 0xfa, 0xfa, 0x75, 0xf3, 0xd9, 0x38, 0x20, 0xe8, 0xc6, 0x3b, 0xd4, 0x6e, 0x17,
+	0x7d, 0x2c, 0x65, 0xb7, 0xab, 0xfb, 0xda, 0x75, 0x75, 0x2f, 0x8e, 0xc8, 0x15, 0xe4, 0xa6, 0x19,
+	0x32, 0x85, 0x84, 0xbc, 0xbf, 0xaf, 0x5e, 0x77, 0x37, 0x20, 0x72, 0x29, 0xd9, 0x4d, 0xa4, 0xd5,
+	0xb2, 0xcb, 0x3e, 0xd0, 0x8f, 0x5f, 0x97, 0x37, 0x53, 0x4b, 0xf0, 0x20, 0x6a, 0x2d, 0x61, 0x1f,
+	0xec, 0x6b, 0xd7, 0xed, 0x13, 0xa8, 0x25, 0x78, 0x10, 0xb5, 0x96, 0x90, 0x0f, 0xf5, 0xd5, 0xeb,
+	0xfa, 0x09, 0xd4, 0x12, 0xec, 0x77, 0x55, 0x09, 0x13, 0x7b, 0x2a, 0x67, 0x05, 0xf9, 0x70, 0x5f,
+	0xbf, 0xee, 0x7f, 0x30, 0x0e, 0x2a, 0x74, 0xe7, 0x9d, 0xe8, 0x52, 0x23, 0xb5, 0x69, 0x60, 0x1f,
+	0xe9, 0x47, 0x7e, 0x2e, 0x60, 0xce, 0x40, 0xaf, 0xd0, 0xa0, 0x77, 0x98, 0x77, 0x92, 0xbd, 0x08,
+	0x7d, 0x7f, 0x3f, 0xf2, 0x73, 0x03, 0x86, 0x6d, 0x04, 0x7a, 0x74, 0x10, 0xc3, 0x96, 0x5f, 0xea,
+	0x07, 0xfa, 0xfa, 0xcf, 0x15, 0x24, 0x31, 0x4c, 0xf0, 0x60, 0x86, 0x2d, 0x61, 0x1f, 0xed, 0x47,
+	0x7e, 0xee, 0x20, 0x91, 0x61, 0x82, 0xfd, 0x0b, 0xe6, 0x2d, 0x9c, 0x42, 0xa7, 0x3e, 0xd6, 0x37,
+	0xfe, 0x5c, 0x82, 0x61, 0x2f, 0x73, 0xe1, 0xfa, 0xba, 0x84, 0x84, 0xb5, 0x57, 0xae, 0x8f, 0xf7,
+	0x93, 0x7e, 0x6e, 0xc1, 0x94, 0xbb, 0xa0, 0x66, 0x5f, 0xef, 0x98, 0xf7, 0x96, 0xbd, 0x9e, 0x7d,
+	0xa2, 0xbf, 0xd3, 0xef, 0x35, 0x18, 0x36, 0x1b, 0x68, 0xdd, 0x27, 0x34, 0x51, 0x66, 0x7a, 0x5e,
+	0x6a, 0xb5, 0x92, 0x27, 0xfb, 0xdf, 0x83, 0x1f, 0x7c, 0xb8, 0x24, 0xbe, 0x58, 0xa9, 0x7a, 0x1f,
+	0xd3, 0x54, 0xaf, 0xf9, 0x19, 0xab, 0xd5, 0x92, 0x9f, 0xea, 0x0f, 0xf5, 0x8b, 0x11, 0x97, 0x99,
+	0x6a, 0xb3, 0x54, 0x69, 0x6b, 0xea, 0x91, 0x93, 0x76, 0x59, 0xd0, 0x6e, 0x91, 0xdf, 0x75, 0xd8,
+	0xcd, 0x42, 0x79, 0xe6, 0x14, 0x28, 0x57, 0x0c, 0xfd, 0x75, 0x55, 0xb4, 0xe8, 0x97, 0x0d, 0xad,
+	0x60, 0x3e, 0xc8, 0x60, 0xd4, 0x43, 0xa7, 0x40, 0xbd, 0xa2, 0xe8, 0x9f, 0x53, 0x77, 0x6c, 0xe4,
+	0xb2, 0xa2, 0x15, 0xd0, 0x87, 0x18, 0x90, 0x7a, 0xea, 0x14, 0x68, 0x57, 0x1c, 0x13, 0x90, 0x52,
+	0x48, 0x86, 0x0f, 0x33, 0xa4, 0x82, 0x01, 0x89, 0x6b, 0x85, 0x44, 0xee, 0x2c, 0x8b, 0xde, 0x47,
+	0x18, 0x50, 0xd6, 0xcc, 0x1d, 0xc1, 0x03, 0xb8, 0xb3, 0x04, 0xfa, 0x28, 0x03, 0x72, 0x13, 0xb8,
+	0x4b, 0x44, 0x4a, 0xa1, 0x09, 0x3e, 0xc6, 0x90, 0x46, 0x13, 0xb8, 0x23, 0xd8, 0xbf, 0x4d, 0x2d,
+	0xa0, 0xd1, 0xcb, 0x9e, 0x56, 0x50, 0x1f, 0x67, 0x50, 0xea, 0xd1, 0x53, 0xa0, 0x5f, 0x11, 0xf5,
+	0x9b, 0x6a, 0x5b, 0x8c, 0x5d, 0x16, 0xb5, 0x02, 0xfb, 0x04, 0x03, 0x53, 0xcf, 0x9e, 0x82, 0xc8,
+	0x15, 0xd3, 0x84, 0x5d, 0x61, 0xdf, 0xf6, 0x3f, 0xc9, 0xa0, 0x32, 0x86, 0x5d, 0x01, 0xcd, 0x7e,
+	0x00, 0x83, 0x96, 0x5f, 0xd6, 0xa7, 0x18, 0x52, 0x3e, 0x89, 0x41, 0x82, 0x07, 0x32, 0x68, 0x09,
+	0xf6, 0x69, 0x06, 0x56, 0x4c, 0x64, 0x30, 0x71, 0x17, 0xa6, 0x68, 0xeb, 0x4f, 0x33, 0x2c, 0xc7,
+	0xb0, 0x0b, 0x79, 0x1b, 0x4f, 0xc8, 0x2c, 0xfb, 0x2e, 0xfe, 0x0c, 0x43, 0x1a, 0x37, 0x65, 0x16,
+	0xb4, 0x6c, 0xf3, 0xae, 0xb0, 0x6f, 0xd8, 0xcf, 0x32, 0xa0, 0x09, 0xc3, 0xae, 0x80, 0xae, 0xfc,
+	0xa0, 0x76, 0x02, 0x65, 0xb8, 0xed, 0x6b, 0x85, 0xf6, 0x1c, 0x43, 0x1b, 0xfe, 0x08, 0x2a, 0x88,
+	0xde, 0x11, 0xa6, 0xea, 0xa1, 0x94, 0xb8, 0xce, 0x34, 0x27, 0x10, 0xcf, 0xb3, 0xa5, 0x7e, 0x4f,
+	0xce, 0xa0, 0x02, 0xc3, 0x25, 0x63, 0xff, 0x11, 0x4d, 0xee, 0x98, 0xee, 0x1b, 0x5b, 0x2d, 0xf7,
+	0x33, 0x7c, 0xb9, 0x43, 0x1f, 0x42, 0x05, 0xb1, 0x5b, 0xca, 0xfe, 0xfd, 0xda, 0x21, 0x94, 0xf1,
+	0xc2, 0xb2, 0xd5, 0x5a, 0x3f, 0xcb, 0x77, 0x41, 0xfa, 0x53, 0xa8, 0x20, 0x7e, 0xcd, 0x99, 0xca,
+	0xb1, 0x43, 0x03, 0x56, 0x99, 0x66, 0x0f, 0x7c, 0x8e, 0x93, 0x3a, 0xd4, 0x31, 0x54, 0x60, 0xbc,
+	0x27, 0xed, 0x3f, 0xac, 0x1e, 0x43, 0xe9, 0x37, 0x9c, 0x6d, 0x96, 0xf8, 0x79, 0xb6, 0xc4, 0x94,
+	0xe7, 0x50, 0xfa, 0x3d, 0xeb, 0x84, 0xe5, 0xac, 0x14, 0xc4, 0xab, 0xfa, 0xbd, 0x76, 0xa3, 0xd3,
+	0x5e, 0x99, 0x8d, 0xbf, 0x23, 0xc9, 0x3e, 0x38, 0xbc, 0x88, 0xf6, 0xaa, 0xef, 0x89, 0x9b, 0x1e,
+	0x88, 0x22, 0x77, 0x42, 0x3e, 0x10, 0x7d, 0xc1, 0x59, 0x79, 0xcd, 0x6b, 0x5e, 0xbd, 0xd1, 0xe8,
+	0x9e, 0xeb, 0x9d, 0x99, 0x3f, 0xdb, 0x69, 0x1d, 0x85, 0xa5, 0x1f, 0x65, 0xcb, 0x3e, 0xd3, 0x5b,
+	0x3f, 0x7a, 0xde, 0x3f, 0xda, 0x68, 0x77, 0xeb, 0x5b, 0xed, 0xd5, 0x26, 0xfb, 0xa9, 0x5b, 0xf6,
+	0xc1, 0xf6, 0xd1, 0x66, 0x7d, 0x63, 0xf5, 0xec, 0x85, 0xa3, 0x3b, 0xfc, 0x38, 0xee, 0xff, 0x07,
+	0x00, 0x00, 0xff, 0xff, 0x68, 0x28, 0x46, 0x53, 0x3e, 0x57, 0x00, 0x00,
+}
diff --git a/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152/test.proto b/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152/test.proto
new file mode 100644
index 0000000..8419f74
--- /dev/null
+++ b/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152/test.proto
@@ -0,0 +1,333 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto2";
+
+package google.golang.org.proto2_20180125;
+option go_package = "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152";
+
+enum SiblingEnum {
+	ALPHA   = 0;
+	BRAVO   = 10;
+	CHARLIE = 200;
+}
+
+message SiblingMessage {
+	optional string  f1 = 1;
+	required string  f2 = 2;
+	repeated string  f3 = 3;
+	optional Message f4 = 4;
+}
+
+message Message {
+	enum ChildEnum {
+		ALPHA   = 0;
+		BRAVO   = 1;
+		CHARLIE = 2;
+	}
+	message ChildMessage {
+		optional string  f1 = 1;
+		required string  f2 = 2;
+		repeated string  f3 = 3;
+	    optional Message f4 = 4;
+	}
+	optional group NamedGroup = 1 {
+		optional string  f1 = 1;
+		required string  f2 = 2;
+		repeated string  f3 = 3;
+	    optional Message f4 = 4;
+	}
+
+	// Optional fields.
+	optional bool     optional_bool     = 100;
+	optional int32    optional_int32    = 101;
+	optional sint32   optional_sint32   = 102;
+	optional uint32   optional_uint32   = 103;
+	optional int64    optional_int64    = 104;
+	optional sint64   optional_sint64   = 105;
+	optional uint64   optional_uint64   = 106;
+	optional fixed32  optional_fixed32  = 107;
+	optional sfixed32 optional_sfixed32 = 108;
+	optional float    optional_float    = 109;
+	optional fixed64  optional_fixed64  = 110;
+	optional sfixed64 optional_sfixed64 = 111;
+	optional double   optional_double   = 112;
+	optional string   optional_string   = 113;
+	optional bytes    optional_bytes    = 114;
+
+	optional ChildEnum      optional_child_enum      = 115;
+	optional ChildMessage   optional_child_message   = 116;
+	optional NamedGroup     optional_named_group     = 117;
+	optional SiblingEnum    optional_sibling_enum    = 118;
+	optional SiblingMessage optional_sibling_message = 119;
+	optional group OptionalGroup = 120 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+
+	// Optional default fields.
+	optional bool      defaulted_bool     = 200 [default = true];
+	optional int32     defaulted_int32    = 201 [default = -12345];
+	optional sint32    defaulted_sint32   = 202 [default = -3200];
+	optional uint32    defaulted_uint32   = 203 [default = 3200];
+	optional int64     defaulted_int64    = 204 [default = -123456789];
+	optional sint64    defaulted_sint64   = 205 [default = -6400];
+	optional uint64    defaulted_uint64   = 206 [default = 6400];
+	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
+	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
+	optional float     defaulted_float    = 209 [default = 3.14159];
+	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
+	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
+	optional double    defaulted_double   = 212 [default = 3.14159265359];
+	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
+	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];
+
+	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
+	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];
+
+	// Required fields.
+	required bool     required_bool     = 300;
+	required int32    required_int32    = 301;
+	required sint32   required_sint32   = 302;
+	required uint32   required_uint32   = 303;
+	required int64    required_int64    = 304;
+	required sint64   required_sint64   = 305;
+	required uint64   required_uint64   = 306;
+	required fixed32  required_fixed32  = 307;
+	required sfixed32 required_sfixed32 = 308;
+	required float    required_float    = 309;
+	required fixed64  required_fixed64  = 310;
+	required sfixed64 required_sfixed64 = 311;
+	required double   required_double   = 312;
+	required string   required_string   = 313;
+	required bytes    required_bytes    = 314;
+
+	required ChildEnum      required_child_enum      = 315;
+	required ChildMessage   required_child_message   = 316;
+	required NamedGroup     required_named_group     = 317;
+	required SiblingEnum    required_sibling_enum    = 318;
+	required SiblingMessage required_sibling_message = 319;
+	required group RequiredGroup = 320 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+	// Required default fields.
+	required bool      required_defaulted_bool     = 400 [default = true];
+	required int32     required_defaulted_int32    = 401 [default = -12345];
+	required sint32    required_defaulted_sint32   = 402 [default = -3200];
+	required uint32    required_defaulted_uint32   = 403 [default = 3200];
+	required int64     required_defaulted_int64    = 404 [default = -123456789];
+	required sint64    required_defaulted_sint64   = 405 [default = -6400];
+	required uint64    required_defaulted_uint64   = 406 [default = 6400];
+	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
+	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
+	required float     required_defaulted_float    = 409 [default = 3.14159];
+	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
+	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
+	required double    required_defaulted_double   = 412 [default = 3.14159265359];
+	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
+	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];
+
+	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
+	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];
+
+	// Repeated fields.
+	repeated bool     repeated_bool     = 500;
+	repeated int32    repeated_int32    = 501;
+	repeated sint32   repeated_sint32   = 502;
+	repeated uint32   repeated_uint32   = 503;
+	repeated int64    repeated_int64    = 504;
+	repeated sint64   repeated_sint64   = 505;
+	repeated uint64   repeated_uint64   = 506;
+	repeated fixed32  repeated_fixed32  = 507;
+	repeated sfixed32 repeated_sfixed32 = 508;
+	repeated float    repeated_float    = 509;
+	repeated fixed64  repeated_fixed64  = 510;
+	repeated sfixed64 repeated_sfixed64 = 511;
+	repeated double   repeated_double   = 512;
+	repeated string   repeated_string   = 513;
+	repeated bytes    repeated_bytes    = 514;
+
+	repeated ChildEnum      repeated_child_enum      = 515;
+	repeated ChildMessage   repeated_child_message   = 516;
+	repeated NamedGroup     repeated_named_group     = 517;
+	repeated SiblingEnum    repeated_sibling_enum    = 518;
+	repeated SiblingMessage repeated_sibling_message = 519;
+	repeated group RepeatedGroup = 520 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+
+	// Map fields.
+	map<bool, bool>     map_bool_bool     = 600;
+	map<bool, int32>    map_bool_int32    = 601;
+	map<bool, sint32>   map_bool_sint32   = 602;
+	map<bool, uint32>   map_bool_uint32   = 603;
+	map<bool, int64>    map_bool_int64    = 604;
+	map<bool, sint64>   map_bool_sint64   = 605;
+	map<bool, uint64>   map_bool_uint64   = 606;
+	map<bool, fixed32>  map_bool_fixed32  = 607;
+	map<bool, sfixed32> map_bool_sfixed32 = 608;
+	map<bool, float>    map_bool_float    = 609;
+	map<bool, fixed64>  map_bool_fixed64  = 610;
+	map<bool, sfixed64> map_bool_sfixed64 = 611;
+	map<bool, double>   map_bool_double   = 612;
+	map<bool, string>   map_bool_string   = 613;
+	map<bool, bytes>    map_bool_bytes    = 614;
+
+	map<bool, ChildEnum>      map_bool_child_enum      = 615;
+	map<bool, ChildMessage>   map_bool_child_message   = 616;
+	map<bool, NamedGroup>     map_bool_named_group     = 617;
+	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
+	map<bool, SiblingMessage> map_bool_sibling_message = 619;
+
+	map<int32, bool>   map_int32_bool   = 620;
+	map<sint32, bool>  map_sint32_bool  = 621;
+	map<uint32, bool>  map_uint32_bool  = 622;
+	map<int64, bool>   map_int64_bool   = 623;
+	map<sint64, bool>  map_sint64_bool  = 624;
+	map<uint64, bool>  map_uint64_bool  = 625;
+	map<fixed32, bool> map_fixed32_bool = 626;
+	map<string, bool>  map_string_bool  = 627;
+
+	// Oneof fields.
+	oneof oneof_union {
+		bool     oneof_bool     = 700;
+		int32    oneof_int32    = 701;
+		sint32   oneof_sint32   = 702;
+		uint32   oneof_uint32   = 703;
+		int64    oneof_int64    = 704;
+		sint64   oneof_sint64   = 705;
+		uint64   oneof_uint64   = 706;
+		fixed32  oneof_fixed32  = 707;
+		sfixed32 oneof_sfixed32 = 708;
+		float    oneof_float    = 709;
+		fixed64  oneof_fixed64  = 710;
+		sfixed64 oneof_sfixed64 = 711;
+		double   oneof_double   = 712;
+		string   oneof_string   = 713;
+		bytes    oneof_bytes    = 714;
+
+		ChildEnum      oneof_child_enum      = 715;
+		ChildMessage   oneof_child_message   = 716;
+		NamedGroup     oneof_named_group     = 717;
+		SiblingEnum    oneof_sibling_enum    = 718;
+		SiblingMessage oneof_sibling_message = 719;
+		group OneofGroup = 720 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+
+		string oneof_string1 = 721;
+		string oneof_string2 = 722;
+		string oneof_string3 = 723;
+	}
+
+	// Oneof default fields.
+	oneof oneof_defaulted_union {
+		bool      oneof_defaulted_bool     = 800 [default = true];
+		int32     oneof_defaulted_int32    = 801 [default = -12345];
+		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
+		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
+		int64     oneof_defaulted_int64    = 804 [default = -123456789];
+		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
+		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
+		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
+		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
+		float     oneof_defaulted_float    = 809 [default = 3.14159];
+		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
+		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
+		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
+		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
+		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];
+
+		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
+		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
+	}
+
+	// Extension fields.
+	extend Message {
+		// Optional fields.
+		optional bool     extension_optional_bool     = 10000;
+		optional int32    extension_optional_int32    = 10001;
+		optional sint32   extension_optional_sint32   = 10002;
+		optional uint32   extension_optional_uint32   = 10003;
+		optional int64    extension_optional_int64    = 10004;
+		optional sint64   extension_optional_sint64   = 10005;
+		optional uint64   extension_optional_uint64   = 10006;
+		optional fixed32  extension_optional_fixed32  = 10007;
+		optional sfixed32 extension_optional_sfixed32 = 10008;
+		optional float    extension_optional_float    = 10009;
+		optional fixed64  extension_optional_fixed64  = 10010;
+		optional sfixed64 extension_optional_sfixed64 = 10011;
+		optional double   extension_optional_double   = 10012;
+		optional string   extension_optional_string   = 10013;
+		optional bytes    extension_optional_bytes    = 10014;
+
+		optional ChildEnum      extension_optional_child_enum      = 10015;
+		optional ChildMessage   extension_optional_child_message   = 10016;
+		optional NamedGroup     extension_optional_named_group     = 10017;
+		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
+		optional SiblingMessage extension_optional_sibling_message = 10019;
+		optional group ExtensionOptionalGroup = 10020 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+
+		// Optional default fields.
+		optional bool      extension_defaulted_bool     = 20000 [default = true];
+		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
+		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
+		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
+		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
+		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
+		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
+		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
+		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
+		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
+		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
+		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
+		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
+		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
+		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];
+
+		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
+		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];
+
+		// Repeated fields.
+		repeated bool     extension_repeated_bool     = 30000;
+		repeated int32    extension_repeated_int32    = 30001;
+		repeated sint32   extension_repeated_sint32   = 30002;
+		repeated uint32   extension_repeated_uint32   = 30003;
+		repeated int64    extension_repeated_int64    = 30004;
+		repeated sint64   extension_repeated_sint64   = 30005;
+		repeated uint64   extension_repeated_uint64   = 30006;
+		repeated fixed32  extension_repeated_fixed32  = 30007;
+		repeated sfixed32 extension_repeated_sfixed32 = 30008;
+		repeated float    extension_repeated_float    = 30009;
+		repeated fixed64  extension_repeated_fixed64  = 30010;
+		repeated sfixed64 extension_repeated_sfixed64 = 30011;
+		repeated double   extension_repeated_double   = 30012;
+		repeated string   extension_repeated_string   = 30013;
+		repeated bytes    extension_repeated_bytes    = 30014;
+
+		repeated ChildEnum      extension_repeated_child_enum      = 30015;
+		repeated ChildMessage   extension_repeated_child_message   = 30016;
+		repeated NamedGroup     extension_repeated_named_group     = 30017;
+		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
+		repeated SiblingMessage extension_repeated_sibling_message = 30019;
+		repeated group ExtensionRepeatedGroup = 30020 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+	}
+
+	extensions 10000 to max;
+}
diff --git a/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09/test.pb.go b/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09/test.pb.go
new file mode 100644
index 0000000..d6870ec
--- /dev/null
+++ b/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09/test.pb.go
@@ -0,0 +1,3819 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: proto2.v1.1.0-20180430-b4deda09/test.proto
+
+package proto2_v1_1_0_20180430_b4deda09 // import "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type SiblingEnum int32
+
+const (
+	SiblingEnum_ALPHA   SiblingEnum = 0
+	SiblingEnum_BRAVO   SiblingEnum = 10
+	SiblingEnum_CHARLIE SiblingEnum = 200
+)
+
+var SiblingEnum_name = map[int32]string{
+	0:   "ALPHA",
+	10:  "BRAVO",
+	200: "CHARLIE",
+}
+var SiblingEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   10,
+	"CHARLIE": 200,
+}
+
+func (x SiblingEnum) Enum() *SiblingEnum {
+	p := new(SiblingEnum)
+	*p = x
+	return p
+}
+func (x SiblingEnum) String() string {
+	return proto.EnumName(SiblingEnum_name, int32(x))
+}
+func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
+	if err != nil {
+		return err
+	}
+	*x = SiblingEnum(value)
+	return nil
+}
+func (SiblingEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{0}
+}
+
+type Message_ChildEnum int32
+
+const (
+	Message_ALPHA   Message_ChildEnum = 0
+	Message_BRAVO   Message_ChildEnum = 1
+	Message_CHARLIE Message_ChildEnum = 2
+)
+
+var Message_ChildEnum_name = map[int32]string{
+	0: "ALPHA",
+	1: "BRAVO",
+	2: "CHARLIE",
+}
+var Message_ChildEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   1,
+	"CHARLIE": 2,
+}
+
+func (x Message_ChildEnum) Enum() *Message_ChildEnum {
+	p := new(Message_ChildEnum)
+	*p = x
+	return p
+}
+func (x Message_ChildEnum) String() string {
+	return proto.EnumName(Message_ChildEnum_name, int32(x))
+}
+func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
+	if err != nil {
+		return err
+	}
+	*x = Message_ChildEnum(value)
+	return nil
+}
+func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{1, 0}
+}
+
+type SiblingMessage struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SiblingMessage) Reset()         { *m = SiblingMessage{} }
+func (m *SiblingMessage) String() string { return proto.CompactTextString(m) }
+func (*SiblingMessage) ProtoMessage()    {}
+func (*SiblingMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{0}
+}
+func (m *SiblingMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SiblingMessage.Unmarshal(m, b)
+}
+func (m *SiblingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SiblingMessage.Marshal(b, m, deterministic)
+}
+func (dst *SiblingMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SiblingMessage.Merge(dst, src)
+}
+func (m *SiblingMessage) XXX_Size() int {
+	return xxx_messageInfo_SiblingMessage.Size(m)
+}
+func (m *SiblingMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_SiblingMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SiblingMessage proto.InternalMessageInfo
+
+func (m *SiblingMessage) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *SiblingMessage) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message struct {
+	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
+	// Optional fields.
+	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
+	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
+	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
+	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum" json:"optional_child_enum,omitempty"`
+	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
+	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
+	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum" json:"optional_sibling_enum,omitempty"`
+	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
+	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
+	// Optional default fields.
+	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
+	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
+	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
+	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
+	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
+	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
+	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
+	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
+	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
+	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
+	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
+	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
+	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
+	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
+	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
+	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
+	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
+	// Required fields.
+	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
+	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
+	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
+	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
+	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
+	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
+	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
+	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
+	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
+	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
+	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
+	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
+	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
+	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
+	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
+	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum" json:"required_child_enum,omitempty"`
+	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
+	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
+	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum" json:"required_sibling_enum,omitempty"`
+	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
+	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
+	// Required default fields.
+	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
+	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
+	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
+	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
+	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
+	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
+	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
+	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
+	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
+	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
+	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
+	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
+	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
+	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
+	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
+	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
+	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
+	// Repeated fields.
+	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
+	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
+	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
+	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
+	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
+	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
+	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	// Map fields.
+	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180430.Message_ChildEnum"`
+	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180430.SiblingEnum"`
+	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	// Oneof fields.
+	//
+	// Types that are valid to be assigned to OneofUnion:
+	//	*Message_OneofBool
+	//	*Message_OneofInt32
+	//	*Message_OneofSint32
+	//	*Message_OneofUint32
+	//	*Message_OneofInt64
+	//	*Message_OneofSint64
+	//	*Message_OneofUint64
+	//	*Message_OneofFixed32
+	//	*Message_OneofSfixed32
+	//	*Message_OneofFloat
+	//	*Message_OneofFixed64
+	//	*Message_OneofSfixed64
+	//	*Message_OneofDouble
+	//	*Message_OneofString
+	//	*Message_OneofBytes
+	//	*Message_OneofChildEnum
+	//	*Message_OneofChildMessage
+	//	*Message_OneofNamedGroup
+	//	*Message_OneofSiblingEnum
+	//	*Message_OneofSiblingMessage
+	//	*Message_Oneofgroup
+	//	*Message_OneofString1
+	//	*Message_OneofString2
+	//	*Message_OneofString3
+	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
+	// Oneof default fields.
+	//
+	// Types that are valid to be assigned to OneofDefaultedUnion:
+	//	*Message_OneofDefaultedBool
+	//	*Message_OneofDefaultedInt32
+	//	*Message_OneofDefaultedSint32
+	//	*Message_OneofDefaultedUint32
+	//	*Message_OneofDefaultedInt64
+	//	*Message_OneofDefaultedSint64
+	//	*Message_OneofDefaultedUint64
+	//	*Message_OneofDefaultedFixed32
+	//	*Message_OneofDefaultedSfixed32
+	//	*Message_OneofDefaultedFloat
+	//	*Message_OneofDefaultedFixed64
+	//	*Message_OneofDefaultedSfixed64
+	//	*Message_OneofDefaultedDouble
+	//	*Message_OneofDefaultedString
+	//	*Message_OneofDefaultedBytes
+	//	*Message_OneofDefaultedChildEnum
+	//	*Message_OneofDefaultedSiblingEnum
+	OneofDefaultedUnion          isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
+	XXX_NoUnkeyedLiteral         struct{}                      `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *Message) Reset()         { *m = Message{} }
+func (m *Message) String() string { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()    {}
+func (*Message) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{1}
+}
+
+var extRange_Message = []proto.ExtensionRange{
+	{Start: 10000, End: 536870911},
+}
+
+func (*Message) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_Message
+}
+func (m *Message) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message.Unmarshal(m, b)
+}
+func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
+}
+func (dst *Message) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message.Merge(dst, src)
+}
+func (m *Message) XXX_Size() int {
+	return xxx_messageInfo_Message.Size(m)
+}
+func (m *Message) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message proto.InternalMessageInfo
+
+const Default_Message_DefaultedBool bool = true
+const Default_Message_DefaultedInt32 int32 = -12345
+const Default_Message_DefaultedSint32 int32 = -3200
+const Default_Message_DefaultedUint32 uint32 = 3200
+const Default_Message_DefaultedInt64 int64 = -123456789
+const Default_Message_DefaultedSint64 int64 = -6400
+const Default_Message_DefaultedUint64 uint64 = 6400
+const Default_Message_DefaultedFixed32 uint32 = 320000
+const Default_Message_DefaultedSfixed32 int32 = -320000
+const Default_Message_DefaultedFloat float32 = 3.14159
+const Default_Message_DefaultedFixed64 uint64 = 640000
+const Default_Message_DefaultedSfixed64 int64 = -640000
+const Default_Message_DefaultedDouble float64 = 3.14159265359
+const Default_Message_DefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_DefaultedBytes []byte = []byte("deadÞ­\xbe\xefbeef")
+
+const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+const Default_Message_RequiredDefaultedBool bool = true
+const Default_Message_RequiredDefaultedInt32 int32 = -12345
+const Default_Message_RequiredDefaultedSint32 int32 = -3200
+const Default_Message_RequiredDefaultedUint32 uint32 = 3200
+const Default_Message_RequiredDefaultedInt64 int64 = -123456789
+const Default_Message_RequiredDefaultedSint64 int64 = -6400
+const Default_Message_RequiredDefaultedUint64 uint64 = 6400
+const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
+const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
+const Default_Message_RequiredDefaultedFloat float32 = 3.14159
+const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
+const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
+const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
+const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_RequiredDefaultedBytes []byte = []byte("deadÞ­\xbe\xefbeef")
+
+const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+const Default_Message_OneofDefaultedBool bool = true
+const Default_Message_OneofDefaultedInt32 int32 = -12345
+const Default_Message_OneofDefaultedSint32 int32 = -3200
+const Default_Message_OneofDefaultedUint32 uint32 = 3200
+const Default_Message_OneofDefaultedInt64 int64 = -123456789
+const Default_Message_OneofDefaultedSint64 int64 = -6400
+const Default_Message_OneofDefaultedUint64 uint64 = 6400
+const Default_Message_OneofDefaultedFixed32 uint32 = 320000
+const Default_Message_OneofDefaultedSfixed32 int32 = -320000
+const Default_Message_OneofDefaultedFloat float32 = 3.14159
+const Default_Message_OneofDefaultedFixed64 uint64 = 640000
+const Default_Message_OneofDefaultedSfixed64 int64 = -640000
+const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
+const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_OneofDefaultedBytes []byte = []byte("deadÞ­\xbe\xefbeef")
+
+const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+
+type isMessage_OneofUnion interface {
+	isMessage_OneofUnion()
+}
+type isMessage_OneofDefaultedUnion interface {
+	isMessage_OneofDefaultedUnion()
+}
+
+type Message_OneofBool struct {
+	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
+}
+type Message_OneofInt32 struct {
+	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
+}
+type Message_OneofSint32 struct {
+	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
+}
+type Message_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
+}
+type Message_OneofInt64 struct {
+	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
+}
+type Message_OneofSint64 struct {
+	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
+}
+type Message_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
+}
+type Message_OneofFixed32 struct {
+	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
+}
+type Message_OneofSfixed32 struct {
+	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
+}
+type Message_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
+}
+type Message_OneofFixed64 struct {
+	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
+}
+type Message_OneofSfixed64 struct {
+	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
+}
+type Message_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
+}
+type Message_OneofString struct {
+	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
+}
+type Message_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
+}
+type Message_OneofChildEnum struct {
+	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum,oneof"`
+}
+type Message_OneofChildMessage struct {
+	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
+}
+type Message_OneofNamedGroup struct {
+	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
+}
+type Message_OneofSiblingEnum struct {
+	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum,oneof"`
+}
+type Message_OneofSiblingMessage struct {
+	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
+}
+type Message_Oneofgroup struct {
+	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
+}
+type Message_OneofString1 struct {
+	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
+}
+type Message_OneofString2 struct {
+	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
+}
+type Message_OneofString3 struct {
+	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
+}
+type Message_OneofDefaultedBool struct {
+	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
+}
+type Message_OneofDefaultedInt32 struct {
+	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
+}
+type Message_OneofDefaultedSint32 struct {
+	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
+}
+type Message_OneofDefaultedUint32 struct {
+	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
+}
+type Message_OneofDefaultedInt64 struct {
+	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
+}
+type Message_OneofDefaultedSint64 struct {
+	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
+}
+type Message_OneofDefaultedUint64 struct {
+	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
+}
+type Message_OneofDefaultedFixed32 struct {
+	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
+}
+type Message_OneofDefaultedSfixed32 struct {
+	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
+}
+type Message_OneofDefaultedFloat struct {
+	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
+}
+type Message_OneofDefaultedFixed64 struct {
+	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
+}
+type Message_OneofDefaultedSfixed64 struct {
+	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
+}
+type Message_OneofDefaultedDouble struct {
+	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
+}
+type Message_OneofDefaultedString struct {
+	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
+}
+type Message_OneofDefaultedBytes struct {
+	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
+}
+type Message_OneofDefaultedChildEnum struct {
+	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum,oneof,def=0"`
+}
+type Message_OneofDefaultedSiblingEnum struct {
+	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum,oneof,def=0"`
+}
+
+func (*Message_OneofBool) isMessage_OneofUnion()                          {}
+func (*Message_OneofInt32) isMessage_OneofUnion()                         {}
+func (*Message_OneofSint32) isMessage_OneofUnion()                        {}
+func (*Message_OneofUint32) isMessage_OneofUnion()                        {}
+func (*Message_OneofInt64) isMessage_OneofUnion()                         {}
+func (*Message_OneofSint64) isMessage_OneofUnion()                        {}
+func (*Message_OneofUint64) isMessage_OneofUnion()                        {}
+func (*Message_OneofFixed32) isMessage_OneofUnion()                       {}
+func (*Message_OneofSfixed32) isMessage_OneofUnion()                      {}
+func (*Message_OneofFloat) isMessage_OneofUnion()                         {}
+func (*Message_OneofFixed64) isMessage_OneofUnion()                       {}
+func (*Message_OneofSfixed64) isMessage_OneofUnion()                      {}
+func (*Message_OneofDouble) isMessage_OneofUnion()                        {}
+func (*Message_OneofString) isMessage_OneofUnion()                        {}
+func (*Message_OneofBytes) isMessage_OneofUnion()                         {}
+func (*Message_OneofChildEnum) isMessage_OneofUnion()                     {}
+func (*Message_OneofChildMessage) isMessage_OneofUnion()                  {}
+func (*Message_OneofNamedGroup) isMessage_OneofUnion()                    {}
+func (*Message_OneofSiblingEnum) isMessage_OneofUnion()                   {}
+func (*Message_OneofSiblingMessage) isMessage_OneofUnion()                {}
+func (*Message_Oneofgroup) isMessage_OneofUnion()                         {}
+func (*Message_OneofString1) isMessage_OneofUnion()                       {}
+func (*Message_OneofString2) isMessage_OneofUnion()                       {}
+func (*Message_OneofString3) isMessage_OneofUnion()                       {}
+func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion()        {}
+func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion()     {}
+func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion()    {}
+func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion()     {}
+func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion()    {}
+func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion()      {}
+func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion()       {}
+func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion()   {}
+func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}
+
+func (m *Message) GetOneofUnion() isMessage_OneofUnion {
+	if m != nil {
+		return m.OneofUnion
+	}
+	return nil
+}
+func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
+	if m != nil {
+		return m.OneofDefaultedUnion
+	}
+	return nil
+}
+
+func (m *Message) GetNamedgroup() *Message_NamedGroup {
+	if m != nil {
+		return m.Namedgroup
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalBool() bool {
+	if m != nil && m.OptionalBool != nil {
+		return *m.OptionalBool
+	}
+	return false
+}
+
+func (m *Message) GetOptionalInt32() int32 {
+	if m != nil && m.OptionalInt32 != nil {
+		return *m.OptionalInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint32() int32 {
+	if m != nil && m.OptionalSint32 != nil {
+		return *m.OptionalSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint32() uint32 {
+	if m != nil && m.OptionalUint32 != nil {
+		return *m.OptionalUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalInt64() int64 {
+	if m != nil && m.OptionalInt64 != nil {
+		return *m.OptionalInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint64() int64 {
+	if m != nil && m.OptionalSint64 != nil {
+		return *m.OptionalSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint64() uint64 {
+	if m != nil && m.OptionalUint64 != nil {
+		return *m.OptionalUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed32() uint32 {
+	if m != nil && m.OptionalFixed32 != nil {
+		return *m.OptionalFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed32() int32 {
+	if m != nil && m.OptionalSfixed32 != nil {
+		return *m.OptionalSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFloat() float32 {
+	if m != nil && m.OptionalFloat != nil {
+		return *m.OptionalFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed64() uint64 {
+	if m != nil && m.OptionalFixed64 != nil {
+		return *m.OptionalFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed64() int64 {
+	if m != nil && m.OptionalSfixed64 != nil {
+		return *m.OptionalSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalDouble() float64 {
+	if m != nil && m.OptionalDouble != nil {
+		return *m.OptionalDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalString() string {
+	if m != nil && m.OptionalString != nil {
+		return *m.OptionalString
+	}
+	return ""
+}
+
+func (m *Message) GetOptionalBytes() []byte {
+	if m != nil {
+		return m.OptionalBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
+	if m != nil && m.OptionalChildEnum != nil {
+		return *m.OptionalChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.OptionalChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
+	if m != nil {
+		return m.OptionalNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
+	if m != nil && m.OptionalSiblingEnum != nil {
+		return *m.OptionalSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.OptionalSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
+	if m != nil {
+		return m.Optionalgroup
+	}
+	return nil
+}
+
+func (m *Message) GetDefaultedBool() bool {
+	if m != nil && m.DefaultedBool != nil {
+		return *m.DefaultedBool
+	}
+	return Default_Message_DefaultedBool
+}
+
+func (m *Message) GetDefaultedInt32() int32 {
+	if m != nil && m.DefaultedInt32 != nil {
+		return *m.DefaultedInt32
+	}
+	return Default_Message_DefaultedInt32
+}
+
+func (m *Message) GetDefaultedSint32() int32 {
+	if m != nil && m.DefaultedSint32 != nil {
+		return *m.DefaultedSint32
+	}
+	return Default_Message_DefaultedSint32
+}
+
+func (m *Message) GetDefaultedUint32() uint32 {
+	if m != nil && m.DefaultedUint32 != nil {
+		return *m.DefaultedUint32
+	}
+	return Default_Message_DefaultedUint32
+}
+
+func (m *Message) GetDefaultedInt64() int64 {
+	if m != nil && m.DefaultedInt64 != nil {
+		return *m.DefaultedInt64
+	}
+	return Default_Message_DefaultedInt64
+}
+
+func (m *Message) GetDefaultedSint64() int64 {
+	if m != nil && m.DefaultedSint64 != nil {
+		return *m.DefaultedSint64
+	}
+	return Default_Message_DefaultedSint64
+}
+
+func (m *Message) GetDefaultedUint64() uint64 {
+	if m != nil && m.DefaultedUint64 != nil {
+		return *m.DefaultedUint64
+	}
+	return Default_Message_DefaultedUint64
+}
+
+func (m *Message) GetDefaultedFixed32() uint32 {
+	if m != nil && m.DefaultedFixed32 != nil {
+		return *m.DefaultedFixed32
+	}
+	return Default_Message_DefaultedFixed32
+}
+
+func (m *Message) GetDefaultedSfixed32() int32 {
+	if m != nil && m.DefaultedSfixed32 != nil {
+		return *m.DefaultedSfixed32
+	}
+	return Default_Message_DefaultedSfixed32
+}
+
+func (m *Message) GetDefaultedFloat() float32 {
+	if m != nil && m.DefaultedFloat != nil {
+		return *m.DefaultedFloat
+	}
+	return Default_Message_DefaultedFloat
+}
+
+func (m *Message) GetDefaultedFixed64() uint64 {
+	if m != nil && m.DefaultedFixed64 != nil {
+		return *m.DefaultedFixed64
+	}
+	return Default_Message_DefaultedFixed64
+}
+
+func (m *Message) GetDefaultedSfixed64() int64 {
+	if m != nil && m.DefaultedSfixed64 != nil {
+		return *m.DefaultedSfixed64
+	}
+	return Default_Message_DefaultedSfixed64
+}
+
+func (m *Message) GetDefaultedDouble() float64 {
+	if m != nil && m.DefaultedDouble != nil {
+		return *m.DefaultedDouble
+	}
+	return Default_Message_DefaultedDouble
+}
+
+func (m *Message) GetDefaultedString() string {
+	if m != nil && m.DefaultedString != nil {
+		return *m.DefaultedString
+	}
+	return Default_Message_DefaultedString
+}
+
+func (m *Message) GetDefaultedBytes() []byte {
+	if m != nil && m.DefaultedBytes != nil {
+		return m.DefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_DefaultedBytes...)
+}
+
+func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
+	if m != nil && m.DefaultedChildEnum != nil {
+		return *m.DefaultedChildEnum
+	}
+	return Default_Message_DefaultedChildEnum
+}
+
+func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
+	if m != nil && m.DefaultedSiblingEnum != nil {
+		return *m.DefaultedSiblingEnum
+	}
+	return Default_Message_DefaultedSiblingEnum
+}
+
+func (m *Message) GetRequiredBool() bool {
+	if m != nil && m.RequiredBool != nil {
+		return *m.RequiredBool
+	}
+	return false
+}
+
+func (m *Message) GetRequiredInt32() int32 {
+	if m != nil && m.RequiredInt32 != nil {
+		return *m.RequiredInt32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSint32() int32 {
+	if m != nil && m.RequiredSint32 != nil {
+		return *m.RequiredSint32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredUint32() uint32 {
+	if m != nil && m.RequiredUint32 != nil {
+		return *m.RequiredUint32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredInt64() int64 {
+	if m != nil && m.RequiredInt64 != nil {
+		return *m.RequiredInt64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSint64() int64 {
+	if m != nil && m.RequiredSint64 != nil {
+		return *m.RequiredSint64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredUint64() uint64 {
+	if m != nil && m.RequiredUint64 != nil {
+		return *m.RequiredUint64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFixed32() uint32 {
+	if m != nil && m.RequiredFixed32 != nil {
+		return *m.RequiredFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSfixed32() int32 {
+	if m != nil && m.RequiredSfixed32 != nil {
+		return *m.RequiredSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFloat() float32 {
+	if m != nil && m.RequiredFloat != nil {
+		return *m.RequiredFloat
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFixed64() uint64 {
+	if m != nil && m.RequiredFixed64 != nil {
+		return *m.RequiredFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSfixed64() int64 {
+	if m != nil && m.RequiredSfixed64 != nil {
+		return *m.RequiredSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredDouble() float64 {
+	if m != nil && m.RequiredDouble != nil {
+		return *m.RequiredDouble
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredString() string {
+	if m != nil && m.RequiredString != nil {
+		return *m.RequiredString
+	}
+	return ""
+}
+
+func (m *Message) GetRequiredBytes() []byte {
+	if m != nil {
+		return m.RequiredBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
+	if m != nil && m.RequiredChildEnum != nil {
+		return *m.RequiredChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.RequiredChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
+	if m != nil {
+		return m.RequiredNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
+	if m != nil && m.RequiredSiblingEnum != nil {
+		return *m.RequiredSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.RequiredSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
+	if m != nil {
+		return m.Requiredgroup
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredDefaultedBool() bool {
+	if m != nil && m.RequiredDefaultedBool != nil {
+		return *m.RequiredDefaultedBool
+	}
+	return Default_Message_RequiredDefaultedBool
+}
+
+func (m *Message) GetRequiredDefaultedInt32() int32 {
+	if m != nil && m.RequiredDefaultedInt32 != nil {
+		return *m.RequiredDefaultedInt32
+	}
+	return Default_Message_RequiredDefaultedInt32
+}
+
+func (m *Message) GetRequiredDefaultedSint32() int32 {
+	if m != nil && m.RequiredDefaultedSint32 != nil {
+		return *m.RequiredDefaultedSint32
+	}
+	return Default_Message_RequiredDefaultedSint32
+}
+
+func (m *Message) GetRequiredDefaultedUint32() uint32 {
+	if m != nil && m.RequiredDefaultedUint32 != nil {
+		return *m.RequiredDefaultedUint32
+	}
+	return Default_Message_RequiredDefaultedUint32
+}
+
+func (m *Message) GetRequiredDefaultedInt64() int64 {
+	if m != nil && m.RequiredDefaultedInt64 != nil {
+		return *m.RequiredDefaultedInt64
+	}
+	return Default_Message_RequiredDefaultedInt64
+}
+
+func (m *Message) GetRequiredDefaultedSint64() int64 {
+	if m != nil && m.RequiredDefaultedSint64 != nil {
+		return *m.RequiredDefaultedSint64
+	}
+	return Default_Message_RequiredDefaultedSint64
+}
+
+func (m *Message) GetRequiredDefaultedUint64() uint64 {
+	if m != nil && m.RequiredDefaultedUint64 != nil {
+		return *m.RequiredDefaultedUint64
+	}
+	return Default_Message_RequiredDefaultedUint64
+}
+
+func (m *Message) GetRequiredDefaultedFixed32() uint32 {
+	if m != nil && m.RequiredDefaultedFixed32 != nil {
+		return *m.RequiredDefaultedFixed32
+	}
+	return Default_Message_RequiredDefaultedFixed32
+}
+
+func (m *Message) GetRequiredDefaultedSfixed32() int32 {
+	if m != nil && m.RequiredDefaultedSfixed32 != nil {
+		return *m.RequiredDefaultedSfixed32
+	}
+	return Default_Message_RequiredDefaultedSfixed32
+}
+
+func (m *Message) GetRequiredDefaultedFloat() float32 {
+	if m != nil && m.RequiredDefaultedFloat != nil {
+		return *m.RequiredDefaultedFloat
+	}
+	return Default_Message_RequiredDefaultedFloat
+}
+
+func (m *Message) GetRequiredDefaultedFixed64() uint64 {
+	if m != nil && m.RequiredDefaultedFixed64 != nil {
+		return *m.RequiredDefaultedFixed64
+	}
+	return Default_Message_RequiredDefaultedFixed64
+}
+
+func (m *Message) GetRequiredDefaultedSfixed64() int64 {
+	if m != nil && m.RequiredDefaultedSfixed64 != nil {
+		return *m.RequiredDefaultedSfixed64
+	}
+	return Default_Message_RequiredDefaultedSfixed64
+}
+
+func (m *Message) GetRequiredDefaultedDouble() float64 {
+	if m != nil && m.RequiredDefaultedDouble != nil {
+		return *m.RequiredDefaultedDouble
+	}
+	return Default_Message_RequiredDefaultedDouble
+}
+
+func (m *Message) GetRequiredDefaultedString() string {
+	if m != nil && m.RequiredDefaultedString != nil {
+		return *m.RequiredDefaultedString
+	}
+	return Default_Message_RequiredDefaultedString
+}
+
+func (m *Message) GetRequiredDefaultedBytes() []byte {
+	if m != nil && m.RequiredDefaultedBytes != nil {
+		return m.RequiredDefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
+}
+
+func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
+	if m != nil && m.RequiredDefaultedChildEnum != nil {
+		return *m.RequiredDefaultedChildEnum
+	}
+	return Default_Message_RequiredDefaultedChildEnum
+}
+
+func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
+	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
+		return *m.RequiredDefaultedSiblingEnum
+	}
+	return Default_Message_RequiredDefaultedSiblingEnum
+}
+
+func (m *Message) GetRepeatedBool() []bool {
+	if m != nil {
+		return m.RepeatedBool
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt32() []int32 {
+	if m != nil {
+		return m.RepeatedInt32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint32() []int32 {
+	if m != nil {
+		return m.RepeatedSint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint32() []uint32 {
+	if m != nil {
+		return m.RepeatedUint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt64() []int64 {
+	if m != nil {
+		return m.RepeatedInt64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint64() []int64 {
+	if m != nil {
+		return m.RepeatedSint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint64() []uint64 {
+	if m != nil {
+		return m.RepeatedUint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed32() []uint32 {
+	if m != nil {
+		return m.RepeatedFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed32() []int32 {
+	if m != nil {
+		return m.RepeatedSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFloat() []float32 {
+	if m != nil {
+		return m.RepeatedFloat
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed64() []uint64 {
+	if m != nil {
+		return m.RepeatedFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed64() []int64 {
+	if m != nil {
+		return m.RepeatedSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedDouble() []float64 {
+	if m != nil {
+		return m.RepeatedDouble
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedString() []string {
+	if m != nil {
+		return m.RepeatedString
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedBytes() [][]byte {
+	if m != nil {
+		return m.RepeatedBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
+	if m != nil {
+		return m.RepeatedChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
+	if m != nil {
+		return m.RepeatedChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
+	if m != nil {
+		return m.RepeatedNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
+	if m != nil {
+		return m.RepeatedSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
+	if m != nil {
+		return m.RepeatedSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
+	if m != nil {
+		return m.Repeatedgroup
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBool() map[bool]bool {
+	if m != nil {
+		return m.MapBoolBool
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolInt32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolUint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolInt64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolUint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFloat() map[bool]float32 {
+	if m != nil {
+		return m.MapBoolFloat
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolDouble() map[bool]float64 {
+	if m != nil {
+		return m.MapBoolDouble
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolString() map[bool]string {
+	if m != nil {
+		return m.MapBoolString
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBytes() map[bool][]byte {
+	if m != nil {
+		return m.MapBoolBytes
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
+	if m != nil {
+		return m.MapBoolChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
+	if m != nil {
+		return m.MapBoolChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
+	if m != nil {
+		return m.MapBoolNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
+	if m != nil {
+		return m.MapBoolSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
+	if m != nil {
+		return m.MapBoolSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapInt32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapSint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapUint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapInt64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapSint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint64Bool() map[uint64]bool {
+	if m != nil {
+		return m.MapUint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapFixed32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapFixed32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapStringBool() map[string]bool {
+	if m != nil {
+		return m.MapStringBool
+	}
+	return nil
+}
+
+func (m *Message) GetOneofBool() bool {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
+		return x.OneofBool
+	}
+	return false
+}
+
+func (m *Message) GetOneofInt32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
+		return x.OneofInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
+		return x.OneofSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
+		return x.OneofUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofInt64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
+		return x.OneofInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
+		return x.OneofSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
+		return x.OneofUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
+		return x.OneofFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
+		return x.OneofSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFloat() float32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
+		return x.OneofFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
+		return x.OneofFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
+		return x.OneofSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofDouble() float64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
+		return x.OneofDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOneofString() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
+		return x.OneofString
+	}
+	return ""
+}
+
+func (m *Message) GetOneofBytes() []byte {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
+		return x.OneofBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOneofChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
+		return x.OneofChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
+		return x.OneofChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
+	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
+		return x.OneofNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetOneofSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
+		return x.OneofSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
+		return x.OneofSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofgroup() *Message_OneofGroup {
+	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
+		return x.Oneofgroup
+	}
+	return nil
+}
+
+func (m *Message) GetOneofString1() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
+		return x.OneofString1
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString2() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
+		return x.OneofString2
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString3() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
+		return x.OneofString3
+	}
+	return ""
+}
+
+func (m *Message) GetOneofDefaultedBool() bool {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
+		return x.OneofDefaultedBool
+	}
+	return Default_Message_OneofDefaultedBool
+}
+
+func (m *Message) GetOneofDefaultedInt32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
+		return x.OneofDefaultedInt32
+	}
+	return Default_Message_OneofDefaultedInt32
+}
+
+func (m *Message) GetOneofDefaultedSint32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
+		return x.OneofDefaultedSint32
+	}
+	return Default_Message_OneofDefaultedSint32
+}
+
+func (m *Message) GetOneofDefaultedUint32() uint32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
+		return x.OneofDefaultedUint32
+	}
+	return Default_Message_OneofDefaultedUint32
+}
+
+func (m *Message) GetOneofDefaultedInt64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
+		return x.OneofDefaultedInt64
+	}
+	return Default_Message_OneofDefaultedInt64
+}
+
+func (m *Message) GetOneofDefaultedSint64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
+		return x.OneofDefaultedSint64
+	}
+	return Default_Message_OneofDefaultedSint64
+}
+
+func (m *Message) GetOneofDefaultedUint64() uint64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
+		return x.OneofDefaultedUint64
+	}
+	return Default_Message_OneofDefaultedUint64
+}
+
+func (m *Message) GetOneofDefaultedFixed32() uint32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
+		return x.OneofDefaultedFixed32
+	}
+	return Default_Message_OneofDefaultedFixed32
+}
+
+func (m *Message) GetOneofDefaultedSfixed32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
+		return x.OneofDefaultedSfixed32
+	}
+	return Default_Message_OneofDefaultedSfixed32
+}
+
+func (m *Message) GetOneofDefaultedFloat() float32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
+		return x.OneofDefaultedFloat
+	}
+	return Default_Message_OneofDefaultedFloat
+}
+
+func (m *Message) GetOneofDefaultedFixed64() uint64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
+		return x.OneofDefaultedFixed64
+	}
+	return Default_Message_OneofDefaultedFixed64
+}
+
+func (m *Message) GetOneofDefaultedSfixed64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
+		return x.OneofDefaultedSfixed64
+	}
+	return Default_Message_OneofDefaultedSfixed64
+}
+
+func (m *Message) GetOneofDefaultedDouble() float64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
+		return x.OneofDefaultedDouble
+	}
+	return Default_Message_OneofDefaultedDouble
+}
+
+func (m *Message) GetOneofDefaultedString() string {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
+		return x.OneofDefaultedString
+	}
+	return Default_Message_OneofDefaultedString
+}
+
+func (m *Message) GetOneofDefaultedBytes() []byte {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
+		return x.OneofDefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
+}
+
+func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
+		return x.OneofDefaultedChildEnum
+	}
+	return Default_Message_OneofDefaultedChildEnum
+}
+
+func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
+		return x.OneofDefaultedSiblingEnum
+	}
+	return Default_Message_OneofDefaultedSiblingEnum
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
+		(*Message_OneofBool)(nil),
+		(*Message_OneofInt32)(nil),
+		(*Message_OneofSint32)(nil),
+		(*Message_OneofUint32)(nil),
+		(*Message_OneofInt64)(nil),
+		(*Message_OneofSint64)(nil),
+		(*Message_OneofUint64)(nil),
+		(*Message_OneofFixed32)(nil),
+		(*Message_OneofSfixed32)(nil),
+		(*Message_OneofFloat)(nil),
+		(*Message_OneofFixed64)(nil),
+		(*Message_OneofSfixed64)(nil),
+		(*Message_OneofDouble)(nil),
+		(*Message_OneofString)(nil),
+		(*Message_OneofBytes)(nil),
+		(*Message_OneofChildEnum)(nil),
+		(*Message_OneofChildMessage)(nil),
+		(*Message_OneofNamedGroup)(nil),
+		(*Message_OneofSiblingEnum)(nil),
+		(*Message_OneofSiblingMessage)(nil),
+		(*Message_Oneofgroup)(nil),
+		(*Message_OneofString1)(nil),
+		(*Message_OneofString2)(nil),
+		(*Message_OneofString3)(nil),
+		(*Message_OneofDefaultedBool)(nil),
+		(*Message_OneofDefaultedInt32)(nil),
+		(*Message_OneofDefaultedSint32)(nil),
+		(*Message_OneofDefaultedUint32)(nil),
+		(*Message_OneofDefaultedInt64)(nil),
+		(*Message_OneofDefaultedSint64)(nil),
+		(*Message_OneofDefaultedUint64)(nil),
+		(*Message_OneofDefaultedFixed32)(nil),
+		(*Message_OneofDefaultedSfixed32)(nil),
+		(*Message_OneofDefaultedFloat)(nil),
+		(*Message_OneofDefaultedFixed64)(nil),
+		(*Message_OneofDefaultedSfixed64)(nil),
+		(*Message_OneofDefaultedDouble)(nil),
+		(*Message_OneofDefaultedString)(nil),
+		(*Message_OneofDefaultedBytes)(nil),
+		(*Message_OneofDefaultedChildEnum)(nil),
+		(*Message_OneofDefaultedSiblingEnum)(nil),
+	}
+}
+
+func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		t := uint64(0)
+		if x.OneofBool {
+			t = 1
+		}
+		b.EncodeVarint(700<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofInt32:
+		b.EncodeVarint(701<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		b.EncodeVarint(702<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofSint32))
+	case *Message_OneofUint32:
+		b.EncodeVarint(703<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		b.EncodeVarint(704<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		b.EncodeVarint(705<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofSint64))
+	case *Message_OneofUint64:
+		b.EncodeVarint(706<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		b.EncodeVarint(707<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofFixed32))
+	case *Message_OneofSfixed32:
+		b.EncodeVarint(708<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofSfixed32))
+	case *Message_OneofFloat:
+		b.EncodeVarint(709<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
+	case *Message_OneofFixed64:
+		b.EncodeVarint(710<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofFixed64))
+	case *Message_OneofSfixed64:
+		b.EncodeVarint(711<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofSfixed64))
+	case *Message_OneofDouble:
+		b.EncodeVarint(712<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
+	case *Message_OneofString:
+		b.EncodeVarint(713<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString)
+	case *Message_OneofBytes:
+		b.EncodeVarint(714<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		b.EncodeVarint(715<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		b.EncodeVarint(716<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
+			return err
+		}
+	case *Message_OneofNamedGroup:
+		b.EncodeVarint(717<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofNamedGroup); err != nil {
+			return err
+		}
+	case *Message_OneofSiblingEnum:
+		b.EncodeVarint(718<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		b.EncodeVarint(719<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
+			return err
+		}
+	case *Message_Oneofgroup:
+		b.EncodeVarint(720<<3 | proto.WireStartGroup)
+		if err := b.Marshal(x.Oneofgroup); err != nil {
+			return err
+		}
+		b.EncodeVarint(720<<3 | proto.WireEndGroup)
+	case *Message_OneofString1:
+		b.EncodeVarint(721<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString1)
+	case *Message_OneofString2:
+		b.EncodeVarint(722<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString2)
+	case *Message_OneofString3:
+		b.EncodeVarint(723<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString3)
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
+	}
+	// oneof_defaulted_union
+	switch x := m.OneofDefaultedUnion.(type) {
+	case *Message_OneofDefaultedBool:
+		t := uint64(0)
+		if x.OneofDefaultedBool {
+			t = 1
+		}
+		b.EncodeVarint(800<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofDefaultedInt32:
+		b.EncodeVarint(801<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedInt32))
+	case *Message_OneofDefaultedSint32:
+		b.EncodeVarint(802<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofDefaultedSint32))
+	case *Message_OneofDefaultedUint32:
+		b.EncodeVarint(803<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedUint32))
+	case *Message_OneofDefaultedInt64:
+		b.EncodeVarint(804<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedInt64))
+	case *Message_OneofDefaultedSint64:
+		b.EncodeVarint(805<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofDefaultedSint64))
+	case *Message_OneofDefaultedUint64:
+		b.EncodeVarint(806<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedUint64))
+	case *Message_OneofDefaultedFixed32:
+		b.EncodeVarint(807<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofDefaultedFixed32))
+	case *Message_OneofDefaultedSfixed32:
+		b.EncodeVarint(808<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofDefaultedSfixed32))
+	case *Message_OneofDefaultedFloat:
+		b.EncodeVarint(809<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofDefaultedFloat)))
+	case *Message_OneofDefaultedFixed64:
+		b.EncodeVarint(810<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofDefaultedFixed64))
+	case *Message_OneofDefaultedSfixed64:
+		b.EncodeVarint(811<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofDefaultedSfixed64))
+	case *Message_OneofDefaultedDouble:
+		b.EncodeVarint(812<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDefaultedDouble))
+	case *Message_OneofDefaultedString:
+		b.EncodeVarint(813<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofDefaultedString)
+	case *Message_OneofDefaultedBytes:
+		b.EncodeVarint(814<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofDefaultedBytes)
+	case *Message_OneofDefaultedChildEnum:
+		b.EncodeVarint(815<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedChildEnum))
+	case *Message_OneofDefaultedSiblingEnum:
+		b.EncodeVarint(816<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedSiblingEnum))
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofDefaultedUnion has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Message)
+	switch tag {
+	case 700: // oneof_union.oneof_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofBool{x != 0}
+		return true, err
+	case 701: // oneof_union.oneof_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt32{int32(x)}
+		return true, err
+	case 702: // oneof_union.oneof_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofUnion = &Message_OneofSint32{int32(x)}
+		return true, err
+	case 703: // oneof_union.oneof_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint32{uint32(x)}
+		return true, err
+	case 704: // oneof_union.oneof_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt64{int64(x)}
+		return true, err
+	case 705: // oneof_union.oneof_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofUnion = &Message_OneofSint64{int64(x)}
+		return true, err
+	case 706: // oneof_union.oneof_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint64{x}
+		return true, err
+	case 707: // oneof_union.oneof_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
+		return true, err
+	case 708: // oneof_union.oneof_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
+		return true, err
+	case 709: // oneof_union.oneof_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 710: // oneof_union.oneof_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofFixed64{x}
+		return true, err
+	case 711: // oneof_union.oneof_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
+		return true, err
+	case 712: // oneof_union.oneof_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
+		return true, err
+	case 713: // oneof_union.oneof_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString{x}
+		return true, err
+	case 714: // oneof_union.oneof_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofUnion = &Message_OneofBytes{x}
+		return true, err
+	case 715: // oneof_union.oneof_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 716: // oneof_union.oneof_child_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_ChildMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofChildMessage{msg}
+		return true, err
+	case 717: // oneof_union.oneof_named_group
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_NamedGroup)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofNamedGroup{msg}
+		return true, err
+	case 718: // oneof_union.oneof_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
+		return true, err
+	case 719: // oneof_union.oneof_sibling_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(SiblingMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofSiblingMessage{msg}
+		return true, err
+	case 720: // oneof_union.oneofgroup
+		if wire != proto.WireStartGroup {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_OneofGroup)
+		err := b.DecodeGroup(msg)
+		m.OneofUnion = &Message_Oneofgroup{msg}
+		return true, err
+	case 721: // oneof_union.oneof_string1
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString1{x}
+		return true, err
+	case 722: // oneof_union.oneof_string2
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString2{x}
+		return true, err
+	case 723: // oneof_union.oneof_string3
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString3{x}
+		return true, err
+	case 800: // oneof_defaulted_union.oneof_defaulted_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedBool{x != 0}
+		return true, err
+	case 801: // oneof_defaulted_union.oneof_defaulted_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedInt32{int32(x)}
+		return true, err
+	case 802: // oneof_defaulted_union.oneof_defaulted_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSint32{int32(x)}
+		return true, err
+	case 803: // oneof_defaulted_union.oneof_defaulted_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedUint32{uint32(x)}
+		return true, err
+	case 804: // oneof_defaulted_union.oneof_defaulted_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedInt64{int64(x)}
+		return true, err
+	case 805: // oneof_defaulted_union.oneof_defaulted_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSint64{int64(x)}
+		return true, err
+	case 806: // oneof_defaulted_union.oneof_defaulted_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedUint64{x}
+		return true, err
+	case 807: // oneof_defaulted_union.oneof_defaulted_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed32{uint32(x)}
+		return true, err
+	case 808: // oneof_defaulted_union.oneof_defaulted_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed32{int32(x)}
+		return true, err
+	case 809: // oneof_defaulted_union.oneof_defaulted_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 810: // oneof_defaulted_union.oneof_defaulted_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed64{x}
+		return true, err
+	case 811: // oneof_defaulted_union.oneof_defaulted_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed64{int64(x)}
+		return true, err
+	case 812: // oneof_defaulted_union.oneof_defaulted_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedDouble{math.Float64frombits(x)}
+		return true, err
+	case 813: // oneof_defaulted_union.oneof_defaulted_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedString{x}
+		return true, err
+	case 814: // oneof_defaulted_union.oneof_defaulted_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofDefaultedUnion = &Message_OneofDefaultedBytes{x}
+		return true, err
+	case 815: // oneof_defaulted_union.oneof_defaulted_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 816: // oneof_defaulted_union.oneof_defaulted_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSiblingEnum{SiblingEnum(x)}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Message_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		n += 2 // tag and wire
+		n += 1
+	case *Message_OneofInt32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
+	case *Message_OneofUint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
+	case *Message_OneofUint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofSfixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofFloat:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofFixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofSfixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofDouble:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofString:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString)))
+		n += len(x.OneofString)
+	case *Message_OneofBytes:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
+		n += len(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		s := proto.Size(x.OneofChildMessage)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofNamedGroup:
+		s := proto.Size(x.OneofNamedGroup)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofSiblingEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		s := proto.Size(x.OneofSiblingMessage)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_Oneofgroup:
+		n += 2 // tag and wire
+		n += proto.Size(x.Oneofgroup)
+		n += 2 // tag and wire
+	case *Message_OneofString1:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString1)))
+		n += len(x.OneofString1)
+	case *Message_OneofString2:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString2)))
+		n += len(x.OneofString2)
+	case *Message_OneofString3:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString3)))
+		n += len(x.OneofString3)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	// oneof_defaulted_union
+	switch x := m.OneofDefaultedUnion.(type) {
+	case *Message_OneofDefaultedBool:
+		n += 2 // tag and wire
+		n += 1
+	case *Message_OneofDefaultedInt32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedInt32))
+	case *Message_OneofDefaultedSint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64((uint32(x.OneofDefaultedSint32) << 1) ^ uint32((int32(x.OneofDefaultedSint32) >> 31))))
+	case *Message_OneofDefaultedUint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedUint32))
+	case *Message_OneofDefaultedInt64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedInt64))
+	case *Message_OneofDefaultedSint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(uint64(x.OneofDefaultedSint64<<1) ^ uint64((int64(x.OneofDefaultedSint64) >> 63))))
+	case *Message_OneofDefaultedUint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedUint64))
+	case *Message_OneofDefaultedFixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofDefaultedSfixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofDefaultedFloat:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofDefaultedFixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofDefaultedSfixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofDefaultedDouble:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofDefaultedString:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofDefaultedString)))
+		n += len(x.OneofDefaultedString)
+	case *Message_OneofDefaultedBytes:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofDefaultedBytes)))
+		n += len(x.OneofDefaultedBytes)
+	case *Message_OneofDefaultedChildEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedChildEnum))
+	case *Message_OneofDefaultedSiblingEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedSiblingEnum))
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         10000,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_bool",
+	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10001,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_int32",
+	Tag:           "varint,10001,opt,name=extension_optional_int32,json=extensionOptionalInt32",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10002,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sint32",
+	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32,json=extensionOptionalSint32",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         10003,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_uint32",
+	Tag:           "varint,10003,opt,name=extension_optional_uint32,json=extensionOptionalUint32",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10004,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_int64",
+	Tag:           "varint,10004,opt,name=extension_optional_int64,json=extensionOptionalInt64",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10005,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sint64",
+	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64,json=extensionOptionalSint64",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         10006,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_uint64",
+	Tag:           "varint,10006,opt,name=extension_optional_uint64,json=extensionOptionalUint64",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         10007,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_fixed32",
+	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32,json=extensionOptionalFixed32",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10008,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sfixed32",
+	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32,json=extensionOptionalSfixed32",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         10009,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_float",
+	Tag:           "fixed32,10009,opt,name=extension_optional_float,json=extensionOptionalFloat",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         10010,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_fixed64",
+	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64,json=extensionOptionalFixed64",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10011,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sfixed64",
+	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64,json=extensionOptionalSfixed64",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         10012,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_double",
+	Tag:           "fixed64,10012,opt,name=extension_optional_double,json=extensionOptionalDouble",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         10013,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_string",
+	Tag:           "bytes,10013,opt,name=extension_optional_string,json=extensionOptionalString",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         10014,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_bytes",
+	Tag:           "bytes,10014,opt,name=extension_optional_bytes,json=extensionOptionalBytes",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildEnum)(nil),
+	Field:         10015,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_child_enum",
+	Tag:           "varint,10015,opt,name=extension_optional_child_enum,json=extensionOptionalChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildMessage)(nil),
+	Field:         10016,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_child_message",
+	Tag:           "bytes,10016,opt,name=extension_optional_child_message,json=extensionOptionalChildMessage",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_NamedGroup)(nil),
+	Field:         10017,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_named_group",
+	Tag:           "bytes,10017,opt,name=extension_optional_named_group,json=extensionOptionalNamedGroup",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingEnum)(nil),
+	Field:         10018,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sibling_enum",
+	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,json=extensionOptionalSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingMessage)(nil),
+	Field:         10019,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sibling_message",
+	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message,json=extensionOptionalSiblingMessage",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
+	Field:         10020,
+	Name:          "google.golang.org.proto2_20180430.Message.extensionoptionalgroup",
+	Tag:           "group,10020,opt,name=ExtensionOptionalGroup,json=extensionoptionalgroup",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         20000,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_bool",
+	Tag:           "varint,20000,opt,name=extension_defaulted_bool,json=extensionDefaultedBool,def=1",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20001,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_int32",
+	Tag:           "varint,20001,opt,name=extension_defaulted_int32,json=extensionDefaultedInt32,def=-12345",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20002,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_sint32",
+	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,json=extensionDefaultedSint32,def=-3200",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         20003,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_uint32",
+	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,json=extensionDefaultedUint32,def=3200",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20004,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_int64",
+	Tag:           "varint,20004,opt,name=extension_defaulted_int64,json=extensionDefaultedInt64,def=-123456789",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20005,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_sint64",
+	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,json=extensionDefaultedSint64,def=-6400",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         20006,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_uint64",
+	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,json=extensionDefaultedUint64,def=6400",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         20007,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_fixed32",
+	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,json=extensionDefaultedFixed32,def=320000",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20008,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_sfixed32",
+	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,json=extensionDefaultedSfixed32,def=-320000",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         20009,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_float",
+	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,json=extensionDefaultedFloat,def=3.14159",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         20010,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_fixed64",
+	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,json=extensionDefaultedFixed64,def=640000",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20011,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_sfixed64",
+	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,json=extensionDefaultedSfixed64,def=-640000",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         20012,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_double",
+	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,json=extensionDefaultedDouble,def=3.14159265359",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         20013,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_string",
+	Tag:           "bytes,20013,opt,name=extension_defaulted_string,json=extensionDefaultedString,def=hello, \"world!\"\n",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         20014,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_bytes",
+	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,json=extensionDefaultedBytes,def=dead\\336\\255\\276\\357beef",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildEnum)(nil),
+	Field:         20015,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_child_enum",
+	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,json=extensionDefaultedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum,def=0",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingEnum)(nil),
+	Field:         20016,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_sibling_enum",
+	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,json=extensionDefaultedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum,def=0",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]bool)(nil),
+	Field:         30000,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_bool",
+	Tag:           "varint,30000,rep,name=extension_repeated_bool,json=extensionRepeatedBool",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30001,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_int32",
+	Tag:           "varint,30001,rep,name=extension_repeated_int32,json=extensionRepeatedInt32",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30002,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sint32",
+	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32,json=extensionRepeatedSint32",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         30003,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_uint32",
+	Tag:           "varint,30003,rep,name=extension_repeated_uint32,json=extensionRepeatedUint32",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30004,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_int64",
+	Tag:           "varint,30004,rep,name=extension_repeated_int64,json=extensionRepeatedInt64",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30005,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sint64",
+	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64,json=extensionRepeatedSint64",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         30006,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_uint64",
+	Tag:           "varint,30006,rep,name=extension_repeated_uint64,json=extensionRepeatedUint64",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         30007,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_fixed32",
+	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32,json=extensionRepeatedFixed32",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30008,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sfixed32",
+	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32,json=extensionRepeatedSfixed32",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]float32)(nil),
+	Field:         30009,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_float",
+	Tag:           "fixed32,30009,rep,name=extension_repeated_float,json=extensionRepeatedFloat",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         30010,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_fixed64",
+	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64,json=extensionRepeatedFixed64",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30011,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sfixed64",
+	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64,json=extensionRepeatedSfixed64",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]float64)(nil),
+	Field:         30012,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_double",
+	Tag:           "fixed64,30012,rep,name=extension_repeated_double,json=extensionRepeatedDouble",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]string)(nil),
+	Field:         30013,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_string",
+	Tag:           "bytes,30013,rep,name=extension_repeated_string,json=extensionRepeatedString",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([][]byte)(nil),
+	Field:         30014,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_bytes",
+	Tag:           "bytes,30014,rep,name=extension_repeated_bytes,json=extensionRepeatedBytes",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]Message_ChildEnum)(nil),
+	Field:         30015,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_child_enum",
+	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,json=extensionRepeatedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_ChildMessage)(nil),
+	Field:         30016,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_child_message",
+	Tag:           "bytes,30016,rep,name=extension_repeated_child_message,json=extensionRepeatedChildMessage",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_NamedGroup)(nil),
+	Field:         30017,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_named_group",
+	Tag:           "bytes,30017,rep,name=extension_repeated_named_group,json=extensionRepeatedNamedGroup",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]SiblingEnum)(nil),
+	Field:         30018,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sibling_enum",
+	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,json=extensionRepeatedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*SiblingMessage)(nil),
+	Field:         30019,
+	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sibling_message",
+	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message,json=extensionRepeatedSiblingMessage",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
+	Field:         30020,
+	Name:          "google.golang.org.proto2_20180430.Message.extensionrepeatedgroup",
+	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
+	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
+}
+
+type Message_ChildMessage struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_ChildMessage) Reset()         { *m = Message_ChildMessage{} }
+func (m *Message_ChildMessage) String() string { return proto.CompactTextString(m) }
+func (*Message_ChildMessage) ProtoMessage()    {}
+func (*Message_ChildMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{1, 0}
+}
+func (m *Message_ChildMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_ChildMessage.Unmarshal(m, b)
+}
+func (m *Message_ChildMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_ChildMessage.Marshal(b, m, deterministic)
+}
+func (dst *Message_ChildMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_ChildMessage.Merge(dst, src)
+}
+func (m *Message_ChildMessage) XXX_Size() int {
+	return xxx_messageInfo_Message_ChildMessage.Size(m)
+}
+func (m *Message_ChildMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_ChildMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_ChildMessage proto.InternalMessageInfo
+
+func (m *Message_ChildMessage) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *Message_ChildMessage) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message_NamedGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_NamedGroup) Reset()         { *m = Message_NamedGroup{} }
+func (m *Message_NamedGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_NamedGroup) ProtoMessage()    {}
+func (*Message_NamedGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{1, 1}
+}
+func (m *Message_NamedGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_NamedGroup.Unmarshal(m, b)
+}
+func (m *Message_NamedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_NamedGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_NamedGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_NamedGroup.Merge(dst, src)
+}
+func (m *Message_NamedGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_NamedGroup.Size(m)
+}
+func (m *Message_NamedGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_NamedGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_NamedGroup proto.InternalMessageInfo
+
+func (m *Message_NamedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_NamedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_NamedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *Message_NamedGroup) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message_OptionalGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_OptionalGroup) Reset()         { *m = Message_OptionalGroup{} }
+func (m *Message_OptionalGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_OptionalGroup) ProtoMessage()    {}
+func (*Message_OptionalGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{1, 2}
+}
+func (m *Message_OptionalGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_OptionalGroup.Unmarshal(m, b)
+}
+func (m *Message_OptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_OptionalGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_OptionalGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_OptionalGroup.Merge(dst, src)
+}
+func (m *Message_OptionalGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_OptionalGroup.Size(m)
+}
+func (m *Message_OptionalGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_OptionalGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_OptionalGroup proto.InternalMessageInfo
+
+func (m *Message_OptionalGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_OptionalGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_OptionalGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_RequiredGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_RequiredGroup) Reset()         { *m = Message_RequiredGroup{} }
+func (m *Message_RequiredGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_RequiredGroup) ProtoMessage()    {}
+func (*Message_RequiredGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{1, 3}
+}
+func (m *Message_RequiredGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_RequiredGroup.Unmarshal(m, b)
+}
+func (m *Message_RequiredGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_RequiredGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_RequiredGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_RequiredGroup.Merge(dst, src)
+}
+func (m *Message_RequiredGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_RequiredGroup.Size(m)
+}
+func (m *Message_RequiredGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_RequiredGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_RequiredGroup proto.InternalMessageInfo
+
+func (m *Message_RequiredGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_RequiredGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_RequiredGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_RepeatedGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_RepeatedGroup) Reset()         { *m = Message_RepeatedGroup{} }
+func (m *Message_RepeatedGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_RepeatedGroup) ProtoMessage()    {}
+func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{1, 4}
+}
+func (m *Message_RepeatedGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_RepeatedGroup.Unmarshal(m, b)
+}
+func (m *Message_RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_RepeatedGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_RepeatedGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_RepeatedGroup.Merge(dst, src)
+}
+func (m *Message_RepeatedGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_RepeatedGroup.Size(m)
+}
+func (m *Message_RepeatedGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_RepeatedGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_RepeatedGroup proto.InternalMessageInfo
+
+func (m *Message_RepeatedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_RepeatedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_RepeatedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_OneofGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_OneofGroup) Reset()         { *m = Message_OneofGroup{} }
+func (m *Message_OneofGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_OneofGroup) ProtoMessage()    {}
+func (*Message_OneofGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{1, 33}
+}
+func (m *Message_OneofGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_OneofGroup.Unmarshal(m, b)
+}
+func (m *Message_OneofGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_OneofGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_OneofGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_OneofGroup.Merge(dst, src)
+}
+func (m *Message_OneofGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_OneofGroup.Size(m)
+}
+func (m *Message_OneofGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_OneofGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_OneofGroup proto.InternalMessageInfo
+
+func (m *Message_OneofGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_OneofGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_OneofGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_ExtensionOptionalGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
+func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
+func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{1, 34}
+}
+func (m *Message_ExtensionOptionalGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_ExtensionOptionalGroup.Unmarshal(m, b)
+}
+func (m *Message_ExtensionOptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_ExtensionOptionalGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_ExtensionOptionalGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_ExtensionOptionalGroup.Merge(dst, src)
+}
+func (m *Message_ExtensionOptionalGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_ExtensionOptionalGroup.Size(m)
+}
+func (m *Message_ExtensionOptionalGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_ExtensionOptionalGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_ExtensionOptionalGroup proto.InternalMessageInfo
+
+func (m *Message_ExtensionOptionalGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_ExtensionRepeatedGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
+func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
+func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_98bcf816f23990bb, []int{1, 35}
+}
+func (m *Message_ExtensionRepeatedGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Unmarshal(m, b)
+}
+func (m *Message_ExtensionRepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_ExtensionRepeatedGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_ExtensionRepeatedGroup.Merge(dst, src)
+}
+func (m *Message_ExtensionRepeatedGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Size(m)
+}
+func (m *Message_ExtensionRepeatedGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_ExtensionRepeatedGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_ExtensionRepeatedGroup proto.InternalMessageInfo
+
+func (m *Message_ExtensionRepeatedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20180430.SiblingMessage")
+	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20180430.Message")
+	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto2_20180430.Message.MapBoolBoolEntry")
+	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto2_20180430.Message.MapBoolBytesEntry")
+	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto2_20180430.Message.MapBoolChildEnumEntry")
+	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto2_20180430.Message.MapBoolChildMessageEntry")
+	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolDoubleEntry")
+	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolFixed32Entry")
+	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolFixed64Entry")
+	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolFloatEntry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolInt32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolInt64Entry")
+	proto.RegisterMapType((map[bool]*Message_NamedGroup)(nil), "google.golang.org.proto2_20180430.Message.MapBoolNamedGroupEntry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSfixed32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSfixed64Entry")
+	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSiblingEnumEntry")
+	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSiblingMessageEntry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSint32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSint64Entry")
+	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto2_20180430.Message.MapBoolStringEntry")
+	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolUint32Entry")
+	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolUint64Entry")
+	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapFixed32BoolEntry")
+	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapInt32BoolEntry")
+	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180430.Message.MapInt64BoolEntry")
+	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapSint32BoolEntry")
+	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180430.Message.MapSint64BoolEntry")
+	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto2_20180430.Message.MapStringBoolEntry")
+	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapUint32BoolEntry")
+	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto2_20180430.Message.MapUint64BoolEntry")
+	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20180430.Message.ChildMessage")
+	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20180430.Message.NamedGroup")
+	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20180430.Message.OptionalGroup")
+	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20180430.Message.RequiredGroup")
+	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20180430.Message.RepeatedGroup")
+	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20180430.Message.OneofGroup")
+	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20180430.Message.ExtensionOptionalGroup")
+	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20180430.Message.ExtensionRepeatedGroup")
+	proto.RegisterEnum("google.golang.org.proto2_20180430.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
+	proto.RegisterEnum("google.golang.org.proto2_20180430.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
+	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
+	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
+	proto.RegisterExtension(E_Message_ExtensionOptionalString)
+	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
+	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
+	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
+	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
+	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
+}
+
+func init() {
+	proto.RegisterFile("proto2.v1.1.0-20180430-b4deda09/test.proto", fileDescriptor_test_98bcf816f23990bb)
+}
+
+var fileDescriptor_test_98bcf816f23990bb = []byte{
+	// 4492 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x69, 0x70, 0x1c, 0xc7,
+	0x75, 0xc6, 0xec, 0x62, 0x17, 0x44, 0x13, 0x0b, 0x2c, 0x86, 0x24, 0x30, 0x84, 0xa4, 0x68, 0xcd,
+	0x38, 0xce, 0x86, 0x11, 0x41, 0x60, 0xd0, 0x6c, 0x8a, 0x1b, 0x1d, 0x26, 0x24, 0xca, 0x2b, 0xc7,
+	0x5a, 0xa5, 0x46, 0xc5, 0x94, 0xcb, 0xa5, 0x0a, 0x03, 0x10, 0x0b, 0x70, 0xa5, 0x3d, 0x20, 0x60,
+	0x97, 0x12, 0x63, 0xa7, 0xc4, 0x38, 0xe7, 0x4f, 0xf9, 0xbe, 0xd6, 0xb6, 0xac, 0xdb, 0xd6, 0xe9,
+	0xfb, 0xd2, 0xe5, 0x23, 0x89, 0x7c, 0x5f, 0x39, 0x9c, 0xcb, 0xb9, 0x2f, 0xe7, 0xbe, 0xef, 0xa3,
+	0xba, 0x5f, 0xf7, 0x74, 0xf7, 0x4c, 0xcf, 0x02, 0x3d, 0xeb, 0xd2, 0x0f, 0x55, 0x89, 0xbd, 0xaf,
+	0xdf, 0xd7, 0xef, 0xdb, 0x7e, 0xef, 0x7d, 0xe8, 0x99, 0x5e, 0x74, 0x78, 0x73, 0xab, 0xd3, 0xed,
+	0xf8, 0xf3, 0xe7, 0x17, 0xe7, 0x17, 0xe7, 0x17, 0x8e, 0xf8, 0x0b, 0x8b, 0x57, 0x2e, 0xe0, 0xa5,
+	0x85, 0x23, 0xab, 0x78, 0xad, 0xbe, 0xb6, 0xb2, 0x70, 0xe2, 0x68, 0xb7, 0xbe, 0xdd, 0x9d, 0x67,
+	0x46, 0xee, 0x4b, 0x36, 0x3a, 0x9d, 0x8d, 0x66, 0x7d, 0x7e, 0xa3, 0xd3, 0x5c, 0x69, 0x6f, 0xcc,
+	0x77, 0xb6, 0x36, 0xe0, 0x03, 0xff, 0x8c, 0x98, 0x76, 0xe8, 0x75, 0x68, 0xf2, 0x96, 0xc6, 0x6a,
+	0xb3, 0xd1, 0xde, 0xb8, 0xa9, 0xbe, 0xbd, 0xbd, 0xb2, 0x51, 0x77, 0x27, 0x51, 0x66, 0x7d, 0xd1,
+	0x73, 0x4a, 0x4e, 0x79, 0x3c, 0xc8, 0xac, 0x2f, 0xb2, 0x7f, 0xfb, 0x5e, 0xa6, 0x94, 0x61, 0xff,
+	0xf6, 0xd9, 0xbf, 0x97, 0xbc, 0x6c, 0x29, 0xcb, 0xfe, 0xbd, 0xe4, 0x56, 0x50, 0x66, 0x1d, 0x7b,
+	0xa3, 0x25, 0xa7, 0xbc, 0xd7, 0x3f, 0x3c, 0xbf, 0x23, 0xe2, 0x3c, 0xc7, 0x09, 0x32, 0xeb, 0xf8,
+	0xd0, 0x77, 0x1e, 0x75, 0xd0, 0x98, 0x00, 0x3e, 0x8d, 0x50, 0x7b, 0xa5, 0x55, 0x5f, 0xdb, 0xd8,
+	0xea, 0xf4, 0x36, 0xd9, 0x02, 0x90, 0x7f, 0x6c, 0xf7, 0x0e, 0xe7, 0x6b, 0x74, 0xf2, 0x2b, 0xe8,
+	0xe4, 0x40, 0x71, 0xe4, 0x7e, 0x3f, 0x2a, 0x74, 0x36, 0xbb, 0x8d, 0x4e, 0x7b, 0xa5, 0x79, 0x66,
+	0xb5, 0xd3, 0x69, 0x7a, 0x6b, 0x25, 0xa7, 0xbc, 0x27, 0x98, 0x10, 0x83, 0xcb, 0x9d, 0x4e, 0xd3,
+	0xfd, 0x01, 0x34, 0x19, 0x1a, 0x35, 0xda, 0xdd, 0x25, 0xdf, 0xab, 0x97, 0x9c, 0x72, 0x2e, 0x08,
+	0xa7, 0xde, 0x48, 0x07, 0xdd, 0x1f, 0x44, 0x53, 0xa1, 0xd9, 0x36, 0xd8, 0xad, 0x97, 0x9c, 0xf2,
+	0x74, 0x10, 0xce, 0xbe, 0xa5, 0x11, 0x33, 0xec, 0x81, 0xe1, 0x46, 0xc9, 0x29, 0x17, 0xa4, 0xe1,
+	0x69, 0x30, 0x8c, 0x00, 0x13, 0xec, 0x9d, 0x2b, 0x39, 0xe5, 0xac, 0x06, 0x4c, 0x70, 0x0c, 0x98,
+	0x60, 0xaf, 0x51, 0x72, 0xca, 0xae, 0x0e, 0x1c, 0x31, 0xec, 0x81, 0xe1, 0x6d, 0x25, 0xa7, 0x3c,
+	0xaa, 0x03, 0x13, 0xec, 0xfe, 0x10, 0x2a, 0x86, 0x86, 0xeb, 0x8d, 0xbb, 0xea, 0x6b, 0x4b, 0xbe,
+	0x77, 0x7b, 0xc9, 0x29, 0x8f, 0x05, 0xa1, 0x83, 0x1b, 0x60, 0xd8, 0xfd, 0x61, 0x34, 0x2d, 0xc1,
+	0x85, 0x6d, 0xb3, 0xe4, 0x94, 0xa7, 0x82, 0xd0, 0xc7, 0x2d, 0x7c, 0x5c, 0x0b, 0x68, 0xbd, 0xd9,
+	0x59, 0xe9, 0x7a, 0xad, 0x92, 0x53, 0xce, 0xc8, 0x80, 0x6e, 0xa0, 0x83, 0x71, 0x78, 0x82, 0xbd,
+	0x76, 0xc9, 0x29, 0xe7, 0x23, 0xf0, 0x04, 0x1b, 0xe0, 0x09, 0xf6, 0x3a, 0x25, 0xa7, 0x5c, 0x8c,
+	0xc2, 0x47, 0xe2, 0x5f, 0xeb, 0xf4, 0x56, 0x9b, 0x75, 0x6f, 0xb3, 0xe4, 0x94, 0x1d, 0x19, 0xff,
+	0xf5, 0x6c, 0x54, 0x67, 0xb4, 0xbb, 0xd5, 0x68, 0x6f, 0x78, 0x77, 0xb0, 0x3d, 0x2f, 0x19, 0x65,
+	0xa3, 0x5a, 0x40, 0xab, 0x17, 0xba, 0xf5, 0x6d, 0x6f, 0xab, 0xe4, 0x94, 0x27, 0x64, 0x40, 0xcb,
+	0x74, 0xd0, 0x5d, 0x43, 0xfb, 0x42, 0xb3, 0xb3, 0xe7, 0x1a, 0xcd, 0xb5, 0x33, 0xf5, 0x76, 0xaf,
+	0xe5, 0x6d, 0x97, 0x9c, 0xf2, 0xa4, 0x8f, 0x2d, 0xb6, 0xf1, 0x75, 0x74, 0xf2, 0xa9, 0x76, 0xaf,
+	0x15, 0x84, 0x61, 0x87, 0x43, 0x6e, 0x0b, 0xcd, 0x44, 0x50, 0x5a, 0x30, 0xcd, 0xeb, 0xb2, 0x04,
+	0x3c, 0x6e, 0x0b, 0x24, 0xb2, 0x71, 0xbf, 0x86, 0x25, 0x52, 0x72, 0x03, 0x85, 0xe3, 0x67, 0x58,
+	0x4a, 0x9d, 0x81, 0xe4, 0xec, 0x31, 0xb0, 0x94, 0xc9, 0xe9, 0x0a, 0x97, 0x72, 0xcc, 0x5d, 0x45,
+	0x07, 0x94, 0xfd, 0xcd, 0xea, 0x11, 0xf0, 0x77, 0x9e, 0xf1, 0x37, 0xbf, 0x0b, 0x24, 0x5e, 0xc6,
+	0x18, 0x73, 0xfb, 0x64, 0x56, 0x84, 0x83, 0xee, 0xed, 0xc8, 0x8b, 0x61, 0x08, 0xf6, 0xee, 0x64,
+	0x01, 0x2d, 0xee, 0x1e, 0x46, 0xf0, 0x36, 0x13, 0x41, 0x12, 0xcc, 0xfd, 0x84, 0xac, 0x3a, 0x40,
+	0xd9, 0x5d, 0xac, 0x9e, 0x5d, 0x69, 0x41, 0xd9, 0xcd, 0x7c, 0x3e, 0xb0, 0xa6, 0xbb, 0x73, 0xaf,
+	0x40, 0x93, 0x6b, 0xf5, 0xf5, 0x95, 0x5e, 0xb3, 0x5b, 0x5f, 0x83, 0xb2, 0xf6, 0x02, 0xad, 0x98,
+	0x7b, 0x2a, 0xa3, 0xdd, 0xad, 0x5e, 0x3d, 0x28, 0x84, 0x1f, 0xb2, 0xf2, 0xb6, 0x80, 0xa6, 0xa4,
+	0x35, 0x94, 0xa3, 0x2f, 0x50, 0xf3, 0x5c, 0x25, 0x7f, 0x64, 0xd1, 0x5f, 0xc2, 0xc7, 0x02, 0xe9,
+	0x0d, 0x2a, 0xdd, 0x22, 0x2a, 0xca, 0x19, 0xbc, 0xd4, 0x7d, 0x91, 0x4e, 0x99, 0xae, 0xe4, 0x8e,
+	0x2c, 0xf9, 0x0b, 0x0b, 0x81, 0xf4, 0xc8, 0x6b, 0xde, 0x82, 0x3a, 0x85, 0x17, 0xbd, 0x2f, 0xd1,
+	0x29, 0x85, 0xca, 0x68, 0x64, 0x06, 0x2f, 0x7e, 0x38, 0xb2, 0x2c, 0x82, 0xbd, 0x2f, 0xd3, 0x09,
+	0xd9, 0x0a, 0x82, 0x65, 0x91, 0xe3, 0x57, 0x9e, 0xd0, 0x97, 0x46, 0x70, 0x7c, 0x69, 0x04, 0x7b,
+	0x5f, 0xa1, 0xd3, 0xdc, 0x4a, 0xee, 0x08, 0xc1, 0xb1, 0xa5, 0x11, 0x1c, 0x5f, 0x1a, 0xc1, 0xde,
+	0x57, 0xe9, 0x94, 0xd1, 0xca, 0x68, 0x64, 0x06, 0x2f, 0x8f, 0x18, 0x4d, 0xcb, 0x19, 0xa2, 0xe6,
+	0x7d, 0x8d, 0x4e, 0x19, 0xab, 0xe4, 0x69, 0x34, 0x0b, 0x0b, 0x81, 0xf4, 0x29, 0x2a, 0xe5, 0x71,
+	0xe4, 0x2a, 0x4b, 0x13, 0xd3, 0xbe, 0x4e, 0xa7, 0x4d, 0x55, 0xc6, 0x8e, 0xf0, 0x79, 0xd2, 0x73,
+	0x58, 0x35, 0x17, 0x55, 0x26, 0xa0, 0x6c, 0x7e, 0x83, 0xce, 0xca, 0x54, 0xc6, 0x96, 0xe6, 0x17,
+	0xf1, 0xe2, 0x31, 0x95, 0x06, 0xa8, 0xa0, 0xf1, 0x15, 0x12, 0xec, 0x7d, 0x93, 0x4e, 0xca, 0x57,
+	0xf2, 0x34, 0xa8, 0xf8, 0x0a, 0x09, 0x36, 0xad, 0x90, 0x60, 0xef, 0x5b, 0x74, 0x5a, 0xb1, 0x32,
+	0x76, 0x84, 0xcf, 0x8b, 0xae, 0x90, 0x60, 0xf7, 0x84, 0x4a, 0x21, 0xaf, 0xac, 0xbf, 0x46, 0xa7,
+	0x39, 0x95, 0x02, 0x5f, 0xa2, 0x4f, 0x8e, 0x2d, 0x1d, 0x3b, 0xa1, 0x70, 0xc9, 0x4b, 0xed, 0x55,
+	0xda, 0x17, 0x06, 0xb5, 0xf6, 0xd7, 0x99, 0xc0, 0xa8, 0x14, 0xcf, 0xd5, 0x9b, 0xcd, 0xce, 0x15,
+	0xa5, 0x43, 0x77, 0x76, 0xb6, 0x9a, 0x6b, 0x2f, 0x39, 0x84, 0xd4, 0xef, 0x0e, 0xea, 0xef, 0xb2,
+	0x4a, 0x0d, 0x14, 0xe0, 0xdf, 0xa0, 0x93, 0x27, 0x2a, 0xde, 0x5a, 0x7d, 0x65, 0xed, 0xd6, 0xa5,
+	0x25, 0x72, 0xab, 0x7f, 0xec, 0xd8, 0xad, 0xfe, 0x71, 0x72, 0xeb, 0xd2, 0xb1, 0xe3, 0xab, 0xf5,
+	0xfa, 0xba, 0xc2, 0x15, 0x14, 0xe7, 0x36, 0xda, 0x2f, 0x7d, 0x28, 0xd5, 0xf9, 0x37, 0x9d, 0xf4,
+	0xe5, 0xb9, 0x92, 0x3b, 0xf9, 0xaa, 0x1f, 0xab, 0x9e, 0x0c, 0x24, 0x9f, 0xb2, 0x4c, 0x37, 0xd1,
+	0x8c, 0xba, 0x45, 0x95, 0x7a, 0xf6, 0x6d, 0x27, 0x4d, 0x41, 0x13, 0x58, 0xfb, 0x95, 0x8d, 0x2d,
+	0x0b, 0xdb, 0x4b, 0x51, 0x61, 0xab, 0x7e, 0x47, 0xaf, 0xb1, 0x25, 0x4a, 0xc1, 0x63, 0x54, 0xad,
+	0xed, 0x09, 0x26, 0xc4, 0x28, 0xab, 0x01, 0x2f, 0x43, 0x93, 0xa1, 0x15, 0x24, 0xe7, 0xe3, 0xd4,
+	0x2c, 0x17, 0x84, 0x93, 0x21, 0xf3, 0xcb, 0x68, 0x2a, 0xb4, 0xe3, 0x89, 0xff, 0x04, 0x35, 0x9c,
+	0x0e, 0xc2, 0xf9, 0x3c, 0xe1, 0x55, 0x4b, 0x9e, 0xef, 0x4f, 0x52, 0xcb, 0x82, 0xb4, 0xe4, 0x89,
+	0x1e, 0xc1, 0x26, 0xd8, 0x7b, 0x8a, 0x1a, 0x66, 0x35, 0x6c, 0x82, 0x63, 0xd8, 0x04, 0x7b, 0x1f,
+	0xa4, 0x86, 0xae, 0x8e, 0x1d, 0xb1, 0xe4, 0x09, 0xfd, 0x21, 0x6a, 0x39, 0xaa, 0x63, 0x13, 0xec,
+	0x1e, 0x46, 0xc5, 0xd0, 0x52, 0x64, 0xe4, 0x87, 0xa9, 0xe9, 0x58, 0x10, 0xba, 0x10, 0xf9, 0x7b,
+	0x05, 0x9a, 0x96, 0xf8, 0xc2, 0xf8, 0x23, 0xd4, 0x78, 0x2a, 0x08, 0xbd, 0x84, 0x49, 0xab, 0x46,
+	0x05, 0x39, 0xfb, 0x51, 0x6a, 0x9a, 0x91, 0x51, 0x41, 0xa6, 0xc6, 0x56, 0x40, 0xb0, 0xf7, 0x31,
+	0x6a, 0x99, 0x8f, 0xac, 0x80, 0x60, 0xc3, 0x0a, 0x08, 0xf6, 0x3e, 0x4e, 0x8d, 0x8b, 0xd1, 0x15,
+	0x44, 0x58, 0xe0, 0x39, 0xf9, 0x09, 0x6a, 0xeb, 0x48, 0x16, 0x78, 0x0e, 0x6a, 0xcc, 0x42, 0x0a,
+	0x7e, 0x12, 0x34, 0xbd, 0x64, 0x16, 0xf2, 0x4d, 0x8d, 0x0a, 0xd2, 0xed, 0x53, 0xd4, 0x70, 0x42,
+	0x46, 0x05, 0x39, 0x55, 0x47, 0xfb, 0x42, 0x3b, 0x25, 0xa5, 0x3e, 0x4d, 0x8d, 0x53, 0x2b, 0x1e,
+	0xe1, 0x51, 0xa6, 0x52, 0x1b, 0xcd, 0x44, 0x60, 0x44, 0xcf, 0x7e, 0x9a, 0x22, 0x0d, 0x23, 0x79,
+	0x34, 0x30, 0xd1, 0xb8, 0xcf, 0xa1, 0x70, 0x5c, 0x93, 0x3c, 0xcf, 0x00, 0x5a, 0x5a, 0xcd, 0x23,
+	0x7c, 0x2a, 0x9a, 0xe7, 0x2c, 0x3a, 0xa0, 0x6c, 0x76, 0xa5, 0x46, 0x3c, 0x0b, 0x14, 0x5a, 0x8b,
+	0x1e, 0x99, 0x22, 0xb2, 0x36, 0x34, 0x91, 0x17, 0x03, 0x11, 0x04, 0x3e, 0x07, 0x21, 0xa5, 0x51,
+	0x3d, 0x11, 0x28, 0x41, 0xde, 0x19, 0x59, 0x89, 0x80, 0xb5, 0xe7, 0x29, 0x84, 0x9d, 0xec, 0x09,
+	0xb8, 0x03, 0x2e, 0x7b, 0x34, 0x7f, 0xee, 0xd5, 0x68, 0x56, 0x6e, 0x78, 0x5d, 0xff, 0xdc, 0x93,
+	0xa5, 0x45, 0x8f, 0xeb, 0x9f, 0x90, 0xd9, 0xeb, 0x35, 0x1d, 0x74, 0x52, 0x61, 0x23, 0x2a, 0x88,
+	0xde, 0x40, 0xe7, 0x4b, 0x41, 0x34, 0x13, 0xf3, 0x00, 0xe5, 0x71, 0x19, 0x1d, 0x34, 0xb8, 0xe0,
+	0x85, 0xf2, 0x8d, 0xd4, 0x47, 0xa8, 0x90, 0x66, 0x63, 0x2e, 0x78, 0xe1, 0x3c, 0x69, 0xf4, 0xc1,
+	0x4b, 0xe8, 0x9b, 0xa8, 0x0f, 0x21, 0x99, 0xe2, 0x2e, 0x78, 0x45, 0x3d, 0x95, 0x14, 0x09, 0xc1,
+	0xde, 0x9b, 0xa9, 0x07, 0x5d, 0x43, 0x19, 0xa3, 0x21, 0x78, 0x40, 0x34, 0x04, 0x7b, 0x6f, 0xa1,
+	0x7e, 0x42, 0x51, 0x65, 0x8e, 0x86, 0xe0, 0x01, 0xd1, 0x10, 0xec, 0xbd, 0x95, 0xfa, 0x10, 0x2a,
+	0xcb, 0x1c, 0x0d, 0xc1, 0xee, 0x29, 0x34, 0x67, 0x70, 0x21, 0x0a, 0xf0, 0xdb, 0xa8, 0x0f, 0x29,
+	0xbb, 0xbc, 0x98, 0x17, 0x51, 0xbe, 0xab, 0xe8, 0x12, 0x53, 0x34, 0xc2, 0xcf, 0xdb, 0xa9, 0x1f,
+	0x45, 0x87, 0x1d, 0x8c, 0x47, 0x24, 0x4a, 0xfb, 0xb2, 0x91, 0x5e, 0x28, 0xf2, 0xef, 0xa0, 0x6e,
+	0x14, 0x61, 0x16, 0xe7, 0x16, 0xca, 0xfe, 0x80, 0xa0, 0x08, 0xf6, 0xde, 0x49, 0xbd, 0x48, 0xa5,
+	0x96, 0x10, 0x14, 0xc1, 0x03, 0x83, 0x22, 0xd8, 0x7b, 0x17, 0xf5, 0xa3, 0x48, 0xb7, 0xa4, 0xa0,
+	0x08, 0x76, 0x5f, 0x69, 0xfc, 0xa2, 0x78, 0xdf, 0xe8, 0x53, 0x3f, 0x31, 0x2d, 0x17, 0xff, 0xc6,
+	0x78, 0x3f, 0xb9, 0xc9, 0xbc, 0x71, 0xa0, 0xb3, 0xbc, 0x9b, 0xfa, 0x32, 0x89, 0x3b, 0xc3, 0x1e,
+	0x82, 0xa6, 0x73, 0x8b, 0x91, 0x6f, 0x68, 0x3f, 0xef, 0xa1, 0xde, 0x06, 0xa9, 0xbd, 0xf8, 0x17,
+	0x00, 0x1d, 0xea, 0x6e, 0x74, 0x99, 0xc1, 0xa9, 0xd2, 0xab, 0xde, 0x9b, 0x4d, 0xdf, 0xab, 0x84,
+	0x24, 0x9b, 0x8b, 0x81, 0xcb, 0xde, 0xf5, 0xd3, 0xe8, 0x72, 0x63, 0x76, 0x29, 0xb5, 0xfe, 0xde,
+	0x6c, 0x9a, 0x5a, 0x2f, 0xc0, 0x2f, 0x35, 0xe4, 0x64, 0x44, 0x17, 0x6e, 0xd6, 0x57, 0xc2, 0x12,
+	0xf9, 0xcf, 0xd9, 0x52, 0x16, 0x74, 0x21, 0x8c, 0x4a, 0x5d, 0xc8, 0xad, 0xa0, 0x02, 0xfd, 0x0b,
+	0x35, 0x63, 0xba, 0x10, 0x86, 0x15, 0x5d, 0xc8, 0xed, 0x78, 0xb9, 0xfb, 0x57, 0x6a, 0xc8, 0x74,
+	0x21, 0x8c, 0xab, 0xba, 0x90, 0x5b, 0xf2, 0xa2, 0xf6, 0x6f, 0xd4, 0xb2, 0x20, 0x2d, 0x55, 0x5d,
+	0x28, 0xb1, 0x09, 0xf6, 0xfe, 0x9d, 0x1a, 0x66, 0x35, 0x6c, 0xa1, 0x73, 0x14, 0x6c, 0x82, 0xbd,
+	0xff, 0xa0, 0x86, 0xae, 0x8e, 0x1d, 0xb1, 0xe4, 0x25, 0xe8, 0x3f, 0xa9, 0xe5, 0xa8, 0x8e, 0x2d,
+	0x74, 0x21, 0xb7, 0x14, 0x15, 0xe2, 0xbf, 0xa8, 0x29, 0xd3, 0x85, 0xf0, 0x81, 0xa6, 0x0b, 0x05,
+	0xbe, 0x30, 0xfe, 0x6f, 0x6a, 0xcc, 0x74, 0x21, 0x5f, 0x81, 0xa6, 0x0b, 0x85, 0x67, 0x56, 0x32,
+	0xfe, 0x87, 0x9a, 0x66, 0x64, 0x54, 0x8a, 0x2e, 0x54, 0x57, 0x40, 0xb0, 0xf7, 0xbf, 0xd4, 0x32,
+	0x1f, 0x59, 0x81, 0xd0, 0x85, 0xda, 0x0a, 0x08, 0xf6, 0xfe, 0x8f, 0x1a, 0x17, 0xa3, 0x2b, 0x88,
+	0xb0, 0xc0, 0xf3, 0xfb, 0xe2, 0x68, 0x29, 0x0b, 0xba, 0x10, 0xc6, 0x55, 0x5d, 0x28, 0xfc, 0x42,
+	0xf6, 0xfe, 0xcc, 0x28, 0x3b, 0xdb, 0x95, 0xcc, 0x2a, 0xba, 0x50, 0xec, 0x26, 0x96, 0x98, 0xaf,
+	0xa7, 0x86, 0x13, 0x32, 0x2a, 0x45, 0x17, 0x72, 0x3b, 0x25, 0xd7, 0x7e, 0x96, 0x1a, 0x0f, 0xa1,
+	0x0b, 0xc1, 0x63, 0x44, 0x17, 0x6a, 0x30, 0x42, 0xd6, 0xfc, 0x1c, 0x45, 0x1a, 0x4e, 0x17, 0x2a,
+	0x60, 0x9a, 0x2e, 0xe4, 0x78, 0xaa, 0x2e, 0xfc, 0x79, 0x40, 0x4b, 0xaf, 0x0b, 0xc1, 0x67, 0x54,
+	0x17, 0x86, 0x9b, 0x5d, 0xa9, 0x15, 0xbf, 0x00, 0x14, 0xa6, 0xd0, 0x85, 0x22, 0x45, 0x22, 0xba,
+	0x30, 0x02, 0x22, 0x08, 0xfc, 0x45, 0x08, 0x29, 0x9d, 0x2e, 0xd4, 0xa0, 0x34, 0x5d, 0x08, 0x9f,
+	0x00, 0x6b, 0xbf, 0x44, 0x21, 0x6c, 0x75, 0x21, 0x38, 0x08, 0x75, 0xa1, 0xe2, 0xcf, 0xfd, 0x49,
+	0x54, 0x68, 0xad, 0x6c, 0xb2, 0x2a, 0x07, 0xa5, 0xee, 0xdb, 0x10, 0xc3, 0x8f, 0x58, 0x00, 0xdc,
+	0xb4, 0xb2, 0x49, 0x0b, 0x22, 0xfd, 0xef, 0x54, 0xbb, 0xbb, 0x75, 0x21, 0xd8, 0xdb, 0x92, 0x23,
+	0xee, 0x59, 0x34, 0x19, 0x22, 0x40, 0x4d, 0xfb, 0x2d, 0x80, 0xb8, 0xca, 0x1e, 0x82, 0x15, 0x54,
+	0xc0, 0x98, 0x68, 0x29, 0x43, 0xee, 0x3a, 0x9a, 0x0a, 0x41, 0x78, 0x8d, 0xfd, 0x6d, 0x40, 0xb9,
+	0xda, 0x1e, 0x05, 0xaa, 0x31, 0xc0, 0x14, 0x5a, 0xea, 0x98, 0x86, 0xc3, 0x2b, 0xf4, 0xef, 0xa4,
+	0xc6, 0x39, 0x6d, 0xc0, 0xe1, 0xf5, 0x3d, 0x42, 0x1a, 0xc1, 0xde, 0xef, 0x0e, 0x43, 0x1a, 0xc1,
+	0x31, 0xd2, 0x08, 0x8e, 0x91, 0x46, 0xb0, 0xf7, 0x7b, 0x43, 0x91, 0x26, 0x60, 0x54, 0xd2, 0x22,
+	0x38, 0xbc, 0xb5, 0x7c, 0x67, 0x28, 0xd2, 0xa2, 0x38, 0xbc, 0x31, 0x35, 0x50, 0x31, 0xc4, 0x11,
+	0xbd, 0xe6, 0xf7, 0x01, 0xe8, 0x1a, 0x7b, 0x20, 0xde, 0xc2, 0x00, 0x69, 0xb2, 0xa5, 0x0d, 0xba,
+	0x4d, 0x34, 0x2d, 0xa9, 0x13, 0x58, 0x7f, 0x00, 0x58, 0xd7, 0xa6, 0x20, 0x6f, 0x5d, 0x05, 0x9b,
+	0x6a, 0xe9, 0xa3, 0xda, 0x6e, 0x80, 0xbe, 0xf8, 0x87, 0xa9, 0x77, 0x03, 0xeb, 0xa0, 0xfa, 0x6e,
+	0x80, 0xa6, 0x1a, 0x63, 0x8f, 0x60, 0xef, 0x8f, 0x86, 0x63, 0x4f, 0x7c, 0x4f, 0x1a, 0x7b, 0x04,
+	0x1b, 0xd8, 0x23, 0xd8, 0xfb, 0xe3, 0x21, 0xd9, 0x13, 0x60, 0x3a, 0x7b, 0x91, 0xed, 0xc7, 0x7b,
+	0xfa, 0x9f, 0xa4, 0xde, 0x7e, 0xd0, 0xfd, 0xf5, 0xed, 0xc7, 0x15, 0x81, 0x96, 0x4e, 0xa0, 0x08,
+	0xfe, 0x34, 0x7d, 0x3a, 0x31, 0x07, 0x91, 0x74, 0x02, 0x3d, 0xa1, 0xee, 0x06, 0xd0, 0x13, 0x7f,
+	0x96, 0x7a, 0x37, 0x30, 0xe5, 0xa1, 0xef, 0x06, 0x10, 0x23, 0x9b, 0x68, 0x5f, 0x08, 0xa2, 0x88,
+	0x91, 0x3f, 0x07, 0xa4, 0x97, 0xdb, 0x23, 0x85, 0x02, 0x04, 0xd0, 0x8a, 0xad, 0xc8, 0xb0, 0x7b,
+	0x01, 0xcd, 0x44, 0x10, 0x45, 0x5b, 0xfd, 0x0b, 0x00, 0xbd, 0x2e, 0x25, 0x28, 0x1f, 0x03, 0xdc,
+	0x7d, 0xad, 0xf8, 0x27, 0xee, 0x36, 0xda, 0x1f, 0x42, 0xab, 0x12, 0xe5, 0x2f, 0x01, 0xf8, 0xa4,
+	0x3d, 0xb0, 0x54, 0x25, 0x00, 0x3b, 0xdd, 0x8a, 0x8e, 0xbb, 0xe7, 0xd1, 0x01, 0xa5, 0xfa, 0x2a,
+	0x6a, 0xe5, 0xbb, 0x80, 0xba, 0x9c, 0xa6, 0x06, 0x87, 0x3a, 0x05, 0x60, 0xdd, 0x56, 0xec, 0x03,
+	0xf7, 0x6e, 0xe4, 0xc5, 0x70, 0x05, 0xd3, 0x7f, 0x05, 0xd0, 0xa7, 0x52, 0x43, 0x6b, 0x5c, 0x1f,
+	0x68, 0x99, 0x3e, 0x13, 0xfb, 0x97, 0x35, 0x3a, 0xd0, 0x1c, 0x7f, 0x9d, 0x6a, 0xff, 0xb2, 0xce,
+	0x2f, 0x45, 0x07, 0xdd, 0xbf, 0xe1, 0x90, 0x48, 0xc6, 0x6d, 0x05, 0xe5, 0x6f, 0x52, 0x25, 0x23,
+	0x34, 0x7e, 0x09, 0x43, 0x93, 0x51, 0x8e, 0x09, 0x9c, 0x9e, 0x82, 0xf3, 0xb7, 0xa9, 0x70, 0x4e,
+	0x1b, 0x70, 0xe4, 0x98, 0x42, 0x1a, 0xc1, 0x00, 0xf3, 0x77, 0x69, 0x49, 0x23, 0x38, 0x46, 0x1a,
+	0x0c, 0xa9, 0xa4, 0x09, 0x94, 0xbf, 0x4f, 0x4d, 0x9a, 0x0a, 0x23, 0x48, 0xd3, 0x71, 0x7a, 0x0a,
+	0xce, 0x3f, 0xa4, 0x26, 0x2d, 0x8a, 0x23, 0xc7, 0x44, 0x4b, 0xe3, 0x6d, 0x14, 0x80, 0xfe, 0x31,
+	0x55, 0x4b, 0xe3, 0x7d, 0x5f, 0x22, 0xd1, 0x6f, 0x43, 0x19, 0x0c, 0xa9, 0x63, 0x25, 0x1a, 0x90,
+	0xfe, 0x29, 0x1d, 0x75, 0xcc, 0x43, 0x84, 0xba, 0x70, 0xcc, 0x2d, 0x21, 0xd4, 0x69, 0xd7, 0x3b,
+	0xeb, 0x00, 0xf1, 0x74, 0xae, 0xe4, 0x94, 0xf7, 0x54, 0x47, 0x82, 0x71, 0x36, 0xc8, 0x2c, 0x0e,
+	0xa1, 0xbd, 0x60, 0x01, 0xf2, 0xf4, 0x19, 0x6a, 0x92, 0xab, 0x8e, 0x04, 0x30, 0x0f, 0xe4, 0xf2,
+	0x4b, 0xd1, 0x04, 0xd8, 0x70, 0xad, 0xfc, 0x2c, 0x35, 0x9a, 0xae, 0x8e, 0x04, 0x30, 0x95, 0x8b,
+	0xdd, 0xd0, 0x8a, 0x2b, 0xdd, 0xe7, 0xa8, 0x55, 0x21, 0xb4, 0xe2, 0x52, 0x55, 0xc5, 0x23, 0xd8,
+	0x7b, 0x9e, 0x1a, 0x65, 0x55, 0x3c, 0x82, 0x75, 0x3c, 0x82, 0xbd, 0xcf, 0x50, 0x23, 0x57, 0xc3,
+	0x53, 0xad, 0xb8, 0x48, 0xfc, 0x2c, 0xb5, 0x1a, 0xd5, 0xf0, 0x08, 0x76, 0x5f, 0x86, 0x0a, 0x60,
+	0x25, 0x64, 0xd7, 0xe7, 0xa8, 0xd9, 0x58, 0x75, 0x24, 0x80, 0xd9, 0x42, 0xa2, 0x95, 0xd1, 0x24,
+	0xc7, 0x14, 0x86, 0x9f, 0xa7, 0x86, 0x53, 0xd5, 0x91, 0x00, 0x1c, 0x84, 0xf2, 0x2a, 0x8c, 0x00,
+	0xb4, 0xd5, 0x2f, 0x53, 0xb3, 0x4c, 0x18, 0x01, 0xa8, 0x23, 0x1d, 0x95, 0x60, 0xef, 0x57, 0xa8,
+	0x55, 0x5e, 0x47, 0x65, 0x07, 0x08, 0x1a, 0x2a, 0xc1, 0xde, 0xaf, 0x52, 0xc3, 0x62, 0x04, 0x55,
+	0x8d, 0x96, 0x6b, 0x92, 0x17, 0xa8, 0x9d, 0x13, 0x46, 0xcb, 0x45, 0x85, 0x64, 0x0e, 0x14, 0xc5,
+	0x17, 0xa8, 0xd5, 0xb8, 0x64, 0x0e, 0x24, 0x41, 0x18, 0x01, 0xe8, 0x81, 0x2f, 0x52, 0xa3, 0x89,
+	0x30, 0x02, 0xe8, 0xe8, 0x2b, 0xa8, 0x08, 0x36, 0x4a, 0x3b, 0xff, 0x52, 0x2e, 0xfd, 0x63, 0xdc,
+	0xea, 0x48, 0x00, 0xa1, 0xca, 0x16, 0x7e, 0x1b, 0xda, 0xa7, 0x42, 0x88, 0xae, 0xf2, 0xe5, 0xdc,
+	0x50, 0xaf, 0xd8, 0x54, 0x47, 0x82, 0x69, 0x09, 0x24, 0xba, 0xc8, 0x1a, 0x82, 0x41, 0xad, 0x61,
+	0x7f, 0x25, 0x37, 0xc4, 0xfb, 0x35, 0xd5, 0x91, 0x60, 0x8a, 0xb9, 0x54, 0x9a, 0xf4, 0x19, 0xe4,
+	0x8a, 0x8d, 0xab, 0x74, 0xe8, 0xaf, 0xe6, 0xd2, 0x3c, 0x8b, 0xae, 0x8e, 0x04, 0x45, 0xbe, 0xdd,
+	0x65, 0x37, 0x3e, 0x87, 0x0e, 0xe8, 0x00, 0x82, 0xb4, 0xaf, 0xe5, 0x52, 0xbe, 0x59, 0x53, 0x1d,
+	0x09, 0xf6, 0xa9, 0x30, 0x82, 0xb0, 0x57, 0xf3, 0xca, 0x01, 0x4c, 0x7d, 0x3d, 0x67, 0xfd, 0x9a,
+	0xe0, 0xcd, 0x74, 0xb6, 0x60, 0x4a, 0xf1, 0x25, 0x73, 0x03, 0xf6, 0xe8, 0xa2, 0xf7, 0x0d, 0xb1,
+	0x49, 0x27, 0x94, 0x4d, 0xba, 0x18, 0xb5, 0xf3, 0xbd, 0x6f, 0x9a, 0xec, 0xfc, 0xa8, 0xdd, 0x92,
+	0xf7, 0x2d, 0x93, 0xdd, 0x92, 0x7b, 0x02, 0xed, 0xe7, 0x19, 0xa4, 0x3f, 0xd0, 0xba, 0x37, 0x2f,
+	0x5f, 0xe8, 0xa9, 0x3a, 0x01, 0x7c, 0x83, 0xfa, 0xf3, 0xac, 0xab, 0x05, 0xed, 0xd1, 0x87, 0x59,
+	0xef, 0xcb, 0xab, 0x6f, 0xf7, 0x54, 0x1d, 0xce, 0x65, 0xe4, 0x59, 0xd6, 0x35, 0x68, 0x26, 0x3a,
+	0x9d, 0x57, 0xd2, 0xfb, 0xf2, 0xca, 0xab, 0x3e, 0x55, 0x27, 0xd8, 0xaf, 0x4f, 0xe7, 0x95, 0xf5,
+	0xea, 0xf8, 0x7c, 0x5e, 0x63, 0xef, 0xcf, 0xcb, 0xf7, 0x7e, 0xe2, 0xd3, 0x4f, 0x8b, 0xc7, 0x60,
+	0xa6, 0xd5, 0x13, 0xec, 0x3d, 0x90, 0x8f, 0xbe, 0x04, 0x64, 0x8c, 0x80, 0xe0, 0xa4, 0x08, 0x08,
+	0xf6, 0x1e, 0xcc, 0x2b, 0x6f, 0x04, 0x99, 0x23, 0x20, 0x38, 0x29, 0x02, 0x82, 0xbd, 0x87, 0xf2,
+	0xf2, 0xf5, 0x20, 0x73, 0x04, 0xec, 0xd1, 0xd7, 0x6c, 0x74, 0xba, 0xa8, 0xd2, 0x0f, 0xe7, 0xd5,
+	0x77, 0x85, 0xaa, 0x4e, 0x70, 0x40, 0xf7, 0x20, 0xea, 0xfb, 0xf5, 0xc8, 0x8b, 0x45, 0x20, 0x7c,
+	0x3c, 0x92, 0xd7, 0x5e, 0x1c, 0xaa, 0x3a, 0xc1, 0x4c, 0x24, 0x0a, 0x51, 0xfb, 0xaf, 0x89, 0x53,
+	0x09, 0x5d, 0xe0, 0xfd, 0x79, 0xed, 0x2d, 0xa2, 0x38, 0x8f, 0xd0, 0x17, 0x92, 0x02, 0x21, 0xd8,
+	0xfb, 0x40, 0x5e, 0x7d, 0xa5, 0x28, 0x21, 0x10, 0x82, 0x93, 0x03, 0x21, 0xd8, 0x7b, 0x34, 0xaf,
+	0xbd, 0x5f, 0x94, 0x14, 0x08, 0xc1, 0xee, 0x0d, 0xf1, 0x2f, 0x84, 0x37, 0x96, 0xc7, 0xf2, 0x86,
+	0x97, 0x8d, 0xe2, 0xdf, 0x0c, 0x6f, 0x38, 0x37, 0x1a, 0x36, 0x06, 0xb4, 0x9e, 0xc7, 0xf3, 0xe6,
+	0x37, 0x8f, 0x0c, 0x7b, 0x04, 0xba, 0xd2, 0xcd, 0x71, 0x6e, 0xa1, 0x3f, 0x3d, 0x91, 0x1f, 0xfc,
+	0x1a, 0x52, 0x9c, 0x6c, 0x68, 0x61, 0xaf, 0x45, 0x73, 0x51, 0x87, 0x4a, 0x33, 0x7b, 0x32, 0x3f,
+	0xf4, 0x3b, 0x49, 0x55, 0x27, 0x98, 0xd5, 0x81, 0xd5, 0xbf, 0x4f, 0x2f, 0x8d, 0x67, 0x8c, 0xd2,
+	0x14, 0x9e, 0xca, 0x0f, 0xf1, 0x82, 0x52, 0xd5, 0x09, 0x0e, 0x46, 0xf3, 0x2c, 0xb4, 0x99, 0xfb,
+	0x29, 0x34, 0xa1, 0xf5, 0xbe, 0x17, 0xf1, 0x4d, 0xf3, 0xb9, 0xbb, 0x10, 0x52, 0xfa, 0xe1, 0x8b,
+	0x89, 0x7c, 0x2d, 0x2a, 0x68, 0x6f, 0x72, 0xda, 0x82, 0x53, 0x07, 0xda, 0x3b, 0x11, 0xe9, 0x1c,
+	0x28, 0x87, 0xe7, 0xd6, 0x0e, 0xae, 0x41, 0xc5, 0xe8, 0xe1, 0xb8, 0x5b, 0x44, 0xd9, 0xdb, 0xeb,
+	0x17, 0x98, 0x93, 0x3d, 0x01, 0xfd, 0x5f, 0x77, 0x3f, 0xca, 0x9d, 0x5f, 0x69, 0xf6, 0xea, 0x5e,
+	0x86, 0x8d, 0xc1, 0x3f, 0x2a, 0x99, 0x2b, 0x9d, 0xb9, 0x6b, 0xd1, 0x74, 0xec, 0xe4, 0x7b, 0x27,
+	0x07, 0x39, 0xd5, 0xc1, 0xcb, 0x91, 0x1b, 0x3f, 0xd4, 0xde, 0xc9, 0xc3, 0xb4, 0xd9, 0xc3, 0xe9,
+	0xdd, 0x7b, 0x28, 0x24, 0x06, 0xc1, 0x4f, 0xe9, 0x76, 0x72, 0x90, 0x4d, 0x0e, 0x62, 0x97, 0x1e,
+	0xdc, 0xe4, 0x20, 0x76, 0xe9, 0x61, 0x54, 0xf5, 0x70, 0x12, 0xed, 0x33, 0x9c, 0x0b, 0xef, 0xe4,
+	0x62, 0x4c, 0x75, 0xb1, 0x8c, 0xf6, 0x9b, 0x8e, 0x7b, 0x77, 0xf2, 0x31, 0x65, 0xe6, 0x52, 0x9e,
+	0xe3, 0xee, 0xe4, 0x20, 0x33, 0x20, 0x8e, 0x5d, 0x52, 0x91, 0x1f, 0x14, 0xc7, 0x2e, 0x7d, 0x14,
+	0xcd, 0x5f, 0x88, 0x72, 0xa0, 0xba, 0x93, 0x07, 0x27, 0x61, 0x53, 0xc8, 0xa3, 0xd2, 0x9d, 0x3c,
+	0x8c, 0x9b, 0xb9, 0x94, 0xa7, 0xa0, 0x3b, 0x39, 0x98, 0x50, 0x1d, 0x5c, 0x40, 0x07, 0x8c, 0x87,
+	0x9b, 0x06, 0x27, 0xaf, 0x54, 0x9d, 0xa4, 0x7d, 0x98, 0xab, 0x40, 0xdf, 0x8d, 0xbc, 0xa4, 0x23,
+	0x4e, 0x03, 0xfa, 0x4d, 0x2a, 0xfa, 0x10, 0x0f, 0x78, 0x95, 0x05, 0xbc, 0x16, 0xcd, 0x98, 0x8f,
+	0x3a, 0x0d, 0xf0, 0x3f, 0xaa, 0xc3, 0xa7, 0x7c, 0xe2, 0xab, 0x80, 0xf7, 0xd0, 0x6c, 0xc2, 0x89,
+	0xa7, 0x01, 0xfd, 0x7a, 0x9d, 0x7a, 0xdb, 0x87, 0xc0, 0x5a, 0xcc, 0x73, 0xc9, 0xa7, 0x9d, 0x06,
+	0xe4, 0x57, 0xe8, 0x71, 0xa7, 0x78, 0x2c, 0x1c, 0xdb, 0xad, 0xfa, 0x99, 0xa7, 0x8a, 0x99, 0xdb,
+	0xa9, 0x97, 0x40, 0xc2, 0x44, 0x8e, 0x33, 0x55, 0x0f, 0xd3, 0xbb, 0xf3, 0x70, 0x3a, 0xd9, 0x43,
+	0x61, 0x77, 0xfd, 0x4c, 0x3f, 0x83, 0x54, 0x1d, 0x64, 0x77, 0x1f, 0x44, 0x82, 0x07, 0x77, 0xf7,
+	0x41, 0x24, 0x78, 0x18, 0xdd, 0xc9, 0x03, 0x94, 0xd0, 0xe8, 0x89, 0xa0, 0xea, 0x62, 0x6c, 0x97,
+	0x61, 0xe8, 0x47, 0x7d, 0xaa, 0x87, 0xf1, 0x9d, 0x3c, 0x5c, 0x85, 0x90, 0xfc, 0x7b, 0xdc, 0x5a,
+	0x97, 0x54, 0xd1, 0xcc, 0xa9, 0xbb, 0xba, 0xf5, 0xf6, 0x76, 0xa3, 0xd3, 0x1e, 0x4e, 0x63, 0xa9,
+	0x9e, 0x86, 0xd2, 0x4a, 0x87, 0xe6, 0xd1, 0xb8, 0x14, 0xdb, 0xe3, 0x08, 0x74, 0x71, 0x71, 0x84,
+	0xfe, 0xef, 0x72, 0x70, 0xf2, 0xc7, 0x6f, 0x2e, 0x3a, 0xee, 0x5e, 0x34, 0x76, 0x5d, 0xf5, 0x64,
+	0xf0, 0xaa, 0x1b, 0x4f, 0x15, 0x33, 0x87, 0xc7, 0xf7, 0xdc, 0x53, 0x2b, 0x5e, 0xbc, 0x78, 0xf1,
+	0x62, 0xc6, 0x3f, 0x8b, 0x66, 0xeb, 0x62, 0x11, 0x67, 0xb4, 0x3b, 0x8b, 0xae, 0x85, 0xe8, 0xf4,
+	0xee, 0xa9, 0x31, 0x96, 0x0f, 0xd4, 0xa3, 0xd4, 0xd0, 0xaf, 0xc8, 0xaf, 0x23, 0xcf, 0x00, 0x02,
+	0x7f, 0x90, 0xdb, 0xa0, 0xbc, 0xa1, 0xc6, 0xb2, 0x75, 0x26, 0x86, 0xc2, 0x72, 0xdb, 0xdf, 0x40,
+	0x07, 0x0d, 0x30, 0xdb, 0xf6, 0x38, 0x6f, 0xac, 0xb1, 0x9c, 0x9e, 0x8d, 0xe1, 0x40, 0x09, 0x48,
+	0x00, 0xea, 0xd9, 0x03, 0xbd, 0xa9, 0xc6, 0x52, 0x3f, 0x0e, 0x04, 0x95, 0x22, 0x99, 0x38, 0x82,
+	0xad, 0x70, 0xde, 0x5c, 0x63, 0x15, 0xc2, 0x48, 0x1c, 0xc1, 0x03, 0x88, 0xb3, 0xc4, 0x79, 0x4b,
+	0x8d, 0xd5, 0x11, 0x33, 0x71, 0x89, 0x40, 0x3d, 0x7b, 0xa0, 0xb7, 0xd6, 0x58, 0xb9, 0x31, 0x13,
+	0x47, 0xb0, 0xdf, 0x40, 0x73, 0x06, 0x20, 0x71, 0x72, 0x61, 0x83, 0xf4, 0xb6, 0x1a, 0xab, 0x4a,
+	0x5e, 0x0c, 0x89, 0x57, 0x31, 0xff, 0x76, 0x74, 0x89, 0x89, 0xbc, 0x34, 0x58, 0x6f, 0xaf, 0x31,
+	0xd1, 0x7a, 0x30, 0x4e, 0x1f, 0xf7, 0x96, 0xb0, 0x21, 0xd6, 0xe1, 0xd5, 0x3e, 0x0b, 0xa4, 0x77,
+	0xd4, 0x98, 0xba, 0x8d, 0x6f, 0x08, 0xa6, 0x8d, 0x07, 0xd1, 0x67, 0xf9, 0x45, 0xbd, 0xb3, 0xc6,
+	0x34, 0x70, 0x02, 0x7d, 0x04, 0x0f, 0xa4, 0xcf, 0x12, 0xeb, 0x5d, 0x35, 0xa6, 0x95, 0x93, 0xe8,
+	0x4b, 0xdc, 0x7f, 0x70, 0xd8, 0x63, 0x05, 0xd5, 0xaf, 0x31, 0x51, 0x1d, 0xdf, 0x7f, 0xa0, 0xc9,
+	0x93, 0x32, 0x0a, 0x0e, 0x77, 0x6c, 0x80, 0xde, 0x5d, 0x63, 0x5d, 0xc0, 0x90, 0x51, 0x70, 0xe2,
+	0x6b, 0xde, 0x10, 0xec, 0xac, 0xc8, 0x0a, 0xe7, 0x3d, 0x35, 0x26, 0xd1, 0xe3, 0x1b, 0x82, 0x09,
+	0x7c, 0xff, 0x01, 0x07, 0x5d, 0x66, 0xc0, 0x91, 0x47, 0x48, 0x56, 0x60, 0xef, 0xad, 0x0d, 0x21,
+	0xe5, 0xe7, 0x62, 0x4b, 0x0c, 0x3f, 0xf3, 0x1f, 0x77, 0x50, 0x29, 0x71, 0x99, 0xfc, 0xf1, 0x80,
+	0xd5, 0x4a, 0xef, 0xad, 0x0d, 0x27, 0xfb, 0x2f, 0x33, 0x2f, 0x96, 0x7f, 0xec, 0x3f, 0xec, 0xa0,
+	0xef, 0x33, 0xac, 0x57, 0x79, 0x2e, 0x63, 0xb5, 0xda, 0xf7, 0xd5, 0x86, 0xf9, 0x2b, 0xe1, 0x92,
+	0xd8, 0x5a, 0xe5, 0x87, 0xfe, 0x7d, 0x0e, 0xba, 0xdc, 0xd8, 0x23, 0xe4, 0x31, 0x9e, 0xd5, 0x52,
+	0xef, 0xab, 0xa5, 0xfa, 0x93, 0xe2, 0x52, 0x43, 0x67, 0x09, 0x3f, 0xf5, 0x1f, 0x75, 0xd0, 0xa1,
+	0x01, 0x8b, 0x4c, 0xb3, 0x01, 0xee, 0xaf, 0xa5, 0xfd, 0x03, 0xe4, 0xf2, 0xa4, 0xa5, 0x8a, 0x2f,
+	0xff, 0x21, 0x07, 0xc9, 0x74, 0xd3, 0x6f, 0x5a, 0xdb, 0xac, 0xf0, 0x81, 0x1a, 0x7b, 0x1c, 0x65,
+	0xf3, 0xa6, 0x8d, 0x59, 0xc0, 0x06, 0x09, 0xab, 0xf1, 0x9b, 0x6a, 0x8d, 0xd1, 0x1f, 0x18, 0xd9,
+	0x25, 0x53, 0x5f, 0xbd, 0x2e, 0x2e, 0xd1, 0xb4, 0xe7, 0x4b, 0xfe, 0xa6, 0x5a, 0x3a, 0x23, 0xcf,
+	0x98, 0xec, 0xb2, 0xa1, 0xaf, 0x5f, 0x37, 0x9f, 0x8d, 0x03, 0x82, 0x6e, 0xbc, 0x43, 0xed, 0x76,
+	0xd1, 0xc7, 0x52, 0x76, 0xbb, 0xba, 0xaf, 0x5d, 0x57, 0xf7, 0xe2, 0x88, 0x5c, 0x41, 0x6e, 0x9a,
+	0x21, 0x53, 0x48, 0xc8, 0xfb, 0xfb, 0xea, 0x75, 0x77, 0x03, 0x22, 0x97, 0x92, 0xdd, 0x44, 0x5a,
+	0x2d, 0xbb, 0xec, 0x03, 0xfd, 0xf8, 0x75, 0x79, 0x33, 0xb5, 0x04, 0x0f, 0xa2, 0xd6, 0x12, 0xf6,
+	0xc1, 0xbe, 0x76, 0xdd, 0x3e, 0x81, 0x5a, 0x82, 0x07, 0x51, 0x6b, 0x09, 0xf9, 0x50, 0x5f, 0xbd,
+	0xae, 0x9f, 0x40, 0x2d, 0xc1, 0x7e, 0x57, 0x95, 0x30, 0xb1, 0xa7, 0x72, 0x56, 0x90, 0x0f, 0xf7,
+	0xf5, 0xeb, 0xfe, 0x07, 0xe3, 0xa0, 0x42, 0x77, 0xde, 0x89, 0x2e, 0x35, 0x52, 0x9b, 0x06, 0xf6,
+	0x91, 0x7e, 0xe4, 0xe7, 0x02, 0xe6, 0x0c, 0xf4, 0x0a, 0x0d, 0x7a, 0x87, 0x79, 0x27, 0xd9, 0x8b,
+	0xd0, 0xf7, 0xf7, 0x23, 0x3f, 0x37, 0x60, 0xd8, 0x46, 0xa0, 0x47, 0x07, 0x31, 0x6c, 0xf9, 0xa5,
+	0x7e, 0xa0, 0xaf, 0xff, 0x5c, 0x41, 0x12, 0xc3, 0x04, 0x0f, 0x66, 0xd8, 0x12, 0xf6, 0xd1, 0x7e,
+	0xe4, 0xe7, 0x0e, 0x12, 0x19, 0x26, 0xd8, 0xbf, 0x60, 0xde, 0xc2, 0x29, 0x74, 0xea, 0x63, 0x7d,
+	0xe3, 0xcf, 0x25, 0x18, 0xf6, 0x32, 0x17, 0xae, 0xaf, 0x4b, 0x48, 0x58, 0x7b, 0xe5, 0xfa, 0x78,
+	0x3f, 0xe9, 0xe7, 0x16, 0x4c, 0xb9, 0x0b, 0x6a, 0xf6, 0xf5, 0x8e, 0x79, 0x6f, 0xd9, 0xeb, 0xd9,
+	0x27, 0xfa, 0x3b, 0xfd, 0x5e, 0x83, 0x61, 0xb3, 0x81, 0xd6, 0x7d, 0x42, 0x13, 0x65, 0xa6, 0xe7,
+	0xa5, 0x56, 0x2b, 0x79, 0xb2, 0xff, 0x3d, 0xf8, 0xc1, 0x87, 0x4b, 0xe2, 0x8b, 0x95, 0xaa, 0xf7,
+	0x31, 0x4d, 0xf5, 0x9a, 0x9f, 0xb1, 0x5a, 0x2d, 0xf9, 0xa9, 0xfe, 0x50, 0xbf, 0x18, 0x71, 0x99,
+	0xa9, 0x36, 0x4b, 0x95, 0xb6, 0xa6, 0x1e, 0x39, 0x69, 0x97, 0x05, 0xed, 0x16, 0xf9, 0x5d, 0x87,
+	0xdd, 0x2c, 0x94, 0x67, 0x4e, 0x81, 0x72, 0xc5, 0xd0, 0x5f, 0x57, 0x45, 0x8b, 0x7e, 0xd9, 0xd0,
+	0x0a, 0xe6, 0x83, 0x0c, 0x46, 0x3d, 0x74, 0x0a, 0xd4, 0x2b, 0x8a, 0xfe, 0x39, 0x75, 0xc7, 0x46,
+	0x2e, 0x2b, 0x5a, 0x01, 0x7d, 0x88, 0x01, 0xa9, 0xa7, 0x4e, 0x81, 0x76, 0xc5, 0x31, 0x01, 0x29,
+	0x85, 0x64, 0xf8, 0x30, 0x43, 0x2a, 0x18, 0x90, 0xb8, 0x56, 0x48, 0xe4, 0xce, 0xb2, 0xe8, 0x7d,
+	0x84, 0x01, 0x65, 0xcd, 0xdc, 0x11, 0x3c, 0x80, 0x3b, 0x4b, 0xa0, 0x8f, 0x32, 0x20, 0x37, 0x81,
+	0xbb, 0x44, 0xa4, 0x14, 0x9a, 0xe0, 0x63, 0x0c, 0x69, 0x34, 0x81, 0x3b, 0x82, 0xfd, 0xdb, 0xd4,
+	0x02, 0x1a, 0xbd, 0xec, 0x69, 0x05, 0xf5, 0x71, 0x06, 0xa5, 0x1e, 0x3d, 0x05, 0xfa, 0x15, 0x51,
+	0xbf, 0xa9, 0xb6, 0xc5, 0xd8, 0x65, 0x51, 0x2b, 0xb0, 0x4f, 0x30, 0x30, 0xf5, 0xec, 0x29, 0x88,
+	0x5c, 0x31, 0x4d, 0xd8, 0x15, 0xf6, 0x6d, 0xff, 0x93, 0x0c, 0x2a, 0x63, 0xd8, 0x15, 0xd0, 0xec,
+	0x07, 0x30, 0x68, 0xf9, 0x65, 0x7d, 0x8a, 0x21, 0xe5, 0x93, 0x18, 0x24, 0x78, 0x20, 0x83, 0x96,
+	0x60, 0x9f, 0x66, 0x60, 0xc5, 0x44, 0x06, 0x13, 0x77, 0x61, 0x8a, 0xb6, 0xfe, 0x34, 0xc3, 0x72,
+	0x0c, 0xbb, 0x90, 0xb7, 0xf1, 0x84, 0xcc, 0xb2, 0xef, 0xe2, 0xcf, 0x30, 0xa4, 0x71, 0x53, 0x66,
+	0x41, 0xcb, 0x36, 0xef, 0x0a, 0xfb, 0x86, 0xfd, 0x2c, 0x03, 0x9a, 0x30, 0xec, 0x0a, 0xe8, 0xca,
+	0x0f, 0x6a, 0x27, 0x50, 0x86, 0xdb, 0xbe, 0x56, 0x68, 0xcf, 0x31, 0xb4, 0xe1, 0x8f, 0xa0, 0x82,
+	0xe8, 0x1d, 0x61, 0xaa, 0x1e, 0x4a, 0x89, 0xeb, 0x4c, 0x73, 0x02, 0xf1, 0x3c, 0x5b, 0xea, 0xf7,
+	0xe4, 0x0c, 0x2a, 0x30, 0x5c, 0x32, 0xf6, 0x1f, 0xd1, 0xe4, 0x8e, 0xe9, 0xbe, 0xb1, 0xd5, 0x72,
+	0x3f, 0xc3, 0x97, 0x3b, 0xf4, 0x21, 0x54, 0x10, 0xbb, 0xa5, 0xec, 0xdf, 0xaf, 0x1d, 0x42, 0x19,
+	0x2f, 0x2c, 0x5b, 0xad, 0xf5, 0xb3, 0x7c, 0x17, 0xa4, 0x3f, 0x85, 0x0a, 0xe2, 0xd7, 0x9c, 0xa9,
+	0x1c, 0x3b, 0x34, 0x60, 0x95, 0x69, 0xf6, 0xc0, 0xe7, 0x38, 0xa9, 0x43, 0x1d, 0x43, 0x05, 0xc6,
+	0x7b, 0xd2, 0xfe, 0xc3, 0xea, 0x31, 0x94, 0x7e, 0xc3, 0xd9, 0x66, 0x89, 0x9f, 0x67, 0x4b, 0x4c,
+	0x79, 0x0e, 0xa5, 0xdf, 0xb3, 0x4e, 0x58, 0xce, 0x72, 0x41, 0xbc, 0xaa, 0xdf, 0x6b, 0x37, 0x3a,
+	0xed, 0xe5, 0xd9, 0xf8, 0x3b, 0x92, 0xec, 0x83, 0xc3, 0x8b, 0x68, 0xaf, 0xfa, 0x9e, 0xb8, 0xe9,
+	0x81, 0x28, 0x72, 0x27, 0xe4, 0x03, 0xd1, 0x17, 0x9c, 0xe5, 0xd7, 0xbc, 0xe6, 0xd5, 0x1b, 0x8d,
+	0xee, 0xb9, 0xde, 0xea, 0xfc, 0xd9, 0x4e, 0xeb, 0x28, 0x2c, 0xfd, 0x28, 0x5b, 0xf6, 0x6a, 0x6f,
+	0xfd, 0xe8, 0x79, 0xff, 0x68, 0xa3, 0xdd, 0xad, 0x6f, 0xb5, 0x57, 0x9a, 0xec, 0xa7, 0x6e, 0xd9,
+	0x07, 0xdb, 0x47, 0x9b, 0xf5, 0x8d, 0x95, 0xb3, 0x17, 0x8e, 0xee, 0xf0, 0xe3, 0xb8, 0xff, 0x1f,
+	0x00, 0x00, 0xff, 0xff, 0xff, 0xb0, 0xa8, 0xaf, 0x3e, 0x57, 0x00, 0x00,
+}
diff --git a/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09/test.proto b/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09/test.proto
new file mode 100644
index 0000000..b53a638
--- /dev/null
+++ b/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09/test.proto
@@ -0,0 +1,333 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto2";
+
+package google.golang.org.proto2_20180430;
+option go_package = "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09";
+
+enum SiblingEnum {
+	ALPHA   = 0;
+	BRAVO   = 10;
+	CHARLIE = 200;
+}
+
+message SiblingMessage {
+	optional string  f1 = 1;
+	required string  f2 = 2;
+	repeated string  f3 = 3;
+	optional Message f4 = 4;
+}
+
+message Message {
+	enum ChildEnum {
+		ALPHA   = 0;
+		BRAVO   = 1;
+		CHARLIE = 2;
+	}
+	message ChildMessage {
+		optional string  f1 = 1;
+		required string  f2 = 2;
+		repeated string  f3 = 3;
+	    optional Message f4 = 4;
+	}
+	optional group NamedGroup = 1 {
+		optional string  f1 = 1;
+		required string  f2 = 2;
+		repeated string  f3 = 3;
+	    optional Message f4 = 4;
+	}
+
+	// Optional fields.
+	optional bool     optional_bool     = 100;
+	optional int32    optional_int32    = 101;
+	optional sint32   optional_sint32   = 102;
+	optional uint32   optional_uint32   = 103;
+	optional int64    optional_int64    = 104;
+	optional sint64   optional_sint64   = 105;
+	optional uint64   optional_uint64   = 106;
+	optional fixed32  optional_fixed32  = 107;
+	optional sfixed32 optional_sfixed32 = 108;
+	optional float    optional_float    = 109;
+	optional fixed64  optional_fixed64  = 110;
+	optional sfixed64 optional_sfixed64 = 111;
+	optional double   optional_double   = 112;
+	optional string   optional_string   = 113;
+	optional bytes    optional_bytes    = 114;
+
+	optional ChildEnum      optional_child_enum      = 115;
+	optional ChildMessage   optional_child_message   = 116;
+	optional NamedGroup     optional_named_group     = 117;
+	optional SiblingEnum    optional_sibling_enum    = 118;
+	optional SiblingMessage optional_sibling_message = 119;
+	optional group OptionalGroup = 120 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+
+	// Optional default fields.
+	optional bool      defaulted_bool     = 200 [default = true];
+	optional int32     defaulted_int32    = 201 [default = -12345];
+	optional sint32    defaulted_sint32   = 202 [default = -3200];
+	optional uint32    defaulted_uint32   = 203 [default = 3200];
+	optional int64     defaulted_int64    = 204 [default = -123456789];
+	optional sint64    defaulted_sint64   = 205 [default = -6400];
+	optional uint64    defaulted_uint64   = 206 [default = 6400];
+	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
+	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
+	optional float     defaulted_float    = 209 [default = 3.14159];
+	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
+	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
+	optional double    defaulted_double   = 212 [default = 3.14159265359];
+	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
+	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];
+
+	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
+	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];
+
+	// Required fields.
+	required bool     required_bool     = 300;
+	required int32    required_int32    = 301;
+	required sint32   required_sint32   = 302;
+	required uint32   required_uint32   = 303;
+	required int64    required_int64    = 304;
+	required sint64   required_sint64   = 305;
+	required uint64   required_uint64   = 306;
+	required fixed32  required_fixed32  = 307;
+	required sfixed32 required_sfixed32 = 308;
+	required float    required_float    = 309;
+	required fixed64  required_fixed64  = 310;
+	required sfixed64 required_sfixed64 = 311;
+	required double   required_double   = 312;
+	required string   required_string   = 313;
+	required bytes    required_bytes    = 314;
+
+	required ChildEnum      required_child_enum      = 315;
+	required ChildMessage   required_child_message   = 316;
+	required NamedGroup     required_named_group     = 317;
+	required SiblingEnum    required_sibling_enum    = 318;
+	required SiblingMessage required_sibling_message = 319;
+	required group RequiredGroup = 320 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+	// Required default fields.
+	required bool      required_defaulted_bool     = 400 [default = true];
+	required int32     required_defaulted_int32    = 401 [default = -12345];
+	required sint32    required_defaulted_sint32   = 402 [default = -3200];
+	required uint32    required_defaulted_uint32   = 403 [default = 3200];
+	required int64     required_defaulted_int64    = 404 [default = -123456789];
+	required sint64    required_defaulted_sint64   = 405 [default = -6400];
+	required uint64    required_defaulted_uint64   = 406 [default = 6400];
+	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
+	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
+	required float     required_defaulted_float    = 409 [default = 3.14159];
+	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
+	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
+	required double    required_defaulted_double   = 412 [default = 3.14159265359];
+	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
+	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];
+
+	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
+	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];
+
+	// Repeated fields.
+	repeated bool     repeated_bool     = 500;
+	repeated int32    repeated_int32    = 501;
+	repeated sint32   repeated_sint32   = 502;
+	repeated uint32   repeated_uint32   = 503;
+	repeated int64    repeated_int64    = 504;
+	repeated sint64   repeated_sint64   = 505;
+	repeated uint64   repeated_uint64   = 506;
+	repeated fixed32  repeated_fixed32  = 507;
+	repeated sfixed32 repeated_sfixed32 = 508;
+	repeated float    repeated_float    = 509;
+	repeated fixed64  repeated_fixed64  = 510;
+	repeated sfixed64 repeated_sfixed64 = 511;
+	repeated double   repeated_double   = 512;
+	repeated string   repeated_string   = 513;
+	repeated bytes    repeated_bytes    = 514;
+
+	repeated ChildEnum      repeated_child_enum      = 515;
+	repeated ChildMessage   repeated_child_message   = 516;
+	repeated NamedGroup     repeated_named_group     = 517;
+	repeated SiblingEnum    repeated_sibling_enum    = 518;
+	repeated SiblingMessage repeated_sibling_message = 519;
+	repeated group RepeatedGroup = 520 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+
+	// Map fields.
+	map<bool, bool>     map_bool_bool     = 600;
+	map<bool, int32>    map_bool_int32    = 601;
+	map<bool, sint32>   map_bool_sint32   = 602;
+	map<bool, uint32>   map_bool_uint32   = 603;
+	map<bool, int64>    map_bool_int64    = 604;
+	map<bool, sint64>   map_bool_sint64   = 605;
+	map<bool, uint64>   map_bool_uint64   = 606;
+	map<bool, fixed32>  map_bool_fixed32  = 607;
+	map<bool, sfixed32> map_bool_sfixed32 = 608;
+	map<bool, float>    map_bool_float    = 609;
+	map<bool, fixed64>  map_bool_fixed64  = 610;
+	map<bool, sfixed64> map_bool_sfixed64 = 611;
+	map<bool, double>   map_bool_double   = 612;
+	map<bool, string>   map_bool_string   = 613;
+	map<bool, bytes>    map_bool_bytes    = 614;
+
+	map<bool, ChildEnum>      map_bool_child_enum      = 615;
+	map<bool, ChildMessage>   map_bool_child_message   = 616;
+	map<bool, NamedGroup>     map_bool_named_group     = 617;
+	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
+	map<bool, SiblingMessage> map_bool_sibling_message = 619;
+
+	map<int32, bool>   map_int32_bool   = 620;
+	map<sint32, bool>  map_sint32_bool  = 621;
+	map<uint32, bool>  map_uint32_bool  = 622;
+	map<int64, bool>   map_int64_bool   = 623;
+	map<sint64, bool>  map_sint64_bool  = 624;
+	map<uint64, bool>  map_uint64_bool  = 625;
+	map<fixed32, bool> map_fixed32_bool = 626;
+	map<string, bool>  map_string_bool  = 627;
+
+	// Oneof fields.
+	oneof oneof_union {
+		bool     oneof_bool     = 700;
+		int32    oneof_int32    = 701;
+		sint32   oneof_sint32   = 702;
+		uint32   oneof_uint32   = 703;
+		int64    oneof_int64    = 704;
+		sint64   oneof_sint64   = 705;
+		uint64   oneof_uint64   = 706;
+		fixed32  oneof_fixed32  = 707;
+		sfixed32 oneof_sfixed32 = 708;
+		float    oneof_float    = 709;
+		fixed64  oneof_fixed64  = 710;
+		sfixed64 oneof_sfixed64 = 711;
+		double   oneof_double   = 712;
+		string   oneof_string   = 713;
+		bytes    oneof_bytes    = 714;
+
+		ChildEnum      oneof_child_enum      = 715;
+		ChildMessage   oneof_child_message   = 716;
+		NamedGroup     oneof_named_group     = 717;
+		SiblingEnum    oneof_sibling_enum    = 718;
+		SiblingMessage oneof_sibling_message = 719;
+		group OneofGroup = 720 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+
+		string oneof_string1 = 721;
+		string oneof_string2 = 722;
+		string oneof_string3 = 723;
+	}
+
+	// Oneof default fields.
+	oneof oneof_defaulted_union {
+		bool      oneof_defaulted_bool     = 800 [default = true];
+		int32     oneof_defaulted_int32    = 801 [default = -12345];
+		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
+		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
+		int64     oneof_defaulted_int64    = 804 [default = -123456789];
+		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
+		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
+		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
+		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
+		float     oneof_defaulted_float    = 809 [default = 3.14159];
+		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
+		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
+		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
+		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
+		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];
+
+		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
+		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
+	}
+
+	// Extension fields.
+	extend Message {
+		// Optional fields.
+		optional bool     extension_optional_bool     = 10000;
+		optional int32    extension_optional_int32    = 10001;
+		optional sint32   extension_optional_sint32   = 10002;
+		optional uint32   extension_optional_uint32   = 10003;
+		optional int64    extension_optional_int64    = 10004;
+		optional sint64   extension_optional_sint64   = 10005;
+		optional uint64   extension_optional_uint64   = 10006;
+		optional fixed32  extension_optional_fixed32  = 10007;
+		optional sfixed32 extension_optional_sfixed32 = 10008;
+		optional float    extension_optional_float    = 10009;
+		optional fixed64  extension_optional_fixed64  = 10010;
+		optional sfixed64 extension_optional_sfixed64 = 10011;
+		optional double   extension_optional_double   = 10012;
+		optional string   extension_optional_string   = 10013;
+		optional bytes    extension_optional_bytes    = 10014;
+
+		optional ChildEnum      extension_optional_child_enum      = 10015;
+		optional ChildMessage   extension_optional_child_message   = 10016;
+		optional NamedGroup     extension_optional_named_group     = 10017;
+		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
+		optional SiblingMessage extension_optional_sibling_message = 10019;
+		optional group ExtensionOptionalGroup = 10020 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+
+		// Optional default fields.
+		optional bool      extension_defaulted_bool     = 20000 [default = true];
+		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
+		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
+		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
+		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
+		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
+		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
+		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
+		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
+		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
+		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
+		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
+		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
+		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
+		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];
+
+		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
+		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];
+
+		// Repeated fields.
+		repeated bool     extension_repeated_bool     = 30000;
+		repeated int32    extension_repeated_int32    = 30001;
+		repeated sint32   extension_repeated_sint32   = 30002;
+		repeated uint32   extension_repeated_uint32   = 30003;
+		repeated int64    extension_repeated_int64    = 30004;
+		repeated sint64   extension_repeated_sint64   = 30005;
+		repeated uint64   extension_repeated_uint64   = 30006;
+		repeated fixed32  extension_repeated_fixed32  = 30007;
+		repeated sfixed32 extension_repeated_sfixed32 = 30008;
+		repeated float    extension_repeated_float    = 30009;
+		repeated fixed64  extension_repeated_fixed64  = 30010;
+		repeated sfixed64 extension_repeated_sfixed64 = 30011;
+		repeated double   extension_repeated_double   = 30012;
+		repeated string   extension_repeated_string   = 30013;
+		repeated bytes    extension_repeated_bytes    = 30014;
+
+		repeated ChildEnum      extension_repeated_child_enum      = 30015;
+		repeated ChildMessage   extension_repeated_child_message   = 30016;
+		repeated NamedGroup     extension_repeated_named_group     = 30017;
+		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
+		repeated SiblingMessage extension_repeated_sibling_message = 30019;
+		repeated group ExtensionRepeatedGroup = 30020 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+	}
+
+	extensions 10000 to max;
+}
diff --git a/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61/test.pb.go b/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61/test.pb.go
new file mode 100644
index 0000000..c85a645
--- /dev/null
+++ b/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61/test.pb.go
@@ -0,0 +1,3901 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: proto2.v1.2.0-20180814-aa810b61/test.proto
+
+package proto2_v1_2_0_20180814_aa810b61 // import "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type SiblingEnum int32
+
+const (
+	SiblingEnum_ALPHA   SiblingEnum = 0
+	SiblingEnum_BRAVO   SiblingEnum = 10
+	SiblingEnum_CHARLIE SiblingEnum = 200
+)
+
+var SiblingEnum_name = map[int32]string{
+	0:   "ALPHA",
+	10:  "BRAVO",
+	200: "CHARLIE",
+}
+var SiblingEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   10,
+	"CHARLIE": 200,
+}
+
+func (x SiblingEnum) Enum() *SiblingEnum {
+	p := new(SiblingEnum)
+	*p = x
+	return p
+}
+func (x SiblingEnum) String() string {
+	return proto.EnumName(SiblingEnum_name, int32(x))
+}
+func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
+	if err != nil {
+		return err
+	}
+	*x = SiblingEnum(value)
+	return nil
+}
+func (SiblingEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{0}
+}
+
+type Message_ChildEnum int32
+
+const (
+	Message_ALPHA   Message_ChildEnum = 0
+	Message_BRAVO   Message_ChildEnum = 1
+	Message_CHARLIE Message_ChildEnum = 2
+)
+
+var Message_ChildEnum_name = map[int32]string{
+	0: "ALPHA",
+	1: "BRAVO",
+	2: "CHARLIE",
+}
+var Message_ChildEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   1,
+	"CHARLIE": 2,
+}
+
+func (x Message_ChildEnum) Enum() *Message_ChildEnum {
+	p := new(Message_ChildEnum)
+	*p = x
+	return p
+}
+func (x Message_ChildEnum) String() string {
+	return proto.EnumName(Message_ChildEnum_name, int32(x))
+}
+func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
+	if err != nil {
+		return err
+	}
+	*x = Message_ChildEnum(value)
+	return nil
+}
+func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 0}
+}
+
+type SiblingMessage struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SiblingMessage) Reset()         { *m = SiblingMessage{} }
+func (m *SiblingMessage) String() string { return proto.CompactTextString(m) }
+func (*SiblingMessage) ProtoMessage()    {}
+func (*SiblingMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{0}
+}
+func (m *SiblingMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SiblingMessage.Unmarshal(m, b)
+}
+func (m *SiblingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SiblingMessage.Marshal(b, m, deterministic)
+}
+func (dst *SiblingMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SiblingMessage.Merge(dst, src)
+}
+func (m *SiblingMessage) XXX_Size() int {
+	return xxx_messageInfo_SiblingMessage.Size(m)
+}
+func (m *SiblingMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_SiblingMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SiblingMessage proto.InternalMessageInfo
+
+func (m *SiblingMessage) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *SiblingMessage) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message struct {
+	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
+	// Optional fields.
+	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
+	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
+	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
+	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum" json:"optional_child_enum,omitempty"`
+	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
+	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
+	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum" json:"optional_sibling_enum,omitempty"`
+	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
+	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
+	// Optional default fields.
+	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
+	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
+	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
+	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
+	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
+	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
+	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
+	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
+	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
+	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
+	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
+	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
+	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
+	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
+	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
+	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
+	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
+	// Required fields.
+	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
+	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
+	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
+	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
+	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
+	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
+	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
+	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
+	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
+	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
+	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
+	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
+	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
+	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
+	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
+	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum" json:"required_child_enum,omitempty"`
+	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
+	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
+	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum" json:"required_sibling_enum,omitempty"`
+	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
+	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
+	// Required default fields.
+	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
+	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
+	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
+	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
+	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
+	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
+	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
+	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
+	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
+	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
+	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
+	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
+	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
+	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
+	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
+	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
+	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
+	// Repeated fields.
+	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
+	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
+	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
+	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
+	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
+	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
+	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	// Map fields.
+	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180814.Message_ChildEnum"`
+	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180814.SiblingEnum"`
+	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	// Oneof fields.
+	//
+	// Types that are valid to be assigned to OneofUnion:
+	//	*Message_OneofBool
+	//	*Message_OneofInt32
+	//	*Message_OneofSint32
+	//	*Message_OneofUint32
+	//	*Message_OneofInt64
+	//	*Message_OneofSint64
+	//	*Message_OneofUint64
+	//	*Message_OneofFixed32
+	//	*Message_OneofSfixed32
+	//	*Message_OneofFloat
+	//	*Message_OneofFixed64
+	//	*Message_OneofSfixed64
+	//	*Message_OneofDouble
+	//	*Message_OneofString
+	//	*Message_OneofBytes
+	//	*Message_OneofChildEnum
+	//	*Message_OneofChildMessage
+	//	*Message_OneofNamedGroup
+	//	*Message_OneofSiblingEnum
+	//	*Message_OneofSiblingMessage
+	//	*Message_Oneofgroup
+	//	*Message_OneofString1
+	//	*Message_OneofString2
+	//	*Message_OneofString3
+	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
+	// Oneof default fields.
+	//
+	// Types that are valid to be assigned to OneofDefaultedUnion:
+	//	*Message_OneofDefaultedBool
+	//	*Message_OneofDefaultedInt32
+	//	*Message_OneofDefaultedSint32
+	//	*Message_OneofDefaultedUint32
+	//	*Message_OneofDefaultedInt64
+	//	*Message_OneofDefaultedSint64
+	//	*Message_OneofDefaultedUint64
+	//	*Message_OneofDefaultedFixed32
+	//	*Message_OneofDefaultedSfixed32
+	//	*Message_OneofDefaultedFloat
+	//	*Message_OneofDefaultedFixed64
+	//	*Message_OneofDefaultedSfixed64
+	//	*Message_OneofDefaultedDouble
+	//	*Message_OneofDefaultedString
+	//	*Message_OneofDefaultedBytes
+	//	*Message_OneofDefaultedChildEnum
+	//	*Message_OneofDefaultedSiblingEnum
+	OneofDefaultedUnion          isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
+	XXX_NoUnkeyedLiteral         struct{}                      `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *Message) Reset()         { *m = Message{} }
+func (m *Message) String() string { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()    {}
+func (*Message) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{1}
+}
+
+var extRange_Message = []proto.ExtensionRange{
+	{Start: 10000, End: 536870911},
+}
+
+func (*Message) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_Message
+}
+func (m *Message) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message.Unmarshal(m, b)
+}
+func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
+}
+func (dst *Message) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message.Merge(dst, src)
+}
+func (m *Message) XXX_Size() int {
+	return xxx_messageInfo_Message.Size(m)
+}
+func (m *Message) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message proto.InternalMessageInfo
+
+const Default_Message_DefaultedBool bool = true
+const Default_Message_DefaultedInt32 int32 = -12345
+const Default_Message_DefaultedSint32 int32 = -3200
+const Default_Message_DefaultedUint32 uint32 = 3200
+const Default_Message_DefaultedInt64 int64 = -123456789
+const Default_Message_DefaultedSint64 int64 = -6400
+const Default_Message_DefaultedUint64 uint64 = 6400
+const Default_Message_DefaultedFixed32 uint32 = 320000
+const Default_Message_DefaultedSfixed32 int32 = -320000
+const Default_Message_DefaultedFloat float32 = 3.14159
+const Default_Message_DefaultedFixed64 uint64 = 640000
+const Default_Message_DefaultedSfixed64 int64 = -640000
+const Default_Message_DefaultedDouble float64 = 3.14159265359
+const Default_Message_DefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_DefaultedBytes []byte = []byte("deadÞ­\xbe\xefbeef")
+
+const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+const Default_Message_RequiredDefaultedBool bool = true
+const Default_Message_RequiredDefaultedInt32 int32 = -12345
+const Default_Message_RequiredDefaultedSint32 int32 = -3200
+const Default_Message_RequiredDefaultedUint32 uint32 = 3200
+const Default_Message_RequiredDefaultedInt64 int64 = -123456789
+const Default_Message_RequiredDefaultedSint64 int64 = -6400
+const Default_Message_RequiredDefaultedUint64 uint64 = 6400
+const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
+const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
+const Default_Message_RequiredDefaultedFloat float32 = 3.14159
+const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
+const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
+const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
+const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_RequiredDefaultedBytes []byte = []byte("deadÞ­\xbe\xefbeef")
+
+const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+const Default_Message_OneofDefaultedBool bool = true
+const Default_Message_OneofDefaultedInt32 int32 = -12345
+const Default_Message_OneofDefaultedSint32 int32 = -3200
+const Default_Message_OneofDefaultedUint32 uint32 = 3200
+const Default_Message_OneofDefaultedInt64 int64 = -123456789
+const Default_Message_OneofDefaultedSint64 int64 = -6400
+const Default_Message_OneofDefaultedUint64 uint64 = 6400
+const Default_Message_OneofDefaultedFixed32 uint32 = 320000
+const Default_Message_OneofDefaultedSfixed32 int32 = -320000
+const Default_Message_OneofDefaultedFloat float32 = 3.14159
+const Default_Message_OneofDefaultedFixed64 uint64 = 640000
+const Default_Message_OneofDefaultedSfixed64 int64 = -640000
+const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
+const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"
+
+var Default_Message_OneofDefaultedBytes []byte = []byte("deadÞ­\xbe\xefbeef")
+
+const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
+const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
+
+func (m *Message) GetNamedgroup() *Message_NamedGroup {
+	if m != nil {
+		return m.Namedgroup
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalBool() bool {
+	if m != nil && m.OptionalBool != nil {
+		return *m.OptionalBool
+	}
+	return false
+}
+
+func (m *Message) GetOptionalInt32() int32 {
+	if m != nil && m.OptionalInt32 != nil {
+		return *m.OptionalInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint32() int32 {
+	if m != nil && m.OptionalSint32 != nil {
+		return *m.OptionalSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint32() uint32 {
+	if m != nil && m.OptionalUint32 != nil {
+		return *m.OptionalUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalInt64() int64 {
+	if m != nil && m.OptionalInt64 != nil {
+		return *m.OptionalInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint64() int64 {
+	if m != nil && m.OptionalSint64 != nil {
+		return *m.OptionalSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint64() uint64 {
+	if m != nil && m.OptionalUint64 != nil {
+		return *m.OptionalUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed32() uint32 {
+	if m != nil && m.OptionalFixed32 != nil {
+		return *m.OptionalFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed32() int32 {
+	if m != nil && m.OptionalSfixed32 != nil {
+		return *m.OptionalSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFloat() float32 {
+	if m != nil && m.OptionalFloat != nil {
+		return *m.OptionalFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed64() uint64 {
+	if m != nil && m.OptionalFixed64 != nil {
+		return *m.OptionalFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed64() int64 {
+	if m != nil && m.OptionalSfixed64 != nil {
+		return *m.OptionalSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalDouble() float64 {
+	if m != nil && m.OptionalDouble != nil {
+		return *m.OptionalDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalString() string {
+	if m != nil && m.OptionalString != nil {
+		return *m.OptionalString
+	}
+	return ""
+}
+
+func (m *Message) GetOptionalBytes() []byte {
+	if m != nil {
+		return m.OptionalBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
+	if m != nil && m.OptionalChildEnum != nil {
+		return *m.OptionalChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.OptionalChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
+	if m != nil {
+		return m.OptionalNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
+	if m != nil && m.OptionalSiblingEnum != nil {
+		return *m.OptionalSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.OptionalSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
+	if m != nil {
+		return m.Optionalgroup
+	}
+	return nil
+}
+
+func (m *Message) GetDefaultedBool() bool {
+	if m != nil && m.DefaultedBool != nil {
+		return *m.DefaultedBool
+	}
+	return Default_Message_DefaultedBool
+}
+
+func (m *Message) GetDefaultedInt32() int32 {
+	if m != nil && m.DefaultedInt32 != nil {
+		return *m.DefaultedInt32
+	}
+	return Default_Message_DefaultedInt32
+}
+
+func (m *Message) GetDefaultedSint32() int32 {
+	if m != nil && m.DefaultedSint32 != nil {
+		return *m.DefaultedSint32
+	}
+	return Default_Message_DefaultedSint32
+}
+
+func (m *Message) GetDefaultedUint32() uint32 {
+	if m != nil && m.DefaultedUint32 != nil {
+		return *m.DefaultedUint32
+	}
+	return Default_Message_DefaultedUint32
+}
+
+func (m *Message) GetDefaultedInt64() int64 {
+	if m != nil && m.DefaultedInt64 != nil {
+		return *m.DefaultedInt64
+	}
+	return Default_Message_DefaultedInt64
+}
+
+func (m *Message) GetDefaultedSint64() int64 {
+	if m != nil && m.DefaultedSint64 != nil {
+		return *m.DefaultedSint64
+	}
+	return Default_Message_DefaultedSint64
+}
+
+func (m *Message) GetDefaultedUint64() uint64 {
+	if m != nil && m.DefaultedUint64 != nil {
+		return *m.DefaultedUint64
+	}
+	return Default_Message_DefaultedUint64
+}
+
+func (m *Message) GetDefaultedFixed32() uint32 {
+	if m != nil && m.DefaultedFixed32 != nil {
+		return *m.DefaultedFixed32
+	}
+	return Default_Message_DefaultedFixed32
+}
+
+func (m *Message) GetDefaultedSfixed32() int32 {
+	if m != nil && m.DefaultedSfixed32 != nil {
+		return *m.DefaultedSfixed32
+	}
+	return Default_Message_DefaultedSfixed32
+}
+
+func (m *Message) GetDefaultedFloat() float32 {
+	if m != nil && m.DefaultedFloat != nil {
+		return *m.DefaultedFloat
+	}
+	return Default_Message_DefaultedFloat
+}
+
+func (m *Message) GetDefaultedFixed64() uint64 {
+	if m != nil && m.DefaultedFixed64 != nil {
+		return *m.DefaultedFixed64
+	}
+	return Default_Message_DefaultedFixed64
+}
+
+func (m *Message) GetDefaultedSfixed64() int64 {
+	if m != nil && m.DefaultedSfixed64 != nil {
+		return *m.DefaultedSfixed64
+	}
+	return Default_Message_DefaultedSfixed64
+}
+
+func (m *Message) GetDefaultedDouble() float64 {
+	if m != nil && m.DefaultedDouble != nil {
+		return *m.DefaultedDouble
+	}
+	return Default_Message_DefaultedDouble
+}
+
+func (m *Message) GetDefaultedString() string {
+	if m != nil && m.DefaultedString != nil {
+		return *m.DefaultedString
+	}
+	return Default_Message_DefaultedString
+}
+
+func (m *Message) GetDefaultedBytes() []byte {
+	if m != nil && m.DefaultedBytes != nil {
+		return m.DefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_DefaultedBytes...)
+}
+
+func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
+	if m != nil && m.DefaultedChildEnum != nil {
+		return *m.DefaultedChildEnum
+	}
+	return Default_Message_DefaultedChildEnum
+}
+
+func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
+	if m != nil && m.DefaultedSiblingEnum != nil {
+		return *m.DefaultedSiblingEnum
+	}
+	return Default_Message_DefaultedSiblingEnum
+}
+
+func (m *Message) GetRequiredBool() bool {
+	if m != nil && m.RequiredBool != nil {
+		return *m.RequiredBool
+	}
+	return false
+}
+
+func (m *Message) GetRequiredInt32() int32 {
+	if m != nil && m.RequiredInt32 != nil {
+		return *m.RequiredInt32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSint32() int32 {
+	if m != nil && m.RequiredSint32 != nil {
+		return *m.RequiredSint32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredUint32() uint32 {
+	if m != nil && m.RequiredUint32 != nil {
+		return *m.RequiredUint32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredInt64() int64 {
+	if m != nil && m.RequiredInt64 != nil {
+		return *m.RequiredInt64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSint64() int64 {
+	if m != nil && m.RequiredSint64 != nil {
+		return *m.RequiredSint64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredUint64() uint64 {
+	if m != nil && m.RequiredUint64 != nil {
+		return *m.RequiredUint64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFixed32() uint32 {
+	if m != nil && m.RequiredFixed32 != nil {
+		return *m.RequiredFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSfixed32() int32 {
+	if m != nil && m.RequiredSfixed32 != nil {
+		return *m.RequiredSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFloat() float32 {
+	if m != nil && m.RequiredFloat != nil {
+		return *m.RequiredFloat
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredFixed64() uint64 {
+	if m != nil && m.RequiredFixed64 != nil {
+		return *m.RequiredFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredSfixed64() int64 {
+	if m != nil && m.RequiredSfixed64 != nil {
+		return *m.RequiredSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredDouble() float64 {
+	if m != nil && m.RequiredDouble != nil {
+		return *m.RequiredDouble
+	}
+	return 0
+}
+
+func (m *Message) GetRequiredString() string {
+	if m != nil && m.RequiredString != nil {
+		return *m.RequiredString
+	}
+	return ""
+}
+
+func (m *Message) GetRequiredBytes() []byte {
+	if m != nil {
+		return m.RequiredBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
+	if m != nil && m.RequiredChildEnum != nil {
+		return *m.RequiredChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.RequiredChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
+	if m != nil {
+		return m.RequiredNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
+	if m != nil && m.RequiredSiblingEnum != nil {
+		return *m.RequiredSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.RequiredSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
+	if m != nil {
+		return m.Requiredgroup
+	}
+	return nil
+}
+
+func (m *Message) GetRequiredDefaultedBool() bool {
+	if m != nil && m.RequiredDefaultedBool != nil {
+		return *m.RequiredDefaultedBool
+	}
+	return Default_Message_RequiredDefaultedBool
+}
+
+func (m *Message) GetRequiredDefaultedInt32() int32 {
+	if m != nil && m.RequiredDefaultedInt32 != nil {
+		return *m.RequiredDefaultedInt32
+	}
+	return Default_Message_RequiredDefaultedInt32
+}
+
+func (m *Message) GetRequiredDefaultedSint32() int32 {
+	if m != nil && m.RequiredDefaultedSint32 != nil {
+		return *m.RequiredDefaultedSint32
+	}
+	return Default_Message_RequiredDefaultedSint32
+}
+
+func (m *Message) GetRequiredDefaultedUint32() uint32 {
+	if m != nil && m.RequiredDefaultedUint32 != nil {
+		return *m.RequiredDefaultedUint32
+	}
+	return Default_Message_RequiredDefaultedUint32
+}
+
+func (m *Message) GetRequiredDefaultedInt64() int64 {
+	if m != nil && m.RequiredDefaultedInt64 != nil {
+		return *m.RequiredDefaultedInt64
+	}
+	return Default_Message_RequiredDefaultedInt64
+}
+
+func (m *Message) GetRequiredDefaultedSint64() int64 {
+	if m != nil && m.RequiredDefaultedSint64 != nil {
+		return *m.RequiredDefaultedSint64
+	}
+	return Default_Message_RequiredDefaultedSint64
+}
+
+func (m *Message) GetRequiredDefaultedUint64() uint64 {
+	if m != nil && m.RequiredDefaultedUint64 != nil {
+		return *m.RequiredDefaultedUint64
+	}
+	return Default_Message_RequiredDefaultedUint64
+}
+
+func (m *Message) GetRequiredDefaultedFixed32() uint32 {
+	if m != nil && m.RequiredDefaultedFixed32 != nil {
+		return *m.RequiredDefaultedFixed32
+	}
+	return Default_Message_RequiredDefaultedFixed32
+}
+
+func (m *Message) GetRequiredDefaultedSfixed32() int32 {
+	if m != nil && m.RequiredDefaultedSfixed32 != nil {
+		return *m.RequiredDefaultedSfixed32
+	}
+	return Default_Message_RequiredDefaultedSfixed32
+}
+
+func (m *Message) GetRequiredDefaultedFloat() float32 {
+	if m != nil && m.RequiredDefaultedFloat != nil {
+		return *m.RequiredDefaultedFloat
+	}
+	return Default_Message_RequiredDefaultedFloat
+}
+
+func (m *Message) GetRequiredDefaultedFixed64() uint64 {
+	if m != nil && m.RequiredDefaultedFixed64 != nil {
+		return *m.RequiredDefaultedFixed64
+	}
+	return Default_Message_RequiredDefaultedFixed64
+}
+
+func (m *Message) GetRequiredDefaultedSfixed64() int64 {
+	if m != nil && m.RequiredDefaultedSfixed64 != nil {
+		return *m.RequiredDefaultedSfixed64
+	}
+	return Default_Message_RequiredDefaultedSfixed64
+}
+
+func (m *Message) GetRequiredDefaultedDouble() float64 {
+	if m != nil && m.RequiredDefaultedDouble != nil {
+		return *m.RequiredDefaultedDouble
+	}
+	return Default_Message_RequiredDefaultedDouble
+}
+
+func (m *Message) GetRequiredDefaultedString() string {
+	if m != nil && m.RequiredDefaultedString != nil {
+		return *m.RequiredDefaultedString
+	}
+	return Default_Message_RequiredDefaultedString
+}
+
+func (m *Message) GetRequiredDefaultedBytes() []byte {
+	if m != nil && m.RequiredDefaultedBytes != nil {
+		return m.RequiredDefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
+}
+
+func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
+	if m != nil && m.RequiredDefaultedChildEnum != nil {
+		return *m.RequiredDefaultedChildEnum
+	}
+	return Default_Message_RequiredDefaultedChildEnum
+}
+
+func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
+	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
+		return *m.RequiredDefaultedSiblingEnum
+	}
+	return Default_Message_RequiredDefaultedSiblingEnum
+}
+
+func (m *Message) GetRepeatedBool() []bool {
+	if m != nil {
+		return m.RepeatedBool
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt32() []int32 {
+	if m != nil {
+		return m.RepeatedInt32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint32() []int32 {
+	if m != nil {
+		return m.RepeatedSint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint32() []uint32 {
+	if m != nil {
+		return m.RepeatedUint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt64() []int64 {
+	if m != nil {
+		return m.RepeatedInt64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint64() []int64 {
+	if m != nil {
+		return m.RepeatedSint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint64() []uint64 {
+	if m != nil {
+		return m.RepeatedUint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed32() []uint32 {
+	if m != nil {
+		return m.RepeatedFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed32() []int32 {
+	if m != nil {
+		return m.RepeatedSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFloat() []float32 {
+	if m != nil {
+		return m.RepeatedFloat
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed64() []uint64 {
+	if m != nil {
+		return m.RepeatedFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed64() []int64 {
+	if m != nil {
+		return m.RepeatedSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedDouble() []float64 {
+	if m != nil {
+		return m.RepeatedDouble
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedString() []string {
+	if m != nil {
+		return m.RepeatedString
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedBytes() [][]byte {
+	if m != nil {
+		return m.RepeatedBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
+	if m != nil {
+		return m.RepeatedChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
+	if m != nil {
+		return m.RepeatedChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
+	if m != nil {
+		return m.RepeatedNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
+	if m != nil {
+		return m.RepeatedSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
+	if m != nil {
+		return m.RepeatedSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
+	if m != nil {
+		return m.Repeatedgroup
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBool() map[bool]bool {
+	if m != nil {
+		return m.MapBoolBool
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolInt32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolUint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolInt64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolUint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFloat() map[bool]float32 {
+	if m != nil {
+		return m.MapBoolFloat
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolDouble() map[bool]float64 {
+	if m != nil {
+		return m.MapBoolDouble
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolString() map[bool]string {
+	if m != nil {
+		return m.MapBoolString
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBytes() map[bool][]byte {
+	if m != nil {
+		return m.MapBoolBytes
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
+	if m != nil {
+		return m.MapBoolChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
+	if m != nil {
+		return m.MapBoolChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
+	if m != nil {
+		return m.MapBoolNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
+	if m != nil {
+		return m.MapBoolSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
+	if m != nil {
+		return m.MapBoolSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapInt32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapSint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapUint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapInt64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapSint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint64Bool() map[uint64]bool {
+	if m != nil {
+		return m.MapUint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapFixed32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapFixed32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapStringBool() map[string]bool {
+	if m != nil {
+		return m.MapStringBool
+	}
+	return nil
+}
+
+type isMessage_OneofUnion interface {
+	isMessage_OneofUnion()
+}
+
+type Message_OneofBool struct {
+	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
+}
+
+type Message_OneofInt32 struct {
+	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
+}
+
+type Message_OneofSint32 struct {
+	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
+}
+
+type Message_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
+}
+
+type Message_OneofInt64 struct {
+	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
+}
+
+type Message_OneofSint64 struct {
+	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
+}
+
+type Message_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
+}
+
+type Message_OneofFixed32 struct {
+	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
+}
+
+type Message_OneofSfixed32 struct {
+	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
+}
+
+type Message_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
+}
+
+type Message_OneofFixed64 struct {
+	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
+}
+
+type Message_OneofSfixed64 struct {
+	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
+}
+
+type Message_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
+}
+
+type Message_OneofString struct {
+	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
+}
+
+type Message_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
+}
+
+type Message_OneofChildEnum struct {
+	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,oneof"`
+}
+
+type Message_OneofChildMessage struct {
+	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
+}
+
+type Message_OneofNamedGroup struct {
+	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
+}
+
+type Message_OneofSiblingEnum struct {
+	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,oneof"`
+}
+
+type Message_OneofSiblingMessage struct {
+	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
+}
+
+type Message_Oneofgroup struct {
+	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
+}
+
+type Message_OneofString1 struct {
+	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
+}
+
+type Message_OneofString2 struct {
+	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
+}
+
+type Message_OneofString3 struct {
+	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
+}
+
+func (*Message_OneofBool) isMessage_OneofUnion() {}
+
+func (*Message_OneofInt32) isMessage_OneofUnion() {}
+
+func (*Message_OneofSint32) isMessage_OneofUnion() {}
+
+func (*Message_OneofUint32) isMessage_OneofUnion() {}
+
+func (*Message_OneofInt64) isMessage_OneofUnion() {}
+
+func (*Message_OneofSint64) isMessage_OneofUnion() {}
+
+func (*Message_OneofUint64) isMessage_OneofUnion() {}
+
+func (*Message_OneofFixed32) isMessage_OneofUnion() {}
+
+func (*Message_OneofSfixed32) isMessage_OneofUnion() {}
+
+func (*Message_OneofFloat) isMessage_OneofUnion() {}
+
+func (*Message_OneofFixed64) isMessage_OneofUnion() {}
+
+func (*Message_OneofSfixed64) isMessage_OneofUnion() {}
+
+func (*Message_OneofDouble) isMessage_OneofUnion() {}
+
+func (*Message_OneofString) isMessage_OneofUnion() {}
+
+func (*Message_OneofBytes) isMessage_OneofUnion() {}
+
+func (*Message_OneofChildEnum) isMessage_OneofUnion() {}
+
+func (*Message_OneofChildMessage) isMessage_OneofUnion() {}
+
+func (*Message_OneofNamedGroup) isMessage_OneofUnion() {}
+
+func (*Message_OneofSiblingEnum) isMessage_OneofUnion() {}
+
+func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
+
+func (*Message_Oneofgroup) isMessage_OneofUnion() {}
+
+func (*Message_OneofString1) isMessage_OneofUnion() {}
+
+func (*Message_OneofString2) isMessage_OneofUnion() {}
+
+func (*Message_OneofString3) isMessage_OneofUnion() {}
+
+func (m *Message) GetOneofUnion() isMessage_OneofUnion {
+	if m != nil {
+		return m.OneofUnion
+	}
+	return nil
+}
+
+func (m *Message) GetOneofBool() bool {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
+		return x.OneofBool
+	}
+	return false
+}
+
+func (m *Message) GetOneofInt32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
+		return x.OneofInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
+		return x.OneofSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
+		return x.OneofUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofInt64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
+		return x.OneofInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
+		return x.OneofSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
+		return x.OneofUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
+		return x.OneofFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
+		return x.OneofSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFloat() float32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
+		return x.OneofFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
+		return x.OneofFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
+		return x.OneofSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofDouble() float64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
+		return x.OneofDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOneofString() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
+		return x.OneofString
+	}
+	return ""
+}
+
+func (m *Message) GetOneofBytes() []byte {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
+		return x.OneofBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOneofChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
+		return x.OneofChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
+		return x.OneofChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
+	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
+		return x.OneofNamedGroup
+	}
+	return nil
+}
+
+func (m *Message) GetOneofSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
+		return x.OneofSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
+		return x.OneofSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofgroup() *Message_OneofGroup {
+	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
+		return x.Oneofgroup
+	}
+	return nil
+}
+
+func (m *Message) GetOneofString1() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
+		return x.OneofString1
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString2() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
+		return x.OneofString2
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString3() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
+		return x.OneofString3
+	}
+	return ""
+}
+
+type isMessage_OneofDefaultedUnion interface {
+	isMessage_OneofDefaultedUnion()
+}
+
+type Message_OneofDefaultedBool struct {
+	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
+}
+
+type Message_OneofDefaultedInt32 struct {
+	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
+}
+
+type Message_OneofDefaultedSint32 struct {
+	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
+}
+
+type Message_OneofDefaultedUint32 struct {
+	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
+}
+
+type Message_OneofDefaultedInt64 struct {
+	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
+}
+
+type Message_OneofDefaultedSint64 struct {
+	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
+}
+
+type Message_OneofDefaultedUint64 struct {
+	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
+}
+
+type Message_OneofDefaultedFixed32 struct {
+	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
+}
+
+type Message_OneofDefaultedSfixed32 struct {
+	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
+}
+
+type Message_OneofDefaultedFloat struct {
+	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
+}
+
+type Message_OneofDefaultedFixed64 struct {
+	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
+}
+
+type Message_OneofDefaultedSfixed64 struct {
+	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
+}
+
+type Message_OneofDefaultedDouble struct {
+	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
+}
+
+type Message_OneofDefaultedString struct {
+	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
+}
+
+type Message_OneofDefaultedBytes struct {
+	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
+}
+
+type Message_OneofDefaultedChildEnum struct {
+	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,oneof,def=0"`
+}
+
+type Message_OneofDefaultedSiblingEnum struct {
+	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,oneof,def=0"`
+}
+
+func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion() {}
+
+func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}
+
+func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
+	if m != nil {
+		return m.OneofDefaultedUnion
+	}
+	return nil
+}
+
+func (m *Message) GetOneofDefaultedBool() bool {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
+		return x.OneofDefaultedBool
+	}
+	return Default_Message_OneofDefaultedBool
+}
+
+func (m *Message) GetOneofDefaultedInt32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
+		return x.OneofDefaultedInt32
+	}
+	return Default_Message_OneofDefaultedInt32
+}
+
+func (m *Message) GetOneofDefaultedSint32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
+		return x.OneofDefaultedSint32
+	}
+	return Default_Message_OneofDefaultedSint32
+}
+
+func (m *Message) GetOneofDefaultedUint32() uint32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
+		return x.OneofDefaultedUint32
+	}
+	return Default_Message_OneofDefaultedUint32
+}
+
+func (m *Message) GetOneofDefaultedInt64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
+		return x.OneofDefaultedInt64
+	}
+	return Default_Message_OneofDefaultedInt64
+}
+
+func (m *Message) GetOneofDefaultedSint64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
+		return x.OneofDefaultedSint64
+	}
+	return Default_Message_OneofDefaultedSint64
+}
+
+func (m *Message) GetOneofDefaultedUint64() uint64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
+		return x.OneofDefaultedUint64
+	}
+	return Default_Message_OneofDefaultedUint64
+}
+
+func (m *Message) GetOneofDefaultedFixed32() uint32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
+		return x.OneofDefaultedFixed32
+	}
+	return Default_Message_OneofDefaultedFixed32
+}
+
+func (m *Message) GetOneofDefaultedSfixed32() int32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
+		return x.OneofDefaultedSfixed32
+	}
+	return Default_Message_OneofDefaultedSfixed32
+}
+
+func (m *Message) GetOneofDefaultedFloat() float32 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
+		return x.OneofDefaultedFloat
+	}
+	return Default_Message_OneofDefaultedFloat
+}
+
+func (m *Message) GetOneofDefaultedFixed64() uint64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
+		return x.OneofDefaultedFixed64
+	}
+	return Default_Message_OneofDefaultedFixed64
+}
+
+func (m *Message) GetOneofDefaultedSfixed64() int64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
+		return x.OneofDefaultedSfixed64
+	}
+	return Default_Message_OneofDefaultedSfixed64
+}
+
+func (m *Message) GetOneofDefaultedDouble() float64 {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
+		return x.OneofDefaultedDouble
+	}
+	return Default_Message_OneofDefaultedDouble
+}
+
+func (m *Message) GetOneofDefaultedString() string {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
+		return x.OneofDefaultedString
+	}
+	return Default_Message_OneofDefaultedString
+}
+
+func (m *Message) GetOneofDefaultedBytes() []byte {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
+		return x.OneofDefaultedBytes
+	}
+	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
+}
+
+func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
+		return x.OneofDefaultedChildEnum
+	}
+	return Default_Message_OneofDefaultedChildEnum
+}
+
+func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
+		return x.OneofDefaultedSiblingEnum
+	}
+	return Default_Message_OneofDefaultedSiblingEnum
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
+		(*Message_OneofBool)(nil),
+		(*Message_OneofInt32)(nil),
+		(*Message_OneofSint32)(nil),
+		(*Message_OneofUint32)(nil),
+		(*Message_OneofInt64)(nil),
+		(*Message_OneofSint64)(nil),
+		(*Message_OneofUint64)(nil),
+		(*Message_OneofFixed32)(nil),
+		(*Message_OneofSfixed32)(nil),
+		(*Message_OneofFloat)(nil),
+		(*Message_OneofFixed64)(nil),
+		(*Message_OneofSfixed64)(nil),
+		(*Message_OneofDouble)(nil),
+		(*Message_OneofString)(nil),
+		(*Message_OneofBytes)(nil),
+		(*Message_OneofChildEnum)(nil),
+		(*Message_OneofChildMessage)(nil),
+		(*Message_OneofNamedGroup)(nil),
+		(*Message_OneofSiblingEnum)(nil),
+		(*Message_OneofSiblingMessage)(nil),
+		(*Message_Oneofgroup)(nil),
+		(*Message_OneofString1)(nil),
+		(*Message_OneofString2)(nil),
+		(*Message_OneofString3)(nil),
+		(*Message_OneofDefaultedBool)(nil),
+		(*Message_OneofDefaultedInt32)(nil),
+		(*Message_OneofDefaultedSint32)(nil),
+		(*Message_OneofDefaultedUint32)(nil),
+		(*Message_OneofDefaultedInt64)(nil),
+		(*Message_OneofDefaultedSint64)(nil),
+		(*Message_OneofDefaultedUint64)(nil),
+		(*Message_OneofDefaultedFixed32)(nil),
+		(*Message_OneofDefaultedSfixed32)(nil),
+		(*Message_OneofDefaultedFloat)(nil),
+		(*Message_OneofDefaultedFixed64)(nil),
+		(*Message_OneofDefaultedSfixed64)(nil),
+		(*Message_OneofDefaultedDouble)(nil),
+		(*Message_OneofDefaultedString)(nil),
+		(*Message_OneofDefaultedBytes)(nil),
+		(*Message_OneofDefaultedChildEnum)(nil),
+		(*Message_OneofDefaultedSiblingEnum)(nil),
+	}
+}
+
+func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		t := uint64(0)
+		if x.OneofBool {
+			t = 1
+		}
+		b.EncodeVarint(700<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofInt32:
+		b.EncodeVarint(701<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		b.EncodeVarint(702<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofSint32))
+	case *Message_OneofUint32:
+		b.EncodeVarint(703<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		b.EncodeVarint(704<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		b.EncodeVarint(705<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofSint64))
+	case *Message_OneofUint64:
+		b.EncodeVarint(706<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		b.EncodeVarint(707<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofFixed32))
+	case *Message_OneofSfixed32:
+		b.EncodeVarint(708<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofSfixed32))
+	case *Message_OneofFloat:
+		b.EncodeVarint(709<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
+	case *Message_OneofFixed64:
+		b.EncodeVarint(710<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofFixed64))
+	case *Message_OneofSfixed64:
+		b.EncodeVarint(711<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofSfixed64))
+	case *Message_OneofDouble:
+		b.EncodeVarint(712<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
+	case *Message_OneofString:
+		b.EncodeVarint(713<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString)
+	case *Message_OneofBytes:
+		b.EncodeVarint(714<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		b.EncodeVarint(715<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		b.EncodeVarint(716<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
+			return err
+		}
+	case *Message_OneofNamedGroup:
+		b.EncodeVarint(717<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofNamedGroup); err != nil {
+			return err
+		}
+	case *Message_OneofSiblingEnum:
+		b.EncodeVarint(718<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		b.EncodeVarint(719<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
+			return err
+		}
+	case *Message_Oneofgroup:
+		b.EncodeVarint(720<<3 | proto.WireStartGroup)
+		if err := b.Marshal(x.Oneofgroup); err != nil {
+			return err
+		}
+		b.EncodeVarint(720<<3 | proto.WireEndGroup)
+	case *Message_OneofString1:
+		b.EncodeVarint(721<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString1)
+	case *Message_OneofString2:
+		b.EncodeVarint(722<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString2)
+	case *Message_OneofString3:
+		b.EncodeVarint(723<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString3)
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
+	}
+	// oneof_defaulted_union
+	switch x := m.OneofDefaultedUnion.(type) {
+	case *Message_OneofDefaultedBool:
+		t := uint64(0)
+		if x.OneofDefaultedBool {
+			t = 1
+		}
+		b.EncodeVarint(800<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofDefaultedInt32:
+		b.EncodeVarint(801<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedInt32))
+	case *Message_OneofDefaultedSint32:
+		b.EncodeVarint(802<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofDefaultedSint32))
+	case *Message_OneofDefaultedUint32:
+		b.EncodeVarint(803<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedUint32))
+	case *Message_OneofDefaultedInt64:
+		b.EncodeVarint(804<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedInt64))
+	case *Message_OneofDefaultedSint64:
+		b.EncodeVarint(805<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofDefaultedSint64))
+	case *Message_OneofDefaultedUint64:
+		b.EncodeVarint(806<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedUint64))
+	case *Message_OneofDefaultedFixed32:
+		b.EncodeVarint(807<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofDefaultedFixed32))
+	case *Message_OneofDefaultedSfixed32:
+		b.EncodeVarint(808<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofDefaultedSfixed32))
+	case *Message_OneofDefaultedFloat:
+		b.EncodeVarint(809<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofDefaultedFloat)))
+	case *Message_OneofDefaultedFixed64:
+		b.EncodeVarint(810<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofDefaultedFixed64))
+	case *Message_OneofDefaultedSfixed64:
+		b.EncodeVarint(811<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofDefaultedSfixed64))
+	case *Message_OneofDefaultedDouble:
+		b.EncodeVarint(812<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDefaultedDouble))
+	case *Message_OneofDefaultedString:
+		b.EncodeVarint(813<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofDefaultedString)
+	case *Message_OneofDefaultedBytes:
+		b.EncodeVarint(814<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofDefaultedBytes)
+	case *Message_OneofDefaultedChildEnum:
+		b.EncodeVarint(815<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedChildEnum))
+	case *Message_OneofDefaultedSiblingEnum:
+		b.EncodeVarint(816<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofDefaultedSiblingEnum))
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofDefaultedUnion has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Message)
+	switch tag {
+	case 700: // oneof_union.oneof_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofBool{x != 0}
+		return true, err
+	case 701: // oneof_union.oneof_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt32{int32(x)}
+		return true, err
+	case 702: // oneof_union.oneof_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofUnion = &Message_OneofSint32{int32(x)}
+		return true, err
+	case 703: // oneof_union.oneof_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint32{uint32(x)}
+		return true, err
+	case 704: // oneof_union.oneof_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt64{int64(x)}
+		return true, err
+	case 705: // oneof_union.oneof_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofUnion = &Message_OneofSint64{int64(x)}
+		return true, err
+	case 706: // oneof_union.oneof_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint64{x}
+		return true, err
+	case 707: // oneof_union.oneof_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
+		return true, err
+	case 708: // oneof_union.oneof_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
+		return true, err
+	case 709: // oneof_union.oneof_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 710: // oneof_union.oneof_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofFixed64{x}
+		return true, err
+	case 711: // oneof_union.oneof_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
+		return true, err
+	case 712: // oneof_union.oneof_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
+		return true, err
+	case 713: // oneof_union.oneof_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString{x}
+		return true, err
+	case 714: // oneof_union.oneof_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofUnion = &Message_OneofBytes{x}
+		return true, err
+	case 715: // oneof_union.oneof_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 716: // oneof_union.oneof_child_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_ChildMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofChildMessage{msg}
+		return true, err
+	case 717: // oneof_union.oneof_named_group
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_NamedGroup)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofNamedGroup{msg}
+		return true, err
+	case 718: // oneof_union.oneof_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
+		return true, err
+	case 719: // oneof_union.oneof_sibling_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(SiblingMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofSiblingMessage{msg}
+		return true, err
+	case 720: // oneof_union.oneofgroup
+		if wire != proto.WireStartGroup {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_OneofGroup)
+		err := b.DecodeGroup(msg)
+		m.OneofUnion = &Message_Oneofgroup{msg}
+		return true, err
+	case 721: // oneof_union.oneof_string1
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString1{x}
+		return true, err
+	case 722: // oneof_union.oneof_string2
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString2{x}
+		return true, err
+	case 723: // oneof_union.oneof_string3
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString3{x}
+		return true, err
+	case 800: // oneof_defaulted_union.oneof_defaulted_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedBool{x != 0}
+		return true, err
+	case 801: // oneof_defaulted_union.oneof_defaulted_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedInt32{int32(x)}
+		return true, err
+	case 802: // oneof_defaulted_union.oneof_defaulted_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSint32{int32(x)}
+		return true, err
+	case 803: // oneof_defaulted_union.oneof_defaulted_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedUint32{uint32(x)}
+		return true, err
+	case 804: // oneof_defaulted_union.oneof_defaulted_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedInt64{int64(x)}
+		return true, err
+	case 805: // oneof_defaulted_union.oneof_defaulted_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSint64{int64(x)}
+		return true, err
+	case 806: // oneof_defaulted_union.oneof_defaulted_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedUint64{x}
+		return true, err
+	case 807: // oneof_defaulted_union.oneof_defaulted_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed32{uint32(x)}
+		return true, err
+	case 808: // oneof_defaulted_union.oneof_defaulted_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed32{int32(x)}
+		return true, err
+	case 809: // oneof_defaulted_union.oneof_defaulted_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 810: // oneof_defaulted_union.oneof_defaulted_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed64{x}
+		return true, err
+	case 811: // oneof_defaulted_union.oneof_defaulted_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed64{int64(x)}
+		return true, err
+	case 812: // oneof_defaulted_union.oneof_defaulted_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedDouble{math.Float64frombits(x)}
+		return true, err
+	case 813: // oneof_defaulted_union.oneof_defaulted_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedString{x}
+		return true, err
+	case 814: // oneof_defaulted_union.oneof_defaulted_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofDefaultedUnion = &Message_OneofDefaultedBytes{x}
+		return true, err
+	case 815: // oneof_defaulted_union.oneof_defaulted_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 816: // oneof_defaulted_union.oneof_defaulted_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofDefaultedUnion = &Message_OneofDefaultedSiblingEnum{SiblingEnum(x)}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Message_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		n += 2 // tag and wire
+		n += 1
+	case *Message_OneofInt32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
+	case *Message_OneofUint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
+	case *Message_OneofUint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofSfixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofFloat:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofFixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofSfixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofDouble:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofString:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString)))
+		n += len(x.OneofString)
+	case *Message_OneofBytes:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
+		n += len(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		s := proto.Size(x.OneofChildMessage)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofNamedGroup:
+		s := proto.Size(x.OneofNamedGroup)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofSiblingEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		s := proto.Size(x.OneofSiblingMessage)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_Oneofgroup:
+		n += 2 // tag and wire
+		n += proto.Size(x.Oneofgroup)
+		n += 2 // tag and wire
+	case *Message_OneofString1:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString1)))
+		n += len(x.OneofString1)
+	case *Message_OneofString2:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString2)))
+		n += len(x.OneofString2)
+	case *Message_OneofString3:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString3)))
+		n += len(x.OneofString3)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	// oneof_defaulted_union
+	switch x := m.OneofDefaultedUnion.(type) {
+	case *Message_OneofDefaultedBool:
+		n += 2 // tag and wire
+		n += 1
+	case *Message_OneofDefaultedInt32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedInt32))
+	case *Message_OneofDefaultedSint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64((uint32(x.OneofDefaultedSint32) << 1) ^ uint32((int32(x.OneofDefaultedSint32) >> 31))))
+	case *Message_OneofDefaultedUint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedUint32))
+	case *Message_OneofDefaultedInt64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedInt64))
+	case *Message_OneofDefaultedSint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(uint64(x.OneofDefaultedSint64<<1) ^ uint64((int64(x.OneofDefaultedSint64) >> 63))))
+	case *Message_OneofDefaultedUint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedUint64))
+	case *Message_OneofDefaultedFixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofDefaultedSfixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofDefaultedFloat:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofDefaultedFixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofDefaultedSfixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofDefaultedDouble:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofDefaultedString:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofDefaultedString)))
+		n += len(x.OneofDefaultedString)
+	case *Message_OneofDefaultedBytes:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofDefaultedBytes)))
+		n += len(x.OneofDefaultedBytes)
+	case *Message_OneofDefaultedChildEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedChildEnum))
+	case *Message_OneofDefaultedSiblingEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofDefaultedSiblingEnum))
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         10000,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_bool",
+	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10001,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_int32",
+	Tag:           "varint,10001,opt,name=extension_optional_int32,json=extensionOptionalInt32",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10002,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sint32",
+	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32,json=extensionOptionalSint32",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         10003,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_uint32",
+	Tag:           "varint,10003,opt,name=extension_optional_uint32,json=extensionOptionalUint32",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10004,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_int64",
+	Tag:           "varint,10004,opt,name=extension_optional_int64,json=extensionOptionalInt64",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10005,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sint64",
+	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64,json=extensionOptionalSint64",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         10006,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_uint64",
+	Tag:           "varint,10006,opt,name=extension_optional_uint64,json=extensionOptionalUint64",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         10007,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_fixed32",
+	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32,json=extensionOptionalFixed32",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         10008,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sfixed32",
+	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32,json=extensionOptionalSfixed32",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         10009,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_float",
+	Tag:           "fixed32,10009,opt,name=extension_optional_float,json=extensionOptionalFloat",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         10010,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_fixed64",
+	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64,json=extensionOptionalFixed64",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         10011,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sfixed64",
+	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64,json=extensionOptionalSfixed64",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         10012,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_double",
+	Tag:           "fixed64,10012,opt,name=extension_optional_double,json=extensionOptionalDouble",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         10013,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_string",
+	Tag:           "bytes,10013,opt,name=extension_optional_string,json=extensionOptionalString",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         10014,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_bytes",
+	Tag:           "bytes,10014,opt,name=extension_optional_bytes,json=extensionOptionalBytes",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildEnum)(nil),
+	Field:         10015,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_child_enum",
+	Tag:           "varint,10015,opt,name=extension_optional_child_enum,json=extensionOptionalChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildMessage)(nil),
+	Field:         10016,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_child_message",
+	Tag:           "bytes,10016,opt,name=extension_optional_child_message,json=extensionOptionalChildMessage",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_NamedGroup)(nil),
+	Field:         10017,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_named_group",
+	Tag:           "bytes,10017,opt,name=extension_optional_named_group,json=extensionOptionalNamedGroup",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingEnum)(nil),
+	Field:         10018,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sibling_enum",
+	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,json=extensionOptionalSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingMessage)(nil),
+	Field:         10019,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sibling_message",
+	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message,json=extensionOptionalSiblingMessage",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
+	Field:         10020,
+	Name:          "google.golang.org.proto2_20180814.Message.extensionoptionalgroup",
+	Tag:           "group,10020,opt,name=ExtensionOptionalGroup,json=extensionoptionalgroup",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         20000,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_bool",
+	Tag:           "varint,20000,opt,name=extension_defaulted_bool,json=extensionDefaultedBool,def=1",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20001,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_int32",
+	Tag:           "varint,20001,opt,name=extension_defaulted_int32,json=extensionDefaultedInt32,def=-12345",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20002,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sint32",
+	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,json=extensionDefaultedSint32,def=-3200",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         20003,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_uint32",
+	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,json=extensionDefaultedUint32,def=3200",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20004,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_int64",
+	Tag:           "varint,20004,opt,name=extension_defaulted_int64,json=extensionDefaultedInt64,def=-123456789",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20005,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sint64",
+	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,json=extensionDefaultedSint64,def=-6400",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         20006,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_uint64",
+	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,json=extensionDefaultedUint64,def=6400",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         20007,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_fixed32",
+	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,json=extensionDefaultedFixed32,def=320000",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         20008,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sfixed32",
+	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,json=extensionDefaultedSfixed32,def=-320000",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         20009,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_float",
+	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,json=extensionDefaultedFloat,def=3.14159",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         20010,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_fixed64",
+	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,json=extensionDefaultedFixed64,def=640000",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         20011,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sfixed64",
+	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,json=extensionDefaultedSfixed64,def=-640000",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         20012,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_double",
+	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,json=extensionDefaultedDouble,def=3.14159265359",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         20013,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_string",
+	Tag:           "bytes,20013,opt,name=extension_defaulted_string,json=extensionDefaultedString,def=hello, \"world!\"\n",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         20014,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_bytes",
+	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,json=extensionDefaultedBytes,def=dead\\336\\255\\276\\357beef",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*Message_ChildEnum)(nil),
+	Field:         20015,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_child_enum",
+	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,json=extensionDefaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,def=0",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: (*SiblingEnum)(nil),
+	Field:         20016,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sibling_enum",
+	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,json=extensionDefaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,def=0",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]bool)(nil),
+	Field:         30000,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_bool",
+	Tag:           "varint,30000,rep,name=extension_repeated_bool,json=extensionRepeatedBool",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30001,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_int32",
+	Tag:           "varint,30001,rep,name=extension_repeated_int32,json=extensionRepeatedInt32",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30002,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sint32",
+	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32,json=extensionRepeatedSint32",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         30003,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_uint32",
+	Tag:           "varint,30003,rep,name=extension_repeated_uint32,json=extensionRepeatedUint32",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30004,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_int64",
+	Tag:           "varint,30004,rep,name=extension_repeated_int64,json=extensionRepeatedInt64",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30005,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sint64",
+	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64,json=extensionRepeatedSint64",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         30006,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_uint64",
+	Tag:           "varint,30006,rep,name=extension_repeated_uint64,json=extensionRepeatedUint64",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         30007,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_fixed32",
+	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32,json=extensionRepeatedFixed32",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int32)(nil),
+	Field:         30008,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sfixed32",
+	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32,json=extensionRepeatedSfixed32",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]float32)(nil),
+	Field:         30009,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_float",
+	Tag:           "fixed32,30009,rep,name=extension_repeated_float,json=extensionRepeatedFloat",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]uint64)(nil),
+	Field:         30010,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_fixed64",
+	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64,json=extensionRepeatedFixed64",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]int64)(nil),
+	Field:         30011,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sfixed64",
+	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64,json=extensionRepeatedSfixed64",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]float64)(nil),
+	Field:         30012,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_double",
+	Tag:           "fixed64,30012,rep,name=extension_repeated_double,json=extensionRepeatedDouble",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]string)(nil),
+	Field:         30013,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_string",
+	Tag:           "bytes,30013,rep,name=extension_repeated_string,json=extensionRepeatedString",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([][]byte)(nil),
+	Field:         30014,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_bytes",
+	Tag:           "bytes,30014,rep,name=extension_repeated_bytes,json=extensionRepeatedBytes",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]Message_ChildEnum)(nil),
+	Field:         30015,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_child_enum",
+	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,json=extensionRepeatedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_ChildMessage)(nil),
+	Field:         30016,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_child_message",
+	Tag:           "bytes,30016,rep,name=extension_repeated_child_message,json=extensionRepeatedChildMessage",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_NamedGroup)(nil),
+	Field:         30017,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_named_group",
+	Tag:           "bytes,30017,rep,name=extension_repeated_named_group,json=extensionRepeatedNamedGroup",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]SiblingEnum)(nil),
+	Field:         30018,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sibling_enum",
+	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,json=extensionRepeatedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*SiblingMessage)(nil),
+	Field:         30019,
+	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sibling_message",
+	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message,json=extensionRepeatedSiblingMessage",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
+	ExtendedType:  (*Message)(nil),
+	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
+	Field:         30020,
+	Name:          "google.golang.org.proto2_20180814.Message.extensionrepeatedgroup",
+	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
+	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
+}
+
+type Message_ChildMessage struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_ChildMessage) Reset()         { *m = Message_ChildMessage{} }
+func (m *Message_ChildMessage) String() string { return proto.CompactTextString(m) }
+func (*Message_ChildMessage) ProtoMessage()    {}
+func (*Message_ChildMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 0}
+}
+func (m *Message_ChildMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_ChildMessage.Unmarshal(m, b)
+}
+func (m *Message_ChildMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_ChildMessage.Marshal(b, m, deterministic)
+}
+func (dst *Message_ChildMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_ChildMessage.Merge(dst, src)
+}
+func (m *Message_ChildMessage) XXX_Size() int {
+	return xxx_messageInfo_Message_ChildMessage.Size(m)
+}
+func (m *Message_ChildMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_ChildMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_ChildMessage proto.InternalMessageInfo
+
+func (m *Message_ChildMessage) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *Message_ChildMessage) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message_NamedGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_NamedGroup) Reset()         { *m = Message_NamedGroup{} }
+func (m *Message_NamedGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_NamedGroup) ProtoMessage()    {}
+func (*Message_NamedGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 1}
+}
+func (m *Message_NamedGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_NamedGroup.Unmarshal(m, b)
+}
+func (m *Message_NamedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_NamedGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_NamedGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_NamedGroup.Merge(dst, src)
+}
+func (m *Message_NamedGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_NamedGroup.Size(m)
+}
+func (m *Message_NamedGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_NamedGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_NamedGroup proto.InternalMessageInfo
+
+func (m *Message_NamedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_NamedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_NamedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func (m *Message_NamedGroup) GetF4() *Message {
+	if m != nil {
+		return m.F4
+	}
+	return nil
+}
+
+type Message_OptionalGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_OptionalGroup) Reset()         { *m = Message_OptionalGroup{} }
+func (m *Message_OptionalGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_OptionalGroup) ProtoMessage()    {}
+func (*Message_OptionalGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 2}
+}
+func (m *Message_OptionalGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_OptionalGroup.Unmarshal(m, b)
+}
+func (m *Message_OptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_OptionalGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_OptionalGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_OptionalGroup.Merge(dst, src)
+}
+func (m *Message_OptionalGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_OptionalGroup.Size(m)
+}
+func (m *Message_OptionalGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_OptionalGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_OptionalGroup proto.InternalMessageInfo
+
+func (m *Message_OptionalGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_OptionalGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_OptionalGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_RequiredGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_RequiredGroup) Reset()         { *m = Message_RequiredGroup{} }
+func (m *Message_RequiredGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_RequiredGroup) ProtoMessage()    {}
+func (*Message_RequiredGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 3}
+}
+func (m *Message_RequiredGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_RequiredGroup.Unmarshal(m, b)
+}
+func (m *Message_RequiredGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_RequiredGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_RequiredGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_RequiredGroup.Merge(dst, src)
+}
+func (m *Message_RequiredGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_RequiredGroup.Size(m)
+}
+func (m *Message_RequiredGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_RequiredGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_RequiredGroup proto.InternalMessageInfo
+
+func (m *Message_RequiredGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_RequiredGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_RequiredGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_RepeatedGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_RepeatedGroup) Reset()         { *m = Message_RepeatedGroup{} }
+func (m *Message_RepeatedGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_RepeatedGroup) ProtoMessage()    {}
+func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 4}
+}
+func (m *Message_RepeatedGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_RepeatedGroup.Unmarshal(m, b)
+}
+func (m *Message_RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_RepeatedGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_RepeatedGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_RepeatedGroup.Merge(dst, src)
+}
+func (m *Message_RepeatedGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_RepeatedGroup.Size(m)
+}
+func (m *Message_RepeatedGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_RepeatedGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_RepeatedGroup proto.InternalMessageInfo
+
+func (m *Message_RepeatedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_RepeatedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_RepeatedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_OneofGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_OneofGroup) Reset()         { *m = Message_OneofGroup{} }
+func (m *Message_OneofGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_OneofGroup) ProtoMessage()    {}
+func (*Message_OneofGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 33}
+}
+func (m *Message_OneofGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_OneofGroup.Unmarshal(m, b)
+}
+func (m *Message_OneofGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_OneofGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_OneofGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_OneofGroup.Merge(dst, src)
+}
+func (m *Message_OneofGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_OneofGroup.Size(m)
+}
+func (m *Message_OneofGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_OneofGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_OneofGroup proto.InternalMessageInfo
+
+func (m *Message_OneofGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_OneofGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_OneofGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_ExtensionOptionalGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
+func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
+func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 34}
+}
+func (m *Message_ExtensionOptionalGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_ExtensionOptionalGroup.Unmarshal(m, b)
+}
+func (m *Message_ExtensionOptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_ExtensionOptionalGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_ExtensionOptionalGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_ExtensionOptionalGroup.Merge(dst, src)
+}
+func (m *Message_ExtensionOptionalGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_ExtensionOptionalGroup.Size(m)
+}
+func (m *Message_ExtensionOptionalGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_ExtensionOptionalGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_ExtensionOptionalGroup proto.InternalMessageInfo
+
+func (m *Message_ExtensionOptionalGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ExtensionOptionalGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message_ExtensionRepeatedGroup struct {
+	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
+	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
+func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
+func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
+func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 35}
+}
+func (m *Message_ExtensionRepeatedGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Unmarshal(m, b)
+}
+func (m *Message_ExtensionRepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Marshal(b, m, deterministic)
+}
+func (dst *Message_ExtensionRepeatedGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_ExtensionRepeatedGroup.Merge(dst, src)
+}
+func (m *Message_ExtensionRepeatedGroup) XXX_Size() int {
+	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Size(m)
+}
+func (m *Message_ExtensionRepeatedGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_ExtensionRepeatedGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_ExtensionRepeatedGroup proto.InternalMessageInfo
+
+func (m *Message_ExtensionRepeatedGroup) GetF1() string {
+	if m != nil && m.F1 != nil {
+		return *m.F1
+	}
+	return ""
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF2() string {
+	if m != nil && m.F2 != nil {
+		return *m.F2
+	}
+	return ""
+}
+
+func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20180814.SiblingMessage")
+	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20180814.Message")
+	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto2_20180814.Message.MapBoolBoolEntry")
+	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto2_20180814.Message.MapBoolBytesEntry")
+	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto2_20180814.Message.MapBoolChildEnumEntry")
+	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto2_20180814.Message.MapBoolChildMessageEntry")
+	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolDoubleEntry")
+	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolFixed32Entry")
+	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolFixed64Entry")
+	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolFloatEntry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolInt32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolInt64Entry")
+	proto.RegisterMapType((map[bool]*Message_NamedGroup)(nil), "google.golang.org.proto2_20180814.Message.MapBoolNamedGroupEntry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSfixed32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSfixed64Entry")
+	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSiblingEnumEntry")
+	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSiblingMessageEntry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSint32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSint64Entry")
+	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto2_20180814.Message.MapBoolStringEntry")
+	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolUint32Entry")
+	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolUint64Entry")
+	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapFixed32BoolEntry")
+	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapInt32BoolEntry")
+	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180814.Message.MapInt64BoolEntry")
+	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapSint32BoolEntry")
+	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180814.Message.MapSint64BoolEntry")
+	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto2_20180814.Message.MapStringBoolEntry")
+	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapUint32BoolEntry")
+	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto2_20180814.Message.MapUint64BoolEntry")
+	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20180814.Message.ChildMessage")
+	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20180814.Message.NamedGroup")
+	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20180814.Message.OptionalGroup")
+	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20180814.Message.RequiredGroup")
+	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20180814.Message.RepeatedGroup")
+	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20180814.Message.OneofGroup")
+	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20180814.Message.ExtensionOptionalGroup")
+	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20180814.Message.ExtensionRepeatedGroup")
+	proto.RegisterEnum("google.golang.org.proto2_20180814.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
+	proto.RegisterEnum("google.golang.org.proto2_20180814.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
+	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
+	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
+	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
+	proto.RegisterExtension(E_Message_ExtensionOptionalString)
+	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
+	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
+	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
+	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
+	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
+	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
+}
+
+func init() {
+	proto.RegisterFile("proto2.v1.2.0-20180814-aa810b61/test.proto", fileDescriptor_test_3cbbf8564163e8c6)
+}
+
+var fileDescriptor_test_3cbbf8564163e8c6 = []byte{
+	// 4492 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x69, 0x70, 0x1c, 0xc7,
+	0x75, 0xc6, 0xec, 0x62, 0x17, 0x44, 0x13, 0x0b, 0x2c, 0x86, 0x24, 0x30, 0x84, 0xa4, 0x68, 0xcd,
+	0x38, 0xce, 0x86, 0x11, 0x41, 0x60, 0xd0, 0x6c, 0x52, 0x1b, 0x1d, 0x26, 0x24, 0xca, 0x2b, 0xc7,
+	0x5a, 0xa5, 0x46, 0xc5, 0x94, 0xcb, 0xa5, 0x0a, 0x03, 0x10, 0x0b, 0x70, 0xa5, 0x3d, 0x20, 0x60,
+	0x97, 0x12, 0x63, 0xa7, 0xc4, 0x38, 0xe7, 0x4f, 0xf9, 0xbe, 0xd6, 0xb6, 0xac, 0xdb, 0xd6, 0xe9,
+	0xfb, 0xd2, 0xe5, 0x23, 0x89, 0x7c, 0x5f, 0x39, 0x9c, 0xcb, 0xb9, 0x2f, 0xe7, 0xbe, 0xef, 0xa3,
+	0xba, 0x5f, 0xf7, 0x74, 0xf7, 0x4c, 0xcf, 0x02, 0x3d, 0xeb, 0xd2, 0x0f, 0x55, 0x89, 0xbd, 0xaf,
+	0xdf, 0xd7, 0xef, 0xdb, 0x7e, 0xef, 0x7d, 0xe8, 0x99, 0x5e, 0x74, 0x78, 0x73, 0xab, 0xd3, 0xed,
+	0xf8, 0xf3, 0xe7, 0x17, 0xe7, 0xfd, 0xf9, 0x85, 0x23, 0xfe, 0xc2, 0xe2, 0x89, 0x85, 0x13, 0x8b,
+	0xf8, 0xc8, 0xca, 0xca, 0x89, 0xc5, 0x85, 0x55, 0xb2, 0x78, 0xb4, 0x5b, 0xdf, 0xee, 0xce, 0x33,
+	0x23, 0xf7, 0x25, 0x1b, 0x9d, 0xce, 0x46, 0xb3, 0x3e, 0xbf, 0xd1, 0x69, 0xae, 0xb4, 0x37, 0xe6,
+	0x3b, 0x5b, 0x1b, 0xf0, 0x81, 0x7f, 0x46, 0x4c, 0x3b, 0xf4, 0x3a, 0x34, 0x79, 0x4b, 0x63, 0xb5,
+	0xd9, 0x68, 0x6f, 0xdc, 0x54, 0xdf, 0xde, 0x5e, 0xd9, 0xa8, 0xbb, 0x93, 0x28, 0xb3, 0xbe, 0xe8,
+	0x39, 0x25, 0xa7, 0x3c, 0x1e, 0x64, 0xd6, 0x17, 0xd9, 0xbf, 0x7d, 0x2f, 0x53, 0xca, 0xb0, 0x7f,
+	0xfb, 0xec, 0xdf, 0x4b, 0x5e, 0xb6, 0x94, 0x65, 0xff, 0x5e, 0x72, 0x2b, 0x28, 0xb3, 0x8e, 0xbd,
+	0xd1, 0x92, 0x53, 0xde, 0xeb, 0x1f, 0x9e, 0xdf, 0x11, 0x71, 0x9e, 0xe3, 0x04, 0x99, 0x75, 0x7c,
+	0xe8, 0x3b, 0x8f, 0x3a, 0x68, 0x4c, 0x00, 0x9f, 0x46, 0xa8, 0xbd, 0xd2, 0xaa, 0xaf, 0x6d, 0x6c,
+	0x75, 0x7a, 0x9b, 0x6c, 0x01, 0xc8, 0x3f, 0xb6, 0x7b, 0x87, 0xf3, 0x35, 0x3a, 0xf9, 0x15, 0x74,
+	0x72, 0xa0, 0x38, 0x72, 0xbf, 0x1f, 0x15, 0x3a, 0x9b, 0xdd, 0x46, 0xa7, 0xbd, 0xd2, 0x3c, 0xb3,
+	0xda, 0xe9, 0x34, 0xbd, 0xb5, 0x92, 0x53, 0xde, 0x13, 0x4c, 0x88, 0xc1, 0xe5, 0x4e, 0xa7, 0xe9,
+	0xfe, 0x00, 0x9a, 0x0c, 0x8d, 0x1a, 0xed, 0xee, 0x92, 0xef, 0xd5, 0x4b, 0x4e, 0x39, 0x17, 0x84,
+	0x53, 0x6f, 0xa4, 0x83, 0xee, 0x0f, 0xa2, 0xa9, 0xd0, 0x6c, 0x1b, 0xec, 0xd6, 0x4b, 0x4e, 0x79,
+	0x3a, 0x08, 0x67, 0xdf, 0xd2, 0x88, 0x19, 0xf6, 0xc0, 0x70, 0xa3, 0xe4, 0x94, 0x0b, 0xd2, 0xf0,
+	0x34, 0x18, 0x46, 0x80, 0x09, 0xf6, 0xce, 0x95, 0x9c, 0x72, 0x56, 0x03, 0x26, 0x38, 0x06, 0x4c,
+	0xb0, 0xd7, 0x28, 0x39, 0x65, 0x57, 0x07, 0x8e, 0x18, 0xf6, 0xc0, 0xf0, 0xb6, 0x92, 0x53, 0x1e,
+	0xd5, 0x81, 0x09, 0x76, 0x7f, 0x08, 0x15, 0x43, 0xc3, 0xf5, 0xc6, 0x5d, 0xf5, 0xb5, 0x25, 0xdf,
+	0xbb, 0xbd, 0xe4, 0x94, 0xc7, 0x82, 0xd0, 0xc1, 0x0d, 0x30, 0xec, 0xfe, 0x30, 0x9a, 0x96, 0xe0,
+	0xc2, 0xb6, 0x59, 0x72, 0xca, 0x53, 0x41, 0xe8, 0xe3, 0x16, 0x3e, 0xae, 0x05, 0xb4, 0xde, 0xec,
+	0xac, 0x74, 0xbd, 0x56, 0xc9, 0x29, 0x67, 0x64, 0x40, 0x37, 0xd0, 0xc1, 0x38, 0x3c, 0xc1, 0x5e,
+	0xbb, 0xe4, 0x94, 0xf3, 0x11, 0x78, 0x82, 0x0d, 0xf0, 0x04, 0x7b, 0x9d, 0x92, 0x53, 0x2e, 0x46,
+	0xe1, 0x23, 0xf1, 0xaf, 0x75, 0x7a, 0xab, 0xcd, 0xba, 0xb7, 0x59, 0x72, 0xca, 0x8e, 0x8c, 0xff,
+	0x7a, 0x36, 0xaa, 0x33, 0xda, 0xdd, 0x6a, 0xb4, 0x37, 0xbc, 0x3b, 0xd8, 0x9e, 0x97, 0x8c, 0xb2,
+	0x51, 0x2d, 0xa0, 0xd5, 0x0b, 0xdd, 0xfa, 0xb6, 0xb7, 0x55, 0x72, 0xca, 0x13, 0x32, 0xa0, 0x65,
+	0x3a, 0xe8, 0xae, 0xa1, 0x7d, 0xa1, 0xd9, 0xd9, 0x73, 0x8d, 0xe6, 0xda, 0x99, 0x7a, 0xbb, 0xd7,
+	0xf2, 0xb6, 0x4b, 0x4e, 0x79, 0xd2, 0xc7, 0x16, 0xdb, 0xf8, 0x3a, 0x3a, 0xf9, 0x54, 0xbb, 0xd7,
+	0x0a, 0xc2, 0xb0, 0xc3, 0x21, 0xb7, 0x85, 0x66, 0x22, 0x28, 0x2d, 0x98, 0xe6, 0x75, 0x59, 0x02,
+	0x1e, 0xb7, 0x05, 0x12, 0xd9, 0xb8, 0x5f, 0xc3, 0x12, 0x29, 0xb9, 0x81, 0xc2, 0xf1, 0x33, 0x2c,
+	0xa5, 0xce, 0x40, 0x72, 0xf6, 0x18, 0x58, 0xca, 0xe4, 0x74, 0x85, 0x4b, 0x39, 0xe6, 0xae, 0xa2,
+	0x03, 0xca, 0xfe, 0x66, 0xf5, 0x08, 0xf8, 0x3b, 0xcf, 0xf8, 0x9b, 0xdf, 0x05, 0x12, 0x2f, 0x63,
+	0x8c, 0xb9, 0x7d, 0x32, 0x2b, 0xc2, 0x41, 0xf7, 0x76, 0xe4, 0xc5, 0x30, 0x04, 0x7b, 0x77, 0xb2,
+	0x80, 0x16, 0x77, 0x0f, 0x23, 0x78, 0x9b, 0x89, 0x20, 0x09, 0xe6, 0x7e, 0x42, 0x56, 0x1d, 0xa0,
+	0xec, 0x2e, 0x56, 0xcf, 0x4e, 0x58, 0x50, 0x76, 0x33, 0x9f, 0x0f, 0xac, 0xe9, 0xee, 0xdc, 0x2b,
+	0xd0, 0xe4, 0x5a, 0x7d, 0x7d, 0xa5, 0xd7, 0xec, 0xd6, 0xd7, 0xa0, 0xac, 0xbd, 0x40, 0x2b, 0xe6,
+	0x9e, 0xca, 0x68, 0x77, 0xab, 0x57, 0x0f, 0x0a, 0xe1, 0x87, 0xac, 0xbc, 0x2d, 0xa0, 0x29, 0x69,
+	0x0d, 0xe5, 0xe8, 0x0b, 0xd4, 0x3c, 0x57, 0xc9, 0x1f, 0x59, 0xf4, 0x97, 0xf0, 0xb1, 0x40, 0x7a,
+	0x83, 0x4a, 0xb7, 0x88, 0x8a, 0x72, 0x06, 0x2f, 0x75, 0x5f, 0xa4, 0x53, 0xa6, 0x2b, 0xb9, 0x23,
+	0x4b, 0xfe, 0xc2, 0x42, 0x20, 0x3d, 0xf2, 0x9a, 0xb7, 0xa0, 0x4e, 0xe1, 0x45, 0xef, 0x4b, 0x74,
+	0x4a, 0xa1, 0x32, 0x1a, 0x99, 0xc1, 0x8b, 0x1f, 0x8e, 0x2c, 0x8b, 0x60, 0xef, 0xcb, 0x74, 0x42,
+	0xb6, 0x82, 0x60, 0x59, 0xe4, 0xf8, 0x89, 0x2b, 0xf5, 0xa5, 0x11, 0x1c, 0x5f, 0x1a, 0xc1, 0xde,
+	0x57, 0xe8, 0x34, 0xb7, 0x92, 0x3b, 0x42, 0x70, 0x6c, 0x69, 0x04, 0xc7, 0x97, 0x46, 0xb0, 0xf7,
+	0x55, 0x3a, 0x65, 0xb4, 0x32, 0x1a, 0x99, 0xc1, 0xcb, 0x23, 0x46, 0xd3, 0x72, 0x86, 0xa8, 0x79,
+	0x5f, 0xa3, 0x53, 0xc6, 0x2a, 0x79, 0x1a, 0xcd, 0xc2, 0x42, 0x20, 0x7d, 0x8a, 0x4a, 0x79, 0x1c,
+	0xb9, 0xca, 0xd2, 0xc4, 0xb4, 0xaf, 0xd3, 0x69, 0x53, 0x95, 0xb1, 0x23, 0x7c, 0x9e, 0xf4, 0x1c,
+	0x56, 0xcd, 0x45, 0x95, 0x09, 0x28, 0x9b, 0xdf, 0xa0, 0xb3, 0x32, 0x95, 0xb1, 0xa5, 0xf9, 0x45,
+	0xbc, 0x78, 0x4c, 0xa5, 0x01, 0x2a, 0x68, 0x7c, 0x85, 0x04, 0x7b, 0xdf, 0xa4, 0x93, 0xf2, 0x95,
+	0x3c, 0x0d, 0x2a, 0xbe, 0x42, 0x82, 0x4d, 0x2b, 0x24, 0xd8, 0xfb, 0x16, 0x9d, 0x56, 0xac, 0x8c,
+	0x1d, 0xe1, 0xf3, 0xa2, 0x2b, 0x24, 0xd8, 0xbd, 0x52, 0xa5, 0x90, 0x57, 0xd6, 0x5f, 0xa3, 0xd3,
+	0x9c, 0x4a, 0x81, 0x2f, 0xd1, 0x27, 0xc7, 0x96, 0x8e, 0x5d, 0xa9, 0x70, 0xc9, 0x4b, 0xed, 0x55,
+	0xda, 0x17, 0x06, 0xb5, 0xf6, 0xd7, 0x99, 0xc0, 0xa8, 0x14, 0xcf, 0xd5, 0x9b, 0xcd, 0xce, 0x15,
+	0xa5, 0x43, 0x77, 0x76, 0xb6, 0x9a, 0x6b, 0x2f, 0x39, 0x84, 0xd4, 0xef, 0x0e, 0xea, 0xef, 0xb2,
+	0x4a, 0x0d, 0x14, 0xe0, 0xdf, 0xa0, 0x93, 0x27, 0x2a, 0xde, 0x5a, 0x7d, 0x65, 0xed, 0xd6, 0xa5,
+	0x25, 0x72, 0xab, 0x7f, 0xec, 0xd8, 0xad, 0xfe, 0x71, 0x72, 0xeb, 0xd2, 0xb1, 0xe3, 0xab, 0xf5,
+	0xfa, 0xba, 0xc2, 0x15, 0x14, 0xe7, 0x36, 0xda, 0x2f, 0x7d, 0x28, 0xd5, 0xf9, 0x37, 0x9d, 0xf4,
+	0xe5, 0xb9, 0x92, 0x3b, 0xf9, 0xaa, 0x1f, 0xab, 0x9e, 0x0c, 0x24, 0x9f, 0xb2, 0x4c, 0x37, 0xd1,
+	0x8c, 0xba, 0x45, 0x95, 0x7a, 0xf6, 0x6d, 0x27, 0x4d, 0x41, 0x13, 0x58, 0xfb, 0x95, 0x8d, 0x2d,
+	0x0b, 0xdb, 0x4b, 0x51, 0x61, 0xab, 0x7e, 0x47, 0xaf, 0xb1, 0x25, 0x4a, 0xc1, 0x63, 0x54, 0xad,
+	0xed, 0x09, 0x26, 0xc4, 0x28, 0xab, 0x01, 0x2f, 0x43, 0x93, 0xa1, 0x15, 0x24, 0xe7, 0xe3, 0xd4,
+	0x2c, 0x17, 0x84, 0x93, 0x21, 0xf3, 0xcb, 0x68, 0x2a, 0xb4, 0xe3, 0x89, 0xff, 0x04, 0x35, 0x9c,
+	0x0e, 0xc2, 0xf9, 0x3c, 0xe1, 0x55, 0x4b, 0x9e, 0xef, 0x4f, 0x52, 0xcb, 0x82, 0xb4, 0xe4, 0x89,
+	0x1e, 0xc1, 0x26, 0xd8, 0x7b, 0x8a, 0x1a, 0x66, 0x35, 0x6c, 0x82, 0x63, 0xd8, 0x04, 0x7b, 0x1f,
+	0xa4, 0x86, 0xae, 0x8e, 0x1d, 0xb1, 0xe4, 0x09, 0xfd, 0x21, 0x6a, 0x39, 0xaa, 0x63, 0x13, 0xec,
+	0x1e, 0x46, 0xc5, 0xd0, 0x52, 0x64, 0xe4, 0x87, 0xa9, 0xe9, 0x58, 0x10, 0xba, 0x10, 0xf9, 0x7b,
+	0x05, 0x9a, 0x96, 0xf8, 0xc2, 0xf8, 0x23, 0xd4, 0x78, 0x2a, 0x08, 0xbd, 0x84, 0x49, 0xab, 0x46,
+	0x05, 0x39, 0xfb, 0x51, 0x6a, 0x9a, 0x91, 0x51, 0x41, 0xa6, 0xc6, 0x56, 0x40, 0xb0, 0xf7, 0x31,
+	0x6a, 0x99, 0x8f, 0xac, 0x80, 0x60, 0xc3, 0x0a, 0x08, 0xf6, 0x3e, 0x4e, 0x8d, 0x8b, 0xd1, 0x15,
+	0x44, 0x58, 0xe0, 0x39, 0xf9, 0x09, 0x6a, 0xeb, 0x48, 0x16, 0x78, 0x0e, 0x6a, 0xcc, 0x42, 0x0a,
+	0x7e, 0x12, 0x34, 0xbd, 0x64, 0x16, 0xf2, 0x4d, 0x8d, 0x0a, 0xd2, 0xed, 0x53, 0xd4, 0x70, 0x42,
+	0x46, 0x05, 0x39, 0x55, 0x47, 0xfb, 0x42, 0x3b, 0x25, 0xa5, 0x3e, 0x4d, 0x8d, 0x53, 0x2b, 0x1e,
+	0xe1, 0x51, 0xa6, 0x52, 0x1b, 0xcd, 0x44, 0x60, 0x44, 0xcf, 0x7e, 0x9a, 0x22, 0x0d, 0x23, 0x79,
+	0x34, 0x30, 0xd1, 0xb8, 0xcf, 0xa1, 0x70, 0x5c, 0x93, 0x3c, 0xcf, 0x00, 0x5a, 0x5a, 0xcd, 0x23,
+	0x7c, 0x2a, 0x9a, 0xe7, 0x2c, 0x3a, 0xa0, 0x6c, 0x76, 0xa5, 0x46, 0x3c, 0x0b, 0x14, 0x5a, 0x8b,
+	0x1e, 0x99, 0x22, 0xb2, 0x36, 0x34, 0x91, 0x17, 0x03, 0x11, 0x04, 0x3e, 0x07, 0x21, 0xa5, 0x51,
+	0x3d, 0x11, 0x28, 0x41, 0xde, 0x19, 0x59, 0x89, 0x80, 0xb5, 0xe7, 0x29, 0x84, 0x9d, 0xec, 0x09,
+	0xb8, 0x03, 0x2e, 0x7b, 0x34, 0x7f, 0xee, 0xd5, 0x68, 0x56, 0x6e, 0x78, 0x5d, 0xff, 0xdc, 0x93,
+	0xa5, 0x45, 0x8f, 0xeb, 0x9f, 0x90, 0xd9, 0xeb, 0x35, 0x1d, 0x74, 0x52, 0x61, 0x23, 0x2a, 0x88,
+	0xde, 0x40, 0xe7, 0x4b, 0x41, 0x34, 0x13, 0xf3, 0x00, 0xe5, 0x71, 0x19, 0x1d, 0x34, 0xb8, 0xe0,
+	0x85, 0xf2, 0x8d, 0xd4, 0x47, 0xa8, 0x90, 0x66, 0x63, 0x2e, 0x78, 0xe1, 0x3c, 0x69, 0xf4, 0xc1,
+	0x4b, 0xe8, 0x9b, 0xa8, 0x0f, 0x21, 0x99, 0xe2, 0x2e, 0x78, 0x45, 0x3d, 0x95, 0x14, 0x09, 0xc1,
+	0xde, 0x9b, 0xa9, 0x07, 0x5d, 0x43, 0x19, 0xa3, 0x21, 0x78, 0x40, 0x34, 0x04, 0x7b, 0x6f, 0xa1,
+	0x7e, 0x42, 0x51, 0x65, 0x8e, 0x86, 0xe0, 0x01, 0xd1, 0x10, 0xec, 0xbd, 0x95, 0xfa, 0x10, 0x2a,
+	0xcb, 0x1c, 0x0d, 0xc1, 0xee, 0x29, 0x34, 0x67, 0x70, 0x21, 0x0a, 0xf0, 0xdb, 0xa8, 0x0f, 0x29,
+	0xbb, 0xbc, 0x98, 0x17, 0x51, 0xbe, 0xab, 0xe8, 0x12, 0x53, 0x34, 0xc2, 0xcf, 0xdb, 0xa9, 0x1f,
+	0x45, 0x87, 0x1d, 0x8c, 0x47, 0x24, 0x4a, 0xfb, 0xb2, 0x91, 0x5e, 0x28, 0xf2, 0xef, 0xa0, 0x6e,
+	0x14, 0x61, 0x16, 0xe7, 0x16, 0xca, 0xfe, 0x80, 0xa0, 0x08, 0xf6, 0xde, 0x49, 0xbd, 0x48, 0xa5,
+	0x96, 0x10, 0x14, 0xc1, 0x03, 0x83, 0x22, 0xd8, 0x7b, 0x17, 0xf5, 0xa3, 0x48, 0xb7, 0xa4, 0xa0,
+	0x08, 0x76, 0x5f, 0x69, 0xfc, 0xa2, 0x78, 0xdf, 0xe8, 0x53, 0x3f, 0x31, 0x2d, 0x17, 0xff, 0xc6,
+	0x78, 0x3f, 0xb9, 0xc9, 0xbc, 0x71, 0xa0, 0xb3, 0xbc, 0x9b, 0xfa, 0x32, 0x89, 0x3b, 0xc3, 0x1e,
+	0x82, 0xa6, 0x73, 0x8b, 0x91, 0x6f, 0x68, 0x3f, 0xef, 0xa1, 0xde, 0x06, 0xa9, 0xbd, 0xf8, 0x17,
+	0x00, 0x1d, 0xea, 0x6e, 0x74, 0x99, 0xc1, 0xa9, 0xd2, 0xab, 0xde, 0x9b, 0x4d, 0xdf, 0xab, 0x84,
+	0x24, 0x9b, 0x8b, 0x81, 0xcb, 0xde, 0xf5, 0xd3, 0xe8, 0x72, 0x63, 0x76, 0x29, 0xb5, 0xfe, 0xde,
+	0x6c, 0x9a, 0x5a, 0x2f, 0xc0, 0x2f, 0x35, 0xe4, 0x64, 0x44, 0x17, 0x6e, 0xd6, 0x57, 0xc2, 0x12,
+	0xf9, 0xcf, 0xd9, 0x52, 0x16, 0x74, 0x21, 0x8c, 0x4a, 0x5d, 0xc8, 0xad, 0xa0, 0x02, 0xfd, 0x0b,
+	0x35, 0x63, 0xba, 0x10, 0x86, 0x15, 0x5d, 0xc8, 0xed, 0x78, 0xb9, 0xfb, 0x57, 0x6a, 0xc8, 0x74,
+	0x21, 0x8c, 0xab, 0xba, 0x90, 0x5b, 0xf2, 0xa2, 0xf6, 0x6f, 0xd4, 0xb2, 0x20, 0x2d, 0x55, 0x5d,
+	0x28, 0xb1, 0x09, 0xf6, 0xfe, 0x9d, 0x1a, 0x66, 0x35, 0x6c, 0xa1, 0x73, 0x14, 0x6c, 0x82, 0xbd,
+	0xff, 0xa0, 0x86, 0xae, 0x8e, 0x1d, 0xb1, 0xe4, 0x25, 0xe8, 0x3f, 0xa9, 0xe5, 0xa8, 0x8e, 0x2d,
+	0x74, 0x21, 0xb7, 0x14, 0x15, 0xe2, 0xbf, 0xa8, 0x29, 0xd3, 0x85, 0xf0, 0x81, 0xa6, 0x0b, 0x05,
+	0xbe, 0x30, 0xfe, 0x6f, 0x6a, 0xcc, 0x74, 0x21, 0x5f, 0x81, 0xa6, 0x0b, 0x85, 0x67, 0x56, 0x32,
+	0xfe, 0x87, 0x9a, 0x66, 0x64, 0x54, 0x8a, 0x2e, 0x54, 0x57, 0x40, 0xb0, 0xf7, 0xbf, 0xd4, 0x32,
+	0x1f, 0x59, 0x81, 0xd0, 0x85, 0xda, 0x0a, 0x08, 0xf6, 0xfe, 0x8f, 0x1a, 0x17, 0xa3, 0x2b, 0x88,
+	0xb0, 0xc0, 0xf3, 0xfb, 0xe2, 0x68, 0x29, 0x0b, 0xba, 0x10, 0xc6, 0x55, 0x5d, 0x28, 0xfc, 0x42,
+	0xf6, 0xfe, 0xcc, 0x28, 0x3b, 0xdb, 0x95, 0xcc, 0x2a, 0xba, 0x50, 0xec, 0x26, 0x96, 0x98, 0xaf,
+	0xa7, 0x86, 0x13, 0x32, 0x2a, 0x45, 0x17, 0x72, 0x3b, 0x25, 0xd7, 0x7e, 0x96, 0x1a, 0x0f, 0xa1,
+	0x0b, 0xc1, 0x63, 0x44, 0x17, 0x6a, 0x30, 0x42, 0xd6, 0xfc, 0x1c, 0x45, 0x1a, 0x4e, 0x17, 0x2a,
+	0x60, 0x9a, 0x2e, 0xe4, 0x78, 0xaa, 0x2e, 0xfc, 0x79, 0x40, 0x4b, 0xaf, 0x0b, 0xc1, 0x67, 0x54,
+	0x17, 0x86, 0x9b, 0x5d, 0xa9, 0x15, 0xbf, 0x00, 0x14, 0xa6, 0xd0, 0x85, 0x22, 0x45, 0x22, 0xba,
+	0x30, 0x02, 0x22, 0x08, 0xfc, 0x45, 0x08, 0x29, 0x9d, 0x2e, 0xd4, 0xa0, 0x34, 0x5d, 0x08, 0x9f,
+	0x00, 0x6b, 0xbf, 0x44, 0x21, 0x6c, 0x75, 0x21, 0x38, 0x08, 0x75, 0xa1, 0xe2, 0xcf, 0xfd, 0x49,
+	0x54, 0x68, 0xad, 0x6c, 0xb2, 0x2a, 0x07, 0xa5, 0xee, 0xdb, 0x10, 0xc3, 0x8f, 0x58, 0x00, 0xdc,
+	0xb4, 0xb2, 0x49, 0x0b, 0x22, 0xfd, 0xef, 0x54, 0xbb, 0xbb, 0x75, 0x21, 0xd8, 0xdb, 0x92, 0x23,
+	0xee, 0x59, 0x34, 0x19, 0x22, 0x40, 0x4d, 0xfb, 0x2d, 0x80, 0xb8, 0xca, 0x1e, 0x82, 0x15, 0x54,
+	0xc0, 0x98, 0x68, 0x29, 0x43, 0xee, 0x3a, 0x9a, 0x0a, 0x41, 0x78, 0x8d, 0xfd, 0x6d, 0x40, 0xb9,
+	0xda, 0x1e, 0x05, 0xaa, 0x31, 0xc0, 0x14, 0x5a, 0xea, 0x98, 0x86, 0xc3, 0x2b, 0xf4, 0xef, 0xa4,
+	0xc6, 0x39, 0x6d, 0xc0, 0xe1, 0xf5, 0x3d, 0x42, 0x1a, 0xc1, 0xde, 0xef, 0x0e, 0x43, 0x1a, 0xc1,
+	0x31, 0xd2, 0x08, 0x8e, 0x91, 0x46, 0xb0, 0xf7, 0x7b, 0x43, 0x91, 0x26, 0x60, 0x54, 0xd2, 0x22,
+	0x38, 0xbc, 0xb5, 0x7c, 0x67, 0x28, 0xd2, 0xa2, 0x38, 0xbc, 0x31, 0x35, 0x50, 0x31, 0xc4, 0x11,
+	0xbd, 0xe6, 0xf7, 0x01, 0xe8, 0x1a, 0x7b, 0x20, 0xde, 0xc2, 0x00, 0x69, 0xb2, 0xa5, 0x0d, 0xba,
+	0x4d, 0x34, 0x2d, 0xa9, 0x13, 0x58, 0x7f, 0x00, 0x58, 0xd7, 0xa6, 0x20, 0x6f, 0x5d, 0x05, 0x9b,
+	0x6a, 0xe9, 0xa3, 0xda, 0x6e, 0x80, 0xbe, 0xf8, 0x87, 0xa9, 0x77, 0x03, 0xeb, 0xa0, 0xfa, 0x6e,
+	0x80, 0xa6, 0x1a, 0x63, 0x8f, 0x60, 0xef, 0x8f, 0x86, 0x63, 0x4f, 0x7c, 0x4f, 0x1a, 0x7b, 0x04,
+	0x1b, 0xd8, 0x23, 0xd8, 0xfb, 0xe3, 0x21, 0xd9, 0x13, 0x60, 0x3a, 0x7b, 0x91, 0xed, 0xc7, 0x7b,
+	0xfa, 0x9f, 0xa4, 0xde, 0x7e, 0xd0, 0xfd, 0xf5, 0xed, 0xc7, 0x15, 0x81, 0x96, 0x4e, 0xa0, 0x08,
+	0xfe, 0x34, 0x7d, 0x3a, 0x31, 0x07, 0x91, 0x74, 0x02, 0x3d, 0xa1, 0xee, 0x06, 0xd0, 0x13, 0x7f,
+	0x96, 0x7a, 0x37, 0x30, 0xe5, 0xa1, 0xef, 0x06, 0x10, 0x23, 0x9b, 0x68, 0x5f, 0x08, 0xa2, 0x88,
+	0x91, 0x3f, 0x07, 0xa4, 0x97, 0xdb, 0x23, 0x85, 0x02, 0x04, 0xd0, 0x8a, 0xad, 0xc8, 0xb0, 0x7b,
+	0x01, 0xcd, 0x44, 0x10, 0x45, 0x5b, 0xfd, 0x0b, 0x00, 0xbd, 0x2e, 0x25, 0x28, 0x1f, 0x03, 0xdc,
+	0x7d, 0xad, 0xf8, 0x27, 0xee, 0x36, 0xda, 0x1f, 0x42, 0xab, 0x12, 0xe5, 0x2f, 0x01, 0xf8, 0xa4,
+	0x3d, 0xb0, 0x54, 0x25, 0x00, 0x3b, 0xdd, 0x8a, 0x8e, 0xbb, 0xe7, 0xd1, 0x01, 0xa5, 0xfa, 0x2a,
+	0x6a, 0xe5, 0xbb, 0x80, 0xba, 0x9c, 0xa6, 0x06, 0x87, 0x3a, 0x05, 0x60, 0xdd, 0x56, 0xec, 0x03,
+	0xf7, 0x6e, 0xe4, 0xc5, 0x70, 0x05, 0xd3, 0x7f, 0x05, 0xd0, 0xa7, 0x52, 0x43, 0x6b, 0x5c, 0x1f,
+	0x68, 0x99, 0x3e, 0x13, 0xfb, 0x97, 0x35, 0x3a, 0xd0, 0x1c, 0x7f, 0x9d, 0x6a, 0xff, 0xb2, 0xce,
+	0x2f, 0x45, 0x07, 0xdd, 0xbf, 0xe1, 0x90, 0x48, 0xc6, 0x6d, 0x05, 0xe5, 0x6f, 0x52, 0x25, 0x23,
+	0x34, 0x7e, 0x09, 0x43, 0x93, 0x51, 0x8e, 0x09, 0x9c, 0x9e, 0x82, 0xf3, 0xb7, 0xa9, 0x70, 0x4e,
+	0x1b, 0x70, 0xe4, 0x98, 0x42, 0x1a, 0xc1, 0x00, 0xf3, 0x77, 0x69, 0x49, 0x23, 0x38, 0x46, 0x1a,
+	0x0c, 0xa9, 0xa4, 0x09, 0x94, 0xbf, 0x4f, 0x4d, 0x9a, 0x0a, 0x23, 0x48, 0xd3, 0x71, 0x7a, 0x0a,
+	0xce, 0x3f, 0xa4, 0x26, 0x2d, 0x8a, 0x23, 0xc7, 0x44, 0x4b, 0xe3, 0x6d, 0x14, 0x80, 0xfe, 0x31,
+	0x55, 0x4b, 0xe3, 0x7d, 0x5f, 0x22, 0xd1, 0x6f, 0x43, 0x19, 0x0c, 0xa9, 0x63, 0x25, 0x1a, 0x90,
+	0xfe, 0x29, 0x1d, 0x75, 0xcc, 0x43, 0x84, 0xba, 0x70, 0xcc, 0x2d, 0x21, 0xd4, 0x69, 0xd7, 0x3b,
+	0xeb, 0x00, 0xf1, 0x74, 0xae, 0xe4, 0x94, 0xf7, 0x54, 0x47, 0x82, 0x71, 0x36, 0xc8, 0x2c, 0x0e,
+	0xa1, 0xbd, 0x60, 0x01, 0xf2, 0xf4, 0x19, 0x6a, 0x92, 0xab, 0x8e, 0x04, 0x30, 0x0f, 0xe4, 0xf2,
+	0x4b, 0xd1, 0x04, 0xd8, 0x70, 0xad, 0xfc, 0x2c, 0x35, 0x9a, 0xae, 0x8e, 0x04, 0x30, 0x95, 0x8b,
+	0xdd, 0xd0, 0x8a, 0x2b, 0xdd, 0xe7, 0xa8, 0x55, 0x21, 0xb4, 0xe2, 0x52, 0x55, 0xc5, 0x23, 0xd8,
+	0x7b, 0x9e, 0x1a, 0x65, 0x55, 0x3c, 0x82, 0x75, 0x3c, 0x82, 0xbd, 0xcf, 0x50, 0x23, 0x57, 0xc3,
+	0x53, 0xad, 0xb8, 0x48, 0xfc, 0x2c, 0xb5, 0x1a, 0xd5, 0xf0, 0x08, 0x76, 0x5f, 0x86, 0x0a, 0x60,
+	0x25, 0x64, 0xd7, 0xe7, 0xa8, 0xd9, 0x58, 0x75, 0x24, 0x80, 0xd9, 0x42, 0xa2, 0x95, 0xd1, 0x24,
+	0xc7, 0x14, 0x86, 0x9f, 0xa7, 0x86, 0x53, 0xd5, 0x91, 0x00, 0x1c, 0x84, 0xf2, 0x2a, 0x8c, 0x00,
+	0xb4, 0xd5, 0x2f, 0x53, 0xb3, 0x4c, 0x18, 0x01, 0xa8, 0x23, 0x1d, 0x95, 0x60, 0xef, 0x57, 0xa8,
+	0x55, 0x5e, 0x47, 0x65, 0x07, 0x08, 0x1a, 0x2a, 0xc1, 0xde, 0xaf, 0x52, 0xc3, 0x62, 0x04, 0x55,
+	0x8d, 0x96, 0x6b, 0x92, 0x17, 0xa8, 0x9d, 0x13, 0x46, 0xcb, 0x45, 0x85, 0x64, 0x0e, 0x14, 0xc5,
+	0x17, 0xa8, 0xd5, 0xb8, 0x64, 0x0e, 0x24, 0x41, 0x18, 0x01, 0xe8, 0x81, 0x2f, 0x52, 0xa3, 0x89,
+	0x30, 0x02, 0xe8, 0xe8, 0x2b, 0xa8, 0x08, 0x36, 0x4a, 0x3b, 0xff, 0x52, 0x2e, 0xfd, 0x63, 0xdc,
+	0xea, 0x48, 0x00, 0xa1, 0xca, 0x16, 0x7e, 0x1b, 0xda, 0xa7, 0x42, 0x88, 0xae, 0xf2, 0xe5, 0xdc,
+	0x50, 0xaf, 0xd8, 0x54, 0x47, 0x82, 0x69, 0x09, 0x24, 0xba, 0xc8, 0x1a, 0x82, 0x41, 0xad, 0x61,
+	0x7f, 0x25, 0x37, 0xc4, 0xfb, 0x35, 0xd5, 0x91, 0x60, 0x8a, 0xb9, 0x54, 0x9a, 0xf4, 0x19, 0xe4,
+	0x8a, 0x8d, 0xab, 0x74, 0xe8, 0xaf, 0xe6, 0xd2, 0x3c, 0x8b, 0xae, 0x8e, 0x04, 0x45, 0xbe, 0xdd,
+	0x65, 0x37, 0x3e, 0x87, 0x0e, 0xe8, 0x00, 0x82, 0xb4, 0xaf, 0xe5, 0x52, 0xbe, 0x59, 0x53, 0x1d,
+	0x09, 0xf6, 0xa9, 0x30, 0x82, 0xb0, 0x57, 0xf3, 0xca, 0x01, 0x4c, 0x7d, 0x3d, 0x67, 0xfd, 0x9a,
+	0xe0, 0xcd, 0x74, 0xb6, 0x60, 0x4a, 0xf1, 0x25, 0x73, 0x03, 0xf6, 0xe8, 0xa2, 0xf7, 0x0d, 0xb1,
+	0x49, 0x27, 0x94, 0x4d, 0xba, 0x18, 0xb5, 0xf3, 0xbd, 0x6f, 0x9a, 0xec, 0xfc, 0xa8, 0xdd, 0x92,
+	0xf7, 0x2d, 0x93, 0xdd, 0x92, 0x7b, 0x25, 0xda, 0xcf, 0x33, 0x48, 0x7f, 0xa0, 0x75, 0x6f, 0x5e,
+	0xbe, 0xd0, 0x53, 0x75, 0x02, 0xf8, 0x06, 0xf5, 0xe7, 0x59, 0x57, 0x0b, 0xda, 0xa3, 0x0f, 0xb3,
+	0xde, 0x97, 0x57, 0xdf, 0xee, 0xa9, 0x3a, 0x9c, 0xcb, 0xc8, 0xb3, 0xac, 0x6b, 0xd0, 0x4c, 0x74,
+	0x3a, 0xaf, 0xa4, 0xf7, 0xe5, 0x95, 0x57, 0x7d, 0xaa, 0x4e, 0xb0, 0x5f, 0x9f, 0xce, 0x2b, 0xeb,
+	0xd5, 0xf1, 0xf9, 0xbc, 0xc6, 0xde, 0x9f, 0x97, 0xef, 0xfd, 0xc4, 0xa7, 0x9f, 0x16, 0x8f, 0xc1,
+	0x4c, 0xab, 0x27, 0xd8, 0x7b, 0x20, 0x1f, 0x7d, 0x09, 0xc8, 0x18, 0x01, 0xc1, 0x49, 0x11, 0x10,
+	0xec, 0x3d, 0x98, 0x57, 0xde, 0x08, 0x32, 0x47, 0x40, 0x70, 0x52, 0x04, 0x04, 0x7b, 0x0f, 0xe5,
+	0xe5, 0xeb, 0x41, 0xe6, 0x08, 0xd8, 0xa3, 0xaf, 0xd9, 0xe8, 0x74, 0x51, 0xa5, 0x1f, 0xce, 0xab,
+	0xef, 0x0a, 0x55, 0x9d, 0xe0, 0x80, 0xee, 0x41, 0xd4, 0xf7, 0xeb, 0x91, 0x17, 0x8b, 0x40, 0xf8,
+	0x78, 0x24, 0xaf, 0xbd, 0x38, 0x54, 0x75, 0x82, 0x99, 0x48, 0x14, 0xa2, 0xf6, 0x5f, 0x13, 0xa7,
+	0x12, 0xba, 0xc0, 0xfb, 0xf3, 0xda, 0x5b, 0x44, 0x71, 0x1e, 0xa1, 0x2f, 0x24, 0x05, 0x42, 0xb0,
+	0xf7, 0x81, 0xbc, 0xfa, 0x4a, 0x51, 0x42, 0x20, 0x04, 0x27, 0x07, 0x42, 0xb0, 0xf7, 0x68, 0x5e,
+	0x7b, 0xbf, 0x28, 0x29, 0x10, 0x82, 0xdd, 0x1b, 0xe2, 0x5f, 0x08, 0x6f, 0x2c, 0x8f, 0xe5, 0x0d,
+	0x2f, 0x1b, 0xc5, 0xbf, 0x19, 0xde, 0x70, 0x6e, 0x34, 0x6c, 0x0c, 0x68, 0x3d, 0x8f, 0xe7, 0xcd,
+	0x6f, 0x1e, 0x19, 0xf6, 0x08, 0x74, 0xa5, 0x9b, 0xe3, 0xdc, 0x42, 0x7f, 0x7a, 0x22, 0x3f, 0xf8,
+	0x35, 0xa4, 0x38, 0xd9, 0xd0, 0xc2, 0x5e, 0x8b, 0xe6, 0xa2, 0x0e, 0x95, 0x66, 0xf6, 0x64, 0x7e,
+	0xe8, 0x77, 0x92, 0xaa, 0x4e, 0x30, 0xab, 0x03, 0xab, 0x7f, 0x9f, 0x5e, 0x1a, 0xcf, 0x18, 0xa5,
+	0x29, 0x3c, 0x95, 0x1f, 0xe2, 0x05, 0xa5, 0xaa, 0x13, 0x1c, 0x8c, 0xe6, 0x59, 0x68, 0x33, 0xf7,
+	0x53, 0x68, 0x42, 0xeb, 0x7d, 0x2f, 0xe2, 0x9b, 0xe6, 0x73, 0x77, 0x21, 0xa4, 0xf4, 0xc3, 0x17,
+	0x13, 0xf9, 0x5a, 0x54, 0xd0, 0xde, 0xe4, 0xb4, 0x05, 0xa7, 0x0e, 0xb4, 0x77, 0x22, 0xd2, 0x39,
+	0x50, 0x0e, 0xcf, 0xad, 0x1d, 0x5c, 0x83, 0x8a, 0xd1, 0xc3, 0x71, 0xb7, 0x88, 0xb2, 0xb7, 0xd7,
+	0x2f, 0x30, 0x27, 0x7b, 0x02, 0xfa, 0xbf, 0xee, 0x7e, 0x94, 0x3b, 0xbf, 0xd2, 0xec, 0xd5, 0xbd,
+	0x0c, 0x1b, 0x83, 0x7f, 0x54, 0x32, 0x27, 0x9c, 0xb9, 0x6b, 0xd1, 0x74, 0xec, 0xe4, 0x7b, 0x27,
+	0x07, 0x39, 0xd5, 0xc1, 0xcb, 0x91, 0x1b, 0x3f, 0xd4, 0xde, 0xc9, 0xc3, 0xb4, 0xd9, 0xc3, 0xe9,
+	0xdd, 0x7b, 0x28, 0x24, 0x06, 0xc1, 0x4f, 0xe9, 0x76, 0x72, 0x90, 0x4d, 0x0e, 0x62, 0x97, 0x1e,
+	0xdc, 0xe4, 0x20, 0x76, 0xe9, 0x61, 0x54, 0xf5, 0x70, 0x12, 0xed, 0x33, 0x9c, 0x0b, 0xef, 0xe4,
+	0x62, 0x4c, 0x75, 0xb1, 0x8c, 0xf6, 0x9b, 0x8e, 0x7b, 0x77, 0xf2, 0x31, 0x65, 0xe6, 0x52, 0x9e,
+	0xe3, 0xee, 0xe4, 0x20, 0x33, 0x20, 0x8e, 0x5d, 0x52, 0x91, 0x1f, 0x14, 0xc7, 0x2e, 0x7d, 0x14,
+	0xcd, 0x5f, 0x88, 0x72, 0xa0, 0xba, 0x93, 0x07, 0x27, 0x61, 0x53, 0xc8, 0xa3, 0xd2, 0x9d, 0x3c,
+	0x8c, 0x9b, 0xb9, 0x94, 0xa7, 0xa0, 0x3b, 0x39, 0x98, 0x50, 0x1d, 0x5c, 0x40, 0x07, 0x8c, 0x87,
+	0x9b, 0x06, 0x27, 0xaf, 0x54, 0x9d, 0xa4, 0x7d, 0x98, 0xab, 0x40, 0xdf, 0x8d, 0xbc, 0xa4, 0x23,
+	0x4e, 0x03, 0xfa, 0x4d, 0x2a, 0xfa, 0x10, 0x0f, 0x78, 0x95, 0x05, 0xbc, 0x16, 0xcd, 0x98, 0x8f,
+	0x3a, 0x0d, 0xf0, 0x3f, 0xaa, 0xc3, 0xa7, 0x7c, 0xe2, 0xab, 0x80, 0xf7, 0xd0, 0x6c, 0xc2, 0x89,
+	0xa7, 0x01, 0xfd, 0x7a, 0x9d, 0x7a, 0xdb, 0x87, 0xc0, 0x5a, 0xcc, 0x73, 0xc9, 0xa7, 0x9d, 0x06,
+	0xe4, 0x57, 0xe8, 0x71, 0xa7, 0x78, 0x2c, 0x1c, 0xdb, 0xad, 0xfa, 0x99, 0xa7, 0x8a, 0x99, 0xdb,
+	0xa9, 0x97, 0x40, 0xc2, 0x44, 0x8e, 0x33, 0x55, 0x0f, 0xd3, 0xbb, 0xf3, 0x70, 0x3a, 0xd9, 0x43,
+	0x61, 0x77, 0xfd, 0x4c, 0x3f, 0x83, 0x54, 0x1d, 0x64, 0x77, 0x1f, 0x44, 0x82, 0x07, 0x77, 0xf7,
+	0x41, 0x24, 0x78, 0x18, 0xdd, 0xc9, 0x03, 0x94, 0xd0, 0xe8, 0x89, 0xa0, 0xea, 0x62, 0x6c, 0x97,
+	0x61, 0xe8, 0x47, 0x7d, 0xaa, 0x87, 0xf1, 0x9d, 0x3c, 0x5c, 0x85, 0x90, 0xfc, 0x7b, 0xdc, 0x5a,
+	0x97, 0x54, 0xd1, 0xcc, 0xa9, 0xbb, 0xba, 0xf5, 0xf6, 0x76, 0xa3, 0xd3, 0x1e, 0x4e, 0x63, 0xa9,
+	0x9e, 0x86, 0xd2, 0x4a, 0x87, 0xe6, 0xd1, 0xb8, 0x14, 0xdb, 0xe3, 0x08, 0x74, 0x71, 0x71, 0x84,
+	0xfe, 0xef, 0x72, 0x70, 0xf2, 0xc7, 0x6f, 0x2e, 0x3a, 0xee, 0x5e, 0x34, 0x76, 0x5d, 0xf5, 0x64,
+	0xf0, 0xaa, 0x1b, 0x4f, 0x15, 0x33, 0x87, 0xc7, 0xf7, 0xdc, 0x53, 0x2b, 0x5e, 0xbc, 0x78, 0xf1,
+	0x62, 0xc6, 0x3f, 0x8b, 0x66, 0xeb, 0x62, 0x11, 0x67, 0xb4, 0x3b, 0x8b, 0xae, 0x85, 0xe8, 0xf4,
+	0xee, 0xa9, 0x31, 0x96, 0x0f, 0xd4, 0xa3, 0xd4, 0xd0, 0xaf, 0xc8, 0xaf, 0x23, 0xcf, 0x00, 0x02,
+	0x7f, 0x90, 0xdb, 0xa0, 0xbc, 0xa1, 0xc6, 0xb2, 0x75, 0x26, 0x86, 0xc2, 0x72, 0xdb, 0xdf, 0x40,
+	0x07, 0x0d, 0x30, 0xdb, 0xf6, 0x38, 0x6f, 0xac, 0xb1, 0x9c, 0x9e, 0x8d, 0xe1, 0x40, 0x09, 0x48,
+	0x00, 0xea, 0xd9, 0x03, 0xbd, 0xa9, 0xc6, 0x52, 0x3f, 0x0e, 0x04, 0x95, 0x22, 0x99, 0x38, 0x82,
+	0xad, 0x70, 0xde, 0x5c, 0x63, 0x15, 0xc2, 0x48, 0x1c, 0xc1, 0x03, 0x88, 0xb3, 0xc4, 0x79, 0x4b,
+	0x8d, 0xd5, 0x11, 0x33, 0x71, 0x89, 0x40, 0x3d, 0x7b, 0xa0, 0xb7, 0xd6, 0x58, 0xb9, 0x31, 0x13,
+	0x47, 0xb0, 0xdf, 0x40, 0x73, 0x06, 0x20, 0x71, 0x72, 0x61, 0x83, 0xf4, 0xb6, 0x1a, 0xab, 0x4a,
+	0x5e, 0x0c, 0x89, 0x57, 0x31, 0xff, 0x76, 0x74, 0x89, 0x89, 0xbc, 0x34, 0x58, 0x6f, 0xaf, 0x31,
+	0xd1, 0x7a, 0x30, 0x4e, 0x1f, 0xf7, 0x96, 0xb0, 0x21, 0xd6, 0xe1, 0xd5, 0x3e, 0x0b, 0xa4, 0x77,
+	0xd4, 0x98, 0xba, 0x8d, 0x6f, 0x08, 0xa6, 0x8d, 0x07, 0xd1, 0x67, 0xf9, 0x45, 0xbd, 0xb3, 0xc6,
+	0x34, 0x70, 0x02, 0x7d, 0x04, 0x0f, 0xa4, 0xcf, 0x12, 0xeb, 0x5d, 0x35, 0xa6, 0x95, 0x93, 0xe8,
+	0x4b, 0xdc, 0x7f, 0x70, 0xd8, 0x63, 0x05, 0xd5, 0xaf, 0x31, 0x51, 0x1d, 0xdf, 0x7f, 0xa0, 0xc9,
+	0x93, 0x32, 0x0a, 0x0e, 0x77, 0x6c, 0x80, 0xde, 0x5d, 0x63, 0x5d, 0xc0, 0x90, 0x51, 0x70, 0xe2,
+	0x6b, 0xde, 0x10, 0xec, 0xac, 0xc8, 0x0a, 0xe7, 0x3d, 0x35, 0x26, 0xd1, 0xe3, 0x1b, 0x82, 0x09,
+	0x7c, 0xff, 0x01, 0x07, 0x5d, 0x66, 0xc0, 0x91, 0x47, 0x48, 0x56, 0x60, 0xef, 0xad, 0x0d, 0x21,
+	0xe5, 0xe7, 0x62, 0x4b, 0x0c, 0x3f, 0xf3, 0x1f, 0x77, 0x50, 0x29, 0x71, 0x99, 0xfc, 0xf1, 0x80,
+	0xd5, 0x4a, 0xef, 0xad, 0x0d, 0x27, 0xfb, 0x2f, 0x33, 0x2f, 0x96, 0x7f, 0xec, 0x3f, 0xec, 0xa0,
+	0xef, 0x33, 0xac, 0x57, 0x79, 0x2e, 0x63, 0xb5, 0xda, 0xf7, 0xd5, 0x86, 0xf9, 0x2b, 0xe1, 0x92,
+	0xd8, 0x5a, 0xe5, 0x87, 0xfe, 0x7d, 0x0e, 0xba, 0xdc, 0xd8, 0x23, 0xe4, 0x31, 0x9e, 0xd5, 0x52,
+	0xef, 0xab, 0xa5, 0xfa, 0x93, 0xe2, 0x52, 0x43, 0x67, 0x09, 0x3f, 0xf5, 0x1f, 0x75, 0xd0, 0xa1,
+	0x01, 0x8b, 0x4c, 0xb3, 0x01, 0xee, 0xaf, 0xa5, 0xfd, 0x03, 0xe4, 0xf2, 0xa4, 0xa5, 0x8a, 0x2f,
+	0xff, 0x21, 0x07, 0xc9, 0x74, 0xd3, 0x6f, 0x5a, 0xdb, 0xac, 0xf0, 0x81, 0x1a, 0x7b, 0x1c, 0x65,
+	0xf3, 0xa6, 0x8d, 0x59, 0xc0, 0x06, 0x09, 0xab, 0xf1, 0x9b, 0x6a, 0x8d, 0xd1, 0x1f, 0x18, 0xd9,
+	0x25, 0x53, 0x5f, 0xbd, 0x2e, 0x2e, 0xd1, 0xb4, 0xe7, 0x4b, 0xfe, 0xa6, 0x5a, 0x3a, 0x23, 0xcf,
+	0x98, 0xec, 0xb2, 0xa1, 0xaf, 0x5f, 0x37, 0x9f, 0x8d, 0x03, 0x82, 0x6e, 0xbc, 0x43, 0xed, 0x76,
+	0xd1, 0xc7, 0x52, 0x76, 0xbb, 0xba, 0xaf, 0x5d, 0x57, 0xf7, 0xe2, 0x88, 0x5c, 0x41, 0x6e, 0x9a,
+	0x21, 0x53, 0x48, 0xc8, 0xfb, 0xfb, 0xea, 0x75, 0x77, 0x03, 0x22, 0x97, 0x92, 0xdd, 0x44, 0x5a,
+	0x2d, 0xbb, 0xec, 0x03, 0xfd, 0xf8, 0x75, 0x79, 0x33, 0xb5, 0x04, 0x0f, 0xa2, 0xd6, 0x12, 0xf6,
+	0xc1, 0xbe, 0x76, 0xdd, 0x3e, 0x81, 0x5a, 0x82, 0x07, 0x51, 0x6b, 0x09, 0xf9, 0x50, 0x5f, 0xbd,
+	0xae, 0x9f, 0x40, 0x2d, 0xc1, 0x7e, 0x57, 0x95, 0x30, 0xb1, 0xa7, 0x72, 0x56, 0x90, 0x0f, 0xf7,
+	0xf5, 0xeb, 0xfe, 0x07, 0xe3, 0xa0, 0x42, 0x77, 0xde, 0x89, 0x2e, 0x35, 0x52, 0x9b, 0x06, 0xf6,
+	0x91, 0x7e, 0xe4, 0xe7, 0x02, 0xe6, 0x0c, 0xf4, 0x0a, 0x0d, 0x7a, 0x87, 0x79, 0x27, 0xd9, 0x8b,
+	0xd0, 0xf7, 0xf7, 0x23, 0x3f, 0x37, 0x60, 0xd8, 0x46, 0xa0, 0x47, 0x07, 0x31, 0x6c, 0xf9, 0xa5,
+	0x7e, 0xa0, 0xaf, 0xff, 0x5c, 0x41, 0x12, 0xc3, 0x04, 0x0f, 0x66, 0xd8, 0x12, 0xf6, 0xd1, 0x7e,
+	0xe4, 0xe7, 0x0e, 0x12, 0x19, 0x26, 0xd8, 0xbf, 0x60, 0xde, 0xc2, 0x29, 0x74, 0xea, 0x63, 0x7d,
+	0xe3, 0xcf, 0x25, 0x18, 0xf6, 0x32, 0x17, 0xae, 0xaf, 0x4b, 0x48, 0x58, 0x7b, 0xe5, 0xfa, 0x78,
+	0x3f, 0xe9, 0xe7, 0x16, 0x4c, 0xb9, 0x0b, 0x6a, 0xf6, 0xf5, 0x8e, 0x79, 0x6f, 0xd9, 0xeb, 0xd9,
+	0x27, 0xfa, 0x3b, 0xfd, 0x5e, 0x83, 0x61, 0xb3, 0x81, 0xd6, 0x7d, 0x42, 0x13, 0x65, 0xa6, 0xe7,
+	0xa5, 0x56, 0x2b, 0x79, 0xb2, 0xff, 0x3d, 0xf8, 0xc1, 0x87, 0x4b, 0xe2, 0x8b, 0x95, 0xaa, 0xf7,
+	0x31, 0x4d, 0xf5, 0x9a, 0x9f, 0xb1, 0x5a, 0x2d, 0xf9, 0xa9, 0xfe, 0x50, 0xbf, 0x18, 0x71, 0x99,
+	0xa9, 0x36, 0x4b, 0x95, 0xb6, 0xa6, 0x1e, 0x39, 0x69, 0x97, 0x05, 0xed, 0x16, 0xf9, 0x5d, 0x87,
+	0xdd, 0x2c, 0x94, 0x67, 0x4e, 0x81, 0x72, 0xc5, 0xd0, 0x5f, 0x57, 0x45, 0x8b, 0x7e, 0xd9, 0xd0,
+	0x0a, 0xe6, 0x83, 0x0c, 0x46, 0x3d, 0x74, 0x0a, 0xd4, 0x2b, 0x8a, 0xfe, 0x39, 0x75, 0xc7, 0x46,
+	0x2e, 0x2b, 0x5a, 0x01, 0x7d, 0x88, 0x01, 0xa9, 0xa7, 0x4e, 0x81, 0x76, 0xc5, 0x31, 0x01, 0x29,
+	0x85, 0x64, 0xf8, 0x30, 0x43, 0x2a, 0x18, 0x90, 0xb8, 0x56, 0x48, 0xe4, 0xce, 0xb2, 0xe8, 0x7d,
+	0x84, 0x01, 0x65, 0xcd, 0xdc, 0x11, 0x3c, 0x80, 0x3b, 0x4b, 0xa0, 0x8f, 0x32, 0x20, 0x37, 0x81,
+	0xbb, 0x44, 0xa4, 0x14, 0x9a, 0xe0, 0x63, 0x0c, 0x69, 0x34, 0x81, 0x3b, 0x82, 0xfd, 0xdb, 0xd4,
+	0x02, 0x1a, 0xbd, 0xec, 0x69, 0x05, 0xf5, 0x71, 0x06, 0xa5, 0x1e, 0x3d, 0x05, 0xfa, 0x15, 0x51,
+	0xbf, 0xa9, 0xb6, 0xc5, 0xd8, 0x65, 0x51, 0x2b, 0xb0, 0x4f, 0x30, 0x30, 0xf5, 0xec, 0x29, 0x88,
+	0x5c, 0x31, 0x4d, 0xd8, 0x15, 0xf6, 0x6d, 0xff, 0x93, 0x0c, 0x2a, 0x63, 0xd8, 0x15, 0xd0, 0xec,
+	0x07, 0x30, 0x68, 0xf9, 0x65, 0x7d, 0x8a, 0x21, 0xe5, 0x93, 0x18, 0x24, 0x78, 0x20, 0x83, 0x96,
+	0x60, 0x9f, 0x66, 0x60, 0xc5, 0x44, 0x06, 0x13, 0x77, 0x61, 0x8a, 0xb6, 0xfe, 0x34, 0xc3, 0x72,
+	0x0c, 0xbb, 0x90, 0xb7, 0xf1, 0x84, 0xcc, 0xb2, 0xef, 0xe2, 0xcf, 0x30, 0xa4, 0x71, 0x53, 0x66,
+	0x41, 0xcb, 0x36, 0xef, 0x0a, 0xfb, 0x86, 0xfd, 0x2c, 0x03, 0x9a, 0x30, 0xec, 0x0a, 0xe8, 0xca,
+	0x0f, 0x6a, 0x27, 0x50, 0x86, 0xdb, 0xbe, 0x56, 0x68, 0xcf, 0x31, 0xb4, 0xe1, 0x8f, 0xa0, 0x82,
+	0xe8, 0x1d, 0x61, 0xaa, 0x1e, 0x4a, 0x89, 0xeb, 0x4c, 0x73, 0x02, 0xf1, 0x3c, 0x5b, 0xea, 0xf7,
+	0xe4, 0x0c, 0x2a, 0x30, 0x5c, 0x32, 0xf6, 0x1f, 0xd1, 0xe4, 0x8e, 0xe9, 0xbe, 0xb1, 0xd5, 0x72,
+	0x3f, 0xc3, 0x97, 0x3b, 0xf4, 0x21, 0x54, 0x10, 0xbb, 0xa5, 0xec, 0xdf, 0xaf, 0x1d, 0x42, 0x19,
+	0x2f, 0x2c, 0x5b, 0xad, 0xf5, 0xb3, 0x7c, 0x17, 0xa4, 0x3f, 0x85, 0x0a, 0xe2, 0xd7, 0x9c, 0xa9,
+	0x1c, 0x3b, 0x34, 0x60, 0x95, 0x69, 0xf6, 0xc0, 0xe7, 0x38, 0xa9, 0x43, 0x1d, 0x43, 0x05, 0xc6,
+	0x7b, 0xd2, 0xfe, 0xc3, 0xea, 0x31, 0x94, 0x7e, 0xc3, 0xd9, 0x66, 0x89, 0x9f, 0x67, 0x4b, 0x4c,
+	0x79, 0x0e, 0xa5, 0xdf, 0xb3, 0x4e, 0x58, 0xce, 0x72, 0x41, 0xbc, 0xaa, 0xdf, 0x6b, 0x37, 0x3a,
+	0xed, 0xe5, 0xd9, 0xf8, 0x3b, 0x92, 0xec, 0x83, 0xc3, 0x8b, 0x68, 0xaf, 0xfa, 0x9e, 0xb8, 0xe9,
+	0x81, 0x28, 0x72, 0x27, 0xe4, 0x03, 0xd1, 0x17, 0x9c, 0xe5, 0xd7, 0xbc, 0xe6, 0xd5, 0x1b, 0x8d,
+	0xee, 0xb9, 0xde, 0xea, 0xfc, 0xd9, 0x4e, 0xeb, 0x28, 0x2c, 0xfd, 0x28, 0x5b, 0xf6, 0x6a, 0x6f,
+	0xfd, 0xe8, 0x79, 0xff, 0x68, 0xa3, 0xdd, 0xad, 0x6f, 0xb5, 0x57, 0x9a, 0xec, 0xa7, 0x6e, 0xd9,
+	0x07, 0xdb, 0x47, 0x9b, 0xf5, 0x8d, 0x95, 0xb3, 0x17, 0x8e, 0xee, 0xf0, 0xe3, 0xb8, 0xff, 0x1f,
+	0x00, 0x00, 0xff, 0xff, 0x79, 0xa2, 0xfb, 0xa1, 0x3e, 0x57, 0x00, 0x00,
+}
diff --git a/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61/test.proto b/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61/test.proto
new file mode 100644
index 0000000..2bfc4ca
--- /dev/null
+++ b/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61/test.proto
@@ -0,0 +1,333 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto2";
+
+package google.golang.org.proto2_20180814;
+option go_package = "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61";
+
+enum SiblingEnum {
+	ALPHA   = 0;
+	BRAVO   = 10;
+	CHARLIE = 200;
+}
+
+message SiblingMessage {
+	optional string  f1 = 1;
+	required string  f2 = 2;
+	repeated string  f3 = 3;
+	optional Message f4 = 4;
+}
+
+message Message {
+	enum ChildEnum {
+		ALPHA   = 0;
+		BRAVO   = 1;
+		CHARLIE = 2;
+	}
+	message ChildMessage {
+		optional string  f1 = 1;
+		required string  f2 = 2;
+		repeated string  f3 = 3;
+	    optional Message f4 = 4;
+	}
+	optional group NamedGroup = 1 {
+		optional string  f1 = 1;
+		required string  f2 = 2;
+		repeated string  f3 = 3;
+	    optional Message f4 = 4;
+	}
+
+	// Optional fields.
+	optional bool     optional_bool     = 100;
+	optional int32    optional_int32    = 101;
+	optional sint32   optional_sint32   = 102;
+	optional uint32   optional_uint32   = 103;
+	optional int64    optional_int64    = 104;
+	optional sint64   optional_sint64   = 105;
+	optional uint64   optional_uint64   = 106;
+	optional fixed32  optional_fixed32  = 107;
+	optional sfixed32 optional_sfixed32 = 108;
+	optional float    optional_float    = 109;
+	optional fixed64  optional_fixed64  = 110;
+	optional sfixed64 optional_sfixed64 = 111;
+	optional double   optional_double   = 112;
+	optional string   optional_string   = 113;
+	optional bytes    optional_bytes    = 114;
+
+	optional ChildEnum      optional_child_enum      = 115;
+	optional ChildMessage   optional_child_message   = 116;
+	optional NamedGroup     optional_named_group     = 117;
+	optional SiblingEnum    optional_sibling_enum    = 118;
+	optional SiblingMessage optional_sibling_message = 119;
+	optional group OptionalGroup = 120 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+
+	// Optional default fields.
+	optional bool      defaulted_bool     = 200 [default = true];
+	optional int32     defaulted_int32    = 201 [default = -12345];
+	optional sint32    defaulted_sint32   = 202 [default = -3200];
+	optional uint32    defaulted_uint32   = 203 [default = 3200];
+	optional int64     defaulted_int64    = 204 [default = -123456789];
+	optional sint64    defaulted_sint64   = 205 [default = -6400];
+	optional uint64    defaulted_uint64   = 206 [default = 6400];
+	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
+	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
+	optional float     defaulted_float    = 209 [default = 3.14159];
+	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
+	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
+	optional double    defaulted_double   = 212 [default = 3.14159265359];
+	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
+	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];
+
+	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
+	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];
+
+	// Required fields.
+	required bool     required_bool     = 300;
+	required int32    required_int32    = 301;
+	required sint32   required_sint32   = 302;
+	required uint32   required_uint32   = 303;
+	required int64    required_int64    = 304;
+	required sint64   required_sint64   = 305;
+	required uint64   required_uint64   = 306;
+	required fixed32  required_fixed32  = 307;
+	required sfixed32 required_sfixed32 = 308;
+	required float    required_float    = 309;
+	required fixed64  required_fixed64  = 310;
+	required sfixed64 required_sfixed64 = 311;
+	required double   required_double   = 312;
+	required string   required_string   = 313;
+	required bytes    required_bytes    = 314;
+
+	required ChildEnum      required_child_enum      = 315;
+	required ChildMessage   required_child_message   = 316;
+	required NamedGroup     required_named_group     = 317;
+	required SiblingEnum    required_sibling_enum    = 318;
+	required SiblingMessage required_sibling_message = 319;
+	required group RequiredGroup = 320 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+	// Required default fields.
+	required bool      required_defaulted_bool     = 400 [default = true];
+	required int32     required_defaulted_int32    = 401 [default = -12345];
+	required sint32    required_defaulted_sint32   = 402 [default = -3200];
+	required uint32    required_defaulted_uint32   = 403 [default = 3200];
+	required int64     required_defaulted_int64    = 404 [default = -123456789];
+	required sint64    required_defaulted_sint64   = 405 [default = -6400];
+	required uint64    required_defaulted_uint64   = 406 [default = 6400];
+	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
+	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
+	required float     required_defaulted_float    = 409 [default = 3.14159];
+	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
+	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
+	required double    required_defaulted_double   = 412 [default = 3.14159265359];
+	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
+	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];
+
+	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
+	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];
+
+	// Repeated fields.
+	repeated bool     repeated_bool     = 500;
+	repeated int32    repeated_int32    = 501;
+	repeated sint32   repeated_sint32   = 502;
+	repeated uint32   repeated_uint32   = 503;
+	repeated int64    repeated_int64    = 504;
+	repeated sint64   repeated_sint64   = 505;
+	repeated uint64   repeated_uint64   = 506;
+	repeated fixed32  repeated_fixed32  = 507;
+	repeated sfixed32 repeated_sfixed32 = 508;
+	repeated float    repeated_float    = 509;
+	repeated fixed64  repeated_fixed64  = 510;
+	repeated sfixed64 repeated_sfixed64 = 511;
+	repeated double   repeated_double   = 512;
+	repeated string   repeated_string   = 513;
+	repeated bytes    repeated_bytes    = 514;
+
+	repeated ChildEnum      repeated_child_enum      = 515;
+	repeated ChildMessage   repeated_child_message   = 516;
+	repeated NamedGroup     repeated_named_group     = 517;
+	repeated SiblingEnum    repeated_sibling_enum    = 518;
+	repeated SiblingMessage repeated_sibling_message = 519;
+	repeated group RepeatedGroup = 520 {
+		optional string f1 = 1;
+		required string f2 = 2;
+		repeated string f3 = 3;
+	}
+
+	// Map fields.
+	map<bool, bool>     map_bool_bool     = 600;
+	map<bool, int32>    map_bool_int32    = 601;
+	map<bool, sint32>   map_bool_sint32   = 602;
+	map<bool, uint32>   map_bool_uint32   = 603;
+	map<bool, int64>    map_bool_int64    = 604;
+	map<bool, sint64>   map_bool_sint64   = 605;
+	map<bool, uint64>   map_bool_uint64   = 606;
+	map<bool, fixed32>  map_bool_fixed32  = 607;
+	map<bool, sfixed32> map_bool_sfixed32 = 608;
+	map<bool, float>    map_bool_float    = 609;
+	map<bool, fixed64>  map_bool_fixed64  = 610;
+	map<bool, sfixed64> map_bool_sfixed64 = 611;
+	map<bool, double>   map_bool_double   = 612;
+	map<bool, string>   map_bool_string   = 613;
+	map<bool, bytes>    map_bool_bytes    = 614;
+
+	map<bool, ChildEnum>      map_bool_child_enum      = 615;
+	map<bool, ChildMessage>   map_bool_child_message   = 616;
+	map<bool, NamedGroup>     map_bool_named_group     = 617;
+	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
+	map<bool, SiblingMessage> map_bool_sibling_message = 619;
+
+	map<int32, bool>   map_int32_bool   = 620;
+	map<sint32, bool>  map_sint32_bool  = 621;
+	map<uint32, bool>  map_uint32_bool  = 622;
+	map<int64, bool>   map_int64_bool   = 623;
+	map<sint64, bool>  map_sint64_bool  = 624;
+	map<uint64, bool>  map_uint64_bool  = 625;
+	map<fixed32, bool> map_fixed32_bool = 626;
+	map<string, bool>  map_string_bool  = 627;
+
+	// Oneof fields.
+	oneof oneof_union {
+		bool     oneof_bool     = 700;
+		int32    oneof_int32    = 701;
+		sint32   oneof_sint32   = 702;
+		uint32   oneof_uint32   = 703;
+		int64    oneof_int64    = 704;
+		sint64   oneof_sint64   = 705;
+		uint64   oneof_uint64   = 706;
+		fixed32  oneof_fixed32  = 707;
+		sfixed32 oneof_sfixed32 = 708;
+		float    oneof_float    = 709;
+		fixed64  oneof_fixed64  = 710;
+		sfixed64 oneof_sfixed64 = 711;
+		double   oneof_double   = 712;
+		string   oneof_string   = 713;
+		bytes    oneof_bytes    = 714;
+
+		ChildEnum      oneof_child_enum      = 715;
+		ChildMessage   oneof_child_message   = 716;
+		NamedGroup     oneof_named_group     = 717;
+		SiblingEnum    oneof_sibling_enum    = 718;
+		SiblingMessage oneof_sibling_message = 719;
+		group OneofGroup = 720 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+
+		string oneof_string1 = 721;
+		string oneof_string2 = 722;
+		string oneof_string3 = 723;
+	}
+
+	// Oneof default fields.
+	oneof oneof_defaulted_union {
+		bool      oneof_defaulted_bool     = 800 [default = true];
+		int32     oneof_defaulted_int32    = 801 [default = -12345];
+		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
+		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
+		int64     oneof_defaulted_int64    = 804 [default = -123456789];
+		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
+		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
+		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
+		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
+		float     oneof_defaulted_float    = 809 [default = 3.14159];
+		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
+		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
+		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
+		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
+		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];
+
+		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
+		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
+	}
+
+	// Extension fields.
+	extend Message {
+		// Optional fields.
+		optional bool     extension_optional_bool     = 10000;
+		optional int32    extension_optional_int32    = 10001;
+		optional sint32   extension_optional_sint32   = 10002;
+		optional uint32   extension_optional_uint32   = 10003;
+		optional int64    extension_optional_int64    = 10004;
+		optional sint64   extension_optional_sint64   = 10005;
+		optional uint64   extension_optional_uint64   = 10006;
+		optional fixed32  extension_optional_fixed32  = 10007;
+		optional sfixed32 extension_optional_sfixed32 = 10008;
+		optional float    extension_optional_float    = 10009;
+		optional fixed64  extension_optional_fixed64  = 10010;
+		optional sfixed64 extension_optional_sfixed64 = 10011;
+		optional double   extension_optional_double   = 10012;
+		optional string   extension_optional_string   = 10013;
+		optional bytes    extension_optional_bytes    = 10014;
+
+		optional ChildEnum      extension_optional_child_enum      = 10015;
+		optional ChildMessage   extension_optional_child_message   = 10016;
+		optional NamedGroup     extension_optional_named_group     = 10017;
+		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
+		optional SiblingMessage extension_optional_sibling_message = 10019;
+		optional group ExtensionOptionalGroup = 10020 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+
+		// Optional default fields.
+		optional bool      extension_defaulted_bool     = 20000 [default = true];
+		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
+		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
+		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
+		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
+		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
+		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
+		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
+		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
+		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
+		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
+		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
+		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
+		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
+		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];
+
+		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
+		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];
+
+		// Repeated fields.
+		repeated bool     extension_repeated_bool     = 30000;
+		repeated int32    extension_repeated_int32    = 30001;
+		repeated sint32   extension_repeated_sint32   = 30002;
+		repeated uint32   extension_repeated_uint32   = 30003;
+		repeated int64    extension_repeated_int64    = 30004;
+		repeated sint64   extension_repeated_sint64   = 30005;
+		repeated uint64   extension_repeated_uint64   = 30006;
+		repeated fixed32  extension_repeated_fixed32  = 30007;
+		repeated sfixed32 extension_repeated_sfixed32 = 30008;
+		repeated float    extension_repeated_float    = 30009;
+		repeated fixed64  extension_repeated_fixed64  = 30010;
+		repeated sfixed64 extension_repeated_sfixed64 = 30011;
+		repeated double   extension_repeated_double   = 30012;
+		repeated string   extension_repeated_string   = 30013;
+		repeated bytes    extension_repeated_bytes    = 30014;
+
+		repeated ChildEnum      extension_repeated_child_enum      = 30015;
+		repeated ChildMessage   extension_repeated_child_message   = 30016;
+		repeated NamedGroup     extension_repeated_named_group     = 30017;
+		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
+		repeated SiblingMessage extension_repeated_sibling_message = 30019;
+		repeated group ExtensionRepeatedGroup = 30020 {
+			optional string f1 = 1;
+			required string f2 = 2;
+			repeated string f3 = 3;
+		}
+	}
+
+	extensions 10000 to max;
+}
diff --git a/internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5/test.pb.go b/internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5/test.pb.go
new file mode 100644
index 0000000..5d99a45
--- /dev/null
+++ b/internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5/test.pb.go
@@ -0,0 +1,1182 @@
+// Code generated by protoc-gen-go.
+// source: proto3.v0.0.0-20160225-2fc053c5/test.proto
+// DO NOT EDIT!
+
+/*
+Package github_com_golang_protobuf_v2_internal_testprotos_legacy_proto3_v0_0_0_20160225_2fc053c5 is a generated protocol buffer package.
+
+It is generated from these files:
+	proto3.v0.0.0-20160225-2fc053c5/test.proto
+
+It has these top-level messages:
+	SiblingMessage
+	Message
+*/
+package github_com_golang_protobuf_v2_internal_testprotos_legacy_proto3_v0_0_0_20160225_2fc053c5
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+const _ = proto.ProtoPackageIsVersion1
+
+type SiblingEnum int32
+
+const (
+	SiblingEnum_ALPHA   SiblingEnum = 0
+	SiblingEnum_BRAVO   SiblingEnum = 10
+	SiblingEnum_CHARLIE SiblingEnum = 200
+)
+
+var SiblingEnum_name = map[int32]string{
+	0:   "ALPHA",
+	10:  "BRAVO",
+	200: "CHARLIE",
+}
+var SiblingEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   10,
+	"CHARLIE": 200,
+}
+
+func (x SiblingEnum) String() string {
+	return proto.EnumName(SiblingEnum_name, int32(x))
+}
+func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+type Message_ChildEnum int32
+
+const (
+	Message_ALPHA   Message_ChildEnum = 0
+	Message_BRAVO   Message_ChildEnum = 1
+	Message_CHARLIE Message_ChildEnum = 2
+)
+
+var Message_ChildEnum_name = map[int32]string{
+	0: "ALPHA",
+	1: "BRAVO",
+	2: "CHARLIE",
+}
+var Message_ChildEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   1,
+	"CHARLIE": 2,
+}
+
+func (x Message_ChildEnum) String() string {
+	return proto.EnumName(Message_ChildEnum_name, int32(x))
+}
+func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+type SiblingMessage struct {
+	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
+	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+}
+
+func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
+func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
+func (*SiblingMessage) ProtoMessage()               {}
+func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *SiblingMessage) GetF3() *Message {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message struct {
+	// Optional fields.
+	OptionalBool           bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	OptionalInt32          int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	OptionalSint32         int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	OptionalUint32         uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
+	OptionalInt64          int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
+	OptionalSint64         int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	OptionalUint64         uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	OptionalFixed32        uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	OptionalSfixed32       int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	OptionalFloat          float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	OptionalFixed64        uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	OptionalSfixed64       int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	OptionalDouble         float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	OptionalString         string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	OptionalBytes          []byte                `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
+	OptionalChildEnum      Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto3_20160225.Message_ChildEnum" json:"optional_child_enum,omitempty"`
+	OptionalChildMessage   *Message_ChildMessage `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
+	OptionalSiblingEnum    SiblingEnum           `protobuf:"varint,117,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto3_20160225.SiblingEnum" json:"optional_sibling_enum,omitempty"`
+	OptionalSiblingMessage *SiblingMessage       `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
+	// Repeated fields.
+	RepeatedBool           []bool                  `protobuf:"varint,200,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	RepeatedInt32          []int32                 `protobuf:"varint,201,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	RepeatedSint32         []int32                 `protobuf:"zigzag32,202,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	RepeatedUint32         []uint32                `protobuf:"varint,203,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	RepeatedInt64          []int64                 `protobuf:"varint,204,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	RepeatedSint64         []int64                 `protobuf:"zigzag64,205,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	RepeatedUint64         []uint64                `protobuf:"varint,206,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	RepeatedFixed32        []uint32                `protobuf:"fixed32,207,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	RepeatedSfixed32       []int32                 `protobuf:"fixed32,208,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	RepeatedFloat          []float32               `protobuf:"fixed32,209,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	RepeatedFixed64        []uint64                `protobuf:"fixed64,210,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed64       []int64                 `protobuf:"fixed64,211,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	RepeatedDouble         []float64               `protobuf:"fixed64,212,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	RepeatedString         []string                `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	RepeatedBytes          [][]byte                `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
+	RepeatedChildEnum      []Message_ChildEnum     `protobuf:"varint,215,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto3_20160225.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
+	RepeatedChildMessage   []*Message_ChildMessage `protobuf:"bytes,216,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
+	RepeatedSiblingEnum    []SiblingEnum           `protobuf:"varint,217,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto3_20160225.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
+	RepeatedSiblingMessage []*SiblingMessage       `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
+	// Map fields.
+	MapBoolBool           map[bool]bool                  `protobuf:"bytes,300,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,301,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,302,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,303,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,304,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,305,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,306,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,307,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,308,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFloat          map[bool]float32               `protobuf:"bytes,309,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,310,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,311,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolDouble         map[bool]float64               `protobuf:"bytes,312,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolString         map[bool]string                `protobuf:"bytes,313,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,314,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,315,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20160225.Message_ChildEnum"`
+	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,316,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,317,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20160225.SiblingEnum"`
+	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,318,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,319,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,320,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,321,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,322,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,323,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,324,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,325,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapStringBool         map[string]bool                `protobuf:"bytes,326,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	// Oneof fields.
+	//
+	// Types that are valid to be assigned to OneofUnion:
+	//	*Message_OneofBool
+	//	*Message_OneofInt32
+	//	*Message_OneofSint32
+	//	*Message_OneofUint32
+	//	*Message_OneofInt64
+	//	*Message_OneofSint64
+	//	*Message_OneofUint64
+	//	*Message_OneofFixed32
+	//	*Message_OneofSfixed32
+	//	*Message_OneofFloat
+	//	*Message_OneofFixed64
+	//	*Message_OneofSfixed64
+	//	*Message_OneofDouble
+	//	*Message_OneofString
+	//	*Message_OneofBytes
+	//	*Message_OneofChildEnum
+	//	*Message_OneofChildMessage
+	//	*Message_OneofSiblingEnum
+	//	*Message_OneofSiblingMessage
+	//	*Message_OneofString1
+	//	*Message_OneofString2
+	//	*Message_OneofString3
+	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
+}
+
+func (m *Message) Reset()                    { *m = Message{} }
+func (m *Message) String() string            { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()               {}
+func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
+
+type Message_OneofBool struct {
+	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,json=oneofBool,oneof"`
+}
+type Message_OneofInt32 struct {
+	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,json=oneofInt32,oneof"`
+}
+type Message_OneofSint32 struct {
+	OneofSint32 int32 `protobuf:"zigzag32,402,opt,name=oneof_sint32,json=oneofSint32,oneof"`
+}
+type Message_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,json=oneofUint32,oneof"`
+}
+type Message_OneofInt64 struct {
+	OneofInt64 int64 `protobuf:"varint,404,opt,name=oneof_int64,json=oneofInt64,oneof"`
+}
+type Message_OneofSint64 struct {
+	OneofSint64 int64 `protobuf:"zigzag64,405,opt,name=oneof_sint64,json=oneofSint64,oneof"`
+}
+type Message_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,406,opt,name=oneof_uint64,json=oneofUint64,oneof"`
+}
+type Message_OneofFixed32 struct {
+	OneofFixed32 uint32 `protobuf:"fixed32,407,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
+}
+type Message_OneofSfixed32 struct {
+	OneofSfixed32 int32 `protobuf:"fixed32,408,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
+}
+type Message_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,409,opt,name=oneof_float,json=oneofFloat,oneof"`
+}
+type Message_OneofFixed64 struct {
+	OneofFixed64 uint64 `protobuf:"fixed64,410,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
+}
+type Message_OneofSfixed64 struct {
+	OneofSfixed64 int64 `protobuf:"fixed64,411,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
+}
+type Message_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,412,opt,name=oneof_double,json=oneofDouble,oneof"`
+}
+type Message_OneofString struct {
+	OneofString string `protobuf:"bytes,413,opt,name=oneof_string,json=oneofString,oneof"`
+}
+type Message_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,414,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
+}
+type Message_OneofChildEnum struct {
+	OneofChildEnum Message_ChildEnum `protobuf:"varint,415,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto3_20160225.Message_ChildEnum,oneof"`
+}
+type Message_OneofChildMessage struct {
+	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,416,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
+}
+type Message_OneofSiblingEnum struct {
+	OneofSiblingEnum SiblingEnum `protobuf:"varint,417,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto3_20160225.SiblingEnum,oneof"`
+}
+type Message_OneofSiblingMessage struct {
+	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,418,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
+}
+type Message_OneofString1 struct {
+	OneofString1 string `protobuf:"bytes,419,opt,name=oneof_string1,json=oneofString1,oneof"`
+}
+type Message_OneofString2 struct {
+	OneofString2 string `protobuf:"bytes,420,opt,name=oneof_string2,json=oneofString2,oneof"`
+}
+type Message_OneofString3 struct {
+	OneofString3 string `protobuf:"bytes,421,opt,name=oneof_string3,json=oneofString3,oneof"`
+}
+
+func (*Message_OneofBool) isMessage_OneofUnion()           {}
+func (*Message_OneofInt32) isMessage_OneofUnion()          {}
+func (*Message_OneofSint32) isMessage_OneofUnion()         {}
+func (*Message_OneofUint32) isMessage_OneofUnion()         {}
+func (*Message_OneofInt64) isMessage_OneofUnion()          {}
+func (*Message_OneofSint64) isMessage_OneofUnion()         {}
+func (*Message_OneofUint64) isMessage_OneofUnion()         {}
+func (*Message_OneofFixed32) isMessage_OneofUnion()        {}
+func (*Message_OneofSfixed32) isMessage_OneofUnion()       {}
+func (*Message_OneofFloat) isMessage_OneofUnion()          {}
+func (*Message_OneofFixed64) isMessage_OneofUnion()        {}
+func (*Message_OneofSfixed64) isMessage_OneofUnion()       {}
+func (*Message_OneofDouble) isMessage_OneofUnion()         {}
+func (*Message_OneofString) isMessage_OneofUnion()         {}
+func (*Message_OneofBytes) isMessage_OneofUnion()          {}
+func (*Message_OneofChildEnum) isMessage_OneofUnion()      {}
+func (*Message_OneofChildMessage) isMessage_OneofUnion()   {}
+func (*Message_OneofSiblingEnum) isMessage_OneofUnion()    {}
+func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
+func (*Message_OneofString1) isMessage_OneofUnion()        {}
+func (*Message_OneofString2) isMessage_OneofUnion()        {}
+func (*Message_OneofString3) isMessage_OneofUnion()        {}
+
+func (m *Message) GetOneofUnion() isMessage_OneofUnion {
+	if m != nil {
+		return m.OneofUnion
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.OptionalChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.OptionalSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
+	if m != nil {
+		return m.RepeatedChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
+	if m != nil {
+		return m.RepeatedSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBool() map[bool]bool {
+	if m != nil {
+		return m.MapBoolBool
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolInt32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolUint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolInt64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolUint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFloat() map[bool]float32 {
+	if m != nil {
+		return m.MapBoolFloat
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolDouble() map[bool]float64 {
+	if m != nil {
+		return m.MapBoolDouble
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolString() map[bool]string {
+	if m != nil {
+		return m.MapBoolString
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBytes() map[bool][]byte {
+	if m != nil {
+		return m.MapBoolBytes
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
+	if m != nil {
+		return m.MapBoolChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
+	if m != nil {
+		return m.MapBoolChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
+	if m != nil {
+		return m.MapBoolSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
+	if m != nil {
+		return m.MapBoolSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapInt32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapSint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapUint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapInt64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapSint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint64Bool() map[uint64]bool {
+	if m != nil {
+		return m.MapUint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapFixed32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapFixed32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapStringBool() map[string]bool {
+	if m != nil {
+		return m.MapStringBool
+	}
+	return nil
+}
+
+func (m *Message) GetOneofBool() bool {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
+		return x.OneofBool
+	}
+	return false
+}
+
+func (m *Message) GetOneofInt32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
+		return x.OneofInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
+		return x.OneofSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
+		return x.OneofUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofInt64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
+		return x.OneofInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
+		return x.OneofSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
+		return x.OneofUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
+		return x.OneofFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
+		return x.OneofSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFloat() float32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
+		return x.OneofFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
+		return x.OneofFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
+		return x.OneofSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofDouble() float64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
+		return x.OneofDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOneofString() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
+		return x.OneofString
+	}
+	return ""
+}
+
+func (m *Message) GetOneofBytes() []byte {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
+		return x.OneofBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOneofChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
+		return x.OneofChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
+		return x.OneofChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
+		return x.OneofSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
+		return x.OneofSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofString1() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
+		return x.OneofString1
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString2() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
+		return x.OneofString2
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString3() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
+		return x.OneofString3
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
+		(*Message_OneofBool)(nil),
+		(*Message_OneofInt32)(nil),
+		(*Message_OneofSint32)(nil),
+		(*Message_OneofUint32)(nil),
+		(*Message_OneofInt64)(nil),
+		(*Message_OneofSint64)(nil),
+		(*Message_OneofUint64)(nil),
+		(*Message_OneofFixed32)(nil),
+		(*Message_OneofSfixed32)(nil),
+		(*Message_OneofFloat)(nil),
+		(*Message_OneofFixed64)(nil),
+		(*Message_OneofSfixed64)(nil),
+		(*Message_OneofDouble)(nil),
+		(*Message_OneofString)(nil),
+		(*Message_OneofBytes)(nil),
+		(*Message_OneofChildEnum)(nil),
+		(*Message_OneofChildMessage)(nil),
+		(*Message_OneofSiblingEnum)(nil),
+		(*Message_OneofSiblingMessage)(nil),
+		(*Message_OneofString1)(nil),
+		(*Message_OneofString2)(nil),
+		(*Message_OneofString3)(nil),
+	}
+}
+
+func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		t := uint64(0)
+		if x.OneofBool {
+			t = 1
+		}
+		b.EncodeVarint(400<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofInt32:
+		b.EncodeVarint(401<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		b.EncodeVarint(402<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofSint32))
+	case *Message_OneofUint32:
+		b.EncodeVarint(403<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		b.EncodeVarint(404<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		b.EncodeVarint(405<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofSint64))
+	case *Message_OneofUint64:
+		b.EncodeVarint(406<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		b.EncodeVarint(407<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofFixed32))
+	case *Message_OneofSfixed32:
+		b.EncodeVarint(408<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofSfixed32))
+	case *Message_OneofFloat:
+		b.EncodeVarint(409<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
+	case *Message_OneofFixed64:
+		b.EncodeVarint(410<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofFixed64))
+	case *Message_OneofSfixed64:
+		b.EncodeVarint(411<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofSfixed64))
+	case *Message_OneofDouble:
+		b.EncodeVarint(412<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
+	case *Message_OneofString:
+		b.EncodeVarint(413<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString)
+	case *Message_OneofBytes:
+		b.EncodeVarint(414<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		b.EncodeVarint(415<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		b.EncodeVarint(416<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
+			return err
+		}
+	case *Message_OneofSiblingEnum:
+		b.EncodeVarint(417<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		b.EncodeVarint(418<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
+			return err
+		}
+	case *Message_OneofString1:
+		b.EncodeVarint(419<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString1)
+	case *Message_OneofString2:
+		b.EncodeVarint(420<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString2)
+	case *Message_OneofString3:
+		b.EncodeVarint(421<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString3)
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Message)
+	switch tag {
+	case 400: // oneof_union.oneof_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofBool{x != 0}
+		return true, err
+	case 401: // oneof_union.oneof_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt32{int32(x)}
+		return true, err
+	case 402: // oneof_union.oneof_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofUnion = &Message_OneofSint32{int32(x)}
+		return true, err
+	case 403: // oneof_union.oneof_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint32{uint32(x)}
+		return true, err
+	case 404: // oneof_union.oneof_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt64{int64(x)}
+		return true, err
+	case 405: // oneof_union.oneof_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofUnion = &Message_OneofSint64{int64(x)}
+		return true, err
+	case 406: // oneof_union.oneof_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint64{x}
+		return true, err
+	case 407: // oneof_union.oneof_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
+		return true, err
+	case 408: // oneof_union.oneof_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
+		return true, err
+	case 409: // oneof_union.oneof_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 410: // oneof_union.oneof_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofFixed64{x}
+		return true, err
+	case 411: // oneof_union.oneof_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
+		return true, err
+	case 412: // oneof_union.oneof_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
+		return true, err
+	case 413: // oneof_union.oneof_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString{x}
+		return true, err
+	case 414: // oneof_union.oneof_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofUnion = &Message_OneofBytes{x}
+		return true, err
+	case 415: // oneof_union.oneof_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 416: // oneof_union.oneof_child_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_ChildMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofChildMessage{msg}
+		return true, err
+	case 417: // oneof_union.oneof_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
+		return true, err
+	case 418: // oneof_union.oneof_sibling_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(SiblingMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofSiblingMessage{msg}
+		return true, err
+	case 419: // oneof_union.oneof_string1
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString1{x}
+		return true, err
+	case 420: // oneof_union.oneof_string2
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString2{x}
+		return true, err
+	case 421: // oneof_union.oneof_string3
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString3{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Message_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		n += proto.SizeVarint(400<<3 | proto.WireVarint)
+		n += 1
+	case *Message_OneofInt32:
+		n += proto.SizeVarint(401<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		n += proto.SizeVarint(402<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
+	case *Message_OneofUint32:
+		n += proto.SizeVarint(403<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		n += proto.SizeVarint(404<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		n += proto.SizeVarint(405<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
+	case *Message_OneofUint64:
+		n += proto.SizeVarint(406<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		n += proto.SizeVarint(407<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofSfixed32:
+		n += proto.SizeVarint(408<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFloat:
+		n += proto.SizeVarint(409<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFixed64:
+		n += proto.SizeVarint(410<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofSfixed64:
+		n += proto.SizeVarint(411<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDouble:
+		n += proto.SizeVarint(412<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofString:
+		n += proto.SizeVarint(413<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString)))
+		n += len(x.OneofString)
+	case *Message_OneofBytes:
+		n += proto.SizeVarint(414<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
+		n += len(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		n += proto.SizeVarint(415<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		s := proto.Size(x.OneofChildMessage)
+		n += proto.SizeVarint(416<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofSiblingEnum:
+		n += proto.SizeVarint(417<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		s := proto.Size(x.OneofSiblingMessage)
+		n += proto.SizeVarint(418<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofString1:
+		n += proto.SizeVarint(419<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString1)))
+		n += len(x.OneofString1)
+	case *Message_OneofString2:
+		n += proto.SizeVarint(420<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString2)))
+		n += len(x.OneofString2)
+	case *Message_OneofString3:
+		n += proto.SizeVarint(421<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString3)))
+		n += len(x.OneofString3)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+type Message_ChildMessage struct {
+	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
+	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+}
+
+func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
+func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
+func (*Message_ChildMessage) ProtoMessage()               {}
+func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+func (m *Message_ChildMessage) GetF3() *Message {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto3_20160225.SiblingMessage")
+	proto.RegisterType((*Message)(nil), "google.golang.org.proto3_20160225.Message")
+	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto3_20160225.Message.ChildMessage")
+	proto.RegisterEnum("google.golang.org.proto3_20160225.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
+	proto.RegisterEnum("google.golang.org.proto3_20160225.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
+}
+
+var fileDescriptor0 = []byte{
+	// 1968 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x9a, 0x59, 0x6f, 0xdb, 0xca,
+	0x15, 0xc7, 0x45, 0xc9, 0x4b, 0x3c, 0xd6, 0x4a, 0xc5, 0xee, 0xc0, 0x4f, 0xac, 0x9b, 0xa6, 0xac,
+	0xdb, 0xc8, 0xb6, 0xc4, 0xb0, 0x45, 0xda, 0x26, 0xb1, 0x13, 0xa7, 0x4a, 0x91, 0xa0, 0x05, 0x03,
+	0x17, 0x45, 0x5e, 0x5c, 0xc9, 0xa6, 0x64, 0x25, 0xa4, 0xe8, 0x5a, 0x92, 0x51, 0xa3, 0x0f, 0xf9,
+	0x0a, 0xdd, 0xf7, 0x7d, 0x79, 0xeb, 0xbe, 0xef, 0x7b, 0x2e, 0x72, 0xf7, 0x7d, 0xfd, 0x34, 0x17,
+	0xc3, 0xc3, 0xd9, 0x48, 0x2a, 0x92, 0x28, 0xdc, 0x87, 0x00, 0xf6, 0xd1, 0x7f, 0xce, 0x4f, 0xe7,
+	0xf0, 0xcc, 0x39, 0x33, 0x8c, 0xd1, 0xda, 0xd1, 0xb1, 0xd7, 0xf7, 0x6a, 0x95, 0x93, 0x8d, 0xca,
+	0x46, 0x65, 0xe3, 0x42, 0x75, 0x63, 0xd3, 0xdc, 0xa8, 0x56, 0x2f, 0x5e, 0xa8, 0xb6, 0xf6, 0x37,
+	0x2e, 0xd6, 0xf6, 0x2f, 0xae, 0xf7, 0xed, 0x5e, 0xbf, 0xe2, 0x8b, 0xd4, 0x77, 0xb7, 0x3d, 0xaf,
+	0xed, 0xd8, 0x95, 0xb6, 0xe7, 0x34, 0xba, 0xed, 0x8a, 0x77, 0xdc, 0x86, 0x0f, 0x6a, 0x7b, 0x74,
+	0xd9, 0xaa, 0x83, 0xf2, 0x77, 0x3a, 0x4d, 0xa7, 0xd3, 0x6d, 0xdf, 0xb6, 0x7b, 0xbd, 0x46, 0xdb,
+	0x56, 0xf3, 0x28, 0xdd, 0xda, 0xc4, 0x8a, 0xa6, 0xe8, 0x0b, 0x56, 0xba, 0xb5, 0xe9, 0xff, 0x5e,
+	0xc5, 0x69, 0x2d, 0xe3, 0xff, 0x5e, 0x55, 0x2f, 0xa1, 0x74, 0xab, 0x86, 0x33, 0x9a, 0xa2, 0x2f,
+	0x56, 0xd7, 0x2a, 0x23, 0x09, 0x95, 0xc0, 0xaf, 0x95, 0x6e, 0xd5, 0x56, 0x1f, 0x5e, 0x45, 0xf3,
+	0x94, 0xf3, 0x1e, 0x94, 0xf3, 0x8e, 0xfa, 0x1d, 0xaf, 0xdb, 0x70, 0xf6, 0x9a, 0x9e, 0xe7, 0xe0,
+	0x03, 0x4d, 0xd1, 0xcf, 0x58, 0x59, 0x6a, 0xdc, 0xf6, 0x3c, 0x47, 0x7d, 0x2f, 0xca, 0x33, 0x51,
+	0xa7, 0xdb, 0xaf, 0x55, 0xb1, 0xad, 0x29, 0xfa, 0xac, 0xc5, 0x96, 0xde, 0x24, 0x46, 0xf5, 0x7d,
+	0xa8, 0xc0, 0x64, 0x3d, 0xd0, 0xb5, 0x34, 0x45, 0x2f, 0x59, 0x6c, 0xf5, 0x9d, 0x4e, 0x44, 0x38,
+	0x00, 0x61, 0x5b, 0x53, 0xf4, 0x1c, 0x17, 0xee, 0x82, 0x30, 0x04, 0x36, 0x0d, 0x7c, 0xa8, 0x29,
+	0x7a, 0x46, 0x02, 0x9b, 0x46, 0x04, 0x6c, 0x1a, 0xb8, 0xa3, 0x29, 0xba, 0x2a, 0x83, 0x43, 0xc2,
+	0x01, 0x08, 0xef, 0x69, 0x8a, 0x3e, 0x23, 0x83, 0x4d, 0x43, 0x7d, 0x3f, 0x2a, 0x32, 0x61, 0xab,
+	0xf3, 0x79, 0xfb, 0xa0, 0x56, 0xc5, 0xf7, 0x35, 0x45, 0x9f, 0xb7, 0x98, 0x83, 0x1b, 0x60, 0x56,
+	0x3f, 0x80, 0x4a, 0x1c, 0x4e, 0xb5, 0x8e, 0xa6, 0xe8, 0x05, 0x8b, 0xf9, 0xb8, 0x13, 0xd8, 0xa5,
+	0x80, 0x5a, 0x8e, 0xd7, 0xe8, 0x63, 0x57, 0x53, 0xf4, 0x34, 0x0f, 0xe8, 0x06, 0x31, 0x46, 0xf1,
+	0xa6, 0x81, 0xbb, 0x9a, 0xa2, 0xcf, 0x85, 0xf0, 0xa6, 0x11, 0x83, 0x37, 0x0d, 0xec, 0x69, 0x8a,
+	0x5e, 0x0c, 0xe3, 0x43, 0xf1, 0x1f, 0x78, 0x83, 0xa6, 0x63, 0xe3, 0x23, 0x4d, 0xd1, 0x15, 0x1e,
+	0xff, 0x75, 0xdf, 0x2a, 0x67, 0xb4, 0x7f, 0xdc, 0xe9, 0xb6, 0xf1, 0xe7, 0xfc, 0x5a, 0xe4, 0x19,
+	0xf5, 0xad, 0x52, 0x40, 0xcd, 0xd3, 0xbe, 0xdd, 0xc3, 0xc7, 0x9a, 0xa2, 0x67, 0x79, 0x40, 0xdb,
+	0xc4, 0xa8, 0x1e, 0xa0, 0x32, 0x93, 0xed, 0x1f, 0x76, 0x9c, 0x83, 0x3d, 0xbb, 0x3b, 0x70, 0x71,
+	0x4f, 0x53, 0xf4, 0x7c, 0xd5, 0x18, 0xbf, 0x7e, 0x2b, 0xd7, 0xc8, 0xe2, 0x9d, 0xee, 0xc0, 0xb5,
+	0x58, 0xd8, 0xcc, 0xa4, 0xba, 0x68, 0x39, 0x44, 0x71, 0x61, 0x19, 0xee, 0xfb, 0x1b, 0xe5, 0x43,
+	0x93, 0x82, 0xe8, 0xae, 0x39, 0x2b, 0xb1, 0xe8, 0xde, 0x69, 0xa2, 0x25, 0xa1, 0xec, 0xfc, 0xed,
+	0x0b, 0x61, 0x0d, 0xfc, 0xb0, 0x2a, 0x63, 0xd0, 0x82, 0x5d, 0xef, 0x07, 0x54, 0xe6, 0xc5, 0xca,
+	0x8c, 0xea, 0x7d, 0x84, 0x23, 0x0c, 0x1a, 0xd4, 0x89, 0x1f, 0xd4, 0xe6, 0xf8, 0x18, 0x1a, 0xce,
+	0x72, 0x88, 0x44, 0x03, 0x3a, 0x87, 0x72, 0xc7, 0xf6, 0x91, 0xdd, 0xe8, 0xdb, 0x07, 0xd0, 0x0c,
+	0x1e, 0x29, 0x5a, 0x86, 0x74, 0x03, 0x6a, 0xf5, 0xbb, 0xc1, 0x79, 0x94, 0x67, 0x2a, 0xd8, 0xbc,
+	0x4f, 0x12, 0xd9, 0xac, 0xc5, 0x16, 0x43, 0x3b, 0xd0, 0x51, 0x81, 0xe9, 0x82, 0x76, 0xf0, 0x14,
+	0x11, 0x96, 0x2c, 0xb6, 0x3e, 0xe8, 0x07, 0xa2, 0x32, 0xe8, 0x07, 0x4f, 0x13, 0x65, 0x8e, 0x2b,
+	0x83, 0x86, 0x10, 0x62, 0x9b, 0x06, 0x7e, 0x86, 0x08, 0x33, 0x12, 0xdb, 0x34, 0x22, 0x6c, 0xd3,
+	0xc0, 0xcf, 0x12, 0xa1, 0x2a, 0xb3, 0x43, 0xca, 0xa0, 0x25, 0x3c, 0x47, 0x94, 0x33, 0x32, 0xdb,
+	0x34, 0xd4, 0x35, 0x54, 0x64, 0x4a, 0xba, 0xcf, 0x9f, 0x27, 0xd2, 0x79, 0x8b, 0xb9, 0xa0, 0x4d,
+	0xe1, 0x83, 0xa8, 0xc4, 0xf9, 0x54, 0xfc, 0x02, 0x11, 0x17, 0x2c, 0xe6, 0x85, 0x75, 0x05, 0x31,
+	0x2a, 0xe8, 0x0a, 0x2f, 0x12, 0x69, 0x9a, 0x47, 0x05, 0x6d, 0x21, 0xf2, 0x0d, 0x4c, 0x03, 0xbf,
+	0x44, 0x94, 0x73, 0xa1, 0x6f, 0x60, 0x1a, 0x31, 0xdf, 0xc0, 0x34, 0xf0, 0xcb, 0x44, 0x5c, 0x0c,
+	0x7f, 0x83, 0x50, 0x16, 0x82, 0xc6, 0xf0, 0x0a, 0xd1, 0x2a, 0x3c, 0x0b, 0x41, 0x67, 0x90, 0x32,
+	0x0b, 0x9d, 0xe1, 0x55, 0xc5, 0x1f, 0x4b, 0x3c, 0xb3, 0xd0, 0x1a, 0xc4, 0xa8, 0xa0, 0x35, 0xbc,
+	0x46, 0x84, 0x59, 0x1e, 0x15, 0xf4, 0x06, 0x1b, 0x95, 0x99, 0x4e, 0xe8, 0x0d, 0xaf, 0x13, 0x71,
+	0xe2, 0xe6, 0x40, 0x3d, 0xf2, 0xe6, 0xd0, 0x45, 0xcb, 0x21, 0x0c, 0xdd, 0x47, 0x6f, 0x10, 0xd2,
+	0x34, 0xdd, 0x41, 0x82, 0xd1, 0xcd, 0xb4, 0x8f, 0x96, 0x84, 0x12, 0x14, 0xba, 0xc3, 0x9b, 0x10,
+	0xd8, 0xc4, 0xed, 0x81, 0x17, 0x2e, 0x6f, 0x0f, 0x0e, 0xc2, 0x11, 0x08, 0x0d, 0xeb, 0x2d, 0x08,
+	0x2b, 0x49, 0x7f, 0x08, 0xa1, 0x68, 0x48, 0x9f, 0x45, 0x39, 0xb7, 0x71, 0xe4, 0xb7, 0x06, 0xe8,
+	0x0f, 0x3f, 0x4f, 0xfb, 0x88, 0x8f, 0x4c, 0x90, 0xb9, 0xdb, 0x8d, 0x23, 0xd2, 0x45, 0xc8, 0xbf,
+	0x9d, 0x6e, 0xff, 0xf8, 0xd4, 0x5a, 0x74, 0xb9, 0x45, 0xdd, 0x47, 0x79, 0x46, 0x80, 0x46, 0xf0,
+	0x0b, 0x40, 0x7c, 0x74, 0x72, 0x84, 0xdf, 0x85, 0x80, 0x91, 0x75, 0x05, 0x93, 0xda, 0x42, 0x05,
+	0x06, 0x09, 0x1a, 0xd3, 0x2f, 0x81, 0xf2, 0xb1, 0xc9, 0x29, 0xd0, 0xc2, 0x00, 0x93, 0x73, 0x45,
+	0x9b, 0xc4, 0x09, 0xda, 0xda, 0xaf, 0x12, 0x73, 0x76, 0x63, 0x38, 0x41, 0x53, 0x0c, 0x25, 0xcd,
+	0x34, 0xf0, 0xaf, 0xa7, 0x49, 0x9a, 0x69, 0x44, 0x92, 0x66, 0x1a, 0x91, 0xa4, 0x99, 0x06, 0xfe,
+	0xcd, 0x54, 0x49, 0xa3, 0x18, 0x31, 0x69, 0x21, 0x4e, 0xd0, 0x8f, 0x7f, 0x3b, 0x55, 0xd2, 0xc2,
+	0x9c, 0xa0, 0x9b, 0x77, 0x50, 0x91, 0x71, 0x68, 0x83, 0xfe, 0x1d, 0x80, 0x2e, 0x4f, 0x0e, 0x0a,
+	0xfa, 0x3e, 0x90, 0xf2, 0xae, 0x64, 0x54, 0x1d, 0x54, 0xe2, 0xa9, 0xa3, 0xac, 0xdf, 0x03, 0xeb,
+	0x4a, 0x82, 0xe4, 0xb5, 0x44, 0x58, 0xc1, 0x95, 0xad, 0x52, 0x35, 0xc0, 0x30, 0xf9, 0x43, 0xe2,
+	0x6a, 0xf0, 0xc7, 0x8e, 0x5c, 0x0d, 0x30, 0x89, 0x22, 0xd9, 0x33, 0x0d, 0xfc, 0xc7, 0xe9, 0xb2,
+	0x47, 0x9f, 0x93, 0x94, 0x3d, 0xd3, 0x88, 0xc9, 0x9e, 0x69, 0xe0, 0x3f, 0x4d, 0x99, 0x3d, 0x0a,
+	0x93, 0xb3, 0x17, 0x2a, 0xbf, 0x60, 0x10, 0xfe, 0x39, 0x71, 0xf9, 0xc1, 0xc8, 0x94, 0xcb, 0x2f,
+	0x18, 0xa3, 0xd2, 0x76, 0x82, 0x31, 0xfa, 0x97, 0xe4, 0xdb, 0xc9, 0x77, 0x10, 0xda, 0x4e, 0x30,
+	0x84, 0xc5, 0x6a, 0x80, 0x21, 0xfc, 0xd7, 0xc4, 0xd5, 0xe0, 0x8f, 0x6b, 0xb9, 0x1a, 0x60, 0x82,
+	0x1f, 0xa1, 0x32, 0x83, 0x08, 0x13, 0xfc, 0x6f, 0x40, 0xba, 0x3a, 0x39, 0x89, 0x4d, 0x6d, 0xa0,
+	0x15, 0xdd, 0x90, 0x59, 0x3d, 0x45, 0xcb, 0x21, 0x22, 0x9d, 0x7a, 0x7f, 0x07, 0xe8, 0xb5, 0x84,
+	0xd0, 0xc0, 0x06, 0xdc, 0xb2, 0x1b, 0xfd, 0x44, 0x3d, 0x41, 0x4b, 0x42, 0x23, 0x14, 0xe6, 0xfa,
+	0x3f, 0x80, 0xbc, 0x9d, 0xa4, 0x1d, 0xb2, 0x89, 0x0e, 0x60, 0xd5, 0x8d, 0x7c, 0xa0, 0x3e, 0x40,
+	0x38, 0xc2, 0xa5, 0x41, 0xff, 0x13, 0xd0, 0x3b, 0x89, 0xd1, 0x52, 0xd8, 0x4b, 0x6e, 0xdc, 0x67,
+	0xb4, 0x94, 0xfc, 0x99, 0x03, 0xe3, 0xff, 0x5f, 0x89, 0x4a, 0xc9, 0x1f, 0xc2, 0x7c, 0xfe, 0x93,
+	0x52, 0x62, 0x26, 0xba, 0x2f, 0x7a, 0x02, 0xe5, 0xdf, 0x89, 0xf6, 0x05, 0xcc, 0x60, 0x8e, 0x21,
+	0xfb, 0x82, 0xdb, 0x28, 0x67, 0x20, 0x70, 0xfe, 0x93, 0x88, 0xb3, 0x1b, 0xc3, 0xe1, 0x36, 0x21,
+	0x69, 0xa6, 0x01, 0x98, 0xff, 0x26, 0x4d, 0x9a, 0x69, 0x44, 0x92, 0x06, 0x26, 0x31, 0x69, 0x94,
+	0xf2, 0xbf, 0xc4, 0x49, 0x13, 0x31, 0x34, 0x69, 0x32, 0x67, 0x20, 0x70, 0xfe, 0x9f, 0x38, 0x69,
+	0x61, 0x0e, 0xb7, 0xd1, 0xe9, 0x12, 0x4c, 0x34, 0x00, 0x3d, 0x4c, 0x34, 0x5d, 0x82, 0x11, 0xcc,
+	0x49, 0xe4, 0x69, 0x08, 0x46, 0x96, 0x3a, 0xbf, 0x5b, 0x02, 0xe9, 0x89, 0x64, 0xa9, 0xf3, 0x3d,
+	0x84, 0x52, 0xc7, 0x6c, 0xaa, 0x86, 0x90, 0xd7, 0xb5, 0xbd, 0x16, 0x20, 0xbe, 0x98, 0xd1, 0x14,
+	0xfd, 0x4c, 0x3d, 0x65, 0x2d, 0xf8, 0x46, 0x5f, 0xb1, 0x8a, 0x16, 0x41, 0x01, 0x27, 0xc5, 0x2f,
+	0x11, 0xc9, 0x6c, 0x3d, 0x65, 0xc1, 0x3a, 0x38, 0xb9, 0x9e, 0x43, 0x59, 0xd0, 0x04, 0xc7, 0xd6,
+	0x2f, 0x13, 0x51, 0xa9, 0x9e, 0xb2, 0x60, 0x69, 0x70, 0xee, 0x64, 0xaa, 0xe0, 0xd0, 0xf9, 0x15,
+	0xa2, 0xca, 0x31, 0x55, 0x70, 0x6a, 0x14, 0x79, 0xa6, 0x81, 0xbf, 0x4a, 0x44, 0x19, 0x91, 0x67,
+	0x1a, 0x32, 0xcf, 0x34, 0xf0, 0xd7, 0x88, 0x48, 0x95, 0x78, 0xa2, 0x2a, 0x38, 0xaf, 0x7d, 0x9d,
+	0xa8, 0x66, 0x24, 0x9e, 0x69, 0xa8, 0xe7, 0x51, 0x0e, 0x54, 0xf4, 0x04, 0xf4, 0x0d, 0x22, 0x9b,
+	0xaf, 0xa7, 0x2c, 0x58, 0x4d, 0x4f, 0x4b, 0x3a, 0xca, 0x07, 0x4c, 0x2a, 0xfc, 0x26, 0x11, 0x16,
+	0xea, 0x29, 0x0b, 0x1c, 0xb0, 0x93, 0x0e, 0x8b, 0x00, 0x8e, 0x39, 0xdf, 0x22, 0xb2, 0x34, 0x8b,
+	0x00, 0x0e, 0x2a, 0x32, 0xd5, 0x34, 0xf0, 0xb7, 0x89, 0x6a, 0x4e, 0xa6, 0xfa, 0x17, 0x60, 0x89,
+	0x6a, 0x1a, 0xf8, 0x3b, 0x44, 0x58, 0x0c, 0x51, 0xc5, 0x68, 0x83, 0xe3, 0xc1, 0x77, 0x89, 0x4e,
+	0x61, 0xd1, 0x06, 0xf3, 0x9d, 0x67, 0x0e, 0x86, 0xfb, 0xf7, 0x88, 0x6a, 0x81, 0x67, 0x0e, 0xa6,
+	0x33, 0x8b, 0x00, 0x46, 0xf3, 0xf7, 0x89, 0x28, 0xcb, 0x22, 0x80, 0xe1, 0xda, 0x40, 0x45, 0xd0,
+	0x08, 0x93, 0xf5, 0x07, 0x99, 0xe4, 0x2f, 0xce, 0xea, 0x29, 0x0b, 0x42, 0xe5, 0xd3, 0xf4, 0x1e,
+	0x2a, 0x8b, 0x08, 0x3a, 0x55, 0x7e, 0x98, 0x99, 0xea, 0xad, 0x59, 0x3d, 0x65, 0x95, 0x38, 0x88,
+	0x4e, 0x91, 0x3d, 0xa4, 0xd2, 0x92, 0x12, 0x66, 0xe7, 0x8f, 0x32, 0x49, 0x5e, 0x99, 0xd5, 0x53,
+	0x56, 0x31, 0x28, 0x44, 0x3e, 0x27, 0x0f, 0xd1, 0x92, 0x0c, 0xa0, 0xe1, 0xfc, 0x38, 0x93, 0xf0,
+	0x7d, 0x59, 0x3d, 0x65, 0x95, 0x45, 0x0c, 0x0d, 0x85, 0xd5, 0x16, 0x3c, 0xe3, 0x4d, 0xfc, 0x13,
+	0xfa, 0x90, 0xb3, 0xc2, 0x43, 0xde, 0x0c, 0xeb, 0xaa, 0xf8, 0xa7, 0x71, 0xba, 0x6a, 0x58, 0x57,
+	0xc3, 0x3f, 0x8b, 0xd3, 0xd5, 0x56, 0xee, 0xa1, 0xac, 0x94, 0xd2, 0x77, 0xf0, 0xff, 0x0a, 0x56,
+	0x2e, 0xa3, 0x62, 0xf8, 0xc6, 0xae, 0x16, 0x51, 0xe6, 0xbe, 0x7d, 0xea, 0x03, 0xcf, 0x58, 0xe4,
+	0x47, 0xf5, 0x2c, 0x9a, 0x3d, 0x69, 0x38, 0x03, 0x1b, 0xa7, 0x7d, 0x1b, 0xfc, 0x72, 0x29, 0xfd,
+	0x61, 0x65, 0xe5, 0x0a, 0x2a, 0x45, 0xae, 0xe3, 0xa3, 0x1c, 0xcc, 0x8a, 0x0e, 0xae, 0x22, 0x35,
+	0x7a, 0xd3, 0x1e, 0xe5, 0xa1, 0x14, 0xef, 0x61, 0x77, 0x7c, 0x0f, 0xb9, 0xa1, 0x41, 0x04, 0x57,
+	0x87, 0x51, 0x0e, 0x32, 0xc3, 0x83, 0x18, 0xd3, 0x83, 0x3a, 0x3c, 0x88, 0x31, 0x3d, 0xcc, 0x88,
+	0x1e, 0xb6, 0x50, 0x39, 0xe6, 0xb2, 0x3a, 0xca, 0xc5, 0xbc, 0xe8, 0x62, 0x1b, 0x9d, 0x8d, 0xbb,
+	0x83, 0x8e, 0xf2, 0x51, 0x88, 0xcf, 0x25, 0xbf, 0x5c, 0x8e, 0x72, 0x90, 0x7e, 0x4c, 0x1c, 0x63,
+	0xa6, 0x62, 0xee, 0x71, 0x71, 0x8c, 0xe9, 0xa3, 0x18, 0xff, 0x40, 0x84, 0x5b, 0xde, 0x28, 0x0f,
+	0xca, 0x90, 0xa2, 0xe0, 0xf7, 0xb7, 0x51, 0x1e, 0x16, 0xe2, 0x73, 0xc9, 0xaf, 0x66, 0xa3, 0x1c,
+	0x64, 0x45, 0x07, 0xa7, 0x68, 0x29, 0xf6, 0xc6, 0x15, 0xe3, 0xe4, 0x13, 0xa2, 0x93, 0xa4, 0xaf,
+	0x65, 0x05, 0xf4, 0x03, 0x84, 0x87, 0xdd, 0xbb, 0x62, 0xe8, 0xb7, 0x45, 0xfa, 0x14, 0xaf, 0x6a,
+	0x85, 0x2f, 0x30, 0x40, 0xef, 0x1a, 0x72, 0xfd, 0x8a, 0xe1, 0x5f, 0x97, 0xa3, 0x9f, 0xf4, 0xdd,
+	0xad, 0x80, 0xfd, 0x02, 0x5a, 0x19, 0x7e, 0xf5, 0x8a, 0x21, 0x7f, 0x5c, 0x8e, 0x3c, 0xc1, 0xdb,
+	0xdc, 0x48, 0xc1, 0xc8, 0x17, 0x30, 0x91, 0x39, 0x3b, 0xaa, 0x9d, 0x43, 0xcd, 0x86, 0xee, 0x56,
+	0xa2, 0x87, 0xd2, 0x78, 0x1e, 0x76, 0x87, 0x7b, 0xc8, 0x8d, 0x37, 0x52, 0xe4, 0x0b, 0x91, 0xe8,
+	0x20, 0x33, 0x7e, 0x10, 0x43, 0x3c, 0xa8, 0xe3, 0x07, 0x31, 0xc4, 0xc3, 0xcc, 0x28, 0x0f, 0xd0,
+	0xc5, 0xc2, 0xd7, 0x13, 0xd1, 0xc5, 0xfc, 0x98, 0x61, 0xc8, 0xf7, 0x0e, 0xd1, 0xc3, 0xc2, 0x08,
+	0x0f, 0xab, 0x15, 0xb4, 0xc0, 0x0f, 0x81, 0x0b, 0x68, 0x76, 0xeb, 0xd6, 0xa7, 0xea, 0x5b, 0xc5,
+	0x14, 0xf9, 0x71, 0xdb, 0xda, 0xfa, 0xf4, 0x27, 0x8b, 0x8a, 0xba, 0x88, 0xe6, 0xaf, 0xd5, 0xb7,
+	0xac, 0x5b, 0x37, 0x77, 0x8a, 0xe9, 0xed, 0x1c, 0x3d, 0xae, 0x0e, 0xba, 0x1d, 0xaf, 0xbb, 0xb6,
+	0x89, 0x16, 0xc5, 0x83, 0x57, 0x9c, 0x03, 0xa4, 0x66, 0xb9, 0x83, 0x47, 0xca, 0xf6, 0xdd, 0xbb,
+	0x9f, 0x69, 0x77, 0xfa, 0x87, 0x83, 0x66, 0x65, 0xdf, 0x73, 0xd7, 0xa1, 0x86, 0xd7, 0xfd, 0xfa,
+	0x6d, 0x0e, 0x5a, 0xeb, 0x27, 0xd5, 0xf5, 0x4e, 0xb7, 0x6f, 0x1f, 0x77, 0x1b, 0x8e, 0xff, 0x07,
+	0x14, 0xfe, 0x07, 0xbd, 0x75, 0xc7, 0x6e, 0x37, 0xf6, 0x4f, 0xd7, 0x47, 0xfc, 0xc9, 0x45, 0x73,
+	0x0e, 0x04, 0x6f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xbb, 0xf5, 0xc8, 0x6d, 0x9c, 0x21, 0x00, 0x00,
+}
diff --git a/internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5/test.proto b/internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5/test.proto
new file mode 100644
index 0000000..cff7157
--- /dev/null
+++ b/internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5/test.proto
@@ -0,0 +1,136 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto3";
+
+package google.golang.org.proto3_20160225;
+option go_package = "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5";
+
+enum SiblingEnum {
+	ALPHA   = 0;
+	BRAVO   = 10;
+	CHARLIE = 200;
+}
+
+message SiblingMessage {
+	string          f1 = 1;
+	repeated string f2 = 2;
+	Message         f3 = 3;
+}
+
+message Message {
+	enum ChildEnum {
+		ALPHA   = 0;
+		BRAVO   = 1;
+		CHARLIE = 2;
+	}
+	message ChildMessage {
+		string          f1 = 1;
+		repeated string f2 = 2;
+		Message         f3 = 3;
+	}
+
+	// Optional fields.
+	bool     optional_bool     = 100;
+	int32    optional_int32    = 101;
+	sint32   optional_sint32   = 102;
+	uint32   optional_uint32   = 103;
+	int64    optional_int64    = 104;
+	sint64   optional_sint64   = 105;
+	uint64   optional_uint64   = 106;
+	fixed32  optional_fixed32  = 107;
+	sfixed32 optional_sfixed32 = 108;
+	float    optional_float    = 109;
+	fixed64  optional_fixed64  = 110;
+	sfixed64 optional_sfixed64 = 111;
+	double   optional_double   = 112;
+	string   optional_string   = 113;
+	bytes    optional_bytes    = 114;
+
+	ChildEnum      optional_child_enum      = 115;
+	ChildMessage   optional_child_message   = 116;
+	SiblingEnum    optional_sibling_enum    = 117;
+	SiblingMessage optional_sibling_message = 118;
+
+	// Repeated fields.
+	repeated bool     repeated_bool     = 200;
+	repeated int32    repeated_int32    = 201;
+	repeated sint32   repeated_sint32   = 202;
+	repeated uint32   repeated_uint32   = 203;
+	repeated int64    repeated_int64    = 204;
+	repeated sint64   repeated_sint64   = 205;
+	repeated uint64   repeated_uint64   = 206;
+	repeated fixed32  repeated_fixed32  = 207;
+	repeated sfixed32 repeated_sfixed32 = 208;
+	repeated float    repeated_float    = 209;
+	repeated fixed64  repeated_fixed64  = 210;
+	repeated sfixed64 repeated_sfixed64 = 211;
+	repeated double   repeated_double   = 212;
+	repeated string   repeated_string   = 213;
+	repeated bytes    repeated_bytes    = 214;
+
+	repeated ChildEnum      repeated_child_enum      = 215;
+	repeated ChildMessage   repeated_child_message   = 216;
+	repeated SiblingEnum    repeated_sibling_enum    = 217;
+	repeated SiblingMessage repeated_sibling_message = 218;
+
+	// Map fields.
+	map<bool, bool>     map_bool_bool     = 300;
+	map<bool, int32>    map_bool_int32    = 301;
+	map<bool, sint32>   map_bool_sint32   = 302;
+	map<bool, uint32>   map_bool_uint32   = 303;
+	map<bool, int64>    map_bool_int64    = 304;
+	map<bool, sint64>   map_bool_sint64   = 305;
+	map<bool, uint64>   map_bool_uint64   = 306;
+	map<bool, fixed32>  map_bool_fixed32  = 307;
+	map<bool, sfixed32> map_bool_sfixed32 = 308;
+	map<bool, float>    map_bool_float    = 309;
+	map<bool, fixed64>  map_bool_fixed64  = 310;
+	map<bool, sfixed64> map_bool_sfixed64 = 311;
+	map<bool, double>   map_bool_double   = 312;
+	map<bool, string>   map_bool_string   = 313;
+	map<bool, bytes>    map_bool_bytes    = 314;
+
+	map<bool, ChildEnum>      map_bool_child_enum      = 315;
+	map<bool, ChildMessage>   map_bool_child_message   = 316;
+	map<bool, SiblingEnum>    map_bool_sibling_enum    = 317;
+	map<bool, SiblingMessage> map_bool_sibling_message = 318;
+
+	map<int32, bool>   map_int32_bool   = 319;
+	map<sint32, bool>  map_sint32_bool  = 320;
+	map<uint32, bool>  map_uint32_bool  = 321;
+	map<int64, bool>   map_int64_bool   = 322;
+	map<sint64, bool>  map_sint64_bool  = 323;
+	map<uint64, bool>  map_uint64_bool  = 324;
+	map<fixed32, bool> map_fixed32_bool = 325;
+	map<string, bool>  map_string_bool  = 326;
+
+	// Oneof fields.
+	oneof oneof_union {
+		bool     oneof_bool     = 400;
+		int32    oneof_int32    = 401;
+		sint32   oneof_sint32   = 402;
+		uint32   oneof_uint32   = 403;
+		int64    oneof_int64    = 404;
+		sint64   oneof_sint64   = 405;
+		uint64   oneof_uint64   = 406;
+		fixed32  oneof_fixed32  = 407;
+		sfixed32 oneof_sfixed32 = 408;
+		float    oneof_float    = 409;
+		fixed64  oneof_fixed64  = 410;
+		sfixed64 oneof_sfixed64 = 411;
+		double   oneof_double   = 412;
+		string   oneof_string   = 413;
+		bytes    oneof_bytes    = 414;
+
+		ChildEnum      oneof_child_enum      = 415;
+		ChildMessage   oneof_child_message   = 416;
+		SiblingEnum    oneof_sibling_enum    = 417;
+		SiblingMessage oneof_sibling_message = 418;
+
+		string oneof_string1 = 419;
+		string oneof_string2 = 420;
+		string oneof_string3 = 421;
+	}
+}
diff --git a/internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5/test.pb.go b/internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5/test.pb.go
new file mode 100644
index 0000000..192270b
--- /dev/null
+++ b/internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5/test.pb.go
@@ -0,0 +1,1183 @@
+// Code generated by protoc-gen-go.
+// source: proto3.v0.0.0-20160519-a4ab9ec5/test.proto
+// DO NOT EDIT!
+
+/*
+Package proto3_v0_0_0_20160519_a4ab9ec5 is a generated protocol buffer package.
+
+It is generated from these files:
+	proto3.v0.0.0-20160519-a4ab9ec5/test.proto
+
+It has these top-level messages:
+	SiblingMessage
+	Message
+*/
+package proto3_v0_0_0_20160519_a4ab9ec5
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+const _ = proto.ProtoPackageIsVersion1
+
+type SiblingEnum int32
+
+const (
+	SiblingEnum_ALPHA   SiblingEnum = 0
+	SiblingEnum_BRAVO   SiblingEnum = 10
+	SiblingEnum_CHARLIE SiblingEnum = 200
+)
+
+var SiblingEnum_name = map[int32]string{
+	0:   "ALPHA",
+	10:  "BRAVO",
+	200: "CHARLIE",
+}
+var SiblingEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   10,
+	"CHARLIE": 200,
+}
+
+func (x SiblingEnum) String() string {
+	return proto.EnumName(SiblingEnum_name, int32(x))
+}
+func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+type Message_ChildEnum int32
+
+const (
+	Message_ALPHA   Message_ChildEnum = 0
+	Message_BRAVO   Message_ChildEnum = 1
+	Message_CHARLIE Message_ChildEnum = 2
+)
+
+var Message_ChildEnum_name = map[int32]string{
+	0: "ALPHA",
+	1: "BRAVO",
+	2: "CHARLIE",
+}
+var Message_ChildEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   1,
+	"CHARLIE": 2,
+}
+
+func (x Message_ChildEnum) String() string {
+	return proto.EnumName(Message_ChildEnum_name, int32(x))
+}
+func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+type SiblingMessage struct {
+	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
+	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+}
+
+func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
+func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
+func (*SiblingMessage) ProtoMessage()               {}
+func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *SiblingMessage) GetF3() *Message {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message struct {
+	// Optional fields.
+	OptionalBool           bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	OptionalInt32          int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	OptionalSint32         int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	OptionalUint32         uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
+	OptionalInt64          int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
+	OptionalSint64         int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	OptionalUint64         uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	OptionalFixed32        uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	OptionalSfixed32       int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	OptionalFloat          float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	OptionalFixed64        uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	OptionalSfixed64       int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	OptionalDouble         float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	OptionalString         string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	OptionalBytes          []byte                `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
+	OptionalChildEnum      Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto3_20160519.Message_ChildEnum" json:"optional_child_enum,omitempty"`
+	OptionalChildMessage   *Message_ChildMessage `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
+	OptionalSiblingEnum    SiblingEnum           `protobuf:"varint,117,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto3_20160519.SiblingEnum" json:"optional_sibling_enum,omitempty"`
+	OptionalSiblingMessage *SiblingMessage       `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
+	// Repeated fields.
+	RepeatedBool           []bool                  `protobuf:"varint,200,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	RepeatedInt32          []int32                 `protobuf:"varint,201,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	RepeatedSint32         []int32                 `protobuf:"zigzag32,202,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	RepeatedUint32         []uint32                `protobuf:"varint,203,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	RepeatedInt64          []int64                 `protobuf:"varint,204,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	RepeatedSint64         []int64                 `protobuf:"zigzag64,205,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	RepeatedUint64         []uint64                `protobuf:"varint,206,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	RepeatedFixed32        []uint32                `protobuf:"fixed32,207,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	RepeatedSfixed32       []int32                 `protobuf:"fixed32,208,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	RepeatedFloat          []float32               `protobuf:"fixed32,209,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	RepeatedFixed64        []uint64                `protobuf:"fixed64,210,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed64       []int64                 `protobuf:"fixed64,211,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	RepeatedDouble         []float64               `protobuf:"fixed64,212,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	RepeatedString         []string                `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	RepeatedBytes          [][]byte                `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
+	RepeatedChildEnum      []Message_ChildEnum     `protobuf:"varint,215,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto3_20160519.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
+	RepeatedChildMessage   []*Message_ChildMessage `protobuf:"bytes,216,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
+	RepeatedSiblingEnum    []SiblingEnum           `protobuf:"varint,217,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto3_20160519.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
+	RepeatedSiblingMessage []*SiblingMessage       `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
+	// Map fields.
+	MapBoolBool           map[bool]bool                  `protobuf:"bytes,300,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,301,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,302,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,303,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,304,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,305,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,306,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,307,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,308,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFloat          map[bool]float32               `protobuf:"bytes,309,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,310,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,311,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolDouble         map[bool]float64               `protobuf:"bytes,312,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolString         map[bool]string                `protobuf:"bytes,313,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,314,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,315,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20160519.Message_ChildEnum"`
+	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,316,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,317,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20160519.SiblingEnum"`
+	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,318,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,319,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,320,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,321,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,322,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,323,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,324,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,325,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapStringBool         map[string]bool                `protobuf:"bytes,326,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	// Oneof fields.
+	//
+	// Types that are valid to be assigned to OneofUnion:
+	//	*Message_OneofBool
+	//	*Message_OneofInt32
+	//	*Message_OneofSint32
+	//	*Message_OneofUint32
+	//	*Message_OneofInt64
+	//	*Message_OneofSint64
+	//	*Message_OneofUint64
+	//	*Message_OneofFixed32
+	//	*Message_OneofSfixed32
+	//	*Message_OneofFloat
+	//	*Message_OneofFixed64
+	//	*Message_OneofSfixed64
+	//	*Message_OneofDouble
+	//	*Message_OneofString
+	//	*Message_OneofBytes
+	//	*Message_OneofChildEnum
+	//	*Message_OneofChildMessage
+	//	*Message_OneofSiblingEnum
+	//	*Message_OneofSiblingMessage
+	//	*Message_OneofString1
+	//	*Message_OneofString2
+	//	*Message_OneofString3
+	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
+}
+
+func (m *Message) Reset()                    { *m = Message{} }
+func (m *Message) String() string            { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()               {}
+func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
+
+type Message_OneofBool struct {
+	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,json=oneofBool,oneof"`
+}
+type Message_OneofInt32 struct {
+	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,json=oneofInt32,oneof"`
+}
+type Message_OneofSint32 struct {
+	OneofSint32 int32 `protobuf:"zigzag32,402,opt,name=oneof_sint32,json=oneofSint32,oneof"`
+}
+type Message_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,json=oneofUint32,oneof"`
+}
+type Message_OneofInt64 struct {
+	OneofInt64 int64 `protobuf:"varint,404,opt,name=oneof_int64,json=oneofInt64,oneof"`
+}
+type Message_OneofSint64 struct {
+	OneofSint64 int64 `protobuf:"zigzag64,405,opt,name=oneof_sint64,json=oneofSint64,oneof"`
+}
+type Message_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,406,opt,name=oneof_uint64,json=oneofUint64,oneof"`
+}
+type Message_OneofFixed32 struct {
+	OneofFixed32 uint32 `protobuf:"fixed32,407,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
+}
+type Message_OneofSfixed32 struct {
+	OneofSfixed32 int32 `protobuf:"fixed32,408,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
+}
+type Message_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,409,opt,name=oneof_float,json=oneofFloat,oneof"`
+}
+type Message_OneofFixed64 struct {
+	OneofFixed64 uint64 `protobuf:"fixed64,410,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
+}
+type Message_OneofSfixed64 struct {
+	OneofSfixed64 int64 `protobuf:"fixed64,411,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
+}
+type Message_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,412,opt,name=oneof_double,json=oneofDouble,oneof"`
+}
+type Message_OneofString struct {
+	OneofString string `protobuf:"bytes,413,opt,name=oneof_string,json=oneofString,oneof"`
+}
+type Message_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,414,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
+}
+type Message_OneofChildEnum struct {
+	OneofChildEnum Message_ChildEnum `protobuf:"varint,415,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto3_20160519.Message_ChildEnum,oneof"`
+}
+type Message_OneofChildMessage struct {
+	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,416,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
+}
+type Message_OneofSiblingEnum struct {
+	OneofSiblingEnum SiblingEnum `protobuf:"varint,417,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto3_20160519.SiblingEnum,oneof"`
+}
+type Message_OneofSiblingMessage struct {
+	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,418,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
+}
+type Message_OneofString1 struct {
+	OneofString1 string `protobuf:"bytes,419,opt,name=oneof_string1,json=oneofString1,oneof"`
+}
+type Message_OneofString2 struct {
+	OneofString2 string `protobuf:"bytes,420,opt,name=oneof_string2,json=oneofString2,oneof"`
+}
+type Message_OneofString3 struct {
+	OneofString3 string `protobuf:"bytes,421,opt,name=oneof_string3,json=oneofString3,oneof"`
+}
+
+func (*Message_OneofBool) isMessage_OneofUnion()           {}
+func (*Message_OneofInt32) isMessage_OneofUnion()          {}
+func (*Message_OneofSint32) isMessage_OneofUnion()         {}
+func (*Message_OneofUint32) isMessage_OneofUnion()         {}
+func (*Message_OneofInt64) isMessage_OneofUnion()          {}
+func (*Message_OneofSint64) isMessage_OneofUnion()         {}
+func (*Message_OneofUint64) isMessage_OneofUnion()         {}
+func (*Message_OneofFixed32) isMessage_OneofUnion()        {}
+func (*Message_OneofSfixed32) isMessage_OneofUnion()       {}
+func (*Message_OneofFloat) isMessage_OneofUnion()          {}
+func (*Message_OneofFixed64) isMessage_OneofUnion()        {}
+func (*Message_OneofSfixed64) isMessage_OneofUnion()       {}
+func (*Message_OneofDouble) isMessage_OneofUnion()         {}
+func (*Message_OneofString) isMessage_OneofUnion()         {}
+func (*Message_OneofBytes) isMessage_OneofUnion()          {}
+func (*Message_OneofChildEnum) isMessage_OneofUnion()      {}
+func (*Message_OneofChildMessage) isMessage_OneofUnion()   {}
+func (*Message_OneofSiblingEnum) isMessage_OneofUnion()    {}
+func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
+func (*Message_OneofString1) isMessage_OneofUnion()        {}
+func (*Message_OneofString2) isMessage_OneofUnion()        {}
+func (*Message_OneofString3) isMessage_OneofUnion()        {}
+
+func (m *Message) GetOneofUnion() isMessage_OneofUnion {
+	if m != nil {
+		return m.OneofUnion
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.OptionalChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.OptionalSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
+	if m != nil {
+		return m.RepeatedChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
+	if m != nil {
+		return m.RepeatedSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBool() map[bool]bool {
+	if m != nil {
+		return m.MapBoolBool
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolInt32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolUint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolInt64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolUint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFloat() map[bool]float32 {
+	if m != nil {
+		return m.MapBoolFloat
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolDouble() map[bool]float64 {
+	if m != nil {
+		return m.MapBoolDouble
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolString() map[bool]string {
+	if m != nil {
+		return m.MapBoolString
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBytes() map[bool][]byte {
+	if m != nil {
+		return m.MapBoolBytes
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
+	if m != nil {
+		return m.MapBoolChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
+	if m != nil {
+		return m.MapBoolChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
+	if m != nil {
+		return m.MapBoolSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
+	if m != nil {
+		return m.MapBoolSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapInt32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapSint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapUint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapInt64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapSint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint64Bool() map[uint64]bool {
+	if m != nil {
+		return m.MapUint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapFixed32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapFixed32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapStringBool() map[string]bool {
+	if m != nil {
+		return m.MapStringBool
+	}
+	return nil
+}
+
+func (m *Message) GetOneofBool() bool {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
+		return x.OneofBool
+	}
+	return false
+}
+
+func (m *Message) GetOneofInt32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
+		return x.OneofInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
+		return x.OneofSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
+		return x.OneofUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofInt64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
+		return x.OneofInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
+		return x.OneofSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
+		return x.OneofUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
+		return x.OneofFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
+		return x.OneofSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFloat() float32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
+		return x.OneofFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
+		return x.OneofFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
+		return x.OneofSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofDouble() float64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
+		return x.OneofDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOneofString() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
+		return x.OneofString
+	}
+	return ""
+}
+
+func (m *Message) GetOneofBytes() []byte {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
+		return x.OneofBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOneofChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
+		return x.OneofChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
+		return x.OneofChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
+		return x.OneofSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
+		return x.OneofSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofString1() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
+		return x.OneofString1
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString2() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
+		return x.OneofString2
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString3() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
+		return x.OneofString3
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
+		(*Message_OneofBool)(nil),
+		(*Message_OneofInt32)(nil),
+		(*Message_OneofSint32)(nil),
+		(*Message_OneofUint32)(nil),
+		(*Message_OneofInt64)(nil),
+		(*Message_OneofSint64)(nil),
+		(*Message_OneofUint64)(nil),
+		(*Message_OneofFixed32)(nil),
+		(*Message_OneofSfixed32)(nil),
+		(*Message_OneofFloat)(nil),
+		(*Message_OneofFixed64)(nil),
+		(*Message_OneofSfixed64)(nil),
+		(*Message_OneofDouble)(nil),
+		(*Message_OneofString)(nil),
+		(*Message_OneofBytes)(nil),
+		(*Message_OneofChildEnum)(nil),
+		(*Message_OneofChildMessage)(nil),
+		(*Message_OneofSiblingEnum)(nil),
+		(*Message_OneofSiblingMessage)(nil),
+		(*Message_OneofString1)(nil),
+		(*Message_OneofString2)(nil),
+		(*Message_OneofString3)(nil),
+	}
+}
+
+func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		t := uint64(0)
+		if x.OneofBool {
+			t = 1
+		}
+		b.EncodeVarint(400<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofInt32:
+		b.EncodeVarint(401<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		b.EncodeVarint(402<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofSint32))
+	case *Message_OneofUint32:
+		b.EncodeVarint(403<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		b.EncodeVarint(404<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		b.EncodeVarint(405<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofSint64))
+	case *Message_OneofUint64:
+		b.EncodeVarint(406<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		b.EncodeVarint(407<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofFixed32))
+	case *Message_OneofSfixed32:
+		b.EncodeVarint(408<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofSfixed32))
+	case *Message_OneofFloat:
+		b.EncodeVarint(409<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
+	case *Message_OneofFixed64:
+		b.EncodeVarint(410<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofFixed64))
+	case *Message_OneofSfixed64:
+		b.EncodeVarint(411<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofSfixed64))
+	case *Message_OneofDouble:
+		b.EncodeVarint(412<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
+	case *Message_OneofString:
+		b.EncodeVarint(413<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString)
+	case *Message_OneofBytes:
+		b.EncodeVarint(414<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		b.EncodeVarint(415<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		b.EncodeVarint(416<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
+			return err
+		}
+	case *Message_OneofSiblingEnum:
+		b.EncodeVarint(417<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		b.EncodeVarint(418<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
+			return err
+		}
+	case *Message_OneofString1:
+		b.EncodeVarint(419<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString1)
+	case *Message_OneofString2:
+		b.EncodeVarint(420<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString2)
+	case *Message_OneofString3:
+		b.EncodeVarint(421<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString3)
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Message)
+	switch tag {
+	case 400: // oneof_union.oneof_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofBool{x != 0}
+		return true, err
+	case 401: // oneof_union.oneof_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt32{int32(x)}
+		return true, err
+	case 402: // oneof_union.oneof_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofUnion = &Message_OneofSint32{int32(x)}
+		return true, err
+	case 403: // oneof_union.oneof_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint32{uint32(x)}
+		return true, err
+	case 404: // oneof_union.oneof_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt64{int64(x)}
+		return true, err
+	case 405: // oneof_union.oneof_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofUnion = &Message_OneofSint64{int64(x)}
+		return true, err
+	case 406: // oneof_union.oneof_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint64{x}
+		return true, err
+	case 407: // oneof_union.oneof_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
+		return true, err
+	case 408: // oneof_union.oneof_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
+		return true, err
+	case 409: // oneof_union.oneof_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 410: // oneof_union.oneof_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofFixed64{x}
+		return true, err
+	case 411: // oneof_union.oneof_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
+		return true, err
+	case 412: // oneof_union.oneof_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
+		return true, err
+	case 413: // oneof_union.oneof_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString{x}
+		return true, err
+	case 414: // oneof_union.oneof_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofUnion = &Message_OneofBytes{x}
+		return true, err
+	case 415: // oneof_union.oneof_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 416: // oneof_union.oneof_child_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_ChildMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofChildMessage{msg}
+		return true, err
+	case 417: // oneof_union.oneof_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
+		return true, err
+	case 418: // oneof_union.oneof_sibling_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(SiblingMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofSiblingMessage{msg}
+		return true, err
+	case 419: // oneof_union.oneof_string1
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString1{x}
+		return true, err
+	case 420: // oneof_union.oneof_string2
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString2{x}
+		return true, err
+	case 421: // oneof_union.oneof_string3
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString3{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Message_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		n += proto.SizeVarint(400<<3 | proto.WireVarint)
+		n += 1
+	case *Message_OneofInt32:
+		n += proto.SizeVarint(401<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		n += proto.SizeVarint(402<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
+	case *Message_OneofUint32:
+		n += proto.SizeVarint(403<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		n += proto.SizeVarint(404<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		n += proto.SizeVarint(405<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
+	case *Message_OneofUint64:
+		n += proto.SizeVarint(406<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		n += proto.SizeVarint(407<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofSfixed32:
+		n += proto.SizeVarint(408<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFloat:
+		n += proto.SizeVarint(409<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFixed64:
+		n += proto.SizeVarint(410<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofSfixed64:
+		n += proto.SizeVarint(411<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDouble:
+		n += proto.SizeVarint(412<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofString:
+		n += proto.SizeVarint(413<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString)))
+		n += len(x.OneofString)
+	case *Message_OneofBytes:
+		n += proto.SizeVarint(414<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
+		n += len(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		n += proto.SizeVarint(415<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		s := proto.Size(x.OneofChildMessage)
+		n += proto.SizeVarint(416<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofSiblingEnum:
+		n += proto.SizeVarint(417<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		s := proto.Size(x.OneofSiblingMessage)
+		n += proto.SizeVarint(418<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofString1:
+		n += proto.SizeVarint(419<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString1)))
+		n += len(x.OneofString1)
+	case *Message_OneofString2:
+		n += proto.SizeVarint(420<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString2)))
+		n += len(x.OneofString2)
+	case *Message_OneofString3:
+		n += proto.SizeVarint(421<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString3)))
+		n += len(x.OneofString3)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+type Message_ChildMessage struct {
+	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
+	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+}
+
+func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
+func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
+func (*Message_ChildMessage) ProtoMessage()               {}
+func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+func (m *Message_ChildMessage) GetF3() *Message {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto3_20160519.SiblingMessage")
+	proto.RegisterType((*Message)(nil), "google.golang.org.proto3_20160519.Message")
+	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto3_20160519.Message.ChildMessage")
+	proto.RegisterEnum("google.golang.org.proto3_20160519.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
+	proto.RegisterEnum("google.golang.org.proto3_20160519.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
+}
+
+var fileDescriptor0 = []byte{
+	// 1969 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x9a, 0xd7, 0x73, 0xdb, 0xce,
+	0x11, 0xc7, 0x09, 0x52, 0xc5, 0x3a, 0xb1, 0x82, 0x96, 0x72, 0xa3, 0x27, 0x44, 0x71, 0x1c, 0x44,
+	0x89, 0x29, 0x91, 0x84, 0x91, 0xd8, 0x49, 0x6c, 0x4b, 0xb6, 0x1c, 0x3a, 0x63, 0x4f, 0x32, 0xf0,
+	0x28, 0x93, 0xf1, 0x8b, 0x42, 0x4a, 0x20, 0x45, 0x1b, 0x20, 0x14, 0x91, 0xd4, 0x44, 0x93, 0x07,
+	0xff, 0x0b, 0xe9, 0xbd, 0x97, 0xb7, 0xf4, 0xde, 0xbb, 0x33, 0x4e, 0x6f, 0xbf, 0xfe, 0xd7, 0xfc,
+	0xe6, 0xb0, 0xb8, 0x06, 0x80, 0x26, 0x09, 0xce, 0xef, 0xc1, 0x33, 0xd2, 0xf2, 0x7b, 0xfb, 0xe1,
+	0x2e, 0xf6, 0x76, 0xef, 0x60, 0xa1, 0x8d, 0xe3, 0x13, 0x6f, 0xe0, 0xd5, 0x2b, 0xa7, 0x5b, 0x95,
+	0xad, 0xca, 0xd6, 0xa5, 0xda, 0x56, 0xd5, 0xdc, 0xba, 0x5c, 0xbd, 0x72, 0xa9, 0x69, 0x34, 0x5b,
+	0x57, 0xec, 0x83, 0xcb, 0x9b, 0x03, 0xbb, 0x3f, 0xa8, 0xf8, 0x22, 0xf5, 0xf5, 0x1d, 0xcf, 0xeb,
+	0x38, 0x76, 0xa5, 0xe3, 0x39, 0xcd, 0x5e, 0xa7, 0xe2, 0x9d, 0x74, 0xe0, 0x83, 0xfa, 0x3e, 0x5d,
+	0xb6, 0xee, 0xa0, 0xfc, 0xfd, 0x6e, 0xcb, 0xe9, 0xf6, 0x3a, 0xf7, 0xec, 0x7e, 0xbf, 0xd9, 0xb1,
+	0xd5, 0x3c, 0x4a, 0xb7, 0xab, 0x58, 0xd1, 0x14, 0x7d, 0xc9, 0x4a, 0xb7, 0xab, 0xfe, 0xef, 0x35,
+	0x9c, 0xd6, 0x32, 0xfe, 0xef, 0x35, 0xf5, 0x2a, 0x4a, 0xb7, 0xeb, 0x38, 0xa3, 0x29, 0xfa, 0x72,
+	0x6d, 0xa3, 0x32, 0x96, 0x50, 0x09, 0xfc, 0x5a, 0xe9, 0x76, 0x7d, 0xfd, 0xc9, 0x0d, 0xb4, 0x48,
+	0x39, 0x6f, 0x40, 0x39, 0xef, 0x78, 0xd0, 0xf5, 0x7a, 0x4d, 0x67, 0xbf, 0xe5, 0x79, 0x0e, 0x3e,
+	0xd4, 0x14, 0xfd, 0x9c, 0x95, 0xa5, 0xc6, 0x1d, 0xcf, 0x73, 0xd4, 0x37, 0xa2, 0x3c, 0x13, 0x75,
+	0x7b, 0x83, 0x7a, 0x0d, 0xdb, 0x9a, 0xa2, 0xcf, 0x5b, 0x6c, 0xe9, 0x1d, 0x62, 0x54, 0xdf, 0x84,
+	0x0a, 0x4c, 0xd6, 0x07, 0x5d, 0x5b, 0x53, 0xf4, 0x92, 0xc5, 0x56, 0xdf, 0xef, 0x46, 0x84, 0x43,
+	0x10, 0x76, 0x34, 0x45, 0xcf, 0x71, 0xe1, 0x1e, 0x08, 0x43, 0x60, 0xd3, 0xc0, 0x47, 0x9a, 0xa2,
+	0x67, 0x24, 0xb0, 0x69, 0x44, 0xc0, 0xa6, 0x81, 0xbb, 0x9a, 0xa2, 0xab, 0x32, 0x38, 0x24, 0x1c,
+	0x82, 0xf0, 0xa1, 0xa6, 0xe8, 0x73, 0x32, 0xd8, 0x34, 0xd4, 0x37, 0xa3, 0x22, 0x13, 0xb6, 0xbb,
+	0x1f, 0xb6, 0x0f, 0xeb, 0x35, 0xfc, 0x48, 0x53, 0xf4, 0x45, 0x8b, 0x39, 0xb8, 0x0d, 0x66, 0xf5,
+	0x2d, 0xa8, 0xc4, 0xe1, 0x54, 0xeb, 0x68, 0x8a, 0x5e, 0xb0, 0x98, 0x8f, 0xfb, 0x81, 0x5d, 0x0a,
+	0xa8, 0xed, 0x78, 0xcd, 0x01, 0x76, 0x35, 0x45, 0x4f, 0xf3, 0x80, 0x6e, 0x13, 0x63, 0x14, 0x6f,
+	0x1a, 0xb8, 0xa7, 0x29, 0xfa, 0x42, 0x08, 0x6f, 0x1a, 0x31, 0x78, 0xd3, 0xc0, 0x9e, 0xa6, 0xe8,
+	0xc5, 0x30, 0x3e, 0x14, 0xff, 0xa1, 0x37, 0x6c, 0x39, 0x36, 0x3e, 0xd6, 0x14, 0x5d, 0xe1, 0xf1,
+	0xdf, 0xf2, 0xad, 0x72, 0x46, 0x07, 0x27, 0xdd, 0x5e, 0x07, 0x7f, 0xc8, 0xaf, 0x45, 0x9e, 0x51,
+	0xdf, 0x2a, 0x05, 0xd4, 0x3a, 0x1b, 0xd8, 0x7d, 0x7c, 0xa2, 0x29, 0x7a, 0x96, 0x07, 0xb4, 0x43,
+	0x8c, 0xea, 0x21, 0x2a, 0x33, 0xd9, 0xc1, 0x51, 0xd7, 0x39, 0xdc, 0xb7, 0x7b, 0x43, 0x17, 0xf7,
+	0x35, 0x45, 0xcf, 0xd7, 0x8c, 0xc9, 0xeb, 0xb7, 0x72, 0x93, 0x2c, 0xde, 0xed, 0x0d, 0x5d, 0x8b,
+	0x85, 0xcd, 0x4c, 0xaa, 0x8b, 0x56, 0x43, 0x14, 0x17, 0x96, 0xe1, 0x81, 0xbf, 0x51, 0xde, 0x36,
+	0x2d, 0x88, 0xee, 0x9a, 0xf3, 0x12, 0x8b, 0xee, 0x9d, 0x16, 0x5a, 0x11, 0xca, 0xce, 0xdf, 0xbe,
+	0x10, 0xd6, 0xd0, 0x0f, 0xab, 0x32, 0x01, 0x2d, 0xd8, 0xf5, 0x7e, 0x40, 0x65, 0x5e, 0xac, 0xcc,
+	0xa8, 0x3e, 0x42, 0x38, 0xc2, 0xa0, 0x41, 0x9d, 0xfa, 0x41, 0x55, 0x27, 0xc7, 0xd0, 0x70, 0x56,
+	0x43, 0x24, 0x1a, 0xd0, 0x05, 0x94, 0x3b, 0xb1, 0x8f, 0xed, 0xe6, 0xc0, 0x3e, 0x84, 0x66, 0xf0,
+	0x54, 0xd1, 0x32, 0xa4, 0x1b, 0x50, 0xab, 0xdf, 0x0d, 0x2e, 0xa2, 0x3c, 0x53, 0xc1, 0xe6, 0xfd,
+	0x2b, 0x91, 0xcd, 0x5b, 0x6c, 0x31, 0xb4, 0x03, 0x1d, 0x15, 0x98, 0x2e, 0x68, 0x07, 0x7f, 0x23,
+	0xc2, 0x92, 0xc5, 0xd6, 0x07, 0xfd, 0x40, 0x54, 0x06, 0xfd, 0xe0, 0xef, 0x44, 0x99, 0xe3, 0xca,
+	0xa0, 0x21, 0x84, 0xd8, 0xa6, 0x81, 0xff, 0x41, 0x84, 0x19, 0x89, 0x6d, 0x1a, 0x11, 0xb6, 0x69,
+	0xe0, 0x7f, 0x12, 0xa1, 0x2a, 0xb3, 0x43, 0xca, 0xa0, 0x25, 0xfc, 0x8b, 0x28, 0xe7, 0x64, 0xb6,
+	0x69, 0xa8, 0x1b, 0xa8, 0xc8, 0x94, 0x74, 0x9f, 0xff, 0x9b, 0x48, 0x17, 0x2d, 0xe6, 0x82, 0x36,
+	0x85, 0xb7, 0xa2, 0x12, 0xe7, 0x53, 0xf1, 0x7f, 0x88, 0xb8, 0x60, 0x31, 0x2f, 0xac, 0x2b, 0x88,
+	0x51, 0x41, 0x57, 0xf8, 0x2f, 0x91, 0xa6, 0x79, 0x54, 0xd0, 0x16, 0x22, 0xdf, 0xc0, 0x34, 0xf0,
+	0xff, 0x88, 0x72, 0x21, 0xf4, 0x0d, 0x4c, 0x23, 0xe6, 0x1b, 0x98, 0x06, 0xfe, 0x3f, 0x11, 0x17,
+	0xc3, 0xdf, 0x20, 0x94, 0x85, 0xa0, 0x31, 0x3c, 0x47, 0xb4, 0x0a, 0xcf, 0x42, 0xd0, 0x19, 0xa4,
+	0xcc, 0x42, 0x67, 0x78, 0x5e, 0xf1, 0xc7, 0x12, 0xcf, 0x2c, 0xb4, 0x06, 0x31, 0x2a, 0x68, 0x0d,
+	0x2f, 0x10, 0x61, 0x96, 0x47, 0x05, 0xbd, 0xc1, 0x46, 0x65, 0xa6, 0x13, 0x7a, 0xc3, 0x8b, 0x44,
+	0x9c, 0xb8, 0x39, 0x50, 0x8f, 0xbc, 0x39, 0xf4, 0xd0, 0x6a, 0x08, 0x43, 0xf7, 0xd1, 0x4b, 0x84,
+	0x34, 0x4b, 0x77, 0x90, 0x60, 0x74, 0x33, 0x1d, 0xa0, 0x15, 0xa1, 0x04, 0x85, 0xee, 0xf0, 0x32,
+	0x04, 0x36, 0x75, 0x7b, 0xe0, 0x85, 0xcb, 0xdb, 0x83, 0x83, 0x70, 0x04, 0x42, 0xc3, 0x7a, 0x05,
+	0xc2, 0x4a, 0xd2, 0x1f, 0x42, 0x28, 0x1a, 0xd2, 0x07, 0x51, 0xce, 0x6d, 0x1e, 0xfb, 0xad, 0x01,
+	0xfa, 0xc3, 0xb7, 0xd3, 0x3e, 0xe2, 0x1d, 0x53, 0x64, 0xee, 0x5e, 0xf3, 0x98, 0x74, 0x11, 0xf2,
+	0x6f, 0xb7, 0x37, 0x38, 0x39, 0xb3, 0x96, 0x5d, 0x6e, 0x51, 0x0f, 0x50, 0x9e, 0x11, 0xa0, 0x11,
+	0x7c, 0x07, 0x10, 0xef, 0x9c, 0x1e, 0xe1, 0x77, 0x21, 0x60, 0x64, 0x5d, 0xc1, 0xa4, 0xb6, 0x51,
+	0x81, 0x41, 0x82, 0xc6, 0xf4, 0x5d, 0xa0, 0xbc, 0x6b, 0x7a, 0x0a, 0xb4, 0x30, 0xc0, 0xe4, 0x5c,
+	0xd1, 0x26, 0x71, 0x82, 0xb6, 0xf6, 0xbd, 0xc4, 0x9c, 0xbd, 0x18, 0x4e, 0xd0, 0x14, 0x43, 0x49,
+	0x33, 0x0d, 0xfc, 0xfd, 0x59, 0x92, 0x66, 0x1a, 0x91, 0xa4, 0x99, 0x46, 0x24, 0x69, 0xa6, 0x81,
+	0x7f, 0x30, 0x53, 0xd2, 0x28, 0x46, 0x4c, 0x5a, 0x88, 0x13, 0xf4, 0xe3, 0x1f, 0xce, 0x94, 0xb4,
+	0x30, 0x27, 0xe8, 0xe6, 0x5d, 0x54, 0x64, 0x1c, 0xda, 0xa0, 0x7f, 0x04, 0xa0, 0x6b, 0xd3, 0x83,
+	0x82, 0xbe, 0x0f, 0xa4, 0xbc, 0x2b, 0x19, 0x55, 0x07, 0x95, 0x78, 0xea, 0x28, 0xeb, 0xc7, 0xc0,
+	0xba, 0x9e, 0x20, 0x79, 0x6d, 0x11, 0x56, 0x70, 0x65, 0xab, 0x54, 0x0d, 0x30, 0x4c, 0x7e, 0x92,
+	0xb8, 0x1a, 0xfc, 0xb1, 0x23, 0x57, 0x03, 0x4c, 0xa2, 0x48, 0xf6, 0x4c, 0x03, 0xff, 0x74, 0xb6,
+	0xec, 0xd1, 0xe7, 0x24, 0x65, 0xcf, 0x34, 0x62, 0xb2, 0x67, 0x1a, 0xf8, 0x67, 0x33, 0x66, 0x8f,
+	0xc2, 0xe4, 0xec, 0x85, 0xca, 0x2f, 0x18, 0x84, 0x3f, 0x4f, 0x5c, 0x7e, 0x30, 0x32, 0xe5, 0xf2,
+	0x0b, 0xc6, 0xa8, 0xb4, 0x9d, 0x60, 0x8c, 0xfe, 0x22, 0xf9, 0x76, 0xf2, 0x1d, 0x84, 0xb6, 0x13,
+	0x0c, 0x61, 0xb1, 0x1a, 0x60, 0x08, 0xff, 0x32, 0x71, 0x35, 0xf8, 0xe3, 0x5a, 0xae, 0x06, 0x98,
+	0xe0, 0xc7, 0xa8, 0xcc, 0x20, 0xc2, 0x04, 0xff, 0x15, 0x90, 0x6e, 0x4c, 0x4f, 0x62, 0x53, 0x1b,
+	0x68, 0x45, 0x37, 0x64, 0x56, 0xcf, 0xd0, 0x6a, 0x88, 0x48, 0xa7, 0xde, 0xaf, 0x01, 0x7a, 0x33,
+	0x21, 0x34, 0xb0, 0x01, 0xb7, 0xec, 0x46, 0x3f, 0x51, 0x4f, 0xd1, 0x8a, 0xd0, 0x08, 0x85, 0xb9,
+	0xfe, 0x1b, 0x20, 0xef, 0x24, 0x69, 0x87, 0x6c, 0xa2, 0x03, 0x58, 0x75, 0x23, 0x1f, 0xa8, 0x8f,
+	0x11, 0x8e, 0x70, 0x69, 0xd0, 0xbf, 0x05, 0xf4, 0x6e, 0x62, 0xb4, 0x14, 0xf6, 0x8a, 0x1b, 0xf7,
+	0x19, 0x2d, 0x25, 0x7f, 0xe6, 0xc0, 0xf8, 0xff, 0x5d, 0xa2, 0x52, 0xf2, 0x87, 0x30, 0x9f, 0xff,
+	0xa4, 0x94, 0x98, 0x89, 0xee, 0x8b, 0xbe, 0x40, 0xf9, 0x7d, 0xa2, 0x7d, 0x01, 0x33, 0x98, 0x63,
+	0xc8, 0xbe, 0xe0, 0x36, 0xca, 0x19, 0x0a, 0x9c, 0x3f, 0x24, 0xe2, 0xec, 0xc5, 0x70, 0xb8, 0x4d,
+	0x48, 0x9a, 0x69, 0x00, 0xe6, 0x8f, 0x49, 0x93, 0x66, 0x1a, 0x91, 0xa4, 0x81, 0x49, 0x4c, 0x1a,
+	0xa5, 0xfc, 0x29, 0x71, 0xd2, 0x44, 0x0c, 0x4d, 0x9a, 0xcc, 0x19, 0x0a, 0x9c, 0x3f, 0x27, 0x4e,
+	0x5a, 0x98, 0xc3, 0x6d, 0x74, 0xba, 0x04, 0x13, 0x0d, 0x40, 0x4f, 0x12, 0x4d, 0x97, 0x60, 0x04,
+	0x73, 0x12, 0x79, 0x1a, 0x82, 0x91, 0xa5, 0xce, 0xef, 0x96, 0x40, 0xfa, 0x4b, 0xb2, 0xd4, 0xf9,
+	0x1e, 0x42, 0xa9, 0x63, 0x36, 0x55, 0x43, 0xc8, 0xeb, 0xd9, 0x5e, 0x1b, 0x10, 0x1f, 0xcd, 0x68,
+	0x8a, 0x7e, 0xae, 0x91, 0xb2, 0x96, 0x7c, 0xa3, 0xaf, 0x58, 0x47, 0xcb, 0xa0, 0x80, 0x93, 0xe2,
+	0xc7, 0x88, 0x64, 0xbe, 0x91, 0xb2, 0x60, 0x1d, 0x9c, 0x5c, 0x2f, 0xa0, 0x2c, 0x68, 0x82, 0x63,
+	0xeb, 0xc7, 0x89, 0xa8, 0xd4, 0x48, 0x59, 0xb0, 0x34, 0x38, 0x77, 0x32, 0x55, 0x70, 0xe8, 0xfc,
+	0x04, 0x51, 0xe5, 0x98, 0x2a, 0x38, 0x35, 0x8a, 0x3c, 0xd3, 0xc0, 0x9f, 0x24, 0xa2, 0x8c, 0xc8,
+	0x33, 0x0d, 0x99, 0x67, 0x1a, 0xf8, 0x53, 0x44, 0xa4, 0x4a, 0x3c, 0x51, 0x15, 0x9c, 0xd7, 0x3e,
+	0x4d, 0x54, 0x73, 0x12, 0xcf, 0x34, 0xd4, 0x8b, 0x28, 0x07, 0x2a, 0x7a, 0x02, 0xfa, 0x0c, 0x91,
+	0x2d, 0x36, 0x52, 0x16, 0xac, 0xa6, 0xa7, 0x25, 0x1d, 0xe5, 0x03, 0x26, 0x15, 0x7e, 0x96, 0x08,
+	0x0b, 0x8d, 0x94, 0x05, 0x0e, 0xd8, 0x49, 0x87, 0x45, 0x00, 0xc7, 0x9c, 0xcf, 0x11, 0x59, 0x9a,
+	0x45, 0x00, 0x07, 0x15, 0x99, 0x6a, 0x1a, 0xf8, 0xf3, 0x44, 0xb5, 0x20, 0x53, 0xfd, 0x0b, 0xb0,
+	0x44, 0x35, 0x0d, 0xfc, 0x05, 0x22, 0x2c, 0x86, 0xa8, 0x62, 0xb4, 0xc1, 0xf1, 0xe0, 0x8b, 0x44,
+	0xa7, 0xb0, 0x68, 0x83, 0xf9, 0xce, 0x33, 0x07, 0xc3, 0xfd, 0x4b, 0x44, 0xb5, 0xc4, 0x33, 0x07,
+	0xd3, 0x99, 0x45, 0x00, 0xa3, 0xf9, 0xcb, 0x44, 0x94, 0x65, 0x11, 0xc0, 0x70, 0x6d, 0xa2, 0x22,
+	0x68, 0x84, 0xc9, 0xfa, 0x95, 0x4c, 0xf2, 0x17, 0x67, 0x8d, 0x94, 0x05, 0xa1, 0xf2, 0x69, 0xfa,
+	0x10, 0x95, 0x45, 0x04, 0x9d, 0x2a, 0x5f, 0xcd, 0xcc, 0xf4, 0xd6, 0xac, 0x91, 0xb2, 0x4a, 0x1c,
+	0x44, 0xa7, 0xc8, 0x3e, 0x52, 0x69, 0x49, 0x09, 0xb3, 0xf3, 0x6b, 0x99, 0x24, 0xaf, 0xcc, 0x1a,
+	0x29, 0xab, 0x18, 0x14, 0x22, 0x9f, 0x93, 0x47, 0x68, 0x45, 0x06, 0xd0, 0x70, 0xbe, 0x9e, 0x49,
+	0xf8, 0xbe, 0xac, 0x91, 0xb2, 0xca, 0x22, 0x86, 0x86, 0xc2, 0x6a, 0x0b, 0x9e, 0x71, 0x15, 0x7f,
+	0x83, 0x3e, 0xe4, 0xac, 0xf0, 0x90, 0xab, 0x61, 0x5d, 0x0d, 0x7f, 0x33, 0x4e, 0x57, 0x0b, 0xeb,
+	0xea, 0xf8, 0x5b, 0x71, 0xba, 0xfa, 0xda, 0x43, 0x94, 0x95, 0x52, 0xfa, 0x1a, 0xfe, 0x5f, 0xc1,
+	0xda, 0x35, 0x54, 0x0c, 0xdf, 0xd8, 0xd5, 0x22, 0xca, 0x3c, 0xb2, 0xcf, 0x7c, 0xe0, 0x39, 0x8b,
+	0xfc, 0xa8, 0x9e, 0x47, 0xf3, 0xa7, 0x4d, 0x67, 0x68, 0xe3, 0xb4, 0x6f, 0x83, 0x5f, 0xae, 0xa6,
+	0xdf, 0xae, 0xac, 0x5d, 0x47, 0xa5, 0xc8, 0x75, 0x7c, 0x9c, 0x83, 0x79, 0xd1, 0xc1, 0x0d, 0xa4,
+	0x46, 0x6f, 0xda, 0xe3, 0x3c, 0x94, 0xe2, 0x3d, 0xec, 0x4d, 0xee, 0x21, 0x37, 0x32, 0x88, 0xe0,
+	0xea, 0x30, 0xce, 0x41, 0x66, 0x74, 0x10, 0x13, 0x7a, 0x50, 0x47, 0x07, 0x31, 0xa1, 0x87, 0x39,
+	0xd1, 0xc3, 0x36, 0x2a, 0xc7, 0x5c, 0x56, 0xc7, 0xb9, 0x58, 0x14, 0x5d, 0xec, 0xa0, 0xf3, 0x71,
+	0x77, 0xd0, 0x71, 0x3e, 0x0a, 0xf1, 0xb9, 0xe4, 0x97, 0xcb, 0x71, 0x0e, 0xd2, 0xcf, 0x88, 0x63,
+	0xc2, 0x54, 0x2c, 0x3c, 0x2b, 0x8e, 0x09, 0x7d, 0x14, 0xe3, 0x1f, 0x88, 0x70, 0xcb, 0x1b, 0xe7,
+	0x41, 0x19, 0x51, 0x14, 0xfc, 0xfe, 0x36, 0xce, 0xc3, 0x52, 0x7c, 0x2e, 0xf9, 0xd5, 0x6c, 0x9c,
+	0x83, 0xac, 0xe8, 0xe0, 0x0c, 0xad, 0xc4, 0xde, 0xb8, 0x62, 0x9c, 0xbc, 0x47, 0x74, 0x92, 0xf4,
+	0xb5, 0xac, 0x80, 0x7e, 0x8c, 0xf0, 0xa8, 0x7b, 0x57, 0x0c, 0xfd, 0x9e, 0x48, 0x9f, 0xe1, 0x55,
+	0xad, 0xf0, 0x05, 0x86, 0xe8, 0x75, 0x23, 0xae, 0x5f, 0x31, 0xfc, 0x5b, 0x72, 0xf4, 0xd3, 0xbe,
+	0xbb, 0x15, 0xb0, 0x1f, 0x41, 0x6b, 0xa3, 0xaf, 0x5e, 0x31, 0xe4, 0x77, 0xcb, 0x91, 0x27, 0x78,
+	0x9b, 0x1b, 0x29, 0x18, 0xf9, 0x02, 0x26, 0x32, 0xe7, 0xc7, 0xb5, 0x73, 0xa8, 0xd9, 0xd0, 0xdd,
+	0x4a, 0xf4, 0x50, 0x9a, 0xcc, 0xc3, 0xde, 0x68, 0x0f, 0xb9, 0xc9, 0x46, 0x8a, 0x7c, 0x21, 0x12,
+	0x1d, 0x64, 0x26, 0x0f, 0x62, 0x84, 0x07, 0x75, 0xf2, 0x20, 0x46, 0x78, 0x98, 0x1b, 0xe7, 0x01,
+	0xba, 0x58, 0xf8, 0x7a, 0x22, 0xba, 0x58, 0x9c, 0x30, 0x0c, 0xf9, 0xde, 0x21, 0x7a, 0x58, 0x1a,
+	0xe3, 0x61, 0xbd, 0x82, 0x96, 0xf8, 0x21, 0x70, 0x09, 0xcd, 0x6f, 0xdf, 0x7d, 0x5f, 0x63, 0xbb,
+	0x98, 0x22, 0x3f, 0xee, 0x58, 0xdb, 0xef, 0x7f, 0x6f, 0x51, 0x51, 0x97, 0xd1, 0xe2, 0xcd, 0xc6,
+	0xb6, 0x75, 0xf7, 0xce, 0x6e, 0x31, 0xbd, 0x93, 0xa3, 0xc7, 0xd5, 0x61, 0xaf, 0xeb, 0xf5, 0x36,
+	0xaa, 0x68, 0x59, 0x3c, 0x78, 0xc5, 0x39, 0x40, 0x6a, 0x96, 0x3b, 0x78, 0xaa, 0xec, 0x3c, 0x78,
+	0xf0, 0x81, 0x4e, 0x77, 0x70, 0x34, 0x6c, 0x55, 0x0e, 0x3c, 0x77, 0x13, 0x6a, 0x78, 0xd3, 0xaf,
+	0xdf, 0xd6, 0xb0, 0xbd, 0x79, 0x5a, 0xdb, 0xec, 0xf6, 0x06, 0xf6, 0x49, 0xaf, 0xe9, 0xf8, 0x7f,
+	0x40, 0xe1, 0x7f, 0xd0, 0xdf, 0x74, 0xec, 0x4e, 0xf3, 0xe0, 0x6c, 0x73, 0xcc, 0x9f, 0x5c, 0xb4,
+	0x16, 0x40, 0xf0, 0x6a, 0x00, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x95, 0xb5, 0x99, 0x9c, 0x21, 0x00,
+	0x00,
+}
diff --git a/internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5/test.proto b/internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5/test.proto
new file mode 100644
index 0000000..fcc8c34
--- /dev/null
+++ b/internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5/test.proto
@@ -0,0 +1,136 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto3";
+
+package google.golang.org.proto3_20160519;
+option go_package = "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5";
+
+enum SiblingEnum {
+	ALPHA   = 0;
+	BRAVO   = 10;
+	CHARLIE = 200;
+}
+
+message SiblingMessage {
+	string          f1 = 1;
+	repeated string f2 = 2;
+	Message         f3 = 3;
+}
+
+message Message {
+	enum ChildEnum {
+		ALPHA   = 0;
+		BRAVO   = 1;
+		CHARLIE = 2;
+	}
+	message ChildMessage {
+		string          f1 = 1;
+		repeated string f2 = 2;
+		Message         f3 = 3;
+	}
+
+	// Optional fields.
+	bool     optional_bool     = 100;
+	int32    optional_int32    = 101;
+	sint32   optional_sint32   = 102;
+	uint32   optional_uint32   = 103;
+	int64    optional_int64    = 104;
+	sint64   optional_sint64   = 105;
+	uint64   optional_uint64   = 106;
+	fixed32  optional_fixed32  = 107;
+	sfixed32 optional_sfixed32 = 108;
+	float    optional_float    = 109;
+	fixed64  optional_fixed64  = 110;
+	sfixed64 optional_sfixed64 = 111;
+	double   optional_double   = 112;
+	string   optional_string   = 113;
+	bytes    optional_bytes    = 114;
+
+	ChildEnum      optional_child_enum      = 115;
+	ChildMessage   optional_child_message   = 116;
+	SiblingEnum    optional_sibling_enum    = 117;
+	SiblingMessage optional_sibling_message = 118;
+
+	// Repeated fields.
+	repeated bool     repeated_bool     = 200;
+	repeated int32    repeated_int32    = 201;
+	repeated sint32   repeated_sint32   = 202;
+	repeated uint32   repeated_uint32   = 203;
+	repeated int64    repeated_int64    = 204;
+	repeated sint64   repeated_sint64   = 205;
+	repeated uint64   repeated_uint64   = 206;
+	repeated fixed32  repeated_fixed32  = 207;
+	repeated sfixed32 repeated_sfixed32 = 208;
+	repeated float    repeated_float    = 209;
+	repeated fixed64  repeated_fixed64  = 210;
+	repeated sfixed64 repeated_sfixed64 = 211;
+	repeated double   repeated_double   = 212;
+	repeated string   repeated_string   = 213;
+	repeated bytes    repeated_bytes    = 214;
+
+	repeated ChildEnum      repeated_child_enum      = 215;
+	repeated ChildMessage   repeated_child_message   = 216;
+	repeated SiblingEnum    repeated_sibling_enum    = 217;
+	repeated SiblingMessage repeated_sibling_message = 218;
+
+	// Map fields.
+	map<bool, bool>     map_bool_bool     = 300;
+	map<bool, int32>    map_bool_int32    = 301;
+	map<bool, sint32>   map_bool_sint32   = 302;
+	map<bool, uint32>   map_bool_uint32   = 303;
+	map<bool, int64>    map_bool_int64    = 304;
+	map<bool, sint64>   map_bool_sint64   = 305;
+	map<bool, uint64>   map_bool_uint64   = 306;
+	map<bool, fixed32>  map_bool_fixed32  = 307;
+	map<bool, sfixed32> map_bool_sfixed32 = 308;
+	map<bool, float>    map_bool_float    = 309;
+	map<bool, fixed64>  map_bool_fixed64  = 310;
+	map<bool, sfixed64> map_bool_sfixed64 = 311;
+	map<bool, double>   map_bool_double   = 312;
+	map<bool, string>   map_bool_string   = 313;
+	map<bool, bytes>    map_bool_bytes    = 314;
+
+	map<bool, ChildEnum>      map_bool_child_enum      = 315;
+	map<bool, ChildMessage>   map_bool_child_message   = 316;
+	map<bool, SiblingEnum>    map_bool_sibling_enum    = 317;
+	map<bool, SiblingMessage> map_bool_sibling_message = 318;
+
+	map<int32, bool>   map_int32_bool   = 319;
+	map<sint32, bool>  map_sint32_bool  = 320;
+	map<uint32, bool>  map_uint32_bool  = 321;
+	map<int64, bool>   map_int64_bool   = 322;
+	map<sint64, bool>  map_sint64_bool  = 323;
+	map<uint64, bool>  map_uint64_bool  = 324;
+	map<fixed32, bool> map_fixed32_bool = 325;
+	map<string, bool>  map_string_bool  = 326;
+
+	// Oneof fields.
+	oneof oneof_union {
+		bool     oneof_bool     = 400;
+		int32    oneof_int32    = 401;
+		sint32   oneof_sint32   = 402;
+		uint32   oneof_uint32   = 403;
+		int64    oneof_int64    = 404;
+		sint64   oneof_sint64   = 405;
+		uint64   oneof_uint64   = 406;
+		fixed32  oneof_fixed32  = 407;
+		sfixed32 oneof_sfixed32 = 408;
+		float    oneof_float    = 409;
+		fixed64  oneof_fixed64  = 410;
+		sfixed64 oneof_sfixed64 = 411;
+		double   oneof_double   = 412;
+		string   oneof_string   = 413;
+		bytes    oneof_bytes    = 414;
+
+		ChildEnum      oneof_child_enum      = 415;
+		ChildMessage   oneof_child_message   = 416;
+		SiblingEnum    oneof_sibling_enum    = 417;
+		SiblingMessage oneof_sibling_message = 418;
+
+		string oneof_string1 = 419;
+		string oneof_string2 = 420;
+		string oneof_string3 = 421;
+	}
+}
diff --git a/internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152/test.pb.go b/internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152/test.pb.go
new file mode 100644
index 0000000..15b1118
--- /dev/null
+++ b/internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152/test.pb.go
@@ -0,0 +1,1452 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: proto3.v1.0.0-20180125-92554152/test.proto
+
+/*
+Package proto3_v1_0_0_20180125_92554152 is a generated protocol buffer package.
+
+It is generated from these files:
+	proto3.v1.0.0-20180125-92554152/test.proto
+
+It has these top-level messages:
+	SiblingMessage
+	Message
+*/
+package proto3_v1_0_0_20180125_92554152
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type SiblingEnum int32
+
+const (
+	SiblingEnum_ALPHA   SiblingEnum = 0
+	SiblingEnum_BRAVO   SiblingEnum = 10
+	SiblingEnum_CHARLIE SiblingEnum = 200
+)
+
+var SiblingEnum_name = map[int32]string{
+	0:   "ALPHA",
+	10:  "BRAVO",
+	200: "CHARLIE",
+}
+var SiblingEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   10,
+	"CHARLIE": 200,
+}
+
+func (x SiblingEnum) String() string {
+	return proto.EnumName(SiblingEnum_name, int32(x))
+}
+func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+type Message_ChildEnum int32
+
+const (
+	Message_ALPHA   Message_ChildEnum = 0
+	Message_BRAVO   Message_ChildEnum = 1
+	Message_CHARLIE Message_ChildEnum = 2
+)
+
+var Message_ChildEnum_name = map[int32]string{
+	0: "ALPHA",
+	1: "BRAVO",
+	2: "CHARLIE",
+}
+var Message_ChildEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   1,
+	"CHARLIE": 2,
+}
+
+func (x Message_ChildEnum) String() string {
+	return proto.EnumName(Message_ChildEnum_name, int32(x))
+}
+func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+type SiblingMessage struct {
+	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
+	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+}
+
+func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
+func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
+func (*SiblingMessage) ProtoMessage()               {}
+func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *SiblingMessage) GetF1() string {
+	if m != nil {
+		return m.F1
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF2() []string {
+	if m != nil {
+		return m.F2
+	}
+	return nil
+}
+
+func (m *SiblingMessage) GetF3() *Message {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message struct {
+	// Optional fields.
+	OptionalBool           bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	OptionalInt32          int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	OptionalSint32         int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	OptionalUint32         uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
+	OptionalInt64          int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
+	OptionalSint64         int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	OptionalUint64         uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	OptionalFixed32        uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	OptionalSfixed32       int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	OptionalFloat          float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	OptionalFixed64        uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	OptionalSfixed64       int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	OptionalDouble         float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	OptionalString         string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	OptionalBytes          []byte                `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
+	OptionalChildEnum      Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto3_20180125.Message_ChildEnum" json:"optional_child_enum,omitempty"`
+	OptionalChildMessage   *Message_ChildMessage `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
+	OptionalSiblingEnum    SiblingEnum           `protobuf:"varint,117,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto3_20180125.SiblingEnum" json:"optional_sibling_enum,omitempty"`
+	OptionalSiblingMessage *SiblingMessage       `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
+	// Repeated fields.
+	RepeatedBool           []bool                  `protobuf:"varint,200,rep,packed,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	RepeatedInt32          []int32                 `protobuf:"varint,201,rep,packed,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	RepeatedSint32         []int32                 `protobuf:"zigzag32,202,rep,packed,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	RepeatedUint32         []uint32                `protobuf:"varint,203,rep,packed,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	RepeatedInt64          []int64                 `protobuf:"varint,204,rep,packed,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	RepeatedSint64         []int64                 `protobuf:"zigzag64,205,rep,packed,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	RepeatedUint64         []uint64                `protobuf:"varint,206,rep,packed,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	RepeatedFixed32        []uint32                `protobuf:"fixed32,207,rep,packed,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	RepeatedSfixed32       []int32                 `protobuf:"fixed32,208,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	RepeatedFloat          []float32               `protobuf:"fixed32,209,rep,packed,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	RepeatedFixed64        []uint64                `protobuf:"fixed64,210,rep,packed,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed64       []int64                 `protobuf:"fixed64,211,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	RepeatedDouble         []float64               `protobuf:"fixed64,212,rep,packed,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	RepeatedString         []string                `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	RepeatedBytes          [][]byte                `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
+	RepeatedChildEnum      []Message_ChildEnum     `protobuf:"varint,215,rep,packed,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto3_20180125.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
+	RepeatedChildMessage   []*Message_ChildMessage `protobuf:"bytes,216,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
+	RepeatedSiblingEnum    []SiblingEnum           `protobuf:"varint,217,rep,packed,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto3_20180125.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
+	RepeatedSiblingMessage []*SiblingMessage       `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
+	// Map fields.
+	MapBoolBool           map[bool]bool                  `protobuf:"bytes,300,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,301,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,302,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,303,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,304,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,305,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,306,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,307,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,308,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFloat          map[bool]float32               `protobuf:"bytes,309,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,310,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,311,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolDouble         map[bool]float64               `protobuf:"bytes,312,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolString         map[bool]string                `protobuf:"bytes,313,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,314,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,315,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20180125.Message_ChildEnum"`
+	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,316,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,317,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20180125.SiblingEnum"`
+	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,318,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,319,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,320,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,321,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,322,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,323,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,324,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,325,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapStringBool         map[string]bool                `protobuf:"bytes,326,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	// Oneof fields.
+	//
+	// Types that are valid to be assigned to OneofUnion:
+	//	*Message_OneofBool
+	//	*Message_OneofInt32
+	//	*Message_OneofSint32
+	//	*Message_OneofUint32
+	//	*Message_OneofInt64
+	//	*Message_OneofSint64
+	//	*Message_OneofUint64
+	//	*Message_OneofFixed32
+	//	*Message_OneofSfixed32
+	//	*Message_OneofFloat
+	//	*Message_OneofFixed64
+	//	*Message_OneofSfixed64
+	//	*Message_OneofDouble
+	//	*Message_OneofString
+	//	*Message_OneofBytes
+	//	*Message_OneofChildEnum
+	//	*Message_OneofChildMessage
+	//	*Message_OneofSiblingEnum
+	//	*Message_OneofSiblingMessage
+	//	*Message_OneofString1
+	//	*Message_OneofString2
+	//	*Message_OneofString3
+	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
+}
+
+func (m *Message) Reset()                    { *m = Message{} }
+func (m *Message) String() string            { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()               {}
+func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
+
+type Message_OneofBool struct {
+	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,json=oneofBool,oneof"`
+}
+type Message_OneofInt32 struct {
+	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,json=oneofInt32,oneof"`
+}
+type Message_OneofSint32 struct {
+	OneofSint32 int32 `protobuf:"zigzag32,402,opt,name=oneof_sint32,json=oneofSint32,oneof"`
+}
+type Message_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,json=oneofUint32,oneof"`
+}
+type Message_OneofInt64 struct {
+	OneofInt64 int64 `protobuf:"varint,404,opt,name=oneof_int64,json=oneofInt64,oneof"`
+}
+type Message_OneofSint64 struct {
+	OneofSint64 int64 `protobuf:"zigzag64,405,opt,name=oneof_sint64,json=oneofSint64,oneof"`
+}
+type Message_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,406,opt,name=oneof_uint64,json=oneofUint64,oneof"`
+}
+type Message_OneofFixed32 struct {
+	OneofFixed32 uint32 `protobuf:"fixed32,407,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
+}
+type Message_OneofSfixed32 struct {
+	OneofSfixed32 int32 `protobuf:"fixed32,408,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
+}
+type Message_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,409,opt,name=oneof_float,json=oneofFloat,oneof"`
+}
+type Message_OneofFixed64 struct {
+	OneofFixed64 uint64 `protobuf:"fixed64,410,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
+}
+type Message_OneofSfixed64 struct {
+	OneofSfixed64 int64 `protobuf:"fixed64,411,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
+}
+type Message_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,412,opt,name=oneof_double,json=oneofDouble,oneof"`
+}
+type Message_OneofString struct {
+	OneofString string `protobuf:"bytes,413,opt,name=oneof_string,json=oneofString,oneof"`
+}
+type Message_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,414,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
+}
+type Message_OneofChildEnum struct {
+	OneofChildEnum Message_ChildEnum `protobuf:"varint,415,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto3_20180125.Message_ChildEnum,oneof"`
+}
+type Message_OneofChildMessage struct {
+	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,416,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
+}
+type Message_OneofSiblingEnum struct {
+	OneofSiblingEnum SiblingEnum `protobuf:"varint,417,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto3_20180125.SiblingEnum,oneof"`
+}
+type Message_OneofSiblingMessage struct {
+	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,418,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
+}
+type Message_OneofString1 struct {
+	OneofString1 string `protobuf:"bytes,419,opt,name=oneof_string1,json=oneofString1,oneof"`
+}
+type Message_OneofString2 struct {
+	OneofString2 string `protobuf:"bytes,420,opt,name=oneof_string2,json=oneofString2,oneof"`
+}
+type Message_OneofString3 struct {
+	OneofString3 string `protobuf:"bytes,421,opt,name=oneof_string3,json=oneofString3,oneof"`
+}
+
+func (*Message_OneofBool) isMessage_OneofUnion()           {}
+func (*Message_OneofInt32) isMessage_OneofUnion()          {}
+func (*Message_OneofSint32) isMessage_OneofUnion()         {}
+func (*Message_OneofUint32) isMessage_OneofUnion()         {}
+func (*Message_OneofInt64) isMessage_OneofUnion()          {}
+func (*Message_OneofSint64) isMessage_OneofUnion()         {}
+func (*Message_OneofUint64) isMessage_OneofUnion()         {}
+func (*Message_OneofFixed32) isMessage_OneofUnion()        {}
+func (*Message_OneofSfixed32) isMessage_OneofUnion()       {}
+func (*Message_OneofFloat) isMessage_OneofUnion()          {}
+func (*Message_OneofFixed64) isMessage_OneofUnion()        {}
+func (*Message_OneofSfixed64) isMessage_OneofUnion()       {}
+func (*Message_OneofDouble) isMessage_OneofUnion()         {}
+func (*Message_OneofString) isMessage_OneofUnion()         {}
+func (*Message_OneofBytes) isMessage_OneofUnion()          {}
+func (*Message_OneofChildEnum) isMessage_OneofUnion()      {}
+func (*Message_OneofChildMessage) isMessage_OneofUnion()   {}
+func (*Message_OneofSiblingEnum) isMessage_OneofUnion()    {}
+func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
+func (*Message_OneofString1) isMessage_OneofUnion()        {}
+func (*Message_OneofString2) isMessage_OneofUnion()        {}
+func (*Message_OneofString3) isMessage_OneofUnion()        {}
+
+func (m *Message) GetOneofUnion() isMessage_OneofUnion {
+	if m != nil {
+		return m.OneofUnion
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalBool() bool {
+	if m != nil {
+		return m.OptionalBool
+	}
+	return false
+}
+
+func (m *Message) GetOptionalInt32() int32 {
+	if m != nil {
+		return m.OptionalInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint32() int32 {
+	if m != nil {
+		return m.OptionalSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint32() uint32 {
+	if m != nil {
+		return m.OptionalUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalInt64() int64 {
+	if m != nil {
+		return m.OptionalInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint64() int64 {
+	if m != nil {
+		return m.OptionalSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint64() uint64 {
+	if m != nil {
+		return m.OptionalUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed32() uint32 {
+	if m != nil {
+		return m.OptionalFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed32() int32 {
+	if m != nil {
+		return m.OptionalSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFloat() float32 {
+	if m != nil {
+		return m.OptionalFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed64() uint64 {
+	if m != nil {
+		return m.OptionalFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed64() int64 {
+	if m != nil {
+		return m.OptionalSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalDouble() float64 {
+	if m != nil {
+		return m.OptionalDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalString() string {
+	if m != nil {
+		return m.OptionalString
+	}
+	return ""
+}
+
+func (m *Message) GetOptionalBytes() []byte {
+	if m != nil {
+		return m.OptionalBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
+	if m != nil {
+		return m.OptionalChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.OptionalChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
+	if m != nil {
+		return m.OptionalSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.OptionalSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedBool() []bool {
+	if m != nil {
+		return m.RepeatedBool
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt32() []int32 {
+	if m != nil {
+		return m.RepeatedInt32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint32() []int32 {
+	if m != nil {
+		return m.RepeatedSint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint32() []uint32 {
+	if m != nil {
+		return m.RepeatedUint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt64() []int64 {
+	if m != nil {
+		return m.RepeatedInt64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint64() []int64 {
+	if m != nil {
+		return m.RepeatedSint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint64() []uint64 {
+	if m != nil {
+		return m.RepeatedUint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed32() []uint32 {
+	if m != nil {
+		return m.RepeatedFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed32() []int32 {
+	if m != nil {
+		return m.RepeatedSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFloat() []float32 {
+	if m != nil {
+		return m.RepeatedFloat
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed64() []uint64 {
+	if m != nil {
+		return m.RepeatedFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed64() []int64 {
+	if m != nil {
+		return m.RepeatedSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedDouble() []float64 {
+	if m != nil {
+		return m.RepeatedDouble
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedString() []string {
+	if m != nil {
+		return m.RepeatedString
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedBytes() [][]byte {
+	if m != nil {
+		return m.RepeatedBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
+	if m != nil {
+		return m.RepeatedChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
+	if m != nil {
+		return m.RepeatedChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
+	if m != nil {
+		return m.RepeatedSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
+	if m != nil {
+		return m.RepeatedSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBool() map[bool]bool {
+	if m != nil {
+		return m.MapBoolBool
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolInt32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolUint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolInt64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolUint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFloat() map[bool]float32 {
+	if m != nil {
+		return m.MapBoolFloat
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolDouble() map[bool]float64 {
+	if m != nil {
+		return m.MapBoolDouble
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolString() map[bool]string {
+	if m != nil {
+		return m.MapBoolString
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBytes() map[bool][]byte {
+	if m != nil {
+		return m.MapBoolBytes
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
+	if m != nil {
+		return m.MapBoolChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
+	if m != nil {
+		return m.MapBoolChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
+	if m != nil {
+		return m.MapBoolSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
+	if m != nil {
+		return m.MapBoolSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapInt32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapSint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapUint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapInt64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapSint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint64Bool() map[uint64]bool {
+	if m != nil {
+		return m.MapUint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapFixed32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapFixed32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapStringBool() map[string]bool {
+	if m != nil {
+		return m.MapStringBool
+	}
+	return nil
+}
+
+func (m *Message) GetOneofBool() bool {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
+		return x.OneofBool
+	}
+	return false
+}
+
+func (m *Message) GetOneofInt32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
+		return x.OneofInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
+		return x.OneofSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
+		return x.OneofUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofInt64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
+		return x.OneofInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
+		return x.OneofSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
+		return x.OneofUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
+		return x.OneofFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
+		return x.OneofSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFloat() float32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
+		return x.OneofFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
+		return x.OneofFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
+		return x.OneofSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofDouble() float64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
+		return x.OneofDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOneofString() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
+		return x.OneofString
+	}
+	return ""
+}
+
+func (m *Message) GetOneofBytes() []byte {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
+		return x.OneofBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOneofChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
+		return x.OneofChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
+		return x.OneofChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
+		return x.OneofSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
+		return x.OneofSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofString1() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
+		return x.OneofString1
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString2() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
+		return x.OneofString2
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString3() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
+		return x.OneofString3
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
+		(*Message_OneofBool)(nil),
+		(*Message_OneofInt32)(nil),
+		(*Message_OneofSint32)(nil),
+		(*Message_OneofUint32)(nil),
+		(*Message_OneofInt64)(nil),
+		(*Message_OneofSint64)(nil),
+		(*Message_OneofUint64)(nil),
+		(*Message_OneofFixed32)(nil),
+		(*Message_OneofSfixed32)(nil),
+		(*Message_OneofFloat)(nil),
+		(*Message_OneofFixed64)(nil),
+		(*Message_OneofSfixed64)(nil),
+		(*Message_OneofDouble)(nil),
+		(*Message_OneofString)(nil),
+		(*Message_OneofBytes)(nil),
+		(*Message_OneofChildEnum)(nil),
+		(*Message_OneofChildMessage)(nil),
+		(*Message_OneofSiblingEnum)(nil),
+		(*Message_OneofSiblingMessage)(nil),
+		(*Message_OneofString1)(nil),
+		(*Message_OneofString2)(nil),
+		(*Message_OneofString3)(nil),
+	}
+}
+
+func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		t := uint64(0)
+		if x.OneofBool {
+			t = 1
+		}
+		b.EncodeVarint(400<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofInt32:
+		b.EncodeVarint(401<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		b.EncodeVarint(402<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofSint32))
+	case *Message_OneofUint32:
+		b.EncodeVarint(403<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		b.EncodeVarint(404<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		b.EncodeVarint(405<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofSint64))
+	case *Message_OneofUint64:
+		b.EncodeVarint(406<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		b.EncodeVarint(407<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofFixed32))
+	case *Message_OneofSfixed32:
+		b.EncodeVarint(408<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofSfixed32))
+	case *Message_OneofFloat:
+		b.EncodeVarint(409<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
+	case *Message_OneofFixed64:
+		b.EncodeVarint(410<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofFixed64))
+	case *Message_OneofSfixed64:
+		b.EncodeVarint(411<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofSfixed64))
+	case *Message_OneofDouble:
+		b.EncodeVarint(412<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
+	case *Message_OneofString:
+		b.EncodeVarint(413<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString)
+	case *Message_OneofBytes:
+		b.EncodeVarint(414<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		b.EncodeVarint(415<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		b.EncodeVarint(416<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
+			return err
+		}
+	case *Message_OneofSiblingEnum:
+		b.EncodeVarint(417<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		b.EncodeVarint(418<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
+			return err
+		}
+	case *Message_OneofString1:
+		b.EncodeVarint(419<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString1)
+	case *Message_OneofString2:
+		b.EncodeVarint(420<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString2)
+	case *Message_OneofString3:
+		b.EncodeVarint(421<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString3)
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Message)
+	switch tag {
+	case 400: // oneof_union.oneof_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofBool{x != 0}
+		return true, err
+	case 401: // oneof_union.oneof_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt32{int32(x)}
+		return true, err
+	case 402: // oneof_union.oneof_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofUnion = &Message_OneofSint32{int32(x)}
+		return true, err
+	case 403: // oneof_union.oneof_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint32{uint32(x)}
+		return true, err
+	case 404: // oneof_union.oneof_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt64{int64(x)}
+		return true, err
+	case 405: // oneof_union.oneof_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofUnion = &Message_OneofSint64{int64(x)}
+		return true, err
+	case 406: // oneof_union.oneof_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint64{x}
+		return true, err
+	case 407: // oneof_union.oneof_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
+		return true, err
+	case 408: // oneof_union.oneof_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
+		return true, err
+	case 409: // oneof_union.oneof_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 410: // oneof_union.oneof_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofFixed64{x}
+		return true, err
+	case 411: // oneof_union.oneof_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
+		return true, err
+	case 412: // oneof_union.oneof_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
+		return true, err
+	case 413: // oneof_union.oneof_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString{x}
+		return true, err
+	case 414: // oneof_union.oneof_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofUnion = &Message_OneofBytes{x}
+		return true, err
+	case 415: // oneof_union.oneof_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 416: // oneof_union.oneof_child_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_ChildMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofChildMessage{msg}
+		return true, err
+	case 417: // oneof_union.oneof_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
+		return true, err
+	case 418: // oneof_union.oneof_sibling_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(SiblingMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofSiblingMessage{msg}
+		return true, err
+	case 419: // oneof_union.oneof_string1
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString1{x}
+		return true, err
+	case 420: // oneof_union.oneof_string2
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString2{x}
+		return true, err
+	case 421: // oneof_union.oneof_string3
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString3{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Message_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		n += proto.SizeVarint(400<<3 | proto.WireVarint)
+		n += 1
+	case *Message_OneofInt32:
+		n += proto.SizeVarint(401<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		n += proto.SizeVarint(402<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
+	case *Message_OneofUint32:
+		n += proto.SizeVarint(403<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		n += proto.SizeVarint(404<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		n += proto.SizeVarint(405<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
+	case *Message_OneofUint64:
+		n += proto.SizeVarint(406<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		n += proto.SizeVarint(407<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofSfixed32:
+		n += proto.SizeVarint(408<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFloat:
+		n += proto.SizeVarint(409<<3 | proto.WireFixed32)
+		n += 4
+	case *Message_OneofFixed64:
+		n += proto.SizeVarint(410<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofSfixed64:
+		n += proto.SizeVarint(411<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofDouble:
+		n += proto.SizeVarint(412<<3 | proto.WireFixed64)
+		n += 8
+	case *Message_OneofString:
+		n += proto.SizeVarint(413<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString)))
+		n += len(x.OneofString)
+	case *Message_OneofBytes:
+		n += proto.SizeVarint(414<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
+		n += len(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		n += proto.SizeVarint(415<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		s := proto.Size(x.OneofChildMessage)
+		n += proto.SizeVarint(416<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofSiblingEnum:
+		n += proto.SizeVarint(417<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		s := proto.Size(x.OneofSiblingMessage)
+		n += proto.SizeVarint(418<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofString1:
+		n += proto.SizeVarint(419<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString1)))
+		n += len(x.OneofString1)
+	case *Message_OneofString2:
+		n += proto.SizeVarint(420<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString2)))
+		n += len(x.OneofString2)
+	case *Message_OneofString3:
+		n += proto.SizeVarint(421<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.OneofString3)))
+		n += len(x.OneofString3)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+type Message_ChildMessage struct {
+	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
+	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+}
+
+func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
+func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
+func (*Message_ChildMessage) ProtoMessage()               {}
+func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+func (m *Message_ChildMessage) GetF1() string {
+	if m != nil {
+		return m.F1
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF2() []string {
+	if m != nil {
+		return m.F2
+	}
+	return nil
+}
+
+func (m *Message_ChildMessage) GetF3() *Message {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto3_20180125.SiblingMessage")
+	proto.RegisterType((*Message)(nil), "google.golang.org.proto3_20180125.Message")
+	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto3_20180125.Message.ChildMessage")
+	proto.RegisterEnum("google.golang.org.proto3_20180125.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
+	proto.RegisterEnum("google.golang.org.proto3_20180125.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
+}
+
+func init() { proto.RegisterFile("proto3.v1.0.0-20180125-92554152/test.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 1970 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x9a, 0x59, 0x6f, 0xdb, 0xca,
+	0x15, 0xc7, 0x45, 0xc9, 0x4b, 0x3c, 0xd6, 0x4a, 0xc5, 0xee, 0xc0, 0x4f, 0xac, 0x9b, 0xa6, 0xac,
+	0xdb, 0xc8, 0x96, 0x44, 0xb3, 0x69, 0xda, 0x26, 0xb1, 0x13, 0xa7, 0x4a, 0x91, 0xa0, 0x05, 0x03,
+	0x17, 0x45, 0x5e, 0x5c, 0xc9, 0xa6, 0x64, 0x25, 0xa4, 0xe8, 0x5a, 0x92, 0x51, 0xa3, 0x0f, 0xf9,
+	0x0a, 0xdd, 0xf7, 0x7d, 0x79, 0xeb, 0xbe, 0xef, 0x7b, 0x8a, 0x74, 0xdf, 0xdb, 0x7b, 0xef, 0xa7,
+	0xb9, 0x18, 0x1e, 0xce, 0x46, 0x52, 0x91, 0x44, 0xe1, 0x3e, 0x04, 0xb0, 0x8f, 0xfe, 0x73, 0x7e,
+	0x3a, 0x87, 0x67, 0xce, 0x99, 0x61, 0x8c, 0x36, 0x4e, 0x4e, 0xbd, 0x81, 0x57, 0xaf, 0x9c, 0x55,
+	0x2b, 0x5b, 0x95, 0xad, 0x2b, 0xb5, 0xad, 0xea, 0xd5, 0xad, 0x6a, 0x6d, 0xfb, 0xca, 0x9b, 0x6b,
+	0xdb, 0xdb, 0x46, 0x75, 0xbb, 0xb6, 0x39, 0xb0, 0xfb, 0x83, 0x8a, 0x2f, 0x52, 0x5f, 0xdd, 0xf1,
+	0xbc, 0x8e, 0x63, 0x57, 0x3a, 0x9e, 0xd3, 0xec, 0x75, 0x2a, 0xde, 0x69, 0x07, 0x3e, 0xa8, 0x1f,
+	0xd0, 0x65, 0xeb, 0x0e, 0xca, 0x3f, 0xe8, 0xb6, 0x9c, 0x6e, 0xaf, 0x73, 0xdf, 0xee, 0xf7, 0x9b,
+	0x1d, 0x5b, 0xcd, 0xa3, 0x74, 0xbb, 0x8a, 0x15, 0x4d, 0xd1, 0x97, 0xac, 0x74, 0xbb, 0xea, 0xff,
+	0x5e, 0xc3, 0x69, 0x2d, 0xe3, 0xff, 0x5e, 0x53, 0xaf, 0xa1, 0x74, 0xbb, 0x8e, 0x33, 0x9a, 0xa2,
+	0x2f, 0xd7, 0x36, 0x2a, 0x63, 0x09, 0x95, 0xc0, 0xaf, 0x95, 0x6e, 0xd7, 0xd7, 0x9f, 0xde, 0x44,
+	0x8b, 0x94, 0xf3, 0x1a, 0x94, 0xf3, 0x4e, 0x06, 0x5d, 0xaf, 0xd7, 0x74, 0x0e, 0x5a, 0x9e, 0xe7,
+	0xe0, 0x23, 0x4d, 0xd1, 0x2f, 0x58, 0x59, 0x6a, 0xdc, 0xf5, 0x3c, 0x47, 0x7d, 0x2d, 0xca, 0x33,
+	0x51, 0xb7, 0x37, 0xa8, 0xd7, 0xb0, 0xad, 0x29, 0xfa, 0xbc, 0xc5, 0x96, 0xde, 0x25, 0x46, 0xf5,
+	0x75, 0xa8, 0xc0, 0x64, 0x7d, 0xd0, 0xb5, 0x35, 0x45, 0x2f, 0x59, 0x6c, 0xf5, 0x83, 0x6e, 0x44,
+	0x38, 0x04, 0x61, 0x47, 0x53, 0xf4, 0x1c, 0x17, 0xee, 0x83, 0x30, 0x04, 0x36, 0x0d, 0x7c, 0xac,
+	0x29, 0x7a, 0x46, 0x02, 0x9b, 0x46, 0x04, 0x6c, 0x1a, 0xb8, 0xab, 0x29, 0xba, 0x2a, 0x83, 0x43,
+	0xc2, 0x21, 0x08, 0x1f, 0x69, 0x8a, 0x3e, 0x27, 0x83, 0x4d, 0x43, 0x7d, 0x3d, 0x2a, 0x32, 0x61,
+	0xbb, 0xfb, 0x7e, 0xfb, 0xa8, 0x5e, 0xc3, 0x8f, 0x35, 0x45, 0x5f, 0xb4, 0x98, 0x83, 0x3b, 0x60,
+	0x56, 0xdf, 0x80, 0x4a, 0x1c, 0x4e, 0xb5, 0x8e, 0xa6, 0xe8, 0x05, 0x8b, 0xf9, 0x78, 0x10, 0xd8,
+	0xa5, 0x80, 0xda, 0x8e, 0xd7, 0x1c, 0x60, 0x57, 0x53, 0xf4, 0x34, 0x0f, 0xe8, 0x0e, 0x31, 0x46,
+	0xf1, 0xa6, 0x81, 0x7b, 0x9a, 0xa2, 0x2f, 0x84, 0xf0, 0xa6, 0x11, 0x83, 0x37, 0x0d, 0xec, 0x69,
+	0x8a, 0x5e, 0x0c, 0xe3, 0x43, 0xf1, 0x1f, 0x79, 0xc3, 0x96, 0x63, 0xe3, 0x13, 0x4d, 0xd1, 0x15,
+	0x1e, 0xff, 0x6d, 0xdf, 0x2a, 0x67, 0x74, 0x70, 0xda, 0xed, 0x75, 0xf0, 0xfb, 0xfc, 0x5a, 0xe4,
+	0x19, 0xf5, 0xad, 0x52, 0x40, 0xad, 0xf3, 0x81, 0xdd, 0xc7, 0xa7, 0x9a, 0xa2, 0x67, 0x79, 0x40,
+	0xbb, 0xc4, 0xa8, 0x1e, 0xa1, 0x32, 0x93, 0x1d, 0x1e, 0x77, 0x9d, 0xa3, 0x03, 0xbb, 0x37, 0x74,
+	0x71, 0x5f, 0x53, 0xf4, 0x7c, 0xcd, 0x98, 0xbc, 0x7e, 0x2b, 0xb7, 0xc8, 0xe2, 0xbd, 0xde, 0xd0,
+	0xb5, 0x58, 0xd8, 0xcc, 0xa4, 0xba, 0x68, 0x35, 0x44, 0x71, 0x61, 0x19, 0x1e, 0xf8, 0x1b, 0xe5,
+	0x4d, 0xd3, 0x82, 0xe8, 0xae, 0xb9, 0x28, 0xb1, 0xe8, 0xde, 0x69, 0xa1, 0x15, 0xa1, 0xec, 0xfc,
+	0xed, 0x0b, 0x61, 0x0d, 0xfd, 0xb0, 0x2a, 0x13, 0xd0, 0x82, 0x5d, 0xef, 0x07, 0x54, 0xe6, 0xc5,
+	0xca, 0x8c, 0xea, 0x63, 0x84, 0x23, 0x0c, 0x1a, 0xd4, 0x99, 0x1f, 0x54, 0x75, 0x72, 0x0c, 0x0d,
+	0x67, 0x35, 0x44, 0xa2, 0x01, 0x5d, 0x42, 0xb9, 0x53, 0xfb, 0xc4, 0x6e, 0x0e, 0xec, 0x23, 0x68,
+	0x06, 0xcf, 0x14, 0x2d, 0x43, 0xba, 0x01, 0xb5, 0xfa, 0xdd, 0xe0, 0x32, 0xca, 0x33, 0x15, 0x6c,
+	0xde, 0x3f, 0x12, 0xd9, 0xbc, 0xc5, 0x16, 0x43, 0x3b, 0xd0, 0x51, 0x81, 0xe9, 0x82, 0x76, 0xf0,
+	0x27, 0x22, 0x2c, 0x59, 0x6c, 0x7d, 0xd0, 0x0f, 0x44, 0x65, 0xd0, 0x0f, 0xfe, 0x4c, 0x94, 0x39,
+	0xae, 0x0c, 0x1a, 0x42, 0x88, 0x6d, 0x1a, 0xf8, 0x2f, 0x44, 0x98, 0x91, 0xd8, 0xa6, 0x11, 0x61,
+	0x9b, 0x06, 0xfe, 0x2b, 0x11, 0xaa, 0x32, 0x3b, 0xa4, 0x0c, 0x5a, 0xc2, 0xdf, 0x88, 0x72, 0x4e,
+	0x66, 0x9b, 0x86, 0xba, 0x81, 0x8a, 0x4c, 0x49, 0xf7, 0xf9, 0xdf, 0x89, 0x74, 0xd1, 0x62, 0x2e,
+	0x68, 0x53, 0x78, 0x23, 0x2a, 0x71, 0x3e, 0x15, 0xff, 0x83, 0x88, 0x0b, 0x16, 0xf3, 0xc2, 0xba,
+	0x82, 0x18, 0x15, 0x74, 0x85, 0x7f, 0x12, 0x69, 0x9a, 0x47, 0x05, 0x6d, 0x21, 0xf2, 0x0d, 0x4c,
+	0x03, 0xff, 0x8b, 0x28, 0x17, 0x42, 0xdf, 0xc0, 0x34, 0x62, 0xbe, 0x81, 0x69, 0xe0, 0x7f, 0x13,
+	0x71, 0x31, 0xfc, 0x0d, 0x42, 0x59, 0x08, 0x1a, 0xc3, 0x7f, 0x88, 0x56, 0xe1, 0x59, 0x08, 0x3a,
+	0x83, 0x94, 0x59, 0xe8, 0x0c, 0xff, 0x55, 0xfc, 0xb1, 0xc4, 0x33, 0x0b, 0xad, 0x41, 0x8c, 0x0a,
+	0x5a, 0xc3, 0xff, 0x88, 0x30, 0xcb, 0xa3, 0x82, 0xde, 0x60, 0xa3, 0x32, 0xd3, 0x09, 0xbd, 0xe1,
+	0xff, 0x44, 0x9c, 0xb8, 0x39, 0x50, 0x8f, 0xbc, 0x39, 0xf4, 0xd0, 0x6a, 0x08, 0x43, 0xf7, 0xd1,
+	0x0b, 0x84, 0x34, 0x4b, 0x77, 0x90, 0x60, 0x74, 0x33, 0x1d, 0xa2, 0x15, 0xa1, 0x04, 0x85, 0xee,
+	0xf0, 0x22, 0x04, 0x36, 0x75, 0x7b, 0xe0, 0x85, 0xcb, 0xdb, 0x83, 0x83, 0x70, 0x04, 0x42, 0xc3,
+	0x7a, 0x09, 0xc2, 0x4a, 0xd2, 0x1f, 0x42, 0x28, 0x1a, 0xd2, 0x7b, 0x51, 0xce, 0x6d, 0x9e, 0xf8,
+	0xad, 0x01, 0xfa, 0xc3, 0xd7, 0xd3, 0x3e, 0xe2, 0x2d, 0x53, 0x64, 0xee, 0x7e, 0xf3, 0x84, 0x74,
+	0x11, 0xf2, 0x6f, 0xaf, 0x37, 0x38, 0x3d, 0xb7, 0x96, 0x5d, 0x6e, 0x51, 0x0f, 0x51, 0x9e, 0x11,
+	0xa0, 0x11, 0x7c, 0x03, 0x10, 0x6f, 0x9d, 0x1e, 0xe1, 0x77, 0x21, 0x60, 0x64, 0x5d, 0xc1, 0xa4,
+	0xb6, 0x51, 0x81, 0x41, 0x82, 0xc6, 0xf4, 0x4d, 0xa0, 0xbc, 0x6d, 0x7a, 0x0a, 0xb4, 0x30, 0xc0,
+	0xe4, 0x5c, 0xd1, 0x26, 0x71, 0x82, 0xb6, 0xf6, 0xad, 0xc4, 0x9c, 0xfd, 0x18, 0x4e, 0xd0, 0x14,
+	0x43, 0x49, 0x33, 0x0d, 0xfc, 0xed, 0x59, 0x92, 0x66, 0x1a, 0x91, 0xa4, 0x99, 0x46, 0x24, 0x69,
+	0xa6, 0x81, 0xbf, 0x33, 0x53, 0xd2, 0x28, 0x46, 0x4c, 0x5a, 0x88, 0x13, 0xf4, 0xe3, 0xef, 0xce,
+	0x94, 0xb4, 0x30, 0x27, 0xe8, 0xe6, 0x5d, 0x54, 0x64, 0x1c, 0xda, 0xa0, 0xbf, 0x07, 0xa0, 0xeb,
+	0xd3, 0x83, 0x82, 0xbe, 0x0f, 0xa4, 0xbc, 0x2b, 0x19, 0x55, 0x07, 0x95, 0x78, 0xea, 0x28, 0xeb,
+	0xfb, 0xc0, 0xba, 0x91, 0x20, 0x79, 0x6d, 0x11, 0x56, 0x70, 0x65, 0xab, 0x54, 0x0d, 0x30, 0x4c,
+	0x7e, 0x90, 0xb8, 0x1a, 0xfc, 0xb1, 0x23, 0x57, 0x03, 0x4c, 0xa2, 0x48, 0xf6, 0x4c, 0x03, 0xff,
+	0x70, 0xb6, 0xec, 0xd1, 0xe7, 0x24, 0x65, 0xcf, 0x34, 0x62, 0xb2, 0x67, 0x1a, 0xf8, 0x47, 0x33,
+	0x66, 0x8f, 0xc2, 0xe4, 0xec, 0x85, 0xca, 0x2f, 0x18, 0x84, 0x3f, 0x4e, 0x5c, 0x7e, 0x30, 0x32,
+	0xe5, 0xf2, 0x0b, 0xc6, 0xa8, 0xb4, 0x9d, 0x60, 0x8c, 0xfe, 0x24, 0xf9, 0x76, 0xf2, 0x1d, 0x84,
+	0xb6, 0x13, 0x0c, 0x61, 0xb1, 0x1a, 0x60, 0x08, 0xff, 0x34, 0x71, 0x35, 0xf8, 0xe3, 0x5a, 0xae,
+	0x06, 0x98, 0xe0, 0x27, 0xa8, 0xcc, 0x20, 0xc2, 0x04, 0xff, 0x19, 0x90, 0x6e, 0x4e, 0x4f, 0x62,
+	0x53, 0x1b, 0x68, 0x45, 0x37, 0x64, 0x56, 0xcf, 0xd1, 0x6a, 0x88, 0x48, 0xa7, 0xde, 0xcf, 0x01,
+	0x7a, 0x2b, 0x21, 0x34, 0xb0, 0x01, 0xb7, 0xec, 0x46, 0x3f, 0x51, 0xcf, 0xd0, 0x8a, 0xd0, 0x08,
+	0x85, 0xb9, 0xfe, 0x0b, 0x20, 0xef, 0x26, 0x69, 0x87, 0x6c, 0xa2, 0x03, 0x58, 0x75, 0x23, 0x1f,
+	0xa8, 0x4f, 0x10, 0x8e, 0x70, 0x69, 0xd0, 0xbf, 0x04, 0xf4, 0x5e, 0x62, 0xb4, 0x14, 0xf6, 0x8a,
+	0x1b, 0xf7, 0x19, 0x2d, 0x25, 0x7f, 0xe6, 0xc0, 0xf8, 0xff, 0x55, 0xa2, 0x52, 0xf2, 0x87, 0x30,
+	0x9f, 0xff, 0xa4, 0x94, 0x98, 0x89, 0xee, 0x8b, 0xbe, 0x40, 0xf9, 0x75, 0xa2, 0x7d, 0x01, 0x33,
+	0x98, 0x63, 0xc8, 0xbe, 0xe0, 0x36, 0xca, 0x19, 0x0a, 0x9c, 0xdf, 0x24, 0xe2, 0xec, 0xc7, 0x70,
+	0xb8, 0x4d, 0x48, 0x9a, 0x69, 0x00, 0xe6, 0xb7, 0x49, 0x93, 0x66, 0x1a, 0x91, 0xa4, 0x81, 0x49,
+	0x4c, 0x1a, 0xa5, 0xfc, 0x2e, 0x71, 0xd2, 0x44, 0x0c, 0x4d, 0x9a, 0xcc, 0x19, 0x0a, 0x9c, 0xdf,
+	0x27, 0x4e, 0x5a, 0x98, 0xc3, 0x6d, 0x74, 0xba, 0x04, 0x13, 0x0d, 0x40, 0x4f, 0x13, 0x4d, 0x97,
+	0x60, 0x04, 0x73, 0x12, 0x79, 0x1a, 0x82, 0x91, 0xa5, 0xce, 0xef, 0x96, 0x40, 0xfa, 0x43, 0xb2,
+	0xd4, 0xf9, 0x1e, 0x42, 0xa9, 0x63, 0x36, 0x55, 0x43, 0xc8, 0xeb, 0xd9, 0x5e, 0x1b, 0x10, 0x1f,
+	0xcc, 0x68, 0x8a, 0x7e, 0xa1, 0x91, 0xb2, 0x96, 0x7c, 0xa3, 0xaf, 0x58, 0x47, 0xcb, 0xa0, 0x80,
+	0x93, 0xe2, 0x87, 0x88, 0x64, 0xbe, 0x91, 0xb2, 0x60, 0x1d, 0x9c, 0x5c, 0x2f, 0xa1, 0x2c, 0x68,
+	0x82, 0x63, 0xeb, 0x87, 0x89, 0xa8, 0xd4, 0x48, 0x59, 0xb0, 0x34, 0x38, 0x77, 0x32, 0x55, 0x70,
+	0xe8, 0xfc, 0x08, 0x51, 0xe5, 0x98, 0x2a, 0x38, 0x35, 0x8a, 0x3c, 0xd3, 0xc0, 0x1f, 0x25, 0xa2,
+	0x8c, 0xc8, 0x33, 0x0d, 0x99, 0x67, 0x1a, 0xf8, 0x63, 0x44, 0xa4, 0x4a, 0x3c, 0x51, 0x15, 0x9c,
+	0xd7, 0x3e, 0x4e, 0x54, 0x73, 0x12, 0xcf, 0x34, 0xd4, 0xcb, 0x28, 0x07, 0x2a, 0x7a, 0x02, 0xfa,
+	0x04, 0x91, 0x2d, 0x36, 0x52, 0x16, 0xac, 0xa6, 0xa7, 0x25, 0x1d, 0xe5, 0x03, 0x26, 0x15, 0x7e,
+	0x92, 0x08, 0x0b, 0x8d, 0x94, 0x05, 0x0e, 0xd8, 0x49, 0x87, 0x45, 0x00, 0xc7, 0x9c, 0x4f, 0x11,
+	0x59, 0x9a, 0x45, 0x00, 0x07, 0x15, 0x99, 0x6a, 0x1a, 0xf8, 0xd3, 0x44, 0xb5, 0x20, 0x53, 0xfd,
+	0x0b, 0xb0, 0x44, 0x35, 0x0d, 0xfc, 0x19, 0x22, 0x2c, 0x86, 0xa8, 0x62, 0xb4, 0xc1, 0xf1, 0xe0,
+	0xb3, 0x44, 0xa7, 0xb0, 0x68, 0x83, 0xf9, 0xce, 0x33, 0x07, 0xc3, 0xfd, 0x73, 0x44, 0xb5, 0xc4,
+	0x33, 0x07, 0xd3, 0x99, 0x45, 0x00, 0xa3, 0xf9, 0xf3, 0x44, 0x94, 0x65, 0x11, 0xc0, 0x70, 0x6d,
+	0xa2, 0x22, 0x68, 0x84, 0xc9, 0xfa, 0x85, 0x4c, 0xf2, 0x17, 0x67, 0x8d, 0x94, 0x05, 0xa1, 0xf2,
+	0x69, 0xfa, 0x08, 0x95, 0x45, 0x04, 0x9d, 0x2a, 0x5f, 0xcc, 0xcc, 0xf4, 0xd6, 0xac, 0x91, 0xb2,
+	0x4a, 0x1c, 0x44, 0xa7, 0xc8, 0x01, 0x52, 0x69, 0x49, 0x09, 0xb3, 0xf3, 0x4b, 0x99, 0x24, 0xaf,
+	0xcc, 0x1a, 0x29, 0xab, 0x18, 0x14, 0x22, 0x9f, 0x93, 0xc7, 0x68, 0x45, 0x06, 0xd0, 0x70, 0xbe,
+	0x9c, 0x49, 0xf8, 0xbe, 0xac, 0x91, 0xb2, 0xca, 0x22, 0x86, 0x86, 0xc2, 0x6a, 0x0b, 0x9e, 0x71,
+	0x15, 0x7f, 0x85, 0x3e, 0xe4, 0xac, 0xf0, 0x90, 0xab, 0x61, 0x5d, 0x0d, 0x7f, 0x35, 0x4e, 0x57,
+	0x0b, 0xeb, 0xea, 0xf8, 0x6b, 0x71, 0xba, 0xfa, 0xda, 0x23, 0x94, 0x95, 0x52, 0xfa, 0x0a, 0xfe,
+	0x5f, 0xc1, 0xda, 0x75, 0x54, 0x0c, 0xdf, 0xd8, 0xd5, 0x22, 0xca, 0x3c, 0xb6, 0xcf, 0x7d, 0xe0,
+	0x05, 0x8b, 0xfc, 0xa8, 0x5e, 0x44, 0xf3, 0x67, 0x4d, 0x67, 0x68, 0xe3, 0xb4, 0x6f, 0x83, 0x5f,
+	0xae, 0xa5, 0xaf, 0x2a, 0x6b, 0x37, 0x50, 0x29, 0x72, 0x1d, 0x1f, 0xe7, 0x60, 0x5e, 0x74, 0x70,
+	0x13, 0xa9, 0xd1, 0x9b, 0xf6, 0x38, 0x0f, 0xa5, 0x78, 0x0f, 0xfb, 0x93, 0x7b, 0xc8, 0x8d, 0x0c,
+	0x22, 0xb8, 0x3a, 0x8c, 0x73, 0x90, 0x19, 0x1d, 0xc4, 0x84, 0x1e, 0xd4, 0xd1, 0x41, 0x4c, 0xe8,
+	0x61, 0x4e, 0xf4, 0xb0, 0x83, 0xca, 0x31, 0x97, 0xd5, 0x71, 0x2e, 0x16, 0x45, 0x17, 0xbb, 0xe8,
+	0x62, 0xdc, 0x1d, 0x74, 0x9c, 0x8f, 0x42, 0x7c, 0x2e, 0xf9, 0xe5, 0x72, 0x9c, 0x83, 0xf4, 0x73,
+	0xe2, 0x98, 0x30, 0x15, 0x0b, 0xcf, 0x8b, 0x63, 0x42, 0x1f, 0xc5, 0xf8, 0x07, 0x22, 0xdc, 0xf2,
+	0xc6, 0x79, 0x50, 0x46, 0x14, 0x05, 0xbf, 0xbf, 0x8d, 0xf3, 0xb0, 0x14, 0x9f, 0x4b, 0x7e, 0x35,
+	0x1b, 0xe7, 0x20, 0x2b, 0x3a, 0x38, 0x47, 0x2b, 0xb1, 0x37, 0xae, 0x18, 0x27, 0xef, 0x10, 0x9d,
+	0x24, 0x7d, 0x2d, 0x2b, 0xa0, 0x9f, 0x20, 0x3c, 0xea, 0xde, 0x15, 0x43, 0xbf, 0x2f, 0xd2, 0x67,
+	0x78, 0x55, 0x2b, 0x7c, 0x81, 0x21, 0x7a, 0xd5, 0x88, 0xeb, 0x57, 0x0c, 0xff, 0xb6, 0x1c, 0xfd,
+	0xb4, 0xef, 0x6e, 0x05, 0xec, 0x07, 0xd0, 0xda, 0xe8, 0xab, 0x57, 0x0c, 0xf9, 0xed, 0x72, 0xe4,
+	0x09, 0xde, 0xe6, 0x46, 0x0a, 0x46, 0xbe, 0x80, 0x89, 0xcc, 0xf9, 0x71, 0xed, 0x1c, 0x6a, 0x36,
+	0x74, 0xb7, 0x12, 0x3d, 0x94, 0x26, 0xf3, 0xb0, 0x3f, 0xda, 0x43, 0x6e, 0xb2, 0x91, 0x22, 0x5f,
+	0x88, 0x44, 0x07, 0x99, 0xc9, 0x83, 0x18, 0xe1, 0x41, 0x9d, 0x3c, 0x88, 0x11, 0x1e, 0xe6, 0xc6,
+	0x79, 0x80, 0x2e, 0x16, 0xbe, 0x9e, 0x88, 0x2e, 0x16, 0x27, 0x0c, 0x43, 0xbe, 0x77, 0x88, 0x1e,
+	0x96, 0xc6, 0x78, 0x58, 0xaf, 0xa0, 0x25, 0x7e, 0x08, 0x5c, 0x42, 0xf3, 0x3b, 0xf7, 0xde, 0xd5,
+	0xd8, 0x29, 0xa6, 0xc8, 0x8f, 0xbb, 0xd6, 0xce, 0xbb, 0xdf, 0x59, 0x54, 0xd4, 0x65, 0xb4, 0x78,
+	0xab, 0xb1, 0x63, 0xdd, 0xbb, 0xbb, 0x57, 0x4c, 0xef, 0xe6, 0xe8, 0x71, 0x75, 0xd8, 0xeb, 0x7a,
+	0xbd, 0x8d, 0x2a, 0x5a, 0x16, 0x0f, 0x5e, 0x71, 0x0e, 0x90, 0x9a, 0xe5, 0x0e, 0x9e, 0x29, 0xbb,
+	0x0f, 0x1f, 0xbe, 0xa7, 0xd3, 0x1d, 0x1c, 0x0f, 0x5b, 0x95, 0x43, 0xcf, 0xdd, 0x84, 0x1a, 0xde,
+	0xf4, 0xeb, 0xb7, 0x35, 0x6c, 0x6f, 0x9e, 0xd5, 0x36, 0xbb, 0xbd, 0x81, 0x7d, 0xda, 0x6b, 0x3a,
+	0xfe, 0x1f, 0x50, 0xf8, 0x1f, 0xf4, 0x37, 0x1d, 0xbb, 0xd3, 0x3c, 0x3c, 0xdf, 0x1c, 0xf3, 0x27,
+	0x17, 0xad, 0x05, 0x10, 0xbc, 0x1c, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x64, 0x7c, 0x2d, 0x9c, 0x21,
+	0x00, 0x00,
+}
diff --git a/internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152/test.proto b/internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152/test.proto
new file mode 100644
index 0000000..eab35a0
--- /dev/null
+++ b/internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152/test.proto
@@ -0,0 +1,136 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto3";
+
+package google.golang.org.proto3_20180125;
+option go_package = "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152";
+
+enum SiblingEnum {
+	ALPHA   = 0;
+	BRAVO   = 10;
+	CHARLIE = 200;
+}
+
+message SiblingMessage {
+	string          f1 = 1;
+	repeated string f2 = 2;
+	Message         f3 = 3;
+}
+
+message Message {
+	enum ChildEnum {
+		ALPHA   = 0;
+		BRAVO   = 1;
+		CHARLIE = 2;
+	}
+	message ChildMessage {
+		string          f1 = 1;
+		repeated string f2 = 2;
+		Message         f3 = 3;
+	}
+
+	// Optional fields.
+	bool     optional_bool     = 100;
+	int32    optional_int32    = 101;
+	sint32   optional_sint32   = 102;
+	uint32   optional_uint32   = 103;
+	int64    optional_int64    = 104;
+	sint64   optional_sint64   = 105;
+	uint64   optional_uint64   = 106;
+	fixed32  optional_fixed32  = 107;
+	sfixed32 optional_sfixed32 = 108;
+	float    optional_float    = 109;
+	fixed64  optional_fixed64  = 110;
+	sfixed64 optional_sfixed64 = 111;
+	double   optional_double   = 112;
+	string   optional_string   = 113;
+	bytes    optional_bytes    = 114;
+
+	ChildEnum      optional_child_enum      = 115;
+	ChildMessage   optional_child_message   = 116;
+	SiblingEnum    optional_sibling_enum    = 117;
+	SiblingMessage optional_sibling_message = 118;
+
+	// Repeated fields.
+	repeated bool     repeated_bool     = 200;
+	repeated int32    repeated_int32    = 201;
+	repeated sint32   repeated_sint32   = 202;
+	repeated uint32   repeated_uint32   = 203;
+	repeated int64    repeated_int64    = 204;
+	repeated sint64   repeated_sint64   = 205;
+	repeated uint64   repeated_uint64   = 206;
+	repeated fixed32  repeated_fixed32  = 207;
+	repeated sfixed32 repeated_sfixed32 = 208;
+	repeated float    repeated_float    = 209;
+	repeated fixed64  repeated_fixed64  = 210;
+	repeated sfixed64 repeated_sfixed64 = 211;
+	repeated double   repeated_double   = 212;
+	repeated string   repeated_string   = 213;
+	repeated bytes    repeated_bytes    = 214;
+
+	repeated ChildEnum      repeated_child_enum      = 215;
+	repeated ChildMessage   repeated_child_message   = 216;
+	repeated SiblingEnum    repeated_sibling_enum    = 217;
+	repeated SiblingMessage repeated_sibling_message = 218;
+
+	// Map fields.
+	map<bool, bool>     map_bool_bool     = 300;
+	map<bool, int32>    map_bool_int32    = 301;
+	map<bool, sint32>   map_bool_sint32   = 302;
+	map<bool, uint32>   map_bool_uint32   = 303;
+	map<bool, int64>    map_bool_int64    = 304;
+	map<bool, sint64>   map_bool_sint64   = 305;
+	map<bool, uint64>   map_bool_uint64   = 306;
+	map<bool, fixed32>  map_bool_fixed32  = 307;
+	map<bool, sfixed32> map_bool_sfixed32 = 308;
+	map<bool, float>    map_bool_float    = 309;
+	map<bool, fixed64>  map_bool_fixed64  = 310;
+	map<bool, sfixed64> map_bool_sfixed64 = 311;
+	map<bool, double>   map_bool_double   = 312;
+	map<bool, string>   map_bool_string   = 313;
+	map<bool, bytes>    map_bool_bytes    = 314;
+
+	map<bool, ChildEnum>      map_bool_child_enum      = 315;
+	map<bool, ChildMessage>   map_bool_child_message   = 316;
+	map<bool, SiblingEnum>    map_bool_sibling_enum    = 317;
+	map<bool, SiblingMessage> map_bool_sibling_message = 318;
+
+	map<int32, bool>   map_int32_bool   = 319;
+	map<sint32, bool>  map_sint32_bool  = 320;
+	map<uint32, bool>  map_uint32_bool  = 321;
+	map<int64, bool>   map_int64_bool   = 322;
+	map<sint64, bool>  map_sint64_bool  = 323;
+	map<uint64, bool>  map_uint64_bool  = 324;
+	map<fixed32, bool> map_fixed32_bool = 325;
+	map<string, bool>  map_string_bool  = 326;
+
+	// Oneof fields.
+	oneof oneof_union {
+		bool     oneof_bool     = 400;
+		int32    oneof_int32    = 401;
+		sint32   oneof_sint32   = 402;
+		uint32   oneof_uint32   = 403;
+		int64    oneof_int64    = 404;
+		sint64   oneof_sint64   = 405;
+		uint64   oneof_uint64   = 406;
+		fixed32  oneof_fixed32  = 407;
+		sfixed32 oneof_sfixed32 = 408;
+		float    oneof_float    = 409;
+		fixed64  oneof_fixed64  = 410;
+		sfixed64 oneof_sfixed64 = 411;
+		double   oneof_double   = 412;
+		string   oneof_string   = 413;
+		bytes    oneof_bytes    = 414;
+
+		ChildEnum      oneof_child_enum      = 415;
+		ChildMessage   oneof_child_message   = 416;
+		SiblingEnum    oneof_sibling_enum    = 417;
+		SiblingMessage oneof_sibling_message = 418;
+
+		string oneof_string1 = 419;
+		string oneof_string2 = 420;
+		string oneof_string3 = 421;
+	}
+}
diff --git a/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09/test.pb.go b/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09/test.pb.go
new file mode 100644
index 0000000..b1e6e4b
--- /dev/null
+++ b/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09/test.pb.go
@@ -0,0 +1,1543 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: proto3.v1.1.0-20180430-b4deda09/test.proto
+
+package proto3_v1_1_0_20180430_b4deda09 // import "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type SiblingEnum int32
+
+const (
+	SiblingEnum_ALPHA   SiblingEnum = 0
+	SiblingEnum_BRAVO   SiblingEnum = 10
+	SiblingEnum_CHARLIE SiblingEnum = 200
+)
+
+var SiblingEnum_name = map[int32]string{
+	0:   "ALPHA",
+	10:  "BRAVO",
+	200: "CHARLIE",
+}
+var SiblingEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   10,
+	"CHARLIE": 200,
+}
+
+func (x SiblingEnum) String() string {
+	return proto.EnumName(SiblingEnum_name, int32(x))
+}
+func (SiblingEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_test_0bc46c1644599234, []int{0}
+}
+
+type Message_ChildEnum int32
+
+const (
+	Message_ALPHA   Message_ChildEnum = 0
+	Message_BRAVO   Message_ChildEnum = 1
+	Message_CHARLIE Message_ChildEnum = 2
+)
+
+var Message_ChildEnum_name = map[int32]string{
+	0: "ALPHA",
+	1: "BRAVO",
+	2: "CHARLIE",
+}
+var Message_ChildEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   1,
+	"CHARLIE": 2,
+}
+
+func (x Message_ChildEnum) String() string {
+	return proto.EnumName(Message_ChildEnum_name, int32(x))
+}
+func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_test_0bc46c1644599234, []int{1, 0}
+}
+
+type SiblingMessage struct {
+	F1                   string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
+	F3                   *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SiblingMessage) Reset()         { *m = SiblingMessage{} }
+func (m *SiblingMessage) String() string { return proto.CompactTextString(m) }
+func (*SiblingMessage) ProtoMessage()    {}
+func (*SiblingMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_0bc46c1644599234, []int{0}
+}
+func (m *SiblingMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SiblingMessage.Unmarshal(m, b)
+}
+func (m *SiblingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SiblingMessage.Marshal(b, m, deterministic)
+}
+func (dst *SiblingMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SiblingMessage.Merge(dst, src)
+}
+func (m *SiblingMessage) XXX_Size() int {
+	return xxx_messageInfo_SiblingMessage.Size(m)
+}
+func (m *SiblingMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_SiblingMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SiblingMessage proto.InternalMessageInfo
+
+func (m *SiblingMessage) GetF1() string {
+	if m != nil {
+		return m.F1
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF2() []string {
+	if m != nil {
+		return m.F2
+	}
+	return nil
+}
+
+func (m *SiblingMessage) GetF3() *Message {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message struct {
+	// Optional fields.
+	OptionalBool           bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
+	OptionalInt32          int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
+	OptionalSint32         int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
+	OptionalUint32         uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
+	OptionalInt64          int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
+	OptionalSint64         int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
+	OptionalUint64         uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
+	OptionalFixed32        uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
+	OptionalSfixed32       int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
+	OptionalFloat          float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
+	OptionalFixed64        uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
+	OptionalSfixed64       int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
+	OptionalDouble         float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
+	OptionalString         string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
+	OptionalBytes          []byte                `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
+	OptionalChildEnum      Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto3_20180430.Message_ChildEnum" json:"optional_child_enum,omitempty"`
+	OptionalChildMessage   *Message_ChildMessage `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
+	OptionalSiblingEnum    SiblingEnum           `protobuf:"varint,117,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto3_20180430.SiblingEnum" json:"optional_sibling_enum,omitempty"`
+	OptionalSiblingMessage *SiblingMessage       `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
+	// Repeated fields.
+	RepeatedBool           []bool                  `protobuf:"varint,200,rep,packed,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
+	RepeatedInt32          []int32                 `protobuf:"varint,201,rep,packed,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
+	RepeatedSint32         []int32                 `protobuf:"zigzag32,202,rep,packed,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
+	RepeatedUint32         []uint32                `protobuf:"varint,203,rep,packed,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
+	RepeatedInt64          []int64                 `protobuf:"varint,204,rep,packed,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
+	RepeatedSint64         []int64                 `protobuf:"zigzag64,205,rep,packed,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
+	RepeatedUint64         []uint64                `protobuf:"varint,206,rep,packed,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
+	RepeatedFixed32        []uint32                `protobuf:"fixed32,207,rep,packed,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
+	RepeatedSfixed32       []int32                 `protobuf:"fixed32,208,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
+	RepeatedFloat          []float32               `protobuf:"fixed32,209,rep,packed,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
+	RepeatedFixed64        []uint64                `protobuf:"fixed64,210,rep,packed,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed64       []int64                 `protobuf:"fixed64,211,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
+	RepeatedDouble         []float64               `protobuf:"fixed64,212,rep,packed,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
+	RepeatedString         []string                `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
+	RepeatedBytes          [][]byte                `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
+	RepeatedChildEnum      []Message_ChildEnum     `protobuf:"varint,215,rep,packed,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto3_20180430.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
+	RepeatedChildMessage   []*Message_ChildMessage `protobuf:"bytes,216,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
+	RepeatedSiblingEnum    []SiblingEnum           `protobuf:"varint,217,rep,packed,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto3_20180430.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
+	RepeatedSiblingMessage []*SiblingMessage       `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
+	// Map fields.
+	MapBoolBool           map[bool]bool                  `protobuf:"bytes,300,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,301,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,302,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,303,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,304,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,305,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,306,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,307,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,308,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFloat          map[bool]float32               `protobuf:"bytes,309,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,310,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,311,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolDouble         map[bool]float64               `protobuf:"bytes,312,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolString         map[bool]string                `protobuf:"bytes,313,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,314,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,315,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20180430.Message_ChildEnum"`
+	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,316,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,317,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20180430.SiblingEnum"`
+	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,318,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,319,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,320,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,321,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,322,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,323,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,324,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,325,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapStringBool         map[string]bool                `protobuf:"bytes,326,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	// Oneof fields.
+	//
+	// Types that are valid to be assigned to OneofUnion:
+	//	*Message_OneofBool
+	//	*Message_OneofInt32
+	//	*Message_OneofSint32
+	//	*Message_OneofUint32
+	//	*Message_OneofInt64
+	//	*Message_OneofSint64
+	//	*Message_OneofUint64
+	//	*Message_OneofFixed32
+	//	*Message_OneofSfixed32
+	//	*Message_OneofFloat
+	//	*Message_OneofFixed64
+	//	*Message_OneofSfixed64
+	//	*Message_OneofDouble
+	//	*Message_OneofString
+	//	*Message_OneofBytes
+	//	*Message_OneofChildEnum
+	//	*Message_OneofChildMessage
+	//	*Message_OneofSiblingEnum
+	//	*Message_OneofSiblingMessage
+	//	*Message_OneofString1
+	//	*Message_OneofString2
+	//	*Message_OneofString3
+	OneofUnion           isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *Message) Reset()         { *m = Message{} }
+func (m *Message) String() string { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()    {}
+func (*Message) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_0bc46c1644599234, []int{1}
+}
+func (m *Message) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message.Unmarshal(m, b)
+}
+func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
+}
+func (dst *Message) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message.Merge(dst, src)
+}
+func (m *Message) XXX_Size() int {
+	return xxx_messageInfo_Message.Size(m)
+}
+func (m *Message) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message proto.InternalMessageInfo
+
+type isMessage_OneofUnion interface {
+	isMessage_OneofUnion()
+}
+
+type Message_OneofBool struct {
+	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,json=oneofBool,oneof"`
+}
+type Message_OneofInt32 struct {
+	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,json=oneofInt32,oneof"`
+}
+type Message_OneofSint32 struct {
+	OneofSint32 int32 `protobuf:"zigzag32,402,opt,name=oneof_sint32,json=oneofSint32,oneof"`
+}
+type Message_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,json=oneofUint32,oneof"`
+}
+type Message_OneofInt64 struct {
+	OneofInt64 int64 `protobuf:"varint,404,opt,name=oneof_int64,json=oneofInt64,oneof"`
+}
+type Message_OneofSint64 struct {
+	OneofSint64 int64 `protobuf:"zigzag64,405,opt,name=oneof_sint64,json=oneofSint64,oneof"`
+}
+type Message_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,406,opt,name=oneof_uint64,json=oneofUint64,oneof"`
+}
+type Message_OneofFixed32 struct {
+	OneofFixed32 uint32 `protobuf:"fixed32,407,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
+}
+type Message_OneofSfixed32 struct {
+	OneofSfixed32 int32 `protobuf:"fixed32,408,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
+}
+type Message_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,409,opt,name=oneof_float,json=oneofFloat,oneof"`
+}
+type Message_OneofFixed64 struct {
+	OneofFixed64 uint64 `protobuf:"fixed64,410,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
+}
+type Message_OneofSfixed64 struct {
+	OneofSfixed64 int64 `protobuf:"fixed64,411,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
+}
+type Message_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,412,opt,name=oneof_double,json=oneofDouble,oneof"`
+}
+type Message_OneofString struct {
+	OneofString string `protobuf:"bytes,413,opt,name=oneof_string,json=oneofString,oneof"`
+}
+type Message_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,414,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
+}
+type Message_OneofChildEnum struct {
+	OneofChildEnum Message_ChildEnum `protobuf:"varint,415,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto3_20180430.Message_ChildEnum,oneof"`
+}
+type Message_OneofChildMessage struct {
+	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,416,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
+}
+type Message_OneofSiblingEnum struct {
+	OneofSiblingEnum SiblingEnum `protobuf:"varint,417,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto3_20180430.SiblingEnum,oneof"`
+}
+type Message_OneofSiblingMessage struct {
+	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,418,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
+}
+type Message_OneofString1 struct {
+	OneofString1 string `protobuf:"bytes,419,opt,name=oneof_string1,json=oneofString1,oneof"`
+}
+type Message_OneofString2 struct {
+	OneofString2 string `protobuf:"bytes,420,opt,name=oneof_string2,json=oneofString2,oneof"`
+}
+type Message_OneofString3 struct {
+	OneofString3 string `protobuf:"bytes,421,opt,name=oneof_string3,json=oneofString3,oneof"`
+}
+
+func (*Message_OneofBool) isMessage_OneofUnion()           {}
+func (*Message_OneofInt32) isMessage_OneofUnion()          {}
+func (*Message_OneofSint32) isMessage_OneofUnion()         {}
+func (*Message_OneofUint32) isMessage_OneofUnion()         {}
+func (*Message_OneofInt64) isMessage_OneofUnion()          {}
+func (*Message_OneofSint64) isMessage_OneofUnion()         {}
+func (*Message_OneofUint64) isMessage_OneofUnion()         {}
+func (*Message_OneofFixed32) isMessage_OneofUnion()        {}
+func (*Message_OneofSfixed32) isMessage_OneofUnion()       {}
+func (*Message_OneofFloat) isMessage_OneofUnion()          {}
+func (*Message_OneofFixed64) isMessage_OneofUnion()        {}
+func (*Message_OneofSfixed64) isMessage_OneofUnion()       {}
+func (*Message_OneofDouble) isMessage_OneofUnion()         {}
+func (*Message_OneofString) isMessage_OneofUnion()         {}
+func (*Message_OneofBytes) isMessage_OneofUnion()          {}
+func (*Message_OneofChildEnum) isMessage_OneofUnion()      {}
+func (*Message_OneofChildMessage) isMessage_OneofUnion()   {}
+func (*Message_OneofSiblingEnum) isMessage_OneofUnion()    {}
+func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
+func (*Message_OneofString1) isMessage_OneofUnion()        {}
+func (*Message_OneofString2) isMessage_OneofUnion()        {}
+func (*Message_OneofString3) isMessage_OneofUnion()        {}
+
+func (m *Message) GetOneofUnion() isMessage_OneofUnion {
+	if m != nil {
+		return m.OneofUnion
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalBool() bool {
+	if m != nil {
+		return m.OptionalBool
+	}
+	return false
+}
+
+func (m *Message) GetOptionalInt32() int32 {
+	if m != nil {
+		return m.OptionalInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint32() int32 {
+	if m != nil {
+		return m.OptionalSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint32() uint32 {
+	if m != nil {
+		return m.OptionalUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalInt64() int64 {
+	if m != nil {
+		return m.OptionalInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint64() int64 {
+	if m != nil {
+		return m.OptionalSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint64() uint64 {
+	if m != nil {
+		return m.OptionalUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed32() uint32 {
+	if m != nil {
+		return m.OptionalFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed32() int32 {
+	if m != nil {
+		return m.OptionalSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFloat() float32 {
+	if m != nil {
+		return m.OptionalFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed64() uint64 {
+	if m != nil {
+		return m.OptionalFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed64() int64 {
+	if m != nil {
+		return m.OptionalSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalDouble() float64 {
+	if m != nil {
+		return m.OptionalDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalString() string {
+	if m != nil {
+		return m.OptionalString
+	}
+	return ""
+}
+
+func (m *Message) GetOptionalBytes() []byte {
+	if m != nil {
+		return m.OptionalBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
+	if m != nil {
+		return m.OptionalChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.OptionalChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
+	if m != nil {
+		return m.OptionalSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.OptionalSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedBool() []bool {
+	if m != nil {
+		return m.RepeatedBool
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt32() []int32 {
+	if m != nil {
+		return m.RepeatedInt32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint32() []int32 {
+	if m != nil {
+		return m.RepeatedSint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint32() []uint32 {
+	if m != nil {
+		return m.RepeatedUint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt64() []int64 {
+	if m != nil {
+		return m.RepeatedInt64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint64() []int64 {
+	if m != nil {
+		return m.RepeatedSint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint64() []uint64 {
+	if m != nil {
+		return m.RepeatedUint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed32() []uint32 {
+	if m != nil {
+		return m.RepeatedFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed32() []int32 {
+	if m != nil {
+		return m.RepeatedSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFloat() []float32 {
+	if m != nil {
+		return m.RepeatedFloat
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed64() []uint64 {
+	if m != nil {
+		return m.RepeatedFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed64() []int64 {
+	if m != nil {
+		return m.RepeatedSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedDouble() []float64 {
+	if m != nil {
+		return m.RepeatedDouble
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedString() []string {
+	if m != nil {
+		return m.RepeatedString
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedBytes() [][]byte {
+	if m != nil {
+		return m.RepeatedBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
+	if m != nil {
+		return m.RepeatedChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
+	if m != nil {
+		return m.RepeatedChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
+	if m != nil {
+		return m.RepeatedSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
+	if m != nil {
+		return m.RepeatedSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBool() map[bool]bool {
+	if m != nil {
+		return m.MapBoolBool
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolInt32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolUint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolInt64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolUint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFloat() map[bool]float32 {
+	if m != nil {
+		return m.MapBoolFloat
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolDouble() map[bool]float64 {
+	if m != nil {
+		return m.MapBoolDouble
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolString() map[bool]string {
+	if m != nil {
+		return m.MapBoolString
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBytes() map[bool][]byte {
+	if m != nil {
+		return m.MapBoolBytes
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
+	if m != nil {
+		return m.MapBoolChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
+	if m != nil {
+		return m.MapBoolChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
+	if m != nil {
+		return m.MapBoolSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
+	if m != nil {
+		return m.MapBoolSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapInt32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapSint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapUint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapInt64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapSint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint64Bool() map[uint64]bool {
+	if m != nil {
+		return m.MapUint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapFixed32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapFixed32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapStringBool() map[string]bool {
+	if m != nil {
+		return m.MapStringBool
+	}
+	return nil
+}
+
+func (m *Message) GetOneofBool() bool {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
+		return x.OneofBool
+	}
+	return false
+}
+
+func (m *Message) GetOneofInt32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
+		return x.OneofInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
+		return x.OneofSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
+		return x.OneofUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofInt64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
+		return x.OneofInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
+		return x.OneofSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
+		return x.OneofUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
+		return x.OneofFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
+		return x.OneofSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFloat() float32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
+		return x.OneofFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
+		return x.OneofFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
+		return x.OneofSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofDouble() float64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
+		return x.OneofDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOneofString() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
+		return x.OneofString
+	}
+	return ""
+}
+
+func (m *Message) GetOneofBytes() []byte {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
+		return x.OneofBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOneofChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
+		return x.OneofChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
+		return x.OneofChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
+		return x.OneofSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
+		return x.OneofSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofString1() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
+		return x.OneofString1
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString2() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
+		return x.OneofString2
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString3() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
+		return x.OneofString3
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
+		(*Message_OneofBool)(nil),
+		(*Message_OneofInt32)(nil),
+		(*Message_OneofSint32)(nil),
+		(*Message_OneofUint32)(nil),
+		(*Message_OneofInt64)(nil),
+		(*Message_OneofSint64)(nil),
+		(*Message_OneofUint64)(nil),
+		(*Message_OneofFixed32)(nil),
+		(*Message_OneofSfixed32)(nil),
+		(*Message_OneofFloat)(nil),
+		(*Message_OneofFixed64)(nil),
+		(*Message_OneofSfixed64)(nil),
+		(*Message_OneofDouble)(nil),
+		(*Message_OneofString)(nil),
+		(*Message_OneofBytes)(nil),
+		(*Message_OneofChildEnum)(nil),
+		(*Message_OneofChildMessage)(nil),
+		(*Message_OneofSiblingEnum)(nil),
+		(*Message_OneofSiblingMessage)(nil),
+		(*Message_OneofString1)(nil),
+		(*Message_OneofString2)(nil),
+		(*Message_OneofString3)(nil),
+	}
+}
+
+func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		t := uint64(0)
+		if x.OneofBool {
+			t = 1
+		}
+		b.EncodeVarint(400<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofInt32:
+		b.EncodeVarint(401<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		b.EncodeVarint(402<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofSint32))
+	case *Message_OneofUint32:
+		b.EncodeVarint(403<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		b.EncodeVarint(404<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		b.EncodeVarint(405<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofSint64))
+	case *Message_OneofUint64:
+		b.EncodeVarint(406<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		b.EncodeVarint(407<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofFixed32))
+	case *Message_OneofSfixed32:
+		b.EncodeVarint(408<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofSfixed32))
+	case *Message_OneofFloat:
+		b.EncodeVarint(409<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
+	case *Message_OneofFixed64:
+		b.EncodeVarint(410<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofFixed64))
+	case *Message_OneofSfixed64:
+		b.EncodeVarint(411<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofSfixed64))
+	case *Message_OneofDouble:
+		b.EncodeVarint(412<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
+	case *Message_OneofString:
+		b.EncodeVarint(413<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString)
+	case *Message_OneofBytes:
+		b.EncodeVarint(414<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		b.EncodeVarint(415<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		b.EncodeVarint(416<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
+			return err
+		}
+	case *Message_OneofSiblingEnum:
+		b.EncodeVarint(417<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		b.EncodeVarint(418<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
+			return err
+		}
+	case *Message_OneofString1:
+		b.EncodeVarint(419<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString1)
+	case *Message_OneofString2:
+		b.EncodeVarint(420<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString2)
+	case *Message_OneofString3:
+		b.EncodeVarint(421<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString3)
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Message)
+	switch tag {
+	case 400: // oneof_union.oneof_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofBool{x != 0}
+		return true, err
+	case 401: // oneof_union.oneof_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt32{int32(x)}
+		return true, err
+	case 402: // oneof_union.oneof_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofUnion = &Message_OneofSint32{int32(x)}
+		return true, err
+	case 403: // oneof_union.oneof_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint32{uint32(x)}
+		return true, err
+	case 404: // oneof_union.oneof_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt64{int64(x)}
+		return true, err
+	case 405: // oneof_union.oneof_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofUnion = &Message_OneofSint64{int64(x)}
+		return true, err
+	case 406: // oneof_union.oneof_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint64{x}
+		return true, err
+	case 407: // oneof_union.oneof_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
+		return true, err
+	case 408: // oneof_union.oneof_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
+		return true, err
+	case 409: // oneof_union.oneof_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 410: // oneof_union.oneof_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofFixed64{x}
+		return true, err
+	case 411: // oneof_union.oneof_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
+		return true, err
+	case 412: // oneof_union.oneof_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
+		return true, err
+	case 413: // oneof_union.oneof_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString{x}
+		return true, err
+	case 414: // oneof_union.oneof_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofUnion = &Message_OneofBytes{x}
+		return true, err
+	case 415: // oneof_union.oneof_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 416: // oneof_union.oneof_child_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_ChildMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofChildMessage{msg}
+		return true, err
+	case 417: // oneof_union.oneof_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
+		return true, err
+	case 418: // oneof_union.oneof_sibling_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(SiblingMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofSiblingMessage{msg}
+		return true, err
+	case 419: // oneof_union.oneof_string1
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString1{x}
+		return true, err
+	case 420: // oneof_union.oneof_string2
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString2{x}
+		return true, err
+	case 421: // oneof_union.oneof_string3
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString3{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Message_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		n += 2 // tag and wire
+		n += 1
+	case *Message_OneofInt32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
+	case *Message_OneofUint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
+	case *Message_OneofUint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofSfixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofFloat:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofFixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofSfixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofDouble:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofString:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString)))
+		n += len(x.OneofString)
+	case *Message_OneofBytes:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
+		n += len(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		s := proto.Size(x.OneofChildMessage)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofSiblingEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		s := proto.Size(x.OneofSiblingMessage)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofString1:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString1)))
+		n += len(x.OneofString1)
+	case *Message_OneofString2:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString2)))
+		n += len(x.OneofString2)
+	case *Message_OneofString3:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString3)))
+		n += len(x.OneofString3)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+type Message_ChildMessage struct {
+	F1                   string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
+	F2                   []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
+	F3                   *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_ChildMessage) Reset()         { *m = Message_ChildMessage{} }
+func (m *Message_ChildMessage) String() string { return proto.CompactTextString(m) }
+func (*Message_ChildMessage) ProtoMessage()    {}
+func (*Message_ChildMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_0bc46c1644599234, []int{1, 0}
+}
+func (m *Message_ChildMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_ChildMessage.Unmarshal(m, b)
+}
+func (m *Message_ChildMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_ChildMessage.Marshal(b, m, deterministic)
+}
+func (dst *Message_ChildMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_ChildMessage.Merge(dst, src)
+}
+func (m *Message_ChildMessage) XXX_Size() int {
+	return xxx_messageInfo_Message_ChildMessage.Size(m)
+}
+func (m *Message_ChildMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_ChildMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_ChildMessage proto.InternalMessageInfo
+
+func (m *Message_ChildMessage) GetF1() string {
+	if m != nil {
+		return m.F1
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF2() []string {
+	if m != nil {
+		return m.F2
+	}
+	return nil
+}
+
+func (m *Message_ChildMessage) GetF3() *Message {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto3_20180430.SiblingMessage")
+	proto.RegisterType((*Message)(nil), "google.golang.org.proto3_20180430.Message")
+	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto3_20180430.Message.MapBoolBoolEntry")
+	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto3_20180430.Message.MapBoolBytesEntry")
+	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto3_20180430.Message.MapBoolChildEnumEntry")
+	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto3_20180430.Message.MapBoolChildMessageEntry")
+	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolDoubleEntry")
+	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolFixed32Entry")
+	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolFixed64Entry")
+	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolFloatEntry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolInt32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolInt64Entry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSfixed32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSfixed64Entry")
+	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSiblingEnumEntry")
+	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSiblingMessageEntry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSint32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSint64Entry")
+	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto3_20180430.Message.MapBoolStringEntry")
+	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolUint32Entry")
+	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolUint64Entry")
+	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto3_20180430.Message.MapFixed32BoolEntry")
+	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto3_20180430.Message.MapInt32BoolEntry")
+	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto3_20180430.Message.MapInt64BoolEntry")
+	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto3_20180430.Message.MapSint32BoolEntry")
+	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto3_20180430.Message.MapSint64BoolEntry")
+	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto3_20180430.Message.MapStringBoolEntry")
+	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto3_20180430.Message.MapUint32BoolEntry")
+	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto3_20180430.Message.MapUint64BoolEntry")
+	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto3_20180430.Message.ChildMessage")
+	proto.RegisterEnum("google.golang.org.proto3_20180430.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
+	proto.RegisterEnum("google.golang.org.proto3_20180430.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
+}
+
+func init() {
+	proto.RegisterFile("proto3.v1.1.0-20180430-b4deda09/test.proto", fileDescriptor_test_0bc46c1644599234)
+}
+
+var fileDescriptor_test_0bc46c1644599234 = []byte{
+	// 1969 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x9a, 0x59, 0x73, 0xe3, 0xc6,
+	0x11, 0xc7, 0x09, 0x52, 0xc7, 0x6a, 0xc4, 0x13, 0x5c, 0x29, 0x53, 0x7a, 0x42, 0x14, 0xc7, 0x41,
+	0x94, 0x98, 0x12, 0xc9, 0x29, 0xc4, 0x71, 0x12, 0x7b, 0xa5, 0xb5, 0x1c, 0x3a, 0xe5, 0xad, 0xa4,
+	0xb0, 0xa5, 0x54, 0xca, 0x2f, 0x0a, 0x29, 0x82, 0x14, 0x77, 0x01, 0x42, 0x11, 0x49, 0x55, 0x54,
+	0x79, 0xf0, 0x57, 0xc8, 0x7d, 0xdf, 0xc7, 0x5b, 0xee, 0xfb, 0xbe, 0x9d, 0xda, 0xdc, 0xf7, 0xf9,
+	0x69, 0x52, 0x83, 0xc6, 0x5c, 0x00, 0xb8, 0x24, 0xc1, 0xf2, 0xc3, 0x56, 0x49, 0xcd, 0xff, 0xf4,
+	0x8f, 0xdd, 0xe8, 0xe9, 0x9e, 0xc1, 0x0a, 0xed, 0x5d, 0x5c, 0xfa, 0x63, 0xbf, 0x59, 0xbb, 0xaa,
+	0xd7, 0xea, 0xb5, 0x83, 0xc7, 0x1a, 0x07, 0xf5, 0xc7, 0x0f, 0x48, 0xf3, 0xe0, 0xb1, 0x0e, 0xe9,
+	0x3a, 0xdd, 0xf6, 0xc1, 0xeb, 0xf7, 0xc7, 0xce, 0x68, 0x5c, 0x0b, 0x44, 0xfa, 0xcb, 0xfb, 0xbe,
+	0xdf, 0x77, 0x9d, 0x5a, 0xdf, 0x77, 0xdb, 0xc3, 0x7e, 0xcd, 0xbf, 0xec, 0xc3, 0x07, 0xcd, 0x53,
+	0xb6, 0x6c, 0xd7, 0x45, 0xc5, 0xbb, 0x83, 0x8e, 0x3b, 0x18, 0xf6, 0xef, 0x38, 0xa3, 0x51, 0xbb,
+	0xef, 0xe8, 0x45, 0x94, 0xed, 0xd5, 0xb1, 0x66, 0x68, 0xe6, 0x86, 0x9d, 0xed, 0xd5, 0x83, 0xdf,
+	0x1b, 0x38, 0x6b, 0xe4, 0x82, 0xdf, 0x1b, 0xfa, 0x13, 0x28, 0xdb, 0x6b, 0xe2, 0x9c, 0xa1, 0x99,
+	0x9b, 0x8d, 0xbd, 0xda, 0x4c, 0x42, 0x2d, 0xf4, 0x6b, 0x67, 0x7b, 0xcd, 0xdd, 0x17, 0x6f, 0xa1,
+	0x75, 0xc6, 0x79, 0x05, 0x2a, 0xf8, 0x17, 0xe3, 0x81, 0x3f, 0x6c, 0xbb, 0xa7, 0x1d, 0xdf, 0x77,
+	0x71, 0xd7, 0xd0, 0xcc, 0x1b, 0x76, 0x9e, 0x19, 0x8f, 0x7c, 0xdf, 0xd5, 0x5f, 0x89, 0x8a, 0x5c,
+	0x34, 0x18, 0x8e, 0x9b, 0x0d, 0xec, 0x18, 0x9a, 0xb9, 0x6a, 0xf3, 0xa5, 0xcf, 0x52, 0xa3, 0xfe,
+	0x2a, 0x54, 0xe2, 0xb2, 0x11, 0xe8, 0x7a, 0x86, 0x66, 0x56, 0x6c, 0xbe, 0xfa, 0xee, 0x20, 0x26,
+	0x9c, 0x80, 0xb0, 0x6f, 0x68, 0x66, 0x41, 0x08, 0x4f, 0x40, 0x18, 0x01, 0x5b, 0x04, 0x9f, 0x1b,
+	0x9a, 0x99, 0x53, 0xc0, 0x16, 0x89, 0x81, 0x2d, 0x82, 0x07, 0x86, 0x66, 0xea, 0x2a, 0x38, 0x22,
+	0x9c, 0x80, 0xf0, 0x9e, 0xa1, 0x99, 0x2b, 0x2a, 0xd8, 0x22, 0xfa, 0xab, 0x51, 0x99, 0x0b, 0x7b,
+	0x83, 0x77, 0x3b, 0xdd, 0x66, 0x03, 0xdf, 0x37, 0x34, 0x73, 0xdd, 0xe6, 0x0e, 0x9e, 0x01, 0xb3,
+	0xfe, 0x1a, 0x54, 0x11, 0x70, 0xa6, 0x75, 0x0d, 0xcd, 0x2c, 0xd9, 0xdc, 0xc7, 0xdd, 0xd0, 0xae,
+	0x04, 0xd4, 0x73, 0xfd, 0xf6, 0x18, 0x7b, 0x86, 0x66, 0x66, 0x45, 0x40, 0xcf, 0x50, 0x63, 0x1c,
+	0x6f, 0x11, 0x3c, 0x34, 0x34, 0x73, 0x2d, 0x82, 0xb7, 0x48, 0x02, 0xde, 0x22, 0xd8, 0x37, 0x34,
+	0xb3, 0x1c, 0xc5, 0x47, 0xe2, 0xef, 0xfa, 0x93, 0x8e, 0xeb, 0xe0, 0x0b, 0x43, 0x33, 0x35, 0x11,
+	0xff, 0xd3, 0x81, 0x55, 0xcd, 0xe8, 0xf8, 0x72, 0x30, 0xec, 0xe3, 0x77, 0x05, 0xb5, 0x28, 0x32,
+	0x1a, 0x58, 0x95, 0x80, 0x3a, 0xd7, 0x63, 0x67, 0x84, 0x2f, 0x0d, 0xcd, 0xcc, 0x8b, 0x80, 0x8e,
+	0xa8, 0x51, 0xef, 0xa2, 0x2a, 0x97, 0x9d, 0x9d, 0x0f, 0xdc, 0xee, 0xa9, 0x33, 0x9c, 0x78, 0x78,
+	0x64, 0x68, 0x66, 0xb1, 0x41, 0xe6, 0xaf, 0xdf, 0xda, 0x6d, 0xba, 0xf8, 0x78, 0x38, 0xf1, 0x6c,
+	0x1e, 0x36, 0x37, 0xe9, 0x1e, 0xda, 0x8e, 0x50, 0x3c, 0x58, 0x86, 0xc7, 0xc1, 0x46, 0x79, 0xdd,
+	0xa2, 0x20, 0xb6, 0x6b, 0x6e, 0x2a, 0x2c, 0xb6, 0x77, 0x3a, 0x68, 0x4b, 0x2a, 0xbb, 0x60, 0xfb,
+	0x42, 0x58, 0x93, 0x20, 0xac, 0xda, 0x1c, 0xb4, 0x70, 0xd7, 0x07, 0x01, 0x55, 0x45, 0xb1, 0x72,
+	0xa3, 0x7e, 0x1f, 0xe1, 0x18, 0x83, 0x05, 0x75, 0x15, 0x04, 0x55, 0x9f, 0x1f, 0xc3, 0xc2, 0xd9,
+	0x8e, 0x90, 0x58, 0x40, 0x8f, 0xa0, 0xc2, 0xa5, 0x73, 0xe1, 0xb4, 0xc7, 0x4e, 0x17, 0x9a, 0xc1,
+	0x03, 0xcd, 0xc8, 0xd1, 0x6e, 0xc0, 0xac, 0x41, 0x37, 0x78, 0x14, 0x15, 0xb9, 0x0a, 0x36, 0xef,
+	0x6f, 0xa9, 0x6c, 0xd5, 0xe6, 0x8b, 0xa1, 0x1d, 0x98, 0xa8, 0xc4, 0x75, 0x61, 0x3b, 0xf8, 0x1d,
+	0x15, 0x56, 0x6c, 0xbe, 0x3e, 0xec, 0x07, 0xb2, 0x32, 0xec, 0x07, 0xbf, 0xa7, 0xca, 0x82, 0x50,
+	0x86, 0x0d, 0x21, 0xc2, 0xb6, 0x08, 0xfe, 0x03, 0x15, 0xe6, 0x14, 0xb6, 0x45, 0x62, 0x6c, 0x8b,
+	0xe0, 0x3f, 0x52, 0xa1, 0xae, 0xb2, 0x23, 0xca, 0xb0, 0x25, 0xfc, 0x89, 0x2a, 0x57, 0x54, 0xb6,
+	0x45, 0xf4, 0x3d, 0x54, 0xe6, 0x4a, 0xb6, 0xcf, 0xff, 0x4c, 0xa5, 0xeb, 0x36, 0x77, 0xc1, 0x9a,
+	0xc2, 0x6b, 0x51, 0x45, 0xf0, 0x99, 0xf8, 0x2f, 0x54, 0x5c, 0xb2, 0xb9, 0x17, 0xde, 0x15, 0xe4,
+	0xa8, 0xa0, 0x2b, 0xfc, 0x95, 0x4a, 0xb3, 0x22, 0x2a, 0x68, 0x0b, 0xb1, 0x6f, 0x60, 0x11, 0xfc,
+	0x37, 0xaa, 0x5c, 0x8b, 0x7c, 0x03, 0x8b, 0x24, 0x7c, 0x03, 0x8b, 0xe0, 0xbf, 0x53, 0x71, 0x39,
+	0xfa, 0x0d, 0x22, 0x59, 0x08, 0x1b, 0xc3, 0x3f, 0xa8, 0x56, 0x13, 0x59, 0x08, 0x3b, 0x83, 0x92,
+	0x59, 0xe8, 0x0c, 0xff, 0xd4, 0x82, 0xb1, 0x24, 0x32, 0x0b, 0xad, 0x41, 0x8e, 0x0a, 0x5a, 0xc3,
+	0xbf, 0xa8, 0x30, 0x2f, 0xa2, 0x82, 0xde, 0xe0, 0xa0, 0x2a, 0xd7, 0x49, 0xbd, 0xe1, 0xdf, 0x54,
+	0x9c, 0xba, 0x39, 0x30, 0x8f, 0xa2, 0x39, 0x0c, 0xd1, 0x76, 0x04, 0xc3, 0xf6, 0xd1, 0x7f, 0x28,
+	0x69, 0x99, 0xee, 0xa0, 0xc0, 0xd8, 0x66, 0x3a, 0x43, 0x5b, 0x52, 0x09, 0x4a, 0xdd, 0xe1, 0xbf,
+	0x10, 0xd8, 0xc2, 0xed, 0x41, 0x14, 0xae, 0x68, 0x0f, 0x2e, 0xc2, 0x31, 0x08, 0x0b, 0xeb, 0x7f,
+	0x10, 0x56, 0x9a, 0xfe, 0x10, 0x41, 0xb1, 0x90, 0xde, 0x89, 0x0a, 0x5e, 0xfb, 0x22, 0x68, 0x0d,
+	0xd0, 0x1f, 0xbe, 0x9c, 0x0d, 0x10, 0x6f, 0x58, 0x20, 0x73, 0x77, 0xda, 0x17, 0xb4, 0x8b, 0xd0,
+	0x7f, 0xc7, 0xc3, 0xf1, 0xe5, 0xb5, 0xbd, 0xe9, 0x09, 0x8b, 0x7e, 0x86, 0x8a, 0x9c, 0x00, 0x8d,
+	0xe0, 0x2b, 0x80, 0x78, 0xe3, 0xe2, 0x88, 0xa0, 0x0b, 0x01, 0x23, 0xef, 0x49, 0x26, 0xbd, 0x87,
+	0x4a, 0x1c, 0x12, 0x36, 0xa6, 0xaf, 0x02, 0xe5, 0x4d, 0x8b, 0x53, 0xa0, 0x85, 0x01, 0xa6, 0xe0,
+	0xc9, 0x36, 0x85, 0x13, 0xb6, 0xb5, 0xaf, 0xa5, 0xe6, 0x9c, 0x24, 0x70, 0xc2, 0xa6, 0x18, 0x49,
+	0x9a, 0x45, 0xf0, 0xd7, 0x97, 0x49, 0x9a, 0x45, 0x62, 0x49, 0xb3, 0x48, 0x2c, 0x69, 0x16, 0xc1,
+	0xdf, 0x58, 0x2a, 0x69, 0x0c, 0x23, 0x27, 0x2d, 0xc2, 0x09, 0xfb, 0xf1, 0x37, 0x97, 0x4a, 0x5a,
+	0x94, 0x13, 0x76, 0xf3, 0x01, 0x2a, 0x73, 0x0e, 0x6b, 0xd0, 0xdf, 0x02, 0xd0, 0x93, 0x8b, 0x83,
+	0xc2, 0xbe, 0x0f, 0xa4, 0xa2, 0xa7, 0x18, 0x75, 0x17, 0x55, 0x44, 0xea, 0x18, 0xeb, 0xdb, 0xc0,
+	0x7a, 0x2a, 0x45, 0xf2, 0x7a, 0x32, 0xac, 0xe4, 0xa9, 0x56, 0xa5, 0x1a, 0x60, 0x98, 0x7c, 0x27,
+	0x75, 0x35, 0x04, 0x63, 0x47, 0xad, 0x06, 0x98, 0x44, 0xb1, 0xec, 0x59, 0x04, 0x7f, 0x77, 0xb9,
+	0xec, 0xb1, 0xe7, 0xa4, 0x64, 0xcf, 0x22, 0x09, 0xd9, 0xb3, 0x08, 0xfe, 0xde, 0x92, 0xd9, 0x63,
+	0x30, 0x35, 0x7b, 0x91, 0xf2, 0x0b, 0x07, 0xe1, 0xf7, 0x53, 0x97, 0x1f, 0x8c, 0x4c, 0xb5, 0xfc,
+	0xc2, 0x31, 0xaa, 0x6c, 0x27, 0x18, 0xa3, 0x3f, 0x48, 0xbf, 0x9d, 0x02, 0x07, 0x91, 0xed, 0x04,
+	0x43, 0x58, 0xae, 0x06, 0x18, 0xc2, 0x3f, 0x4c, 0x5d, 0x0d, 0xc1, 0xb8, 0x56, 0xab, 0x01, 0x26,
+	0xf8, 0x05, 0xaa, 0x72, 0x88, 0x34, 0xc1, 0x7f, 0x04, 0xa4, 0x5b, 0x8b, 0x93, 0xf8, 0xd4, 0x06,
+	0x5a, 0xd9, 0x8b, 0x98, 0xf5, 0x6b, 0xb4, 0x1d, 0x21, 0xb2, 0xa9, 0xf7, 0x63, 0x80, 0xde, 0x4e,
+	0x09, 0x0d, 0x6d, 0xc0, 0xad, 0x7a, 0xf1, 0x4f, 0xf4, 0x2b, 0xb4, 0x25, 0x35, 0x42, 0x69, 0xae,
+	0xff, 0x04, 0xc8, 0x47, 0x69, 0xda, 0x21, 0x9f, 0xe8, 0x00, 0xd6, 0xbd, 0xd8, 0x07, 0xfa, 0x0b,
+	0x08, 0xc7, 0xb8, 0x2c, 0xe8, 0x9f, 0x02, 0xfa, 0x38, 0x35, 0x5a, 0x09, 0x7b, 0xcb, 0x4b, 0xfa,
+	0x8c, 0x95, 0x52, 0x30, 0x73, 0x60, 0xfc, 0xff, 0x2c, 0x55, 0x29, 0x05, 0x43, 0x58, 0xcc, 0x7f,
+	0x5a, 0x4a, 0xdc, 0xc4, 0xf6, 0xc5, 0x48, 0xa2, 0xfc, 0x3c, 0xd5, 0xbe, 0x80, 0x19, 0x2c, 0x30,
+	0x74, 0x5f, 0x08, 0x1b, 0xe3, 0x4c, 0x24, 0xce, 0x2f, 0x52, 0x71, 0x4e, 0x12, 0x38, 0xc2, 0x26,
+	0x25, 0xcd, 0x22, 0x80, 0xf9, 0x65, 0xda, 0xa4, 0x59, 0x24, 0x96, 0x34, 0x30, 0xc9, 0x49, 0x63,
+	0x94, 0x5f, 0xa5, 0x4e, 0x9a, 0x8c, 0x61, 0x49, 0x53, 0x39, 0x13, 0x89, 0xf3, 0xeb, 0xd4, 0x49,
+	0x8b, 0x72, 0x84, 0x8d, 0x4d, 0x97, 0x70, 0xa2, 0x01, 0xe8, 0xc5, 0x54, 0xd3, 0x25, 0x1c, 0xc1,
+	0x82, 0x44, 0x9f, 0x86, 0x64, 0xe4, 0xa9, 0x0b, 0xba, 0x25, 0x90, 0x7e, 0x93, 0x2e, 0x75, 0x81,
+	0x87, 0x48, 0xea, 0xb8, 0x4d, 0x37, 0x10, 0xf2, 0x87, 0x8e, 0xdf, 0x03, 0xc4, 0x7b, 0x73, 0x86,
+	0x66, 0xde, 0x68, 0x65, 0xec, 0x8d, 0xc0, 0x18, 0x28, 0x76, 0xd1, 0x26, 0x28, 0xe0, 0xa4, 0xf8,
+	0x3e, 0x2a, 0x59, 0x6d, 0x65, 0x6c, 0x58, 0x07, 0x27, 0xd7, 0x47, 0x50, 0x1e, 0x34, 0xe1, 0xb1,
+	0xf5, 0xfd, 0x54, 0x54, 0x69, 0x65, 0x6c, 0x58, 0x1a, 0x9e, 0x3b, 0xb9, 0x2a, 0x3c, 0x74, 0x7e,
+	0x80, 0xaa, 0x0a, 0x5c, 0x15, 0x9e, 0x1a, 0x65, 0x9e, 0x45, 0xf0, 0x07, 0xa9, 0x28, 0x27, 0xf3,
+	0x2c, 0xa2, 0xf2, 0x2c, 0x82, 0x3f, 0x44, 0x45, 0xba, 0xc2, 0x93, 0x55, 0xe1, 0x79, 0xed, 0xc3,
+	0x54, 0xb5, 0xa2, 0xf0, 0x2c, 0xa2, 0x3f, 0x8a, 0x0a, 0xa0, 0x62, 0x27, 0xa0, 0x8f, 0x50, 0xd9,
+	0x7a, 0x2b, 0x63, 0xc3, 0x6a, 0x76, 0x5a, 0x32, 0x51, 0x31, 0x64, 0x32, 0xe1, 0x47, 0xa9, 0xb0,
+	0xd4, 0xca, 0xd8, 0xe0, 0x80, 0x9f, 0x74, 0x78, 0x04, 0x70, 0xcc, 0xf9, 0x18, 0x95, 0x65, 0x79,
+	0x04, 0x70, 0x50, 0x51, 0xa9, 0x16, 0xc1, 0x1f, 0xa7, 0xaa, 0x35, 0x95, 0x1a, 0x5c, 0x80, 0x15,
+	0xaa, 0x45, 0xf0, 0x27, 0xa8, 0xb0, 0x1c, 0xa1, 0xca, 0xd1, 0x86, 0xc7, 0x83, 0x4f, 0x52, 0x9d,
+	0xc6, 0xa3, 0x0d, 0xe7, 0xbb, 0xc8, 0x1c, 0x0c, 0xf7, 0x4f, 0x51, 0xd5, 0x86, 0xc8, 0x1c, 0x4c,
+	0x67, 0x1e, 0x01, 0x8c, 0xe6, 0x4f, 0x53, 0x51, 0x9e, 0x47, 0x00, 0xc3, 0xb5, 0x8d, 0xca, 0xa0,
+	0x91, 0x26, 0xeb, 0x67, 0x72, 0xe9, 0x5f, 0x9c, 0xb5, 0x32, 0x36, 0x84, 0x2a, 0xa6, 0xe9, 0x3d,
+	0x54, 0x95, 0x11, 0x6c, 0xaa, 0x7c, 0x36, 0xb7, 0xd4, 0x5b, 0xb3, 0x56, 0xc6, 0xae, 0x08, 0x10,
+	0x9b, 0x22, 0xa7, 0x48, 0x67, 0x25, 0x25, 0xcd, 0xce, 0xcf, 0xe5, 0xd2, 0xbc, 0x32, 0x6b, 0x65,
+	0xec, 0x72, 0x58, 0x88, 0x62, 0x4e, 0x9e, 0xa3, 0x2d, 0x15, 0xc0, 0xc2, 0xf9, 0x7c, 0x2e, 0xe5,
+	0xfb, 0xb2, 0x56, 0xc6, 0xae, 0xca, 0x18, 0x16, 0x0a, 0xaf, 0x2d, 0x78, 0xc6, 0x75, 0xfc, 0x05,
+	0xf6, 0x90, 0xf3, 0xd2, 0x43, 0xae, 0x47, 0x75, 0x0d, 0xfc, 0xc5, 0x24, 0x5d, 0x23, 0xaa, 0x6b,
+	0xe2, 0x2f, 0x25, 0xe9, 0x9a, 0x3b, 0xf7, 0x50, 0x5e, 0x49, 0xe9, 0x4b, 0xf8, 0x7f, 0x05, 0x3b,
+	0x4f, 0xa2, 0x72, 0xf4, 0xc6, 0xae, 0x97, 0x51, 0xee, 0xbe, 0x73, 0x1d, 0x00, 0x6f, 0xd8, 0xf4,
+	0x47, 0xfd, 0x26, 0x5a, 0xbd, 0x6a, 0xbb, 0x13, 0x07, 0x67, 0x03, 0x1b, 0xfc, 0xf2, 0x44, 0xf6,
+	0x71, 0x6d, 0xe7, 0x29, 0x54, 0x89, 0x5d, 0xc7, 0x67, 0x39, 0x58, 0x95, 0x1d, 0xdc, 0x42, 0x7a,
+	0xfc, 0xa6, 0x3d, 0xcb, 0x43, 0x25, 0xd9, 0xc3, 0xc9, 0xfc, 0x1e, 0x0a, 0x53, 0x83, 0x08, 0xaf,
+	0x0e, 0xb3, 0x1c, 0xe4, 0xa6, 0x07, 0x31, 0xa7, 0x07, 0x7d, 0x7a, 0x10, 0x73, 0x7a, 0x58, 0x91,
+	0x3d, 0x1c, 0xa2, 0x6a, 0xc2, 0x65, 0x75, 0x96, 0x8b, 0x75, 0xd9, 0xc5, 0x11, 0xba, 0x99, 0x74,
+	0x07, 0x9d, 0xe5, 0xa3, 0x94, 0x9c, 0x4b, 0x71, 0xb9, 0x9c, 0xe5, 0x20, 0xfb, 0x90, 0x38, 0xe6,
+	0x4c, 0xc5, 0xda, 0xc3, 0xe2, 0x98, 0xd3, 0x47, 0x39, 0xf9, 0x81, 0x48, 0xb7, 0xbc, 0x59, 0x1e,
+	0xb4, 0x29, 0x45, 0x21, 0xee, 0x6f, 0xb3, 0x3c, 0x6c, 0x24, 0xe7, 0x52, 0x5c, 0xcd, 0x66, 0x39,
+	0xc8, 0xcb, 0x0e, 0xae, 0xd1, 0x56, 0xe2, 0x8d, 0x2b, 0xc1, 0xc9, 0x5b, 0x64, 0x27, 0x69, 0x5f,
+	0xcb, 0x4a, 0xe8, 0x17, 0x10, 0x9e, 0x76, 0xef, 0x4a, 0xa0, 0xdf, 0x91, 0xe9, 0x4b, 0xbc, 0xaa,
+	0x95, 0xbe, 0xc0, 0x04, 0xbd, 0x6c, 0xca, 0xf5, 0x2b, 0x81, 0xff, 0xb4, 0x1a, 0xfd, 0xa2, 0xef,
+	0x6e, 0x25, 0xec, 0x7b, 0xd0, 0xce, 0xf4, 0xab, 0x57, 0x02, 0xf9, 0xcd, 0x6a, 0xe4, 0x29, 0xde,
+	0xe6, 0xc6, 0x0a, 0x46, 0xbd, 0x80, 0xc9, 0xcc, 0xd5, 0x59, 0xed, 0x1c, 0x6a, 0x36, 0x72, 0xb7,
+	0x92, 0x3d, 0x54, 0xe6, 0xf3, 0x70, 0x32, 0xdd, 0x43, 0x61, 0xbe, 0x91, 0xa2, 0x5e, 0x88, 0x64,
+	0x07, 0xb9, 0xf9, 0x83, 0x98, 0xe2, 0x41, 0x9f, 0x3f, 0x88, 0x29, 0x1e, 0x56, 0x66, 0x79, 0x80,
+	0x2e, 0x16, 0xbd, 0x9e, 0xc8, 0x2e, 0xd6, 0xe7, 0x0c, 0x43, 0xbd, 0x77, 0xc8, 0x1e, 0x36, 0x66,
+	0x78, 0xd8, 0xad, 0xa1, 0x0d, 0x71, 0x08, 0xdc, 0x40, 0xab, 0x87, 0xcf, 0xbd, 0xad, 0x75, 0x58,
+	0xce, 0xd0, 0x1f, 0x8f, 0xec, 0xc3, 0xb7, 0xbf, 0xb5, 0xac, 0xe9, 0x9b, 0x68, 0xfd, 0x76, 0xeb,
+	0xd0, 0x7e, 0xee, 0xd9, 0xe3, 0x72, 0xf6, 0xa8, 0xc0, 0x8e, 0xab, 0x93, 0xe1, 0xc0, 0x1f, 0xee,
+	0xd5, 0xd1, 0xa6, 0x7c, 0xf0, 0x4a, 0x72, 0x80, 0xf4, 0xbc, 0x70, 0xf0, 0x40, 0x3b, 0x7a, 0xfe,
+	0xf9, 0x77, 0xf4, 0x07, 0xe3, 0xf3, 0x49, 0xa7, 0x76, 0xe6, 0x7b, 0xfb, 0x50, 0xc3, 0xfb, 0x41,
+	0xfd, 0x76, 0x26, 0xbd, 0xfd, 0xab, 0xc6, 0xfe, 0x60, 0x38, 0x76, 0x2e, 0x87, 0x6d, 0x37, 0xf8,
+	0x03, 0x8a, 0xe0, 0x83, 0xd1, 0xbe, 0xeb, 0xf4, 0xdb, 0x67, 0xd7, 0xfb, 0x33, 0xfe, 0xe4, 0xa2,
+	0xb3, 0x06, 0x82, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x38, 0x57, 0x88, 0xc6, 0x9c, 0x21, 0x00,
+	0x00,
+}
diff --git a/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09/test.proto b/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09/test.proto
new file mode 100644
index 0000000..78f3747
--- /dev/null
+++ b/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09/test.proto
@@ -0,0 +1,136 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto3";
+
+package google.golang.org.proto3_20180430;
+option go_package = "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09";
+
+enum SiblingEnum {
+	ALPHA   = 0;
+	BRAVO   = 10;
+	CHARLIE = 200;
+}
+
+message SiblingMessage {
+	string          f1 = 1;
+	repeated string f2 = 2;
+	Message         f3 = 3;
+}
+
+message Message {
+	enum ChildEnum {
+		ALPHA   = 0;
+		BRAVO   = 1;
+		CHARLIE = 2;
+	}
+	message ChildMessage {
+		string          f1 = 1;
+		repeated string f2 = 2;
+		Message         f3 = 3;
+	}
+
+	// Optional fields.
+	bool     optional_bool     = 100;
+	int32    optional_int32    = 101;
+	sint32   optional_sint32   = 102;
+	uint32   optional_uint32   = 103;
+	int64    optional_int64    = 104;
+	sint64   optional_sint64   = 105;
+	uint64   optional_uint64   = 106;
+	fixed32  optional_fixed32  = 107;
+	sfixed32 optional_sfixed32 = 108;
+	float    optional_float    = 109;
+	fixed64  optional_fixed64  = 110;
+	sfixed64 optional_sfixed64 = 111;
+	double   optional_double   = 112;
+	string   optional_string   = 113;
+	bytes    optional_bytes    = 114;
+
+	ChildEnum      optional_child_enum      = 115;
+	ChildMessage   optional_child_message   = 116;
+	SiblingEnum    optional_sibling_enum    = 117;
+	SiblingMessage optional_sibling_message = 118;
+
+	// Repeated fields.
+	repeated bool     repeated_bool     = 200;
+	repeated int32    repeated_int32    = 201;
+	repeated sint32   repeated_sint32   = 202;
+	repeated uint32   repeated_uint32   = 203;
+	repeated int64    repeated_int64    = 204;
+	repeated sint64   repeated_sint64   = 205;
+	repeated uint64   repeated_uint64   = 206;
+	repeated fixed32  repeated_fixed32  = 207;
+	repeated sfixed32 repeated_sfixed32 = 208;
+	repeated float    repeated_float    = 209;
+	repeated fixed64  repeated_fixed64  = 210;
+	repeated sfixed64 repeated_sfixed64 = 211;
+	repeated double   repeated_double   = 212;
+	repeated string   repeated_string   = 213;
+	repeated bytes    repeated_bytes    = 214;
+
+	repeated ChildEnum      repeated_child_enum      = 215;
+	repeated ChildMessage   repeated_child_message   = 216;
+	repeated SiblingEnum    repeated_sibling_enum    = 217;
+	repeated SiblingMessage repeated_sibling_message = 218;
+
+	// Map fields.
+	map<bool, bool>     map_bool_bool     = 300;
+	map<bool, int32>    map_bool_int32    = 301;
+	map<bool, sint32>   map_bool_sint32   = 302;
+	map<bool, uint32>   map_bool_uint32   = 303;
+	map<bool, int64>    map_bool_int64    = 304;
+	map<bool, sint64>   map_bool_sint64   = 305;
+	map<bool, uint64>   map_bool_uint64   = 306;
+	map<bool, fixed32>  map_bool_fixed32  = 307;
+	map<bool, sfixed32> map_bool_sfixed32 = 308;
+	map<bool, float>    map_bool_float    = 309;
+	map<bool, fixed64>  map_bool_fixed64  = 310;
+	map<bool, sfixed64> map_bool_sfixed64 = 311;
+	map<bool, double>   map_bool_double   = 312;
+	map<bool, string>   map_bool_string   = 313;
+	map<bool, bytes>    map_bool_bytes    = 314;
+
+	map<bool, ChildEnum>      map_bool_child_enum      = 315;
+	map<bool, ChildMessage>   map_bool_child_message   = 316;
+	map<bool, SiblingEnum>    map_bool_sibling_enum    = 317;
+	map<bool, SiblingMessage> map_bool_sibling_message = 318;
+
+	map<int32, bool>   map_int32_bool   = 319;
+	map<sint32, bool>  map_sint32_bool  = 320;
+	map<uint32, bool>  map_uint32_bool  = 321;
+	map<int64, bool>   map_int64_bool   = 322;
+	map<sint64, bool>  map_sint64_bool  = 323;
+	map<uint64, bool>  map_uint64_bool  = 324;
+	map<fixed32, bool> map_fixed32_bool = 325;
+	map<string, bool>  map_string_bool  = 326;
+
+	// Oneof fields.
+	oneof oneof_union {
+		bool     oneof_bool     = 400;
+		int32    oneof_int32    = 401;
+		sint32   oneof_sint32   = 402;
+		uint32   oneof_uint32   = 403;
+		int64    oneof_int64    = 404;
+		sint64   oneof_sint64   = 405;
+		uint64   oneof_uint64   = 406;
+		fixed32  oneof_fixed32  = 407;
+		sfixed32 oneof_sfixed32 = 408;
+		float    oneof_float    = 409;
+		fixed64  oneof_fixed64  = 410;
+		sfixed64 oneof_sfixed64 = 411;
+		double   oneof_double   = 412;
+		string   oneof_string   = 413;
+		bytes    oneof_bytes    = 414;
+
+		ChildEnum      oneof_child_enum      = 415;
+		ChildMessage   oneof_child_message   = 416;
+		SiblingEnum    oneof_sibling_enum    = 417;
+		SiblingMessage oneof_sibling_message = 418;
+
+		string oneof_string1 = 419;
+		string oneof_string2 = 420;
+		string oneof_string3 = 421;
+	}
+}
diff --git a/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61/test.pb.go b/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61/test.pb.go
new file mode 100644
index 0000000..45b4ca2
--- /dev/null
+++ b/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61/test.pb.go
@@ -0,0 +1,1584 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: proto3.v1.2.0-20180814-aa810b61/test.proto
+
+package proto3_v1_2_0_20180814_aa810b61 // import "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61"
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type SiblingEnum int32
+
+const (
+	SiblingEnum_ALPHA   SiblingEnum = 0
+	SiblingEnum_BRAVO   SiblingEnum = 10
+	SiblingEnum_CHARLIE SiblingEnum = 200
+)
+
+var SiblingEnum_name = map[int32]string{
+	0:   "ALPHA",
+	10:  "BRAVO",
+	200: "CHARLIE",
+}
+var SiblingEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   10,
+	"CHARLIE": 200,
+}
+
+func (x SiblingEnum) String() string {
+	return proto.EnumName(SiblingEnum_name, int32(x))
+}
+func (SiblingEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_test_9b512d5794e43b6c, []int{0}
+}
+
+type Message_ChildEnum int32
+
+const (
+	Message_ALPHA   Message_ChildEnum = 0
+	Message_BRAVO   Message_ChildEnum = 1
+	Message_CHARLIE Message_ChildEnum = 2
+)
+
+var Message_ChildEnum_name = map[int32]string{
+	0: "ALPHA",
+	1: "BRAVO",
+	2: "CHARLIE",
+}
+var Message_ChildEnum_value = map[string]int32{
+	"ALPHA":   0,
+	"BRAVO":   1,
+	"CHARLIE": 2,
+}
+
+func (x Message_ChildEnum) String() string {
+	return proto.EnumName(Message_ChildEnum_name, int32(x))
+}
+func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_test_9b512d5794e43b6c, []int{1, 0}
+}
+
+type SiblingMessage struct {
+	F1                   string   `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
+	F2                   []string `protobuf:"bytes,2,rep,name=f2,proto3" json:"f2,omitempty"`
+	F3                   *Message `protobuf:"bytes,3,opt,name=f3,proto3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SiblingMessage) Reset()         { *m = SiblingMessage{} }
+func (m *SiblingMessage) String() string { return proto.CompactTextString(m) }
+func (*SiblingMessage) ProtoMessage()    {}
+func (*SiblingMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_9b512d5794e43b6c, []int{0}
+}
+func (m *SiblingMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SiblingMessage.Unmarshal(m, b)
+}
+func (m *SiblingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SiblingMessage.Marshal(b, m, deterministic)
+}
+func (dst *SiblingMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SiblingMessage.Merge(dst, src)
+}
+func (m *SiblingMessage) XXX_Size() int {
+	return xxx_messageInfo_SiblingMessage.Size(m)
+}
+func (m *SiblingMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_SiblingMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SiblingMessage proto.InternalMessageInfo
+
+func (m *SiblingMessage) GetF1() string {
+	if m != nil {
+		return m.F1
+	}
+	return ""
+}
+
+func (m *SiblingMessage) GetF2() []string {
+	if m != nil {
+		return m.F2
+	}
+	return nil
+}
+
+func (m *SiblingMessage) GetF3() *Message {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+type Message struct {
+	// Optional fields.
+	OptionalBool           bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool,proto3" json:"optional_bool,omitempty"`
+	OptionalInt32          int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32,proto3" json:"optional_int32,omitempty"`
+	OptionalSint32         int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32,proto3" json:"optional_sint32,omitempty"`
+	OptionalUint32         uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32,proto3" json:"optional_uint32,omitempty"`
+	OptionalInt64          int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64,proto3" json:"optional_int64,omitempty"`
+	OptionalSint64         int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64,proto3" json:"optional_sint64,omitempty"`
+	OptionalUint64         uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64,proto3" json:"optional_uint64,omitempty"`
+	OptionalFixed32        uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32,proto3" json:"optional_fixed32,omitempty"`
+	OptionalSfixed32       int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32,proto3" json:"optional_sfixed32,omitempty"`
+	OptionalFloat          float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat,proto3" json:"optional_float,omitempty"`
+	OptionalFixed64        uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64,proto3" json:"optional_fixed64,omitempty"`
+	OptionalSfixed64       int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64,proto3" json:"optional_sfixed64,omitempty"`
+	OptionalDouble         float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble,proto3" json:"optional_double,omitempty"`
+	OptionalString         string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString,proto3" json:"optional_string,omitempty"`
+	OptionalBytes          []byte                `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
+	OptionalChildEnum      Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,proto3,enum=google.golang.org.proto3_20180814.Message_ChildEnum" json:"optional_child_enum,omitempty"`
+	OptionalChildMessage   *Message_ChildMessage `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage,proto3" json:"optional_child_message,omitempty"`
+	OptionalSiblingEnum    SiblingEnum           `protobuf:"varint,117,opt,name=optional_sibling_enum,json=optionalSiblingEnum,proto3,enum=google.golang.org.proto3_20180814.SiblingEnum" json:"optional_sibling_enum,omitempty"`
+	OptionalSiblingMessage *SiblingMessage       `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage,proto3" json:"optional_sibling_message,omitempty"`
+	// Repeated fields.
+	RepeatedBool           []bool                  `protobuf:"varint,200,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
+	RepeatedInt32          []int32                 `protobuf:"varint,201,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
+	RepeatedSint32         []int32                 `protobuf:"zigzag32,202,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
+	RepeatedUint32         []uint32                `protobuf:"varint,203,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
+	RepeatedInt64          []int64                 `protobuf:"varint,204,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
+	RepeatedSint64         []int64                 `protobuf:"zigzag64,205,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
+	RepeatedUint64         []uint64                `protobuf:"varint,206,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
+	RepeatedFixed32        []uint32                `protobuf:"fixed32,207,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
+	RepeatedSfixed32       []int32                 `protobuf:"fixed32,208,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
+	RepeatedFloat          []float32               `protobuf:"fixed32,209,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
+	RepeatedFixed64        []uint64                `protobuf:"fixed64,210,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed64       []int64                 `protobuf:"fixed64,211,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
+	RepeatedDouble         []float64               `protobuf:"fixed64,212,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
+	RepeatedString         []string                `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
+	RepeatedBytes          [][]byte                `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
+	RepeatedChildEnum      []Message_ChildEnum     `protobuf:"varint,215,rep,packed,name=repeated_child_enum,json=repeatedChildEnum,proto3,enum=google.golang.org.proto3_20180814.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
+	RepeatedChildMessage   []*Message_ChildMessage `protobuf:"bytes,216,rep,name=repeated_child_message,json=repeatedChildMessage,proto3" json:"repeated_child_message,omitempty"`
+	RepeatedSiblingEnum    []SiblingEnum           `protobuf:"varint,217,rep,packed,name=repeated_sibling_enum,json=repeatedSiblingEnum,proto3,enum=google.golang.org.proto3_20180814.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
+	RepeatedSiblingMessage []*SiblingMessage       `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage,proto3" json:"repeated_sibling_message,omitempty"`
+	// Map fields.
+	MapBoolBool           map[bool]bool                  `protobuf:"bytes,300,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,301,rep,name=map_bool_int32,json=mapBoolInt32,proto3" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,302,rep,name=map_bool_sint32,json=mapBoolSint32,proto3" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"`
+	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,303,rep,name=map_bool_uint32,json=mapBoolUint32,proto3" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,304,rep,name=map_bool_int64,json=mapBoolInt64,proto3" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,305,rep,name=map_bool_sint64,json=mapBoolSint64,proto3" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"zigzag64,2,opt,name=value,proto3"`
+	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,306,rep,name=map_bool_uint64,json=mapBoolUint64,proto3" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,307,rep,name=map_bool_fixed32,json=mapBoolFixed32,proto3" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
+	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,308,rep,name=map_bool_sfixed32,json=mapBoolSfixed32,proto3" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
+	MapBoolFloat          map[bool]float32               `protobuf:"bytes,309,rep,name=map_bool_float,json=mapBoolFloat,proto3" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
+	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,310,rep,name=map_bool_fixed64,json=mapBoolFixed64,proto3" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
+	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,311,rep,name=map_bool_sfixed64,json=mapBoolSfixed64,proto3" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
+	MapBoolDouble         map[bool]float64               `protobuf:"bytes,312,rep,name=map_bool_double,json=mapBoolDouble,proto3" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
+	MapBoolString         map[bool]string                `protobuf:"bytes,313,rep,name=map_bool_string,json=mapBoolString,proto3" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,314,rep,name=map_bool_bytes,json=mapBoolBytes,proto3" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,315,rep,name=map_bool_child_enum,json=mapBoolChildEnum,proto3" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=google.golang.org.proto3_20180814.Message_ChildEnum"`
+	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,316,rep,name=map_bool_child_message,json=mapBoolChildMessage,proto3" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,317,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum,proto3" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=google.golang.org.proto3_20180814.SiblingEnum"`
+	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,318,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage,proto3" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,319,rep,name=map_int32_bool,json=mapInt32Bool,proto3" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,320,rep,name=map_sint32_bool,json=mapSint32Bool,proto3" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,321,rep,name=map_uint32_bool,json=mapUint32Bool,proto3" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,322,rep,name=map_int64_bool,json=mapInt64Bool,proto3" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,323,rep,name=map_sint64_bool,json=mapSint64Bool,proto3" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,324,rep,name=map_uint64_bool,json=mapUint64Bool,proto3" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,325,rep,name=map_fixed32_bool,json=mapFixed32Bool,proto3" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapStringBool         map[string]bool                `protobuf:"bytes,326,rep,name=map_string_bool,json=mapStringBool,proto3" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	// Oneof fields.
+	//
+	// Types that are valid to be assigned to OneofUnion:
+	//	*Message_OneofBool
+	//	*Message_OneofInt32
+	//	*Message_OneofSint32
+	//	*Message_OneofUint32
+	//	*Message_OneofInt64
+	//	*Message_OneofSint64
+	//	*Message_OneofUint64
+	//	*Message_OneofFixed32
+	//	*Message_OneofSfixed32
+	//	*Message_OneofFloat
+	//	*Message_OneofFixed64
+	//	*Message_OneofSfixed64
+	//	*Message_OneofDouble
+	//	*Message_OneofString
+	//	*Message_OneofBytes
+	//	*Message_OneofChildEnum
+	//	*Message_OneofChildMessage
+	//	*Message_OneofSiblingEnum
+	//	*Message_OneofSiblingMessage
+	//	*Message_OneofString1
+	//	*Message_OneofString2
+	//	*Message_OneofString3
+	OneofUnion           isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *Message) Reset()         { *m = Message{} }
+func (m *Message) String() string { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()    {}
+func (*Message) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_9b512d5794e43b6c, []int{1}
+}
+func (m *Message) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message.Unmarshal(m, b)
+}
+func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
+}
+func (dst *Message) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message.Merge(dst, src)
+}
+func (m *Message) XXX_Size() int {
+	return xxx_messageInfo_Message.Size(m)
+}
+func (m *Message) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message proto.InternalMessageInfo
+
+func (m *Message) GetOptionalBool() bool {
+	if m != nil {
+		return m.OptionalBool
+	}
+	return false
+}
+
+func (m *Message) GetOptionalInt32() int32 {
+	if m != nil {
+		return m.OptionalInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint32() int32 {
+	if m != nil {
+		return m.OptionalSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint32() uint32 {
+	if m != nil {
+		return m.OptionalUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalInt64() int64 {
+	if m != nil {
+		return m.OptionalInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSint64() int64 {
+	if m != nil {
+		return m.OptionalSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalUint64() uint64 {
+	if m != nil {
+		return m.OptionalUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed32() uint32 {
+	if m != nil {
+		return m.OptionalFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed32() int32 {
+	if m != nil {
+		return m.OptionalSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFloat() float32 {
+	if m != nil {
+		return m.OptionalFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalFixed64() uint64 {
+	if m != nil {
+		return m.OptionalFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalSfixed64() int64 {
+	if m != nil {
+		return m.OptionalSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalDouble() float64 {
+	if m != nil {
+		return m.OptionalDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOptionalString() string {
+	if m != nil {
+		return m.OptionalString
+	}
+	return ""
+}
+
+func (m *Message) GetOptionalBytes() []byte {
+	if m != nil {
+		return m.OptionalBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
+	if m != nil {
+		return m.OptionalChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
+	if m != nil {
+		return m.OptionalChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
+	if m != nil {
+		return m.OptionalSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
+	if m != nil {
+		return m.OptionalSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedBool() []bool {
+	if m != nil {
+		return m.RepeatedBool
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt32() []int32 {
+	if m != nil {
+		return m.RepeatedInt32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint32() []int32 {
+	if m != nil {
+		return m.RepeatedSint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint32() []uint32 {
+	if m != nil {
+		return m.RepeatedUint32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedInt64() []int64 {
+	if m != nil {
+		return m.RepeatedInt64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSint64() []int64 {
+	if m != nil {
+		return m.RepeatedSint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedUint64() []uint64 {
+	if m != nil {
+		return m.RepeatedUint64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed32() []uint32 {
+	if m != nil {
+		return m.RepeatedFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed32() []int32 {
+	if m != nil {
+		return m.RepeatedSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFloat() []float32 {
+	if m != nil {
+		return m.RepeatedFloat
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedFixed64() []uint64 {
+	if m != nil {
+		return m.RepeatedFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSfixed64() []int64 {
+	if m != nil {
+		return m.RepeatedSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedDouble() []float64 {
+	if m != nil {
+		return m.RepeatedDouble
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedString() []string {
+	if m != nil {
+		return m.RepeatedString
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedBytes() [][]byte {
+	if m != nil {
+		return m.RepeatedBytes
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
+	if m != nil {
+		return m.RepeatedChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
+	if m != nil {
+		return m.RepeatedChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
+	if m != nil {
+		return m.RepeatedSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
+	if m != nil {
+		return m.RepeatedSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBool() map[bool]bool {
+	if m != nil {
+		return m.MapBoolBool
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolInt32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolUint32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolInt64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolInt64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSint64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolUint64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolUint64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
+	if m != nil {
+		return m.MapBoolFixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
+	if m != nil {
+		return m.MapBoolSfixed32
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFloat() map[bool]float32 {
+	if m != nil {
+		return m.MapBoolFloat
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
+	if m != nil {
+		return m.MapBoolFixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
+	if m != nil {
+		return m.MapBoolSfixed64
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolDouble() map[bool]float64 {
+	if m != nil {
+		return m.MapBoolDouble
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolString() map[bool]string {
+	if m != nil {
+		return m.MapBoolString
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolBytes() map[bool][]byte {
+	if m != nil {
+		return m.MapBoolBytes
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
+	if m != nil {
+		return m.MapBoolChildEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
+	if m != nil {
+		return m.MapBoolChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
+	if m != nil {
+		return m.MapBoolSiblingEnum
+	}
+	return nil
+}
+
+func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
+	if m != nil {
+		return m.MapBoolSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapInt32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint32Bool() map[int32]bool {
+	if m != nil {
+		return m.MapSint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapUint32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapInt64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapInt64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapSint64Bool() map[int64]bool {
+	if m != nil {
+		return m.MapSint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapUint64Bool() map[uint64]bool {
+	if m != nil {
+		return m.MapUint64Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapFixed32Bool() map[uint32]bool {
+	if m != nil {
+		return m.MapFixed32Bool
+	}
+	return nil
+}
+
+func (m *Message) GetMapStringBool() map[string]bool {
+	if m != nil {
+		return m.MapStringBool
+	}
+	return nil
+}
+
+type isMessage_OneofUnion interface {
+	isMessage_OneofUnion()
+}
+
+type Message_OneofBool struct {
+	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,json=oneofBool,proto3,oneof"`
+}
+
+type Message_OneofInt32 struct {
+	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,json=oneofInt32,proto3,oneof"`
+}
+
+type Message_OneofSint32 struct {
+	OneofSint32 int32 `protobuf:"zigzag32,402,opt,name=oneof_sint32,json=oneofSint32,proto3,oneof"`
+}
+
+type Message_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,json=oneofUint32,proto3,oneof"`
+}
+
+type Message_OneofInt64 struct {
+	OneofInt64 int64 `protobuf:"varint,404,opt,name=oneof_int64,json=oneofInt64,proto3,oneof"`
+}
+
+type Message_OneofSint64 struct {
+	OneofSint64 int64 `protobuf:"zigzag64,405,opt,name=oneof_sint64,json=oneofSint64,proto3,oneof"`
+}
+
+type Message_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,406,opt,name=oneof_uint64,json=oneofUint64,proto3,oneof"`
+}
+
+type Message_OneofFixed32 struct {
+	OneofFixed32 uint32 `protobuf:"fixed32,407,opt,name=oneof_fixed32,json=oneofFixed32,proto3,oneof"`
+}
+
+type Message_OneofSfixed32 struct {
+	OneofSfixed32 int32 `protobuf:"fixed32,408,opt,name=oneof_sfixed32,json=oneofSfixed32,proto3,oneof"`
+}
+
+type Message_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,409,opt,name=oneof_float,json=oneofFloat,proto3,oneof"`
+}
+
+type Message_OneofFixed64 struct {
+	OneofFixed64 uint64 `protobuf:"fixed64,410,opt,name=oneof_fixed64,json=oneofFixed64,proto3,oneof"`
+}
+
+type Message_OneofSfixed64 struct {
+	OneofSfixed64 int64 `protobuf:"fixed64,411,opt,name=oneof_sfixed64,json=oneofSfixed64,proto3,oneof"`
+}
+
+type Message_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,412,opt,name=oneof_double,json=oneofDouble,proto3,oneof"`
+}
+
+type Message_OneofString struct {
+	OneofString string `protobuf:"bytes,413,opt,name=oneof_string,json=oneofString,proto3,oneof"`
+}
+
+type Message_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,414,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
+}
+
+type Message_OneofChildEnum struct {
+	OneofChildEnum Message_ChildEnum `protobuf:"varint,415,opt,name=oneof_child_enum,json=oneofChildEnum,proto3,enum=google.golang.org.proto3_20180814.Message_ChildEnum,oneof"`
+}
+
+type Message_OneofChildMessage struct {
+	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,416,opt,name=oneof_child_message,json=oneofChildMessage,proto3,oneof"`
+}
+
+type Message_OneofSiblingEnum struct {
+	OneofSiblingEnum SiblingEnum `protobuf:"varint,417,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,proto3,enum=google.golang.org.proto3_20180814.SiblingEnum,oneof"`
+}
+
+type Message_OneofSiblingMessage struct {
+	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,418,opt,name=oneof_sibling_message,json=oneofSiblingMessage,proto3,oneof"`
+}
+
+type Message_OneofString1 struct {
+	OneofString1 string `protobuf:"bytes,419,opt,name=oneof_string1,json=oneofString1,proto3,oneof"`
+}
+
+type Message_OneofString2 struct {
+	OneofString2 string `protobuf:"bytes,420,opt,name=oneof_string2,json=oneofString2,proto3,oneof"`
+}
+
+type Message_OneofString3 struct {
+	OneofString3 string `protobuf:"bytes,421,opt,name=oneof_string3,json=oneofString3,proto3,oneof"`
+}
+
+func (*Message_OneofBool) isMessage_OneofUnion() {}
+
+func (*Message_OneofInt32) isMessage_OneofUnion() {}
+
+func (*Message_OneofSint32) isMessage_OneofUnion() {}
+
+func (*Message_OneofUint32) isMessage_OneofUnion() {}
+
+func (*Message_OneofInt64) isMessage_OneofUnion() {}
+
+func (*Message_OneofSint64) isMessage_OneofUnion() {}
+
+func (*Message_OneofUint64) isMessage_OneofUnion() {}
+
+func (*Message_OneofFixed32) isMessage_OneofUnion() {}
+
+func (*Message_OneofSfixed32) isMessage_OneofUnion() {}
+
+func (*Message_OneofFloat) isMessage_OneofUnion() {}
+
+func (*Message_OneofFixed64) isMessage_OneofUnion() {}
+
+func (*Message_OneofSfixed64) isMessage_OneofUnion() {}
+
+func (*Message_OneofDouble) isMessage_OneofUnion() {}
+
+func (*Message_OneofString) isMessage_OneofUnion() {}
+
+func (*Message_OneofBytes) isMessage_OneofUnion() {}
+
+func (*Message_OneofChildEnum) isMessage_OneofUnion() {}
+
+func (*Message_OneofChildMessage) isMessage_OneofUnion() {}
+
+func (*Message_OneofSiblingEnum) isMessage_OneofUnion() {}
+
+func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
+
+func (*Message_OneofString1) isMessage_OneofUnion() {}
+
+func (*Message_OneofString2) isMessage_OneofUnion() {}
+
+func (*Message_OneofString3) isMessage_OneofUnion() {}
+
+func (m *Message) GetOneofUnion() isMessage_OneofUnion {
+	if m != nil {
+		return m.OneofUnion
+	}
+	return nil
+}
+
+func (m *Message) GetOneofBool() bool {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
+		return x.OneofBool
+	}
+	return false
+}
+
+func (m *Message) GetOneofInt32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
+		return x.OneofInt32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
+		return x.OneofSint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
+		return x.OneofUint32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofInt64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
+		return x.OneofInt64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSint64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
+		return x.OneofSint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofUint64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
+		return x.OneofUint64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed32() uint32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
+		return x.OneofFixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed32() int32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
+		return x.OneofSfixed32
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFloat() float32 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
+		return x.OneofFloat
+	}
+	return 0
+}
+
+func (m *Message) GetOneofFixed64() uint64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
+		return x.OneofFixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofSfixed64() int64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
+		return x.OneofSfixed64
+	}
+	return 0
+}
+
+func (m *Message) GetOneofDouble() float64 {
+	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
+		return x.OneofDouble
+	}
+	return 0
+}
+
+func (m *Message) GetOneofString() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
+		return x.OneofString
+	}
+	return ""
+}
+
+func (m *Message) GetOneofBytes() []byte {
+	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
+		return x.OneofBytes
+	}
+	return nil
+}
+
+func (m *Message) GetOneofChildEnum() Message_ChildEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
+		return x.OneofChildEnum
+	}
+	return Message_ALPHA
+}
+
+func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
+		return x.OneofChildMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofSiblingEnum() SiblingEnum {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
+		return x.OneofSiblingEnum
+	}
+	return SiblingEnum_ALPHA
+}
+
+func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
+	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
+		return x.OneofSiblingMessage
+	}
+	return nil
+}
+
+func (m *Message) GetOneofString1() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
+		return x.OneofString1
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString2() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
+		return x.OneofString2
+	}
+	return ""
+}
+
+func (m *Message) GetOneofString3() string {
+	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
+		return x.OneofString3
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
+		(*Message_OneofBool)(nil),
+		(*Message_OneofInt32)(nil),
+		(*Message_OneofSint32)(nil),
+		(*Message_OneofUint32)(nil),
+		(*Message_OneofInt64)(nil),
+		(*Message_OneofSint64)(nil),
+		(*Message_OneofUint64)(nil),
+		(*Message_OneofFixed32)(nil),
+		(*Message_OneofSfixed32)(nil),
+		(*Message_OneofFloat)(nil),
+		(*Message_OneofFixed64)(nil),
+		(*Message_OneofSfixed64)(nil),
+		(*Message_OneofDouble)(nil),
+		(*Message_OneofString)(nil),
+		(*Message_OneofBytes)(nil),
+		(*Message_OneofChildEnum)(nil),
+		(*Message_OneofChildMessage)(nil),
+		(*Message_OneofSiblingEnum)(nil),
+		(*Message_OneofSiblingMessage)(nil),
+		(*Message_OneofString1)(nil),
+		(*Message_OneofString2)(nil),
+		(*Message_OneofString3)(nil),
+	}
+}
+
+func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		t := uint64(0)
+		if x.OneofBool {
+			t = 1
+		}
+		b.EncodeVarint(400<<3 | proto.WireVarint)
+		b.EncodeVarint(t)
+	case *Message_OneofInt32:
+		b.EncodeVarint(401<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		b.EncodeVarint(402<<3 | proto.WireVarint)
+		b.EncodeZigzag32(uint64(x.OneofSint32))
+	case *Message_OneofUint32:
+		b.EncodeVarint(403<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		b.EncodeVarint(404<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		b.EncodeVarint(405<<3 | proto.WireVarint)
+		b.EncodeZigzag64(uint64(x.OneofSint64))
+	case *Message_OneofUint64:
+		b.EncodeVarint(406<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		b.EncodeVarint(407<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofFixed32))
+	case *Message_OneofSfixed32:
+		b.EncodeVarint(408<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(x.OneofSfixed32))
+	case *Message_OneofFloat:
+		b.EncodeVarint(409<<3 | proto.WireFixed32)
+		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
+	case *Message_OneofFixed64:
+		b.EncodeVarint(410<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofFixed64))
+	case *Message_OneofSfixed64:
+		b.EncodeVarint(411<<3 | proto.WireFixed64)
+		b.EncodeFixed64(uint64(x.OneofSfixed64))
+	case *Message_OneofDouble:
+		b.EncodeVarint(412<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
+	case *Message_OneofString:
+		b.EncodeVarint(413<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString)
+	case *Message_OneofBytes:
+		b.EncodeVarint(414<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		b.EncodeVarint(415<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		b.EncodeVarint(416<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
+			return err
+		}
+	case *Message_OneofSiblingEnum:
+		b.EncodeVarint(417<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		b.EncodeVarint(418<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
+			return err
+		}
+	case *Message_OneofString1:
+		b.EncodeVarint(419<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString1)
+	case *Message_OneofString2:
+		b.EncodeVarint(420<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString2)
+	case *Message_OneofString3:
+		b.EncodeVarint(421<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.OneofString3)
+	case nil:
+	default:
+		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Message)
+	switch tag {
+	case 400: // oneof_union.oneof_bool
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofBool{x != 0}
+		return true, err
+	case 401: // oneof_union.oneof_int32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt32{int32(x)}
+		return true, err
+	case 402: // oneof_union.oneof_sint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag32()
+		m.OneofUnion = &Message_OneofSint32{int32(x)}
+		return true, err
+	case 403: // oneof_union.oneof_uint32
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint32{uint32(x)}
+		return true, err
+	case 404: // oneof_union.oneof_int64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofInt64{int64(x)}
+		return true, err
+	case 405: // oneof_union.oneof_sint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeZigzag64()
+		m.OneofUnion = &Message_OneofSint64{int64(x)}
+		return true, err
+	case 406: // oneof_union.oneof_uint64
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofUint64{x}
+		return true, err
+	case 407: // oneof_union.oneof_fixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
+		return true, err
+	case 408: // oneof_union.oneof_sfixed32
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
+		return true, err
+	case 409: // oneof_union.oneof_float
+		if wire != proto.WireFixed32 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed32()
+		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
+		return true, err
+	case 410: // oneof_union.oneof_fixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofFixed64{x}
+		return true, err
+	case 411: // oneof_union.oneof_sfixed64
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
+		return true, err
+	case 412: // oneof_union.oneof_double
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
+		return true, err
+	case 413: // oneof_union.oneof_string
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString{x}
+		return true, err
+	case 414: // oneof_union.oneof_bytes
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.OneofUnion = &Message_OneofBytes{x}
+		return true, err
+	case 415: // oneof_union.oneof_child_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
+		return true, err
+	case 416: // oneof_union.oneof_child_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(Message_ChildMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofChildMessage{msg}
+		return true, err
+	case 417: // oneof_union.oneof_sibling_enum
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
+		return true, err
+	case 418: // oneof_union.oneof_sibling_message
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(SiblingMessage)
+		err := b.DecodeMessage(msg)
+		m.OneofUnion = &Message_OneofSiblingMessage{msg}
+		return true, err
+	case 419: // oneof_union.oneof_string1
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString1{x}
+		return true, err
+	case 420: // oneof_union.oneof_string2
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString2{x}
+		return true, err
+	case 421: // oneof_union.oneof_string3
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.OneofUnion = &Message_OneofString3{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Message_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Message)
+	// oneof_union
+	switch x := m.OneofUnion.(type) {
+	case *Message_OneofBool:
+		n += 2 // tag and wire
+		n += 1
+	case *Message_OneofInt32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofInt32))
+	case *Message_OneofSint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
+	case *Message_OneofUint32:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofUint32))
+	case *Message_OneofInt64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofInt64))
+	case *Message_OneofSint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
+	case *Message_OneofUint64:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofUint64))
+	case *Message_OneofFixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofSfixed32:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofFloat:
+		n += 2 // tag and wire
+		n += 4
+	case *Message_OneofFixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofSfixed64:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofDouble:
+		n += 2 // tag and wire
+		n += 8
+	case *Message_OneofString:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString)))
+		n += len(x.OneofString)
+	case *Message_OneofBytes:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
+		n += len(x.OneofBytes)
+	case *Message_OneofChildEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofChildEnum))
+	case *Message_OneofChildMessage:
+		s := proto.Size(x.OneofChildMessage)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofSiblingEnum:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
+	case *Message_OneofSiblingMessage:
+		s := proto.Size(x.OneofSiblingMessage)
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Message_OneofString1:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString1)))
+		n += len(x.OneofString1)
+	case *Message_OneofString2:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString2)))
+		n += len(x.OneofString2)
+	case *Message_OneofString3:
+		n += 2 // tag and wire
+		n += proto.SizeVarint(uint64(len(x.OneofString3)))
+		n += len(x.OneofString3)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+type Message_ChildMessage struct {
+	F1                   string   `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
+	F2                   []string `protobuf:"bytes,2,rep,name=f2,proto3" json:"f2,omitempty"`
+	F3                   *Message `protobuf:"bytes,3,opt,name=f3,proto3" json:"f3,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Message_ChildMessage) Reset()         { *m = Message_ChildMessage{} }
+func (m *Message_ChildMessage) String() string { return proto.CompactTextString(m) }
+func (*Message_ChildMessage) ProtoMessage()    {}
+func (*Message_ChildMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_test_9b512d5794e43b6c, []int{1, 0}
+}
+func (m *Message_ChildMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message_ChildMessage.Unmarshal(m, b)
+}
+func (m *Message_ChildMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message_ChildMessage.Marshal(b, m, deterministic)
+}
+func (dst *Message_ChildMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message_ChildMessage.Merge(dst, src)
+}
+func (m *Message_ChildMessage) XXX_Size() int {
+	return xxx_messageInfo_Message_ChildMessage.Size(m)
+}
+func (m *Message_ChildMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message_ChildMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message_ChildMessage proto.InternalMessageInfo
+
+func (m *Message_ChildMessage) GetF1() string {
+	if m != nil {
+		return m.F1
+	}
+	return ""
+}
+
+func (m *Message_ChildMessage) GetF2() []string {
+	if m != nil {
+		return m.F2
+	}
+	return nil
+}
+
+func (m *Message_ChildMessage) GetF3() *Message {
+	if m != nil {
+		return m.F3
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto3_20180814.SiblingMessage")
+	proto.RegisterType((*Message)(nil), "google.golang.org.proto3_20180814.Message")
+	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto3_20180814.Message.MapBoolBoolEntry")
+	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto3_20180814.Message.MapBoolBytesEntry")
+	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto3_20180814.Message.MapBoolChildEnumEntry")
+	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto3_20180814.Message.MapBoolChildMessageEntry")
+	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolDoubleEntry")
+	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolFixed32Entry")
+	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolFixed64Entry")
+	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolFloatEntry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolInt32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolInt64Entry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSfixed32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSfixed64Entry")
+	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSiblingEnumEntry")
+	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSiblingMessageEntry")
+	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSint32Entry")
+	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSint64Entry")
+	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto3_20180814.Message.MapBoolStringEntry")
+	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolUint32Entry")
+	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolUint64Entry")
+	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto3_20180814.Message.MapFixed32BoolEntry")
+	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto3_20180814.Message.MapInt32BoolEntry")
+	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto3_20180814.Message.MapInt64BoolEntry")
+	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto3_20180814.Message.MapSint32BoolEntry")
+	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto3_20180814.Message.MapSint64BoolEntry")
+	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto3_20180814.Message.MapStringBoolEntry")
+	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto3_20180814.Message.MapUint32BoolEntry")
+	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto3_20180814.Message.MapUint64BoolEntry")
+	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto3_20180814.Message.ChildMessage")
+	proto.RegisterEnum("google.golang.org.proto3_20180814.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
+	proto.RegisterEnum("google.golang.org.proto3_20180814.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
+}
+
+func init() {
+	proto.RegisterFile("proto3.v1.2.0-20180814-aa810b61/test.proto", fileDescriptor_test_9b512d5794e43b6c)
+}
+
+var fileDescriptor_test_9b512d5794e43b6c = []byte{
+	// 1968 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x9a, 0x59, 0x6f, 0xdb, 0xca,
+	0x15, 0xc7, 0x45, 0xc9, 0x4b, 0x3c, 0xd6, 0x4a, 0xc5, 0xee, 0xc0, 0x4f, 0xac, 0x9b, 0xa6, 0xac,
+	0xdb, 0xc8, 0x96, 0x44, 0xb0, 0x46, 0xda, 0x26, 0xb1, 0x13, 0xa7, 0x4a, 0x91, 0xa0, 0x05, 0x03,
+	0x17, 0x45, 0x5e, 0x5c, 0xc9, 0xa6, 0x64, 0x25, 0xa4, 0xe8, 0x5a, 0x92, 0x51, 0xa3, 0x0f, 0xf9,
+	0x0a, 0xdd, 0xf7, 0x7d, 0x79, 0xeb, 0xbe, 0xef, 0x7b, 0x8a, 0x74, 0x5f, 0xee, 0x7e, 0x3f, 0xcd,
+	0xc5, 0xf0, 0x70, 0x36, 0x92, 0x8a, 0x24, 0x0a, 0xf7, 0x21, 0x80, 0x7d, 0xf4, 0x9f, 0xf3, 0xd3,
+	0x39, 0x3c, 0x73, 0xce, 0x0c, 0x63, 0xb4, 0x71, 0x72, 0xea, 0x0d, 0xbc, 0x7a, 0xe5, 0xac, 0x5a,
+	0xa9, 0x55, 0xb6, 0xae, 0xd4, 0xb6, 0xaa, 0xdb, 0x5b, 0xdb, 0x55, 0xe3, 0x4a, 0xb3, 0xb9, 0x5d,
+	0xdd, 0x6a, 0x99, 0xd5, 0xcd, 0x81, 0xdd, 0x1f, 0x54, 0x7c, 0x91, 0xfa, 0xc6, 0x8e, 0xe7, 0x75,
+	0x1c, 0xbb, 0xd2, 0xf1, 0x9c, 0x66, 0xaf, 0x53, 0xf1, 0x4e, 0x3b, 0xf0, 0x41, 0xfd, 0x80, 0x2e,
+	0x5b, 0x77, 0x50, 0xfe, 0x7e, 0xb7, 0xe5, 0x74, 0x7b, 0x9d, 0x7b, 0x76, 0xbf, 0xdf, 0xec, 0xd8,
+	0x6a, 0x1e, 0xa5, 0xdb, 0x55, 0xac, 0x68, 0x8a, 0xbe, 0x64, 0xa5, 0xdb, 0x55, 0xff, 0xf7, 0x1a,
+	0x4e, 0x6b, 0x19, 0xff, 0xf7, 0x9a, 0x7a, 0x15, 0xa5, 0xdb, 0x75, 0x9c, 0xd1, 0x14, 0x7d, 0xb9,
+	0xb6, 0x51, 0x19, 0x4b, 0xa8, 0x04, 0x7e, 0xad, 0x74, 0xbb, 0xbe, 0xfe, 0xe4, 0x06, 0x5a, 0xa4,
+	0x9c, 0x37, 0xa1, 0x9c, 0x77, 0x32, 0xe8, 0x7a, 0xbd, 0xa6, 0x73, 0xd0, 0xf2, 0x3c, 0x07, 0x1f,
+	0x69, 0x8a, 0x7e, 0xc1, 0xca, 0x52, 0xe3, 0xae, 0xe7, 0x39, 0xea, 0x9b, 0x51, 0x9e, 0x89, 0xba,
+	0xbd, 0x41, 0xbd, 0x86, 0x6d, 0x4d, 0xd1, 0xe7, 0x2d, 0xb6, 0xf4, 0x0e, 0x31, 0xaa, 0x6f, 0x41,
+	0x05, 0x26, 0xeb, 0x83, 0xae, 0xad, 0x29, 0x7a, 0xc9, 0x62, 0xab, 0xef, 0x77, 0x23, 0xc2, 0x21,
+	0x08, 0x3b, 0x9a, 0xa2, 0xe7, 0xb8, 0x70, 0x1f, 0x84, 0x21, 0xb0, 0x69, 0xe0, 0x63, 0x4d, 0xd1,
+	0x33, 0x12, 0xd8, 0x34, 0x22, 0x60, 0xd3, 0xc0, 0x5d, 0x4d, 0xd1, 0x55, 0x19, 0x1c, 0x12, 0x0e,
+	0x41, 0xf8, 0x50, 0x53, 0xf4, 0x39, 0x19, 0x6c, 0x1a, 0xea, 0x5b, 0x51, 0x91, 0x09, 0xdb, 0xdd,
+	0x8f, 0xd8, 0x47, 0xf5, 0x1a, 0x7e, 0xa4, 0x29, 0xfa, 0xa2, 0xc5, 0x1c, 0xdc, 0x06, 0xb3, 0xfa,
+	0x36, 0x54, 0xe2, 0x70, 0xaa, 0x75, 0x34, 0x45, 0x2f, 0x58, 0xcc, 0xc7, 0xfd, 0xc0, 0x2e, 0x05,
+	0xd4, 0x76, 0xbc, 0xe6, 0x00, 0xbb, 0x9a, 0xa2, 0xa7, 0x79, 0x40, 0xb7, 0x89, 0x31, 0x8a, 0x37,
+	0x0d, 0xdc, 0xd3, 0x14, 0x7d, 0x21, 0x84, 0x37, 0x8d, 0x18, 0xbc, 0x69, 0x60, 0x4f, 0x53, 0xf4,
+	0x62, 0x18, 0x1f, 0x8a, 0xff, 0xc8, 0x1b, 0xb6, 0x1c, 0x1b, 0x9f, 0x68, 0x8a, 0xae, 0xf0, 0xf8,
+	0x6f, 0xf9, 0x56, 0x39, 0xa3, 0x83, 0xd3, 0x6e, 0xaf, 0x83, 0x3f, 0xec, 0xd7, 0x22, 0xcf, 0xa8,
+	0x6f, 0x95, 0x02, 0x6a, 0x9d, 0x0f, 0xec, 0x3e, 0x3e, 0xd5, 0x14, 0x3d, 0xcb, 0x03, 0xda, 0x25,
+	0x46, 0xf5, 0x08, 0x95, 0x99, 0xec, 0xf0, 0xb8, 0xeb, 0x1c, 0x1d, 0xd8, 0xbd, 0xa1, 0x8b, 0xfb,
+	0x9a, 0xa2, 0xe7, 0x6b, 0xc6, 0xe4, 0xf5, 0x5b, 0xb9, 0x49, 0x16, 0xef, 0xf5, 0x86, 0xae, 0xc5,
+	0xc2, 0x66, 0x26, 0xd5, 0x45, 0xab, 0x21, 0x8a, 0x0b, 0xcb, 0xf0, 0xc0, 0xdf, 0x28, 0xef, 0x98,
+	0x16, 0x44, 0x77, 0xcd, 0x45, 0x89, 0x45, 0xf7, 0x4e, 0x0b, 0xad, 0x08, 0x65, 0xe7, 0x6f, 0x5f,
+	0x08, 0x6b, 0xe8, 0x87, 0x55, 0x99, 0x80, 0x16, 0xec, 0x7a, 0x3f, 0xa0, 0x32, 0x2f, 0x56, 0x66,
+	0x54, 0x1f, 0x21, 0x1c, 0x61, 0xd0, 0xa0, 0xce, 0xfc, 0xa0, 0xaa, 0x93, 0x63, 0x68, 0x38, 0xab,
+	0x21, 0x12, 0x0d, 0xe8, 0x12, 0xca, 0x9d, 0xda, 0x27, 0x76, 0x73, 0x60, 0x1f, 0x41, 0x33, 0x78,
+	0xaa, 0x68, 0x19, 0xd2, 0x0d, 0xa8, 0xd5, 0xef, 0x06, 0x97, 0x51, 0x9e, 0xa9, 0x60, 0xf3, 0xfe,
+	0x8d, 0xc8, 0xe6, 0x2d, 0xb6, 0x18, 0xda, 0x81, 0x8e, 0x0a, 0x4c, 0x17, 0xb4, 0x83, 0xbf, 0x13,
+	0x61, 0xc9, 0x62, 0xeb, 0x83, 0x7e, 0x20, 0x2a, 0x83, 0x7e, 0xf0, 0x0f, 0xa2, 0xcc, 0x71, 0x65,
+	0xd0, 0x10, 0x42, 0x6c, 0xd3, 0xc0, 0xff, 0x24, 0xc2, 0x8c, 0xc4, 0x36, 0x8d, 0x08, 0xdb, 0x34,
+	0xf0, 0xbf, 0x88, 0x50, 0x95, 0xd9, 0x21, 0x65, 0xd0, 0x12, 0xfe, 0x4d, 0x94, 0x73, 0x32, 0xdb,
+	0x34, 0xd4, 0x0d, 0x54, 0x64, 0x4a, 0xba, 0xcf, 0xff, 0x43, 0xa4, 0x8b, 0x16, 0x73, 0x41, 0x9b,
+	0xc2, 0xdb, 0x51, 0x89, 0xf3, 0xa9, 0xf8, 0xbf, 0x44, 0x5c, 0xb0, 0x98, 0x17, 0xd6, 0x15, 0xc4,
+	0xa8, 0xa0, 0x2b, 0xfc, 0x8f, 0x48, 0xd3, 0x3c, 0x2a, 0x68, 0x0b, 0x91, 0x6f, 0x60, 0x1a, 0xf8,
+	0xff, 0x44, 0xb9, 0x10, 0xfa, 0x06, 0xa6, 0x11, 0xf3, 0x0d, 0x4c, 0x03, 0x3f, 0x47, 0xc4, 0xc5,
+	0xf0, 0x37, 0x08, 0x65, 0x21, 0x68, 0x0c, 0xcf, 0x13, 0xad, 0xc2, 0xb3, 0x10, 0x74, 0x06, 0x29,
+	0xb3, 0xd0, 0x19, 0x5e, 0x50, 0xfc, 0xb1, 0xc4, 0x33, 0x0b, 0xad, 0x41, 0x8c, 0x0a, 0x5a, 0xc3,
+	0x8b, 0x44, 0x98, 0xe5, 0x51, 0x41, 0x6f, 0xb0, 0x51, 0x99, 0xe9, 0x84, 0xde, 0xf0, 0x12, 0x11,
+	0x27, 0x6e, 0x0e, 0xd4, 0x23, 0x6f, 0x0e, 0x3d, 0xb4, 0x1a, 0xc2, 0xd0, 0x7d, 0xf4, 0x32, 0x21,
+	0xcd, 0xd2, 0x1d, 0x24, 0x18, 0xdd, 0x4c, 0x87, 0x68, 0x45, 0x28, 0x41, 0xa1, 0x3b, 0xbc, 0x02,
+	0x81, 0x4d, 0xdd, 0x1e, 0x78, 0xe1, 0xf2, 0xf6, 0xe0, 0x20, 0x1c, 0x81, 0xd0, 0xb0, 0x5e, 0x85,
+	0xb0, 0x92, 0xf4, 0x87, 0x10, 0x8a, 0x86, 0xf4, 0x21, 0x94, 0x73, 0x9b, 0x27, 0x7e, 0x6b, 0x80,
+	0xfe, 0xf0, 0x9d, 0xb4, 0x8f, 0x78, 0xe7, 0x14, 0x99, 0xbb, 0xd7, 0x3c, 0x21, 0x5d, 0x84, 0xfc,
+	0xdb, 0xeb, 0x0d, 0x4e, 0xcf, 0xad, 0x65, 0x97, 0x5b, 0xd4, 0x43, 0x94, 0x67, 0x04, 0x68, 0x04,
+	0xdf, 0x05, 0xc4, 0xbb, 0xa6, 0x47, 0xf8, 0x5d, 0x08, 0x18, 0x59, 0x57, 0x30, 0xa9, 0x6d, 0x54,
+	0x60, 0x90, 0xa0, 0x31, 0x7d, 0x0f, 0x28, 0xef, 0x9e, 0x9e, 0x02, 0x2d, 0x0c, 0x30, 0x39, 0x57,
+	0xb4, 0x49, 0x9c, 0xa0, 0xad, 0x7d, 0x3f, 0x31, 0x67, 0x3f, 0x86, 0x13, 0x34, 0xc5, 0x50, 0xd2,
+	0x4c, 0x03, 0xff, 0x60, 0x96, 0xa4, 0x99, 0x46, 0x24, 0x69, 0xa6, 0x11, 0x49, 0x9a, 0x69, 0xe0,
+	0x1f, 0xce, 0x94, 0x34, 0x8a, 0x11, 0x93, 0x16, 0xe2, 0x04, 0xfd, 0xf8, 0x47, 0x33, 0x25, 0x2d,
+	0xcc, 0x09, 0xba, 0x79, 0x17, 0x15, 0x19, 0x87, 0x36, 0xe8, 0x1f, 0x03, 0xe8, 0xda, 0xf4, 0xa0,
+	0xa0, 0xef, 0x03, 0x29, 0xef, 0x4a, 0x46, 0xd5, 0x41, 0x25, 0x9e, 0x3a, 0xca, 0xfa, 0x09, 0xb0,
+	0xae, 0x27, 0x48, 0x5e, 0x5b, 0x84, 0x15, 0x5c, 0xd9, 0x2a, 0x55, 0x03, 0x0c, 0x93, 0x9f, 0x26,
+	0xae, 0x06, 0x7f, 0xec, 0xc8, 0xd5, 0x00, 0x93, 0x28, 0x92, 0x3d, 0xd3, 0xc0, 0x3f, 0x9b, 0x2d,
+	0x7b, 0xf4, 0x39, 0x49, 0xd9, 0x33, 0x8d, 0x98, 0xec, 0x99, 0x06, 0xfe, 0xf9, 0x8c, 0xd9, 0xa3,
+	0x30, 0x39, 0x7b, 0xa1, 0xf2, 0x0b, 0x06, 0xe1, 0x2f, 0x12, 0x97, 0x1f, 0x8c, 0x4c, 0xb9, 0xfc,
+	0x82, 0x31, 0x2a, 0x6d, 0x27, 0x18, 0xa3, 0xbf, 0x4c, 0xbe, 0x9d, 0x7c, 0x07, 0xa1, 0xed, 0x04,
+	0x43, 0x58, 0xac, 0x06, 0x18, 0xc2, 0xbf, 0x4a, 0x5c, 0x0d, 0xfe, 0xb8, 0x96, 0xab, 0x01, 0x26,
+	0xf8, 0x09, 0x2a, 0x33, 0x88, 0x30, 0xc1, 0x7f, 0x0d, 0xa4, 0x1b, 0xd3, 0x93, 0xd8, 0xd4, 0x06,
+	0x5a, 0xd1, 0x0d, 0x99, 0xd5, 0x73, 0xb4, 0x1a, 0x22, 0xd2, 0xa9, 0xf7, 0x1b, 0x80, 0xde, 0x4c,
+	0x08, 0x0d, 0x6c, 0xc0, 0x2d, 0xbb, 0xd1, 0x4f, 0xd4, 0x33, 0xb4, 0x22, 0x34, 0x42, 0x61, 0xae,
+	0xff, 0x16, 0xc8, 0xbb, 0x49, 0xda, 0x21, 0x9b, 0xe8, 0x00, 0x56, 0xdd, 0xc8, 0x07, 0xea, 0x63,
+	0x84, 0x23, 0x5c, 0x1a, 0xf4, 0xef, 0x00, 0xbd, 0x97, 0x18, 0x2d, 0x85, 0xbd, 0xe2, 0xc6, 0x7d,
+	0x46, 0x4b, 0xc9, 0x9f, 0x39, 0x30, 0xfe, 0x7f, 0x9f, 0xa8, 0x94, 0xfc, 0x21, 0xcc, 0xe7, 0x3f,
+	0x29, 0x25, 0x66, 0xa2, 0xfb, 0xa2, 0x2f, 0x50, 0xfe, 0x90, 0x68, 0x5f, 0xc0, 0x0c, 0xe6, 0x18,
+	0xb2, 0x2f, 0xb8, 0x8d, 0x72, 0x86, 0x02, 0xe7, 0x8f, 0x89, 0x38, 0xfb, 0x31, 0x1c, 0x6e, 0x13,
+	0x92, 0x66, 0x1a, 0x80, 0xf9, 0x53, 0xd2, 0xa4, 0x99, 0x46, 0x24, 0x69, 0x60, 0x12, 0x93, 0x46,
+	0x29, 0x7f, 0x4e, 0x9c, 0x34, 0x11, 0x43, 0x93, 0x26, 0x73, 0x86, 0x02, 0xe7, 0x2f, 0x89, 0x93,
+	0x16, 0xe6, 0x70, 0x1b, 0x9d, 0x2e, 0xc1, 0x44, 0x03, 0xd0, 0x93, 0x44, 0xd3, 0x25, 0x18, 0xc1,
+	0x9c, 0x44, 0x9e, 0x86, 0x60, 0x64, 0xa9, 0xf3, 0xbb, 0x25, 0x90, 0xfe, 0x9a, 0x2c, 0x75, 0xbe,
+	0x87, 0x50, 0xea, 0x98, 0x4d, 0xd5, 0x10, 0xf2, 0x7a, 0xb6, 0xd7, 0x06, 0xc4, 0xc7, 0x32, 0x9a,
+	0xa2, 0x5f, 0x68, 0xa4, 0xac, 0x25, 0xdf, 0xe8, 0x2b, 0xd6, 0xd1, 0x32, 0x28, 0xe0, 0xa4, 0xf8,
+	0x71, 0x22, 0x99, 0x6f, 0xa4, 0x2c, 0x58, 0x07, 0x27, 0xd7, 0x4b, 0x28, 0x0b, 0x9a, 0xe0, 0xd8,
+	0xfa, 0x09, 0x22, 0x2a, 0x35, 0x52, 0x16, 0x2c, 0x0d, 0xce, 0x9d, 0x4c, 0x15, 0x1c, 0x3a, 0x3f,
+	0x49, 0x54, 0x39, 0xa6, 0x0a, 0x4e, 0x8d, 0x22, 0xcf, 0x34, 0xf0, 0xa7, 0x88, 0x28, 0x23, 0xf2,
+	0x4c, 0x43, 0xe6, 0x99, 0x06, 0xfe, 0x34, 0x11, 0xa9, 0x12, 0x4f, 0x54, 0x05, 0xe7, 0xb5, 0xcf,
+	0x10, 0xd5, 0x9c, 0xc4, 0x33, 0x0d, 0xf5, 0x32, 0xca, 0x81, 0x8a, 0x9e, 0x80, 0x3e, 0x4b, 0x64,
+	0x8b, 0x8d, 0x94, 0x05, 0xab, 0xe9, 0x69, 0x49, 0x47, 0xf9, 0x80, 0x49, 0x85, 0x9f, 0x23, 0xc2,
+	0x42, 0x23, 0x65, 0x81, 0x03, 0x76, 0xd2, 0x61, 0x11, 0xc0, 0x31, 0xe7, 0xf3, 0x44, 0x96, 0x66,
+	0x11, 0xc0, 0x41, 0x45, 0xa6, 0x9a, 0x06, 0xfe, 0x02, 0x51, 0x2d, 0xc8, 0x54, 0xff, 0x02, 0x2c,
+	0x51, 0x4d, 0x03, 0x7f, 0x91, 0x08, 0x8b, 0x21, 0xaa, 0x18, 0x6d, 0x70, 0x3c, 0xf8, 0x12, 0xd1,
+	0x29, 0x2c, 0xda, 0x60, 0xbe, 0xf3, 0xcc, 0xc1, 0x70, 0xff, 0x32, 0x51, 0x2d, 0xf1, 0xcc, 0xc1,
+	0x74, 0x66, 0x11, 0xc0, 0x68, 0xfe, 0x0a, 0x11, 0x65, 0x59, 0x04, 0x30, 0x5c, 0x9b, 0xa8, 0x08,
+	0x1a, 0x61, 0xb2, 0x7e, 0x35, 0x93, 0xfc, 0xc5, 0x59, 0x23, 0x65, 0x41, 0xa8, 0x7c, 0x9a, 0x3e,
+	0x44, 0x65, 0x11, 0x41, 0xa7, 0xca, 0xd7, 0x32, 0x33, 0xbd, 0x35, 0x6b, 0xa4, 0xac, 0x12, 0x07,
+	0xd1, 0x29, 0x72, 0x80, 0x54, 0x5a, 0x52, 0xc2, 0xec, 0xfc, 0x7a, 0x26, 0xc9, 0x2b, 0xb3, 0x46,
+	0xca, 0x2a, 0x06, 0x85, 0xc8, 0xe7, 0xe4, 0x31, 0x5a, 0x91, 0x01, 0x34, 0x9c, 0x6f, 0x64, 0x12,
+	0xbe, 0x2f, 0x6b, 0xa4, 0xac, 0xb2, 0x88, 0xa1, 0xa1, 0xb0, 0xda, 0x82, 0x67, 0x5c, 0xc5, 0xdf,
+	0xa4, 0x0f, 0x39, 0x2b, 0x3c, 0xe4, 0x6a, 0x58, 0x57, 0xc3, 0xdf, 0x8a, 0xd3, 0xd5, 0xc2, 0xba,
+	0x3a, 0xfe, 0x76, 0x9c, 0xae, 0xbe, 0xf6, 0x10, 0x65, 0xa5, 0x94, 0xbe, 0x8e, 0xff, 0x57, 0xb0,
+	0x76, 0x0d, 0x15, 0xc3, 0x37, 0x76, 0xb5, 0x88, 0x32, 0x8f, 0xec, 0x73, 0x1f, 0x78, 0xc1, 0x22,
+	0x3f, 0xaa, 0x17, 0xd1, 0xfc, 0x59, 0xd3, 0x19, 0xda, 0x38, 0xed, 0xdb, 0xe0, 0x97, 0xab, 0xe9,
+	0x6d, 0x65, 0xed, 0x3a, 0x2a, 0x45, 0xae, 0xe3, 0xe3, 0x1c, 0xcc, 0x8b, 0x0e, 0x6e, 0x20, 0x35,
+	0x7a, 0xd3, 0x1e, 0xe7, 0xa1, 0x14, 0xef, 0x61, 0x7f, 0x72, 0x0f, 0xb9, 0x91, 0x41, 0x04, 0x57,
+	0x87, 0x71, 0x0e, 0x32, 0xa3, 0x83, 0x98, 0xd0, 0x83, 0x3a, 0x3a, 0x88, 0x09, 0x3d, 0xcc, 0x89,
+	0x1e, 0x76, 0x50, 0x39, 0xe6, 0xb2, 0x3a, 0xce, 0xc5, 0xa2, 0xe8, 0x62, 0x17, 0x5d, 0x8c, 0xbb,
+	0x83, 0x8e, 0xf3, 0x51, 0x88, 0xcf, 0x25, 0xbf, 0x5c, 0x8e, 0x73, 0x90, 0x7e, 0x46, 0x1c, 0x13,
+	0xa6, 0x62, 0xe1, 0x59, 0x71, 0x4c, 0xe8, 0xa3, 0x18, 0xff, 0x40, 0x84, 0x5b, 0xde, 0x38, 0x0f,
+	0xca, 0x88, 0xa2, 0xe0, 0xf7, 0xb7, 0x71, 0x1e, 0x96, 0xe2, 0x73, 0xc9, 0xaf, 0x66, 0xe3, 0x1c,
+	0x64, 0x45, 0x07, 0xe7, 0x68, 0x25, 0xf6, 0xc6, 0x15, 0xe3, 0xe4, 0xbd, 0xa2, 0x93, 0xa4, 0xaf,
+	0x65, 0x05, 0xf4, 0x63, 0x84, 0x47, 0xdd, 0xbb, 0x62, 0xe8, 0xf7, 0x44, 0xfa, 0x0c, 0xaf, 0x6a,
+	0x85, 0x2f, 0x30, 0x44, 0x6f, 0x18, 0x71, 0xfd, 0x8a, 0xe1, 0xdf, 0x92, 0xa3, 0x9f, 0xf6, 0xdd,
+	0xad, 0x80, 0xfd, 0x28, 0x5a, 0x1b, 0x7d, 0xf5, 0x8a, 0x21, 0xbf, 0x47, 0x8e, 0x3c, 0xc1, 0xdb,
+	0xdc, 0x48, 0xc1, 0xc8, 0x17, 0x30, 0x91, 0x39, 0x3f, 0xae, 0x9d, 0x43, 0xcd, 0x86, 0xee, 0x56,
+	0xa2, 0x87, 0xd2, 0x64, 0x1e, 0xf6, 0x47, 0x7b, 0xc8, 0x4d, 0x36, 0x52, 0xe4, 0x0b, 0x91, 0xe8,
+	0x20, 0x33, 0x79, 0x10, 0x23, 0x3c, 0xa8, 0x93, 0x07, 0x31, 0xc2, 0xc3, 0xdc, 0x38, 0x0f, 0xd0,
+	0xc5, 0xc2, 0xd7, 0x13, 0xd1, 0xc5, 0xe2, 0x84, 0x61, 0xc8, 0xf7, 0x0e, 0xd1, 0xc3, 0xd2, 0x18,
+	0x0f, 0xeb, 0x15, 0xb4, 0xc4, 0x0f, 0x81, 0x4b, 0x68, 0x7e, 0xe7, 0xee, 0xfb, 0x1b, 0x3b, 0xc5,
+	0x14, 0xf9, 0x71, 0xd7, 0xda, 0xf9, 0xc0, 0xfb, 0x8a, 0x8a, 0xba, 0x8c, 0x16, 0x6f, 0x36, 0x76,
+	0xac, 0xbb, 0x77, 0xf6, 0x8a, 0xe9, 0xdd, 0x1c, 0x3d, 0xae, 0x0e, 0x7b, 0x5d, 0xaf, 0xb7, 0x51,
+	0x45, 0xcb, 0xe2, 0xc1, 0x2b, 0xce, 0x01, 0x52, 0xb3, 0xdc, 0xc1, 0x53, 0x65, 0xf7, 0xc1, 0x83,
+	0x0f, 0x76, 0xba, 0x83, 0xe3, 0x61, 0xab, 0x72, 0xe8, 0xb9, 0x9b, 0x50, 0xc3, 0x9b, 0x7e, 0xfd,
+	0xb6, 0x86, 0xed, 0xcd, 0xb3, 0xda, 0x66, 0xb7, 0x37, 0xb0, 0x4f, 0x7b, 0x4d, 0xc7, 0xff, 0x03,
+	0x0a, 0xff, 0x83, 0xfe, 0xa6, 0x63, 0x77, 0x9a, 0x87, 0xe7, 0x9b, 0x63, 0xfe, 0xe4, 0xa2, 0xb5,
+	0x00, 0x82, 0xd7, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb5, 0xa6, 0xc9, 0xa6, 0x9c, 0x21, 0x00, 0x00,
+}
diff --git a/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61/test.proto b/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61/test.proto
new file mode 100644
index 0000000..b6e0bf7
--- /dev/null
+++ b/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61/test.proto
@@ -0,0 +1,136 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto3";
+
+package google.golang.org.proto3_20180814;
+option go_package = "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61";
+
+enum SiblingEnum {
+	ALPHA   = 0;
+	BRAVO   = 10;
+	CHARLIE = 200;
+}
+
+message SiblingMessage {
+	string          f1 = 1;
+	repeated string f2 = 2;
+	Message         f3 = 3;
+}
+
+message Message {
+	enum ChildEnum {
+		ALPHA   = 0;
+		BRAVO   = 1;
+		CHARLIE = 2;
+	}
+	message ChildMessage {
+		string          f1 = 1;
+		repeated string f2 = 2;
+		Message         f3 = 3;
+	}
+
+	// Optional fields.
+	bool     optional_bool     = 100;
+	int32    optional_int32    = 101;
+	sint32   optional_sint32   = 102;
+	uint32   optional_uint32   = 103;
+	int64    optional_int64    = 104;
+	sint64   optional_sint64   = 105;
+	uint64   optional_uint64   = 106;
+	fixed32  optional_fixed32  = 107;
+	sfixed32 optional_sfixed32 = 108;
+	float    optional_float    = 109;
+	fixed64  optional_fixed64  = 110;
+	sfixed64 optional_sfixed64 = 111;
+	double   optional_double   = 112;
+	string   optional_string   = 113;
+	bytes    optional_bytes    = 114;
+
+	ChildEnum      optional_child_enum      = 115;
+	ChildMessage   optional_child_message   = 116;
+	SiblingEnum    optional_sibling_enum    = 117;
+	SiblingMessage optional_sibling_message = 118;
+
+	// Repeated fields.
+	repeated bool     repeated_bool     = 200;
+	repeated int32    repeated_int32    = 201;
+	repeated sint32   repeated_sint32   = 202;
+	repeated uint32   repeated_uint32   = 203;
+	repeated int64    repeated_int64    = 204;
+	repeated sint64   repeated_sint64   = 205;
+	repeated uint64   repeated_uint64   = 206;
+	repeated fixed32  repeated_fixed32  = 207;
+	repeated sfixed32 repeated_sfixed32 = 208;
+	repeated float    repeated_float    = 209;
+	repeated fixed64  repeated_fixed64  = 210;
+	repeated sfixed64 repeated_sfixed64 = 211;
+	repeated double   repeated_double   = 212;
+	repeated string   repeated_string   = 213;
+	repeated bytes    repeated_bytes    = 214;
+
+	repeated ChildEnum      repeated_child_enum      = 215;
+	repeated ChildMessage   repeated_child_message   = 216;
+	repeated SiblingEnum    repeated_sibling_enum    = 217;
+	repeated SiblingMessage repeated_sibling_message = 218;
+
+	// Map fields.
+	map<bool, bool>     map_bool_bool     = 300;
+	map<bool, int32>    map_bool_int32    = 301;
+	map<bool, sint32>   map_bool_sint32   = 302;
+	map<bool, uint32>   map_bool_uint32   = 303;
+	map<bool, int64>    map_bool_int64    = 304;
+	map<bool, sint64>   map_bool_sint64   = 305;
+	map<bool, uint64>   map_bool_uint64   = 306;
+	map<bool, fixed32>  map_bool_fixed32  = 307;
+	map<bool, sfixed32> map_bool_sfixed32 = 308;
+	map<bool, float>    map_bool_float    = 309;
+	map<bool, fixed64>  map_bool_fixed64  = 310;
+	map<bool, sfixed64> map_bool_sfixed64 = 311;
+	map<bool, double>   map_bool_double   = 312;
+	map<bool, string>   map_bool_string   = 313;
+	map<bool, bytes>    map_bool_bytes    = 314;
+
+	map<bool, ChildEnum>      map_bool_child_enum      = 315;
+	map<bool, ChildMessage>   map_bool_child_message   = 316;
+	map<bool, SiblingEnum>    map_bool_sibling_enum    = 317;
+	map<bool, SiblingMessage> map_bool_sibling_message = 318;
+
+	map<int32, bool>   map_int32_bool   = 319;
+	map<sint32, bool>  map_sint32_bool  = 320;
+	map<uint32, bool>  map_uint32_bool  = 321;
+	map<int64, bool>   map_int64_bool   = 322;
+	map<sint64, bool>  map_sint64_bool  = 323;
+	map<uint64, bool>  map_uint64_bool  = 324;
+	map<fixed32, bool> map_fixed32_bool = 325;
+	map<string, bool>  map_string_bool  = 326;
+
+	// Oneof fields.
+	oneof oneof_union {
+		bool     oneof_bool     = 400;
+		int32    oneof_int32    = 401;
+		sint32   oneof_sint32   = 402;
+		uint32   oneof_uint32   = 403;
+		int64    oneof_int64    = 404;
+		sint64   oneof_sint64   = 405;
+		uint64   oneof_uint64   = 406;
+		fixed32  oneof_fixed32  = 407;
+		sfixed32 oneof_sfixed32 = 408;
+		float    oneof_float    = 409;
+		fixed64  oneof_fixed64  = 410;
+		sfixed64 oneof_sfixed64 = 411;
+		double   oneof_double   = 412;
+		string   oneof_string   = 413;
+		bytes    oneof_bytes    = 414;
+
+		ChildEnum      oneof_child_enum      = 415;
+		ChildMessage   oneof_child_message   = 416;
+		SiblingEnum    oneof_sibling_enum    = 417;
+		SiblingMessage oneof_sibling_message = 418;
+
+		string oneof_string1 = 419;
+		string oneof_string2 = 420;
+		string oneof_string3 = 421;
+	}
+}