1// <auto-generated>
2//     Generated by the protocol buffer compiler.  DO NOT EDIT!
3//     source: unittest_custom_options_proto3.proto
4// </auto-generated>
5#pragma warning disable 1591, 0612, 3021
6#region Designer generated code
7
8using pb = global::Google.Protobuf;
9using pbc = global::Google.Protobuf.Collections;
10using pbr = global::Google.Protobuf.Reflection;
11using scg = global::System.Collections.Generic;
12namespace UnitTest.Issues.TestProtos {
13
14  /// <summary>Holder for reflection information generated from unittest_custom_options_proto3.proto</summary>
15  public static partial class UnittestCustomOptionsProto3Reflection {
16
17    #region Descriptor
18    /// <summary>File descriptor for unittest_custom_options_proto3.proto</summary>
19    public static pbr::FileDescriptor Descriptor {
20      get { return descriptor; }
21    }
22    private static pbr::FileDescriptor descriptor;
23
24    static UnittestCustomOptionsProto3Reflection() {
25      byte[] descriptorData = global::System.Convert.FromBase64String(
26          string.Concat(
27            "CiR1bml0dGVzdF9jdXN0b21fb3B0aW9uc19wcm90bzMucHJvdG8SEXByb3Rv",
28            "YnVmX3VuaXR0ZXN0GiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90",
29            "byLXAQocVGVzdE1lc3NhZ2VXaXRoQ3VzdG9tT3B0aW9ucxIeCgZmaWVsZDEY",
30            "ASABKAlCDggBweDDHS3hdQoCAAAAEhUKC29uZW9mX2ZpZWxkGAIgASgFSAAi",
31            "UwoGQW5FbnVtEhYKEkFORU5VTV9VTlNQRUNJRklFRBAAEg8KC0FORU5VTV9W",
32            "QUwxEAESFgoLQU5FTlVNX1ZBTDIQAhoFsIb6BXsaCMX2yR3r/P//OhAIAODp",
33            "wh3I//////////8BQhkKB0FuT25lb2YSDviswx2d//////////8BIhgKFkN1",
34            "c3RvbU9wdGlvbkZvb1JlcXVlc3QiGQoXQ3VzdG9tT3B0aW9uRm9vUmVzcG9u",
35            "c2UiHgocQ3VzdG9tT3B0aW9uRm9vQ2xpZW50TWVzc2FnZSIeChxDdXN0b21P",
36            "cHRpb25Gb29TZXJ2ZXJNZXNzYWdlIo8BChpEdW1teU1lc3NhZ2VDb250YWlu",
37            "aW5nRW51bSJxCgxUZXN0RW51bVR5cGUSIAocVEVTVF9PUFRJT05fRU5VTV9V",
38            "TlNQRUNJRklFRBAAEhoKFlRFU1RfT1BUSU9OX0VOVU1fVFlQRTEQFhIjChZU",
39            "RVNUX09QVElPTl9FTlVNX1RZUEUyEOn//////////wEiIQofRHVtbXlNZXNz",
40            "YWdlSW52YWxpZEFzT3B0aW9uVHlwZSKKAQocQ3VzdG9tT3B0aW9uTWluSW50",
41            "ZWdlclZhbHVlczpq0N6yHQDoxrIdgICAgPj/////AbC8sh2AgICAgICAgIAB",
42            "gJOyHQD49bAdAIDEsB3/////D/iXsB3///////////8BnfWvHQAAAACR7q8d",
43            "AAAAAAAAAACtja8dAAAAgJnWqB0AAAAAAAAAgCKRAQocQ3VzdG9tT3B0aW9u",
44            "TWF4SW50ZWdlclZhbHVlczpx0N6yHQHoxrId/////wewvLId//////////9/",
45            "gJOyHf////8P+PWwHf///////////wGAxLAd/v///w/4l7Ad/v//////////",
46            "AZ31rx3/////ke6vHf//////////rY2vHf///3+Z1qgd/////////38ibgoX",
47            "Q3VzdG9tT3B0aW9uT3RoZXJWYWx1ZXM6U+jGsh2c//////////8B9d+jHeeH",
48            "RUHp3KId+1mMQsrA8z+q3KIdDkhlbGxvLCAiV29ybGQistmiHQtIZWxsbwBX",
49            "b3JsZIjZoh3p//////////8BIjQKHFNldHRpbmdSZWFsc0Zyb21Qb3NpdGl2",
50            "ZUludHM6FPXfox0AAEBB6dyiHQAAAAAAQGNAIjQKHFNldHRpbmdSZWFsc0Zy",
51            "b21OZWdhdGl2ZUludHM6FPXfox0AAEDB6dyiHQAAAAAAQGPAIksKEkNvbXBs",
52            "ZXhPcHRpb25UeXBlMRILCgNmb28YASABKAUSDAoEZm9vMhgCIAEoBRIMCgRm",
53            "b28zGAMgASgFEgwKBGZvbzQYBCADKAUigQMKEkNvbXBsZXhPcHRpb25UeXBl",
54            "MhIyCgNiYXIYASABKAsyJS5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0",
55            "aW9uVHlwZTESCwoDYmF6GAIgASgFEkYKBGZyZWQYAyABKAsyOC5wcm90b2J1",
56            "Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTIuQ29tcGxleE9wdGlvblR5",
57            "cGU0EkgKBmJhcm5leRgEIAMoCzI4LnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBs",
58            "ZXhPcHRpb25UeXBlMi5Db21wbGV4T3B0aW9uVHlwZTQalwEKEkNvbXBsZXhP",
59            "cHRpb25UeXBlNBINCgV3YWxkbxgBIAEoBTJyCgxjb21wbGV4X29wdDQSHy5n",
60            "b29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYivXRAyABKAsyOC5wcm90",
61            "b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTIuQ29tcGxleE9wdGlv",
62            "blR5cGU0IiEKEkNvbXBsZXhPcHRpb25UeXBlMxILCgNxdXgYASABKAUibAoV",
63            "VmFyaW91c0NvbXBsZXhPcHRpb25zOlOi4pUdAggqouKVHQIgY6LilR0CIFiq",
64            "/ZAdAxDbB6r9kB0FCgMI5wXSqI8dAwizD6r9kB0FGgMIwQKq/ZAdBCICCGWq",
65            "/ZAdBSIDCNQB+t6QHQIICSJMCglBZ2dyZWdhdGUSCQoBaRgBIAEoBRIJCgFz",
66            "GAIgASgJEikKA3N1YhgDIAEoCzIcLnByb3RvYnVmX3VuaXR0ZXN0LkFnZ3Jl",
67            "Z2F0ZSJZChBBZ2dyZWdhdGVNZXNzYWdlEikKCWZpZWxkbmFtZRgBIAEoBUIW",
68            "8qGHOxESD0ZpZWxkQW5ub3RhdGlvbjoawtGGOxUIZRIRTWVzc2FnZUFubm90",
69            "YXRpb24ilwEKEE5lc3RlZE9wdGlvblR5cGUaOwoNTmVzdGVkTWVzc2FnZRIi",
70            "CgxuZXN0ZWRfZmllbGQYASABKAVCDMHgwx3qAwAAAAAAADoG4OnCHekHIkYK",
71            "Ck5lc3RlZEVudW0SDwoLVU5TUEVDSUZJRUQQABIdChFORVNURURfRU5VTV9W",
72            "QUxVRRABGgawhvoF7AcaCMX2yR3rAwAAKlIKCk1ldGhvZE9wdDESGgoWTUVU",
73            "SE9ET1BUMV9VTlNQRUNJRklFRBAAEhMKD01FVEhPRE9QVDFfVkFMMRABEhMK",
74            "D01FVEhPRE9QVDFfVkFMMhACKl4KDUFnZ3JlZ2F0ZUVudW0SDwoLVU5TUEVD",
75            "SUZJRUQQABIlCgVWQUxVRRABGhrK/Ik7FRITRW51bVZhbHVlQW5ub3RhdGlv",
76            "bhoVkpWIOxASDkVudW1Bbm5vdGF0aW9uMo4BChxUZXN0U2VydmljZVdpdGhD",
77            "dXN0b21PcHRpb25zEmMKA0ZvbxIpLnByb3RvYnVmX3VuaXR0ZXN0LkN1c3Rv",
78            "bU9wdGlvbkZvb1JlcXVlc3QaKi5wcm90b2J1Zl91bml0dGVzdC5DdXN0b21P",
79            "cHRpb25Gb29SZXNwb25zZSIF4PqMHgIaCZCyix7T24DLSTKZAQoQQWdncmVn",
80            "YXRlU2VydmljZRJrCgZNZXRob2QSIy5wcm90b2J1Zl91bml0dGVzdC5BZ2dy",
81            "ZWdhdGVNZXNzYWdlGiMucHJvdG9idWZfdW5pdHRlc3QuQWdncmVnYXRlTWVz",
82            "c2FnZSIXysiWOxISEE1ldGhvZEFubm90YXRpb24aGMr7jjsTEhFTZXJ2aWNl",
83            "QW5ub3RhdGlvbjoyCglmaWxlX29wdDESHC5nb29nbGUucHJvdG9idWYuRmls",
84            "ZU9wdGlvbnMYjp3YAyABKAQ6OAoMbWVzc2FnZV9vcHQxEh8uZ29vZ2xlLnBy",
85            "b3RvYnVmLk1lc3NhZ2VPcHRpb25zGJyt2AMgASgFOjQKCmZpZWxkX29wdDES",
86            "HS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIi82AMgASgGOjQKCm9u",
87            "ZW9mX29wdDESHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zGM+12AMg",
88            "ASgFOjIKCWVudW1fb3B0MRIcLmdvb2dsZS5wcm90b2J1Zi5FbnVtT3B0aW9u",
89            "cxjontkDIAEoDzo8Cg9lbnVtX3ZhbHVlX29wdDESIS5nb29nbGUucHJvdG9i",
90            "dWYuRW51bVZhbHVlT3B0aW9ucxjmoF8gASgFOjgKDHNlcnZpY2Vfb3B0MRIf",
91            "Lmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiituEDIAEoEjpVCgtt",
92            "ZXRob2Rfb3B0MRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGKzP",
93            "4QMgASgOMh0ucHJvdG9idWZfdW5pdHRlc3QuTWV0aG9kT3B0MTo0Cghib29s",
94            "X29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjqq9YDIAEo",
95            "CDo1CglpbnQzMl9vcHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlv",
96            "bnMY7ajWAyABKAU6NQoJaW50NjRfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1l",
97            "c3NhZ2VPcHRpb25zGMan1gMgASgDOjYKCnVpbnQzMl9vcHQSHy5nb29nbGUu",
98            "cHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYsKLWAyABKA06NgoKdWludDY0X29w",
99            "dBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjfjtYDIAEoBDo2",
100            "CgpzaW50MzJfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25z",
101            "GMCI1gMgASgROjYKCnNpbnQ2NF9vcHQSHy5nb29nbGUucHJvdG9idWYuTWVz",
102            "c2FnZU9wdGlvbnMY/4LWAyABKBI6NwoLZml4ZWQzMl9vcHQSHy5nb29nbGUu",
103            "cHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY0/7VAyABKAc6NwoLZml4ZWQ2NF9v",
104            "cHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY4v3VAyABKAY6",
105            "OAoMc2ZpeGVkMzJfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRp",
106            "b25zGNXx1QMgASgPOjgKDHNmaXhlZDY0X29wdBIfLmdvb2dsZS5wcm90b2J1",
107            "Zi5NZXNzYWdlT3B0aW9ucxjjitUDIAEoEDo1CglmbG9hdF9vcHQSHy5nb29n",
108            "bGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY/rvUAyABKAI6NgoKZG91Ymxl",
109            "X29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjNq9QDIAEo",
110            "ATo2CgpzdHJpbmdfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRp",
111            "b25zGMWr1AMgASgJOjUKCWJ5dGVzX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5N",
112            "ZXNzYWdlT3B0aW9ucxiWq9QDIAEoDDpwCghlbnVtX29wdBIfLmdvb2dsZS5w",
113            "cm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiRq9QDIAEoDjI6LnByb3RvYnVmX3Vu",
114            "aXR0ZXN0LkR1bW15TWVzc2FnZUNvbnRhaW5pbmdFbnVtLlRlc3RFbnVtVHlw",
115            "ZTpwChBtZXNzYWdlX3R5cGVfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3Nh",
116            "Z2VPcHRpb25zGK/y0wMgASgLMjIucHJvdG9idWZfdW5pdHRlc3QuRHVtbXlN",
117            "ZXNzYWdlSW52YWxpZEFzT3B0aW9uVHlwZTpfCgxjb21wbGV4X29wdDESHy5n",
118            "b29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYpNzSAyABKAsyJS5wcm90",
119            "b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTE6XwoMY29tcGxleF9v",
120            "cHQyEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGNWP0gMgASgL",
121            "MiUucHJvdG9idWZfdW5pdHRlc3QuQ29tcGxleE9wdGlvblR5cGUyOl8KDGNv",
122            "bXBsZXhfb3B0MxIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjv",
123            "i9IDIAEoCzIlLnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBl",
124            "MzpOCgdmaWxlb3B0EhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zGM/d",
125            "sAcgASgLMhwucHJvdG9idWZfdW5pdHRlc3QuQWdncmVnYXRlOlAKBm1zZ29w",
126            "dBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiY6rAHIAEoCzIc",
127            "LnByb3RvYnVmX3VuaXR0ZXN0LkFnZ3JlZ2F0ZTpQCghmaWVsZG9wdBIdLmdv",
128            "b2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYnvSwByABKAsyHC5wcm90b2J1",
129            "Zl91bml0dGVzdC5BZ2dyZWdhdGU6TgoHZW51bW9wdBIcLmdvb2dsZS5wcm90",
130            "b2J1Zi5FbnVtT3B0aW9ucxjSgrEHIAEoCzIcLnByb3RvYnVmX3VuaXR0ZXN0",
131            "LkFnZ3JlZ2F0ZTpWCgplbnVtdmFsb3B0EiEuZ29vZ2xlLnByb3RvYnVmLkVu",
132            "dW1WYWx1ZU9wdGlvbnMYyZ+xByABKAsyHC5wcm90b2J1Zl91bml0dGVzdC5B",
133            "Z2dyZWdhdGU6VAoKc2VydmljZW9wdBIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2",
134            "aWNlT3B0aW9ucxi577EHIAEoCzIcLnByb3RvYnVmX3VuaXR0ZXN0LkFnZ3Jl",
135            "Z2F0ZTpSCgltZXRob2RvcHQSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0",
136            "aW9ucxiJ6bIHIAEoCzIcLnByb3RvYnVmX3VuaXR0ZXN0LkFnZ3JlZ2F0ZUJV",
137            "qgIaVW5pdFRlc3QuSXNzdWVzLlRlc3RQcm90b3Pw6MEd6q3A5ST67IU7Kghk",
138            "Eg5GaWxlQW5ub3RhdGlvbhoWEhROZXN0ZWRGaWxlQW5ub3RhdGlvbmIGcHJv",
139            "dG8z"));
140      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
141          new pbr::FileDescriptor[] { global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor, },
142          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::UnitTest.Issues.TestProtos.MethodOpt1), typeof(global::UnitTest.Issues.TestProtos.AggregateEnum), }, new pb::Extension[] { UnittestCustomOptionsProto3Extensions.FileOpt1, UnittestCustomOptionsProto3Extensions.MessageOpt1, UnittestCustomOptionsProto3Extensions.FieldOpt1, UnittestCustomOptionsProto3Extensions.OneofOpt1, UnittestCustomOptionsProto3Extensions.EnumOpt1, UnittestCustomOptionsProto3Extensions.EnumValueOpt1, UnittestCustomOptionsProto3Extensions.ServiceOpt1, UnittestCustomOptionsProto3Extensions.MethodOpt1, UnittestCustomOptionsProto3Extensions.BoolOpt, UnittestCustomOptionsProto3Extensions.Int32Opt, UnittestCustomOptionsProto3Extensions.Int64Opt, UnittestCustomOptionsProto3Extensions.Uint32Opt, UnittestCustomOptionsProto3Extensions.Uint64Opt, UnittestCustomOptionsProto3Extensions.Sint32Opt, UnittestCustomOptionsProto3Extensions.Sint64Opt, UnittestCustomOptionsProto3Extensions.Fixed32Opt, UnittestCustomOptionsProto3Extensions.Fixed64Opt, UnittestCustomOptionsProto3Extensions.Sfixed32Opt, UnittestCustomOptionsProto3Extensions.Sfixed64Opt, UnittestCustomOptionsProto3Extensions.FloatOpt, UnittestCustomOptionsProto3Extensions.DoubleOpt, UnittestCustomOptionsProto3Extensions.StringOpt, UnittestCustomOptionsProto3Extensions.BytesOpt, UnittestCustomOptionsProto3Extensions.EnumOpt, UnittestCustomOptionsProto3Extensions.MessageTypeOpt, UnittestCustomOptionsProto3Extensions.ComplexOpt1, UnittestCustomOptionsProto3Extensions.ComplexOpt2, UnittestCustomOptionsProto3Extensions.ComplexOpt3, UnittestCustomOptionsProto3Extensions.Fileopt, UnittestCustomOptionsProto3Extensions.Msgopt, UnittestCustomOptionsProto3Extensions.Fieldopt, UnittestCustomOptionsProto3Extensions.Enumopt, UnittestCustomOptionsProto3Extensions.Enumvalopt, UnittestCustomOptionsProto3Extensions.Serviceopt, UnittestCustomOptionsProto3Extensions.Methodopt }, new pbr::GeneratedClrTypeInfo[] {
143            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.TestMessageWithCustomOptions), global::UnitTest.Issues.TestProtos.TestMessageWithCustomOptions.Parser, new[]{ "Field1", "OneofField" }, new[]{ "AnOneof" }, new[]{ typeof(global::UnitTest.Issues.TestProtos.TestMessageWithCustomOptions.Types.AnEnum) }, null, null),
144            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionFooRequest), global::UnitTest.Issues.TestProtos.CustomOptionFooRequest.Parser, null, null, null, null, null),
145            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionFooResponse), global::UnitTest.Issues.TestProtos.CustomOptionFooResponse.Parser, null, null, null, null, null),
146            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionFooClientMessage), global::UnitTest.Issues.TestProtos.CustomOptionFooClientMessage.Parser, null, null, null, null, null),
147            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionFooServerMessage), global::UnitTest.Issues.TestProtos.CustomOptionFooServerMessage.Parser, null, null, null, null, null),
148            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum), global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum.Parser, null, null, new[]{ typeof(global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum.Types.TestEnumType) }, null, null),
149            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.DummyMessageInvalidAsOptionType), global::UnitTest.Issues.TestProtos.DummyMessageInvalidAsOptionType.Parser, null, null, null, null, null),
150            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionMinIntegerValues), global::UnitTest.Issues.TestProtos.CustomOptionMinIntegerValues.Parser, null, null, null, null, null),
151            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionMaxIntegerValues), global::UnitTest.Issues.TestProtos.CustomOptionMaxIntegerValues.Parser, null, null, null, null, null),
152            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionOtherValues), global::UnitTest.Issues.TestProtos.CustomOptionOtherValues.Parser, null, null, null, null, null),
153            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.SettingRealsFromPositiveInts), global::UnitTest.Issues.TestProtos.SettingRealsFromPositiveInts.Parser, null, null, null, null, null),
154            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.SettingRealsFromNegativeInts), global::UnitTest.Issues.TestProtos.SettingRealsFromNegativeInts.Parser, null, null, null, null, null),
155            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.ComplexOptionType1), global::UnitTest.Issues.TestProtos.ComplexOptionType1.Parser, new[]{ "Foo", "Foo2", "Foo3", "Foo4" }, null, null, null, null),
156            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.ComplexOptionType2), global::UnitTest.Issues.TestProtos.ComplexOptionType2.Parser, new[]{ "Bar", "Baz", "Fred", "Barney" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4), global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Parser, new[]{ "Waldo" }, null, null, new pb::Extension[] { global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Extensions.ComplexOpt4 }, null)}),
157            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.ComplexOptionType3), global::UnitTest.Issues.TestProtos.ComplexOptionType3.Parser, new[]{ "Qux" }, null, null, null, null),
158            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.VariousComplexOptions), global::UnitTest.Issues.TestProtos.VariousComplexOptions.Parser, null, null, null, null, null),
159            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.Aggregate), global::UnitTest.Issues.TestProtos.Aggregate.Parser, new[]{ "I", "S", "Sub" }, null, null, null, null),
160            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.AggregateMessage), global::UnitTest.Issues.TestProtos.AggregateMessage.Parser, new[]{ "Fieldname" }, null, null, null, null),
161            new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.NestedOptionType), global::UnitTest.Issues.TestProtos.NestedOptionType.Parser, null, null, new[]{ typeof(global::UnitTest.Issues.TestProtos.NestedOptionType.Types.NestedEnum) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.NestedOptionType.Types.NestedMessage), global::UnitTest.Issues.TestProtos.NestedOptionType.Types.NestedMessage.Parser, new[]{ "NestedField" }, null, null, null, null)})
162          }));
163    }
164    #endregion
165
166  }
167  /// <summary>Holder for extension identifiers generated from the top level of unittest_custom_options_proto3.proto</summary>
168  public static partial class UnittestCustomOptionsProto3Extensions {
169    public static readonly pb::Extension<global::Google.Protobuf.Reflection.FileOptions, ulong> FileOpt1 =
170      new pb::Extension<global::Google.Protobuf.Reflection.FileOptions, ulong>(7736974, pb::FieldCodec.ForUInt64(61895792, 0UL));
171    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, int> MessageOpt1 =
172      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, int>(7739036, pb::FieldCodec.ForInt32(61912288, 0));
173    public static readonly pb::Extension<global::Google.Protobuf.Reflection.FieldOptions, ulong> FieldOpt1 =
174      new pb::Extension<global::Google.Protobuf.Reflection.FieldOptions, ulong>(7740936, pb::FieldCodec.ForFixed64(61927489, 0UL));
175    public static readonly pb::Extension<global::Google.Protobuf.Reflection.OneofOptions, int> OneofOpt1 =
176      new pb::Extension<global::Google.Protobuf.Reflection.OneofOptions, int>(7740111, pb::FieldCodec.ForInt32(61920888, 0));
177    public static readonly pb::Extension<global::Google.Protobuf.Reflection.EnumOptions, int> EnumOpt1 =
178      new pb::Extension<global::Google.Protobuf.Reflection.EnumOptions, int>(7753576, pb::FieldCodec.ForSFixed32(62028613, 0));
179    public static readonly pb::Extension<global::Google.Protobuf.Reflection.EnumValueOptions, int> EnumValueOpt1 =
180      new pb::Extension<global::Google.Protobuf.Reflection.EnumValueOptions, int>(1560678, pb::FieldCodec.ForInt32(12485424, 0));
181    public static readonly pb::Extension<global::Google.Protobuf.Reflection.ServiceOptions, long> ServiceOpt1 =
182      new pb::Extension<global::Google.Protobuf.Reflection.ServiceOptions, long>(7887650, pb::FieldCodec.ForSInt64(63101200, 0L));
183    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MethodOptions, global::UnitTest.Issues.TestProtos.MethodOpt1> MethodOpt1 =
184      new pb::Extension<global::Google.Protobuf.Reflection.MethodOptions, global::UnitTest.Issues.TestProtos.MethodOpt1>(7890860, pb::FieldCodec.ForEnum(63126880, x => (int) x, x => (global::UnitTest.Issues.TestProtos.MethodOpt1) x, global::UnitTest.Issues.TestProtos.MethodOpt1.Unspecified));
185    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, bool> BoolOpt =
186      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, bool>(7706090, pb::FieldCodec.ForBool(61648720, false));
187    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, int> Int32Opt =
188      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, int>(7705709, pb::FieldCodec.ForInt32(61645672, 0));
189    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, long> Int64Opt =
190      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, long>(7705542, pb::FieldCodec.ForInt64(61644336, 0L));
191    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, uint> Uint32Opt =
192      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, uint>(7704880, pb::FieldCodec.ForUInt32(61639040, 0));
193    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, ulong> Uint64Opt =
194      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, ulong>(7702367, pb::FieldCodec.ForUInt64(61618936, 0UL));
195    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, int> Sint32Opt =
196      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, int>(7701568, pb::FieldCodec.ForSInt32(61612544, 0));
197    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, long> Sint64Opt =
198      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, long>(7700863, pb::FieldCodec.ForSInt64(61606904, 0L));
199    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, uint> Fixed32Opt =
200      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, uint>(7700307, pb::FieldCodec.ForFixed32(61602461, 0));
201    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, ulong> Fixed64Opt =
202      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, ulong>(7700194, pb::FieldCodec.ForFixed64(61601553, 0UL));
203    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, int> Sfixed32Opt =
204      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, int>(7698645, pb::FieldCodec.ForSFixed32(61589165, 0));
205    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, long> Sfixed64Opt =
206      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, long>(7685475, pb::FieldCodec.ForSFixed64(61483801, 0L));
207    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, float> FloatOpt =
208      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, float>(7675390, pb::FieldCodec.ForFloat(61403125, 0F));
209    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, double> DoubleOpt =
210      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, double>(7673293, pb::FieldCodec.ForDouble(61386345, 0D));
211    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, string> StringOpt =
212      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, string>(7673285, pb::FieldCodec.ForString(61386282, ""));
213    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, pb::ByteString> BytesOpt =
214      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, pb::ByteString>(7673238, pb::FieldCodec.ForBytes(61385906, pb::ByteString.Empty));
215    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum.Types.TestEnumType> EnumOpt =
216      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum.Types.TestEnumType>(7673233, pb::FieldCodec.ForEnum(61385864, x => (int) x, x => (global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum.Types.TestEnumType) x, global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum.Types.TestEnumType.TestOptionEnumUnspecified));
217    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.DummyMessageInvalidAsOptionType> MessageTypeOpt =
218      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.DummyMessageInvalidAsOptionType>(7665967, pb::FieldCodec.ForMessage(61327738, global::UnitTest.Issues.TestProtos.DummyMessageInvalidAsOptionType.Parser));
219    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.ComplexOptionType1> ComplexOpt1 =
220      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.ComplexOptionType1>(7646756, pb::FieldCodec.ForMessage(61174050, global::UnitTest.Issues.TestProtos.ComplexOptionType1.Parser));
221    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.ComplexOptionType2> ComplexOpt2 =
222      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.ComplexOptionType2>(7636949, pb::FieldCodec.ForMessage(61095594, global::UnitTest.Issues.TestProtos.ComplexOptionType2.Parser));
223    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.ComplexOptionType3> ComplexOpt3 =
224      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.ComplexOptionType3>(7636463, pb::FieldCodec.ForMessage(61091706, global::UnitTest.Issues.TestProtos.ComplexOptionType3.Parser));
225    public static readonly pb::Extension<global::Google.Protobuf.Reflection.FileOptions, global::UnitTest.Issues.TestProtos.Aggregate> Fileopt =
226      new pb::Extension<global::Google.Protobuf.Reflection.FileOptions, global::UnitTest.Issues.TestProtos.Aggregate>(15478479, pb::FieldCodec.ForMessage(123827834, global::UnitTest.Issues.TestProtos.Aggregate.Parser));
227    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.Aggregate> Msgopt =
228      new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.Aggregate>(15480088, pb::FieldCodec.ForMessage(123840706, global::UnitTest.Issues.TestProtos.Aggregate.Parser));
229    public static readonly pb::Extension<global::Google.Protobuf.Reflection.FieldOptions, global::UnitTest.Issues.TestProtos.Aggregate> Fieldopt =
230      new pb::Extension<global::Google.Protobuf.Reflection.FieldOptions, global::UnitTest.Issues.TestProtos.Aggregate>(15481374, pb::FieldCodec.ForMessage(123850994, global::UnitTest.Issues.TestProtos.Aggregate.Parser));
231    public static readonly pb::Extension<global::Google.Protobuf.Reflection.EnumOptions, global::UnitTest.Issues.TestProtos.Aggregate> Enumopt =
232      new pb::Extension<global::Google.Protobuf.Reflection.EnumOptions, global::UnitTest.Issues.TestProtos.Aggregate>(15483218, pb::FieldCodec.ForMessage(123865746, global::UnitTest.Issues.TestProtos.Aggregate.Parser));
233    public static readonly pb::Extension<global::Google.Protobuf.Reflection.EnumValueOptions, global::UnitTest.Issues.TestProtos.Aggregate> Enumvalopt =
234      new pb::Extension<global::Google.Protobuf.Reflection.EnumValueOptions, global::UnitTest.Issues.TestProtos.Aggregate>(15486921, pb::FieldCodec.ForMessage(123895370, global::UnitTest.Issues.TestProtos.Aggregate.Parser));
235    public static readonly pb::Extension<global::Google.Protobuf.Reflection.ServiceOptions, global::UnitTest.Issues.TestProtos.Aggregate> Serviceopt =
236      new pb::Extension<global::Google.Protobuf.Reflection.ServiceOptions, global::UnitTest.Issues.TestProtos.Aggregate>(15497145, pb::FieldCodec.ForMessage(123977162, global::UnitTest.Issues.TestProtos.Aggregate.Parser));
237    public static readonly pb::Extension<global::Google.Protobuf.Reflection.MethodOptions, global::UnitTest.Issues.TestProtos.Aggregate> Methodopt =
238      new pb::Extension<global::Google.Protobuf.Reflection.MethodOptions, global::UnitTest.Issues.TestProtos.Aggregate>(15512713, pb::FieldCodec.ForMessage(124101706, global::UnitTest.Issues.TestProtos.Aggregate.Parser));
239  }
240
241  #region Enums
242  public enum MethodOpt1 {
243    [pbr::OriginalName("METHODOPT1_UNSPECIFIED")] Unspecified = 0,
244    [pbr::OriginalName("METHODOPT1_VAL1")] Val1 = 1,
245    [pbr::OriginalName("METHODOPT1_VAL2")] Val2 = 2,
246  }
247
248  public enum AggregateEnum {
249    [pbr::OriginalName("UNSPECIFIED")] Unspecified = 0,
250    [pbr::OriginalName("VALUE")] Value = 1,
251  }
252
253  #endregion
254
255  #region Messages
256  /// <summary>
257  /// A test message with custom options at all possible locations (and also some
258  /// regular options, to make sure they interact nicely).
259  /// </summary>
260  public sealed partial class TestMessageWithCustomOptions : pb::IMessage<TestMessageWithCustomOptions>
261  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
262      , pb::IBufferMessage
263  #endif
264  {
265    private static readonly pb::MessageParser<TestMessageWithCustomOptions> _parser = new pb::MessageParser<TestMessageWithCustomOptions>(() => new TestMessageWithCustomOptions());
266    private pb::UnknownFieldSet _unknownFields;
267    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
268    public static pb::MessageParser<TestMessageWithCustomOptions> Parser { get { return _parser; } }
269
270    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
271    public static pbr::MessageDescriptor Descriptor {
272      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[0]; }
273    }
274
275    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
276    pbr::MessageDescriptor pb::IMessage.Descriptor {
277      get { return Descriptor; }
278    }
279
280    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
281    public TestMessageWithCustomOptions() {
282      OnConstruction();
283    }
284
285    partial void OnConstruction();
286
287    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
288    public TestMessageWithCustomOptions(TestMessageWithCustomOptions other) : this() {
289      field1_ = other.field1_;
290      switch (other.AnOneofCase) {
291        case AnOneofOneofCase.OneofField:
292          OneofField = other.OneofField;
293          break;
294      }
295
296      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
297    }
298
299    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
300    public TestMessageWithCustomOptions Clone() {
301      return new TestMessageWithCustomOptions(this);
302    }
303
304    /// <summary>Field number for the "field1" field.</summary>
305    public const int Field1FieldNumber = 1;
306    private string field1_ = "";
307    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
308    public string Field1 {
309      get { return field1_; }
310      set {
311        field1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
312      }
313    }
314
315    /// <summary>Field number for the "oneof_field" field.</summary>
316    public const int OneofFieldFieldNumber = 2;
317    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
318    public int OneofField {
319      get { return anOneofCase_ == AnOneofOneofCase.OneofField ? (int) anOneof_ : 0; }
320      set {
321        anOneof_ = value;
322        anOneofCase_ = AnOneofOneofCase.OneofField;
323      }
324    }
325
326    private object anOneof_;
327    /// <summary>Enum of possible cases for the "AnOneof" oneof.</summary>
328    public enum AnOneofOneofCase {
329      None = 0,
330      OneofField = 2,
331    }
332    private AnOneofOneofCase anOneofCase_ = AnOneofOneofCase.None;
333    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
334    public AnOneofOneofCase AnOneofCase {
335      get { return anOneofCase_; }
336    }
337
338    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
339    public void ClearAnOneof() {
340      anOneofCase_ = AnOneofOneofCase.None;
341      anOneof_ = null;
342    }
343
344    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
345    public override bool Equals(object other) {
346      return Equals(other as TestMessageWithCustomOptions);
347    }
348
349    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
350    public bool Equals(TestMessageWithCustomOptions other) {
351      if (ReferenceEquals(other, null)) {
352        return false;
353      }
354      if (ReferenceEquals(other, this)) {
355        return true;
356      }
357      if (Field1 != other.Field1) return false;
358      if (OneofField != other.OneofField) return false;
359      if (AnOneofCase != other.AnOneofCase) return false;
360      return Equals(_unknownFields, other._unknownFields);
361    }
362
363    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
364    public override int GetHashCode() {
365      int hash = 1;
366      if (Field1.Length != 0) hash ^= Field1.GetHashCode();
367      if (anOneofCase_ == AnOneofOneofCase.OneofField) hash ^= OneofField.GetHashCode();
368      hash ^= (int) anOneofCase_;
369      if (_unknownFields != null) {
370        hash ^= _unknownFields.GetHashCode();
371      }
372      return hash;
373    }
374
375    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
376    public override string ToString() {
377      return pb::JsonFormatter.ToDiagnosticString(this);
378    }
379
380    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
381    public void WriteTo(pb::CodedOutputStream output) {
382    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
383      output.WriteRawMessage(this);
384    #else
385      if (Field1.Length != 0) {
386        output.WriteRawTag(10);
387        output.WriteString(Field1);
388      }
389      if (anOneofCase_ == AnOneofOneofCase.OneofField) {
390        output.WriteRawTag(16);
391        output.WriteInt32(OneofField);
392      }
393      if (_unknownFields != null) {
394        _unknownFields.WriteTo(output);
395      }
396    #endif
397    }
398
399    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
400    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
401    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
402      if (Field1.Length != 0) {
403        output.WriteRawTag(10);
404        output.WriteString(Field1);
405      }
406      if (anOneofCase_ == AnOneofOneofCase.OneofField) {
407        output.WriteRawTag(16);
408        output.WriteInt32(OneofField);
409      }
410      if (_unknownFields != null) {
411        _unknownFields.WriteTo(ref output);
412      }
413    }
414    #endif
415
416    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
417    public int CalculateSize() {
418      int size = 0;
419      if (Field1.Length != 0) {
420        size += 1 + pb::CodedOutputStream.ComputeStringSize(Field1);
421      }
422      if (anOneofCase_ == AnOneofOneofCase.OneofField) {
423        size += 1 + pb::CodedOutputStream.ComputeInt32Size(OneofField);
424      }
425      if (_unknownFields != null) {
426        size += _unknownFields.CalculateSize();
427      }
428      return size;
429    }
430
431    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
432    public void MergeFrom(TestMessageWithCustomOptions other) {
433      if (other == null) {
434        return;
435      }
436      if (other.Field1.Length != 0) {
437        Field1 = other.Field1;
438      }
439      switch (other.AnOneofCase) {
440        case AnOneofOneofCase.OneofField:
441          OneofField = other.OneofField;
442          break;
443      }
444
445      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
446    }
447
448    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
449    public void MergeFrom(pb::CodedInputStream input) {
450    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
451      input.ReadRawMessage(this);
452    #else
453      uint tag;
454      while ((tag = input.ReadTag()) != 0) {
455        switch(tag) {
456          default:
457            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
458            break;
459          case 10: {
460            Field1 = input.ReadString();
461            break;
462          }
463          case 16: {
464            OneofField = input.ReadInt32();
465            break;
466          }
467        }
468      }
469    #endif
470    }
471
472    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
473    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
474    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
475      uint tag;
476      while ((tag = input.ReadTag()) != 0) {
477        switch(tag) {
478          default:
479            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
480            break;
481          case 10: {
482            Field1 = input.ReadString();
483            break;
484          }
485          case 16: {
486            OneofField = input.ReadInt32();
487            break;
488          }
489        }
490      }
491    }
492    #endif
493
494    #region Nested types
495    /// <summary>Container for nested types declared in the TestMessageWithCustomOptions message type.</summary>
496    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
497    public static partial class Types {
498      public enum AnEnum {
499        [pbr::OriginalName("ANENUM_UNSPECIFIED")] Unspecified = 0,
500        [pbr::OriginalName("ANENUM_VAL1")] Val1 = 1,
501        [pbr::OriginalName("ANENUM_VAL2")] Val2 = 2,
502      }
503
504    }
505    #endregion
506
507  }
508
509  /// <summary>
510  /// A test RPC service with custom options at all possible locations (and also
511  /// some regular options, to make sure they interact nicely).
512  /// </summary>
513  public sealed partial class CustomOptionFooRequest : pb::IMessage<CustomOptionFooRequest>
514  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
515      , pb::IBufferMessage
516  #endif
517  {
518    private static readonly pb::MessageParser<CustomOptionFooRequest> _parser = new pb::MessageParser<CustomOptionFooRequest>(() => new CustomOptionFooRequest());
519    private pb::UnknownFieldSet _unknownFields;
520    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
521    public static pb::MessageParser<CustomOptionFooRequest> Parser { get { return _parser; } }
522
523    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
524    public static pbr::MessageDescriptor Descriptor {
525      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[1]; }
526    }
527
528    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
529    pbr::MessageDescriptor pb::IMessage.Descriptor {
530      get { return Descriptor; }
531    }
532
533    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
534    public CustomOptionFooRequest() {
535      OnConstruction();
536    }
537
538    partial void OnConstruction();
539
540    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
541    public CustomOptionFooRequest(CustomOptionFooRequest other) : this() {
542      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
543    }
544
545    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
546    public CustomOptionFooRequest Clone() {
547      return new CustomOptionFooRequest(this);
548    }
549
550    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
551    public override bool Equals(object other) {
552      return Equals(other as CustomOptionFooRequest);
553    }
554
555    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
556    public bool Equals(CustomOptionFooRequest other) {
557      if (ReferenceEquals(other, null)) {
558        return false;
559      }
560      if (ReferenceEquals(other, this)) {
561        return true;
562      }
563      return Equals(_unknownFields, other._unknownFields);
564    }
565
566    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
567    public override int GetHashCode() {
568      int hash = 1;
569      if (_unknownFields != null) {
570        hash ^= _unknownFields.GetHashCode();
571      }
572      return hash;
573    }
574
575    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
576    public override string ToString() {
577      return pb::JsonFormatter.ToDiagnosticString(this);
578    }
579
580    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
581    public void WriteTo(pb::CodedOutputStream output) {
582    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
583      output.WriteRawMessage(this);
584    #else
585      if (_unknownFields != null) {
586        _unknownFields.WriteTo(output);
587      }
588    #endif
589    }
590
591    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
592    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
593    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
594      if (_unknownFields != null) {
595        _unknownFields.WriteTo(ref output);
596      }
597    }
598    #endif
599
600    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
601    public int CalculateSize() {
602      int size = 0;
603      if (_unknownFields != null) {
604        size += _unknownFields.CalculateSize();
605      }
606      return size;
607    }
608
609    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
610    public void MergeFrom(CustomOptionFooRequest other) {
611      if (other == null) {
612        return;
613      }
614      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
615    }
616
617    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
618    public void MergeFrom(pb::CodedInputStream input) {
619    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
620      input.ReadRawMessage(this);
621    #else
622      uint tag;
623      while ((tag = input.ReadTag()) != 0) {
624        switch(tag) {
625          default:
626            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
627            break;
628        }
629      }
630    #endif
631    }
632
633    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
634    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
635    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
636      uint tag;
637      while ((tag = input.ReadTag()) != 0) {
638        switch(tag) {
639          default:
640            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
641            break;
642        }
643      }
644    }
645    #endif
646
647  }
648
649  public sealed partial class CustomOptionFooResponse : pb::IMessage<CustomOptionFooResponse>
650  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
651      , pb::IBufferMessage
652  #endif
653  {
654    private static readonly pb::MessageParser<CustomOptionFooResponse> _parser = new pb::MessageParser<CustomOptionFooResponse>(() => new CustomOptionFooResponse());
655    private pb::UnknownFieldSet _unknownFields;
656    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
657    public static pb::MessageParser<CustomOptionFooResponse> Parser { get { return _parser; } }
658
659    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
660    public static pbr::MessageDescriptor Descriptor {
661      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[2]; }
662    }
663
664    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
665    pbr::MessageDescriptor pb::IMessage.Descriptor {
666      get { return Descriptor; }
667    }
668
669    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
670    public CustomOptionFooResponse() {
671      OnConstruction();
672    }
673
674    partial void OnConstruction();
675
676    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
677    public CustomOptionFooResponse(CustomOptionFooResponse other) : this() {
678      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
679    }
680
681    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
682    public CustomOptionFooResponse Clone() {
683      return new CustomOptionFooResponse(this);
684    }
685
686    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
687    public override bool Equals(object other) {
688      return Equals(other as CustomOptionFooResponse);
689    }
690
691    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
692    public bool Equals(CustomOptionFooResponse other) {
693      if (ReferenceEquals(other, null)) {
694        return false;
695      }
696      if (ReferenceEquals(other, this)) {
697        return true;
698      }
699      return Equals(_unknownFields, other._unknownFields);
700    }
701
702    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
703    public override int GetHashCode() {
704      int hash = 1;
705      if (_unknownFields != null) {
706        hash ^= _unknownFields.GetHashCode();
707      }
708      return hash;
709    }
710
711    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
712    public override string ToString() {
713      return pb::JsonFormatter.ToDiagnosticString(this);
714    }
715
716    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
717    public void WriteTo(pb::CodedOutputStream output) {
718    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
719      output.WriteRawMessage(this);
720    #else
721      if (_unknownFields != null) {
722        _unknownFields.WriteTo(output);
723      }
724    #endif
725    }
726
727    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
728    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
729    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
730      if (_unknownFields != null) {
731        _unknownFields.WriteTo(ref output);
732      }
733    }
734    #endif
735
736    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
737    public int CalculateSize() {
738      int size = 0;
739      if (_unknownFields != null) {
740        size += _unknownFields.CalculateSize();
741      }
742      return size;
743    }
744
745    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
746    public void MergeFrom(CustomOptionFooResponse other) {
747      if (other == null) {
748        return;
749      }
750      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
751    }
752
753    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
754    public void MergeFrom(pb::CodedInputStream input) {
755    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
756      input.ReadRawMessage(this);
757    #else
758      uint tag;
759      while ((tag = input.ReadTag()) != 0) {
760        switch(tag) {
761          default:
762            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
763            break;
764        }
765      }
766    #endif
767    }
768
769    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
770    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
771    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
772      uint tag;
773      while ((tag = input.ReadTag()) != 0) {
774        switch(tag) {
775          default:
776            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
777            break;
778        }
779      }
780    }
781    #endif
782
783  }
784
785  public sealed partial class CustomOptionFooClientMessage : pb::IMessage<CustomOptionFooClientMessage>
786  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
787      , pb::IBufferMessage
788  #endif
789  {
790    private static readonly pb::MessageParser<CustomOptionFooClientMessage> _parser = new pb::MessageParser<CustomOptionFooClientMessage>(() => new CustomOptionFooClientMessage());
791    private pb::UnknownFieldSet _unknownFields;
792    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
793    public static pb::MessageParser<CustomOptionFooClientMessage> Parser { get { return _parser; } }
794
795    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
796    public static pbr::MessageDescriptor Descriptor {
797      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[3]; }
798    }
799
800    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
801    pbr::MessageDescriptor pb::IMessage.Descriptor {
802      get { return Descriptor; }
803    }
804
805    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
806    public CustomOptionFooClientMessage() {
807      OnConstruction();
808    }
809
810    partial void OnConstruction();
811
812    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
813    public CustomOptionFooClientMessage(CustomOptionFooClientMessage other) : this() {
814      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
815    }
816
817    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
818    public CustomOptionFooClientMessage Clone() {
819      return new CustomOptionFooClientMessage(this);
820    }
821
822    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
823    public override bool Equals(object other) {
824      return Equals(other as CustomOptionFooClientMessage);
825    }
826
827    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
828    public bool Equals(CustomOptionFooClientMessage other) {
829      if (ReferenceEquals(other, null)) {
830        return false;
831      }
832      if (ReferenceEquals(other, this)) {
833        return true;
834      }
835      return Equals(_unknownFields, other._unknownFields);
836    }
837
838    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
839    public override int GetHashCode() {
840      int hash = 1;
841      if (_unknownFields != null) {
842        hash ^= _unknownFields.GetHashCode();
843      }
844      return hash;
845    }
846
847    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
848    public override string ToString() {
849      return pb::JsonFormatter.ToDiagnosticString(this);
850    }
851
852    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
853    public void WriteTo(pb::CodedOutputStream output) {
854    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
855      output.WriteRawMessage(this);
856    #else
857      if (_unknownFields != null) {
858        _unknownFields.WriteTo(output);
859      }
860    #endif
861    }
862
863    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
864    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
865    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
866      if (_unknownFields != null) {
867        _unknownFields.WriteTo(ref output);
868      }
869    }
870    #endif
871
872    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
873    public int CalculateSize() {
874      int size = 0;
875      if (_unknownFields != null) {
876        size += _unknownFields.CalculateSize();
877      }
878      return size;
879    }
880
881    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
882    public void MergeFrom(CustomOptionFooClientMessage other) {
883      if (other == null) {
884        return;
885      }
886      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
887    }
888
889    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
890    public void MergeFrom(pb::CodedInputStream input) {
891    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
892      input.ReadRawMessage(this);
893    #else
894      uint tag;
895      while ((tag = input.ReadTag()) != 0) {
896        switch(tag) {
897          default:
898            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
899            break;
900        }
901      }
902    #endif
903    }
904
905    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
906    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
907    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
908      uint tag;
909      while ((tag = input.ReadTag()) != 0) {
910        switch(tag) {
911          default:
912            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
913            break;
914        }
915      }
916    }
917    #endif
918
919  }
920
921  public sealed partial class CustomOptionFooServerMessage : pb::IMessage<CustomOptionFooServerMessage>
922  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
923      , pb::IBufferMessage
924  #endif
925  {
926    private static readonly pb::MessageParser<CustomOptionFooServerMessage> _parser = new pb::MessageParser<CustomOptionFooServerMessage>(() => new CustomOptionFooServerMessage());
927    private pb::UnknownFieldSet _unknownFields;
928    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
929    public static pb::MessageParser<CustomOptionFooServerMessage> Parser { get { return _parser; } }
930
931    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
932    public static pbr::MessageDescriptor Descriptor {
933      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[4]; }
934    }
935
936    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
937    pbr::MessageDescriptor pb::IMessage.Descriptor {
938      get { return Descriptor; }
939    }
940
941    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
942    public CustomOptionFooServerMessage() {
943      OnConstruction();
944    }
945
946    partial void OnConstruction();
947
948    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
949    public CustomOptionFooServerMessage(CustomOptionFooServerMessage other) : this() {
950      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
951    }
952
953    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
954    public CustomOptionFooServerMessage Clone() {
955      return new CustomOptionFooServerMessage(this);
956    }
957
958    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
959    public override bool Equals(object other) {
960      return Equals(other as CustomOptionFooServerMessage);
961    }
962
963    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
964    public bool Equals(CustomOptionFooServerMessage other) {
965      if (ReferenceEquals(other, null)) {
966        return false;
967      }
968      if (ReferenceEquals(other, this)) {
969        return true;
970      }
971      return Equals(_unknownFields, other._unknownFields);
972    }
973
974    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
975    public override int GetHashCode() {
976      int hash = 1;
977      if (_unknownFields != null) {
978        hash ^= _unknownFields.GetHashCode();
979      }
980      return hash;
981    }
982
983    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
984    public override string ToString() {
985      return pb::JsonFormatter.ToDiagnosticString(this);
986    }
987
988    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
989    public void WriteTo(pb::CodedOutputStream output) {
990    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
991      output.WriteRawMessage(this);
992    #else
993      if (_unknownFields != null) {
994        _unknownFields.WriteTo(output);
995      }
996    #endif
997    }
998
999    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1000    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1001    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
1002      if (_unknownFields != null) {
1003        _unknownFields.WriteTo(ref output);
1004      }
1005    }
1006    #endif
1007
1008    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1009    public int CalculateSize() {
1010      int size = 0;
1011      if (_unknownFields != null) {
1012        size += _unknownFields.CalculateSize();
1013      }
1014      return size;
1015    }
1016
1017    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1018    public void MergeFrom(CustomOptionFooServerMessage other) {
1019      if (other == null) {
1020        return;
1021      }
1022      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
1023    }
1024
1025    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1026    public void MergeFrom(pb::CodedInputStream input) {
1027    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1028      input.ReadRawMessage(this);
1029    #else
1030      uint tag;
1031      while ((tag = input.ReadTag()) != 0) {
1032        switch(tag) {
1033          default:
1034            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
1035            break;
1036        }
1037      }
1038    #endif
1039    }
1040
1041    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1042    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1043    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
1044      uint tag;
1045      while ((tag = input.ReadTag()) != 0) {
1046        switch(tag) {
1047          default:
1048            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
1049            break;
1050        }
1051      }
1052    }
1053    #endif
1054
1055  }
1056
1057  public sealed partial class DummyMessageContainingEnum : pb::IMessage<DummyMessageContainingEnum>
1058  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1059      , pb::IBufferMessage
1060  #endif
1061  {
1062    private static readonly pb::MessageParser<DummyMessageContainingEnum> _parser = new pb::MessageParser<DummyMessageContainingEnum>(() => new DummyMessageContainingEnum());
1063    private pb::UnknownFieldSet _unknownFields;
1064    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1065    public static pb::MessageParser<DummyMessageContainingEnum> Parser { get { return _parser; } }
1066
1067    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1068    public static pbr::MessageDescriptor Descriptor {
1069      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[5]; }
1070    }
1071
1072    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1073    pbr::MessageDescriptor pb::IMessage.Descriptor {
1074      get { return Descriptor; }
1075    }
1076
1077    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1078    public DummyMessageContainingEnum() {
1079      OnConstruction();
1080    }
1081
1082    partial void OnConstruction();
1083
1084    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1085    public DummyMessageContainingEnum(DummyMessageContainingEnum other) : this() {
1086      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
1087    }
1088
1089    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1090    public DummyMessageContainingEnum Clone() {
1091      return new DummyMessageContainingEnum(this);
1092    }
1093
1094    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1095    public override bool Equals(object other) {
1096      return Equals(other as DummyMessageContainingEnum);
1097    }
1098
1099    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1100    public bool Equals(DummyMessageContainingEnum other) {
1101      if (ReferenceEquals(other, null)) {
1102        return false;
1103      }
1104      if (ReferenceEquals(other, this)) {
1105        return true;
1106      }
1107      return Equals(_unknownFields, other._unknownFields);
1108    }
1109
1110    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1111    public override int GetHashCode() {
1112      int hash = 1;
1113      if (_unknownFields != null) {
1114        hash ^= _unknownFields.GetHashCode();
1115      }
1116      return hash;
1117    }
1118
1119    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1120    public override string ToString() {
1121      return pb::JsonFormatter.ToDiagnosticString(this);
1122    }
1123
1124    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1125    public void WriteTo(pb::CodedOutputStream output) {
1126    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1127      output.WriteRawMessage(this);
1128    #else
1129      if (_unknownFields != null) {
1130        _unknownFields.WriteTo(output);
1131      }
1132    #endif
1133    }
1134
1135    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1136    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1137    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
1138      if (_unknownFields != null) {
1139        _unknownFields.WriteTo(ref output);
1140      }
1141    }
1142    #endif
1143
1144    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1145    public int CalculateSize() {
1146      int size = 0;
1147      if (_unknownFields != null) {
1148        size += _unknownFields.CalculateSize();
1149      }
1150      return size;
1151    }
1152
1153    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1154    public void MergeFrom(DummyMessageContainingEnum other) {
1155      if (other == null) {
1156        return;
1157      }
1158      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
1159    }
1160
1161    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1162    public void MergeFrom(pb::CodedInputStream input) {
1163    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1164      input.ReadRawMessage(this);
1165    #else
1166      uint tag;
1167      while ((tag = input.ReadTag()) != 0) {
1168        switch(tag) {
1169          default:
1170            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
1171            break;
1172        }
1173      }
1174    #endif
1175    }
1176
1177    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1178    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1179    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
1180      uint tag;
1181      while ((tag = input.ReadTag()) != 0) {
1182        switch(tag) {
1183          default:
1184            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
1185            break;
1186        }
1187      }
1188    }
1189    #endif
1190
1191    #region Nested types
1192    /// <summary>Container for nested types declared in the DummyMessageContainingEnum message type.</summary>
1193    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1194    public static partial class Types {
1195      public enum TestEnumType {
1196        [pbr::OriginalName("TEST_OPTION_ENUM_UNSPECIFIED")] TestOptionEnumUnspecified = 0,
1197        [pbr::OriginalName("TEST_OPTION_ENUM_TYPE1")] TestOptionEnumType1 = 22,
1198        [pbr::OriginalName("TEST_OPTION_ENUM_TYPE2")] TestOptionEnumType2 = -23,
1199      }
1200
1201    }
1202    #endregion
1203
1204  }
1205
1206  public sealed partial class DummyMessageInvalidAsOptionType : pb::IMessage<DummyMessageInvalidAsOptionType>
1207  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1208      , pb::IBufferMessage
1209  #endif
1210  {
1211    private static readonly pb::MessageParser<DummyMessageInvalidAsOptionType> _parser = new pb::MessageParser<DummyMessageInvalidAsOptionType>(() => new DummyMessageInvalidAsOptionType());
1212    private pb::UnknownFieldSet _unknownFields;
1213    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1214    public static pb::MessageParser<DummyMessageInvalidAsOptionType> Parser { get { return _parser; } }
1215
1216    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1217    public static pbr::MessageDescriptor Descriptor {
1218      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[6]; }
1219    }
1220
1221    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1222    pbr::MessageDescriptor pb::IMessage.Descriptor {
1223      get { return Descriptor; }
1224    }
1225
1226    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1227    public DummyMessageInvalidAsOptionType() {
1228      OnConstruction();
1229    }
1230
1231    partial void OnConstruction();
1232
1233    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1234    public DummyMessageInvalidAsOptionType(DummyMessageInvalidAsOptionType other) : this() {
1235      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
1236    }
1237
1238    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1239    public DummyMessageInvalidAsOptionType Clone() {
1240      return new DummyMessageInvalidAsOptionType(this);
1241    }
1242
1243    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1244    public override bool Equals(object other) {
1245      return Equals(other as DummyMessageInvalidAsOptionType);
1246    }
1247
1248    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1249    public bool Equals(DummyMessageInvalidAsOptionType other) {
1250      if (ReferenceEquals(other, null)) {
1251        return false;
1252      }
1253      if (ReferenceEquals(other, this)) {
1254        return true;
1255      }
1256      return Equals(_unknownFields, other._unknownFields);
1257    }
1258
1259    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1260    public override int GetHashCode() {
1261      int hash = 1;
1262      if (_unknownFields != null) {
1263        hash ^= _unknownFields.GetHashCode();
1264      }
1265      return hash;
1266    }
1267
1268    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1269    public override string ToString() {
1270      return pb::JsonFormatter.ToDiagnosticString(this);
1271    }
1272
1273    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1274    public void WriteTo(pb::CodedOutputStream output) {
1275    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1276      output.WriteRawMessage(this);
1277    #else
1278      if (_unknownFields != null) {
1279        _unknownFields.WriteTo(output);
1280      }
1281    #endif
1282    }
1283
1284    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1285    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1286    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
1287      if (_unknownFields != null) {
1288        _unknownFields.WriteTo(ref output);
1289      }
1290    }
1291    #endif
1292
1293    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1294    public int CalculateSize() {
1295      int size = 0;
1296      if (_unknownFields != null) {
1297        size += _unknownFields.CalculateSize();
1298      }
1299      return size;
1300    }
1301
1302    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1303    public void MergeFrom(DummyMessageInvalidAsOptionType other) {
1304      if (other == null) {
1305        return;
1306      }
1307      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
1308    }
1309
1310    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1311    public void MergeFrom(pb::CodedInputStream input) {
1312    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1313      input.ReadRawMessage(this);
1314    #else
1315      uint tag;
1316      while ((tag = input.ReadTag()) != 0) {
1317        switch(tag) {
1318          default:
1319            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
1320            break;
1321        }
1322      }
1323    #endif
1324    }
1325
1326    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1327    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1328    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
1329      uint tag;
1330      while ((tag = input.ReadTag()) != 0) {
1331        switch(tag) {
1332          default:
1333            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
1334            break;
1335        }
1336      }
1337    }
1338    #endif
1339
1340  }
1341
1342  public sealed partial class CustomOptionMinIntegerValues : pb::IMessage<CustomOptionMinIntegerValues>
1343  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1344      , pb::IBufferMessage
1345  #endif
1346  {
1347    private static readonly pb::MessageParser<CustomOptionMinIntegerValues> _parser = new pb::MessageParser<CustomOptionMinIntegerValues>(() => new CustomOptionMinIntegerValues());
1348    private pb::UnknownFieldSet _unknownFields;
1349    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1350    public static pb::MessageParser<CustomOptionMinIntegerValues> Parser { get { return _parser; } }
1351
1352    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1353    public static pbr::MessageDescriptor Descriptor {
1354      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[7]; }
1355    }
1356
1357    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1358    pbr::MessageDescriptor pb::IMessage.Descriptor {
1359      get { return Descriptor; }
1360    }
1361
1362    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1363    public CustomOptionMinIntegerValues() {
1364      OnConstruction();
1365    }
1366
1367    partial void OnConstruction();
1368
1369    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1370    public CustomOptionMinIntegerValues(CustomOptionMinIntegerValues other) : this() {
1371      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
1372    }
1373
1374    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1375    public CustomOptionMinIntegerValues Clone() {
1376      return new CustomOptionMinIntegerValues(this);
1377    }
1378
1379    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1380    public override bool Equals(object other) {
1381      return Equals(other as CustomOptionMinIntegerValues);
1382    }
1383
1384    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1385    public bool Equals(CustomOptionMinIntegerValues other) {
1386      if (ReferenceEquals(other, null)) {
1387        return false;
1388      }
1389      if (ReferenceEquals(other, this)) {
1390        return true;
1391      }
1392      return Equals(_unknownFields, other._unknownFields);
1393    }
1394
1395    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1396    public override int GetHashCode() {
1397      int hash = 1;
1398      if (_unknownFields != null) {
1399        hash ^= _unknownFields.GetHashCode();
1400      }
1401      return hash;
1402    }
1403
1404    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1405    public override string ToString() {
1406      return pb::JsonFormatter.ToDiagnosticString(this);
1407    }
1408
1409    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1410    public void WriteTo(pb::CodedOutputStream output) {
1411    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1412      output.WriteRawMessage(this);
1413    #else
1414      if (_unknownFields != null) {
1415        _unknownFields.WriteTo(output);
1416      }
1417    #endif
1418    }
1419
1420    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1421    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1422    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
1423      if (_unknownFields != null) {
1424        _unknownFields.WriteTo(ref output);
1425      }
1426    }
1427    #endif
1428
1429    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1430    public int CalculateSize() {
1431      int size = 0;
1432      if (_unknownFields != null) {
1433        size += _unknownFields.CalculateSize();
1434      }
1435      return size;
1436    }
1437
1438    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1439    public void MergeFrom(CustomOptionMinIntegerValues other) {
1440      if (other == null) {
1441        return;
1442      }
1443      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
1444    }
1445
1446    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1447    public void MergeFrom(pb::CodedInputStream input) {
1448    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1449      input.ReadRawMessage(this);
1450    #else
1451      uint tag;
1452      while ((tag = input.ReadTag()) != 0) {
1453        switch(tag) {
1454          default:
1455            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
1456            break;
1457        }
1458      }
1459    #endif
1460    }
1461
1462    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1463    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1464    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
1465      uint tag;
1466      while ((tag = input.ReadTag()) != 0) {
1467        switch(tag) {
1468          default:
1469            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
1470            break;
1471        }
1472      }
1473    }
1474    #endif
1475
1476  }
1477
1478  public sealed partial class CustomOptionMaxIntegerValues : pb::IMessage<CustomOptionMaxIntegerValues>
1479  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1480      , pb::IBufferMessage
1481  #endif
1482  {
1483    private static readonly pb::MessageParser<CustomOptionMaxIntegerValues> _parser = new pb::MessageParser<CustomOptionMaxIntegerValues>(() => new CustomOptionMaxIntegerValues());
1484    private pb::UnknownFieldSet _unknownFields;
1485    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1486    public static pb::MessageParser<CustomOptionMaxIntegerValues> Parser { get { return _parser; } }
1487
1488    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1489    public static pbr::MessageDescriptor Descriptor {
1490      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[8]; }
1491    }
1492
1493    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1494    pbr::MessageDescriptor pb::IMessage.Descriptor {
1495      get { return Descriptor; }
1496    }
1497
1498    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1499    public CustomOptionMaxIntegerValues() {
1500      OnConstruction();
1501    }
1502
1503    partial void OnConstruction();
1504
1505    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1506    public CustomOptionMaxIntegerValues(CustomOptionMaxIntegerValues other) : this() {
1507      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
1508    }
1509
1510    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1511    public CustomOptionMaxIntegerValues Clone() {
1512      return new CustomOptionMaxIntegerValues(this);
1513    }
1514
1515    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1516    public override bool Equals(object other) {
1517      return Equals(other as CustomOptionMaxIntegerValues);
1518    }
1519
1520    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1521    public bool Equals(CustomOptionMaxIntegerValues other) {
1522      if (ReferenceEquals(other, null)) {
1523        return false;
1524      }
1525      if (ReferenceEquals(other, this)) {
1526        return true;
1527      }
1528      return Equals(_unknownFields, other._unknownFields);
1529    }
1530
1531    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1532    public override int GetHashCode() {
1533      int hash = 1;
1534      if (_unknownFields != null) {
1535        hash ^= _unknownFields.GetHashCode();
1536      }
1537      return hash;
1538    }
1539
1540    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1541    public override string ToString() {
1542      return pb::JsonFormatter.ToDiagnosticString(this);
1543    }
1544
1545    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1546    public void WriteTo(pb::CodedOutputStream output) {
1547    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1548      output.WriteRawMessage(this);
1549    #else
1550      if (_unknownFields != null) {
1551        _unknownFields.WriteTo(output);
1552      }
1553    #endif
1554    }
1555
1556    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1557    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1558    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
1559      if (_unknownFields != null) {
1560        _unknownFields.WriteTo(ref output);
1561      }
1562    }
1563    #endif
1564
1565    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1566    public int CalculateSize() {
1567      int size = 0;
1568      if (_unknownFields != null) {
1569        size += _unknownFields.CalculateSize();
1570      }
1571      return size;
1572    }
1573
1574    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1575    public void MergeFrom(CustomOptionMaxIntegerValues other) {
1576      if (other == null) {
1577        return;
1578      }
1579      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
1580    }
1581
1582    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1583    public void MergeFrom(pb::CodedInputStream input) {
1584    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1585      input.ReadRawMessage(this);
1586    #else
1587      uint tag;
1588      while ((tag = input.ReadTag()) != 0) {
1589        switch(tag) {
1590          default:
1591            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
1592            break;
1593        }
1594      }
1595    #endif
1596    }
1597
1598    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1599    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1600    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
1601      uint tag;
1602      while ((tag = input.ReadTag()) != 0) {
1603        switch(tag) {
1604          default:
1605            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
1606            break;
1607        }
1608      }
1609    }
1610    #endif
1611
1612  }
1613
1614  public sealed partial class CustomOptionOtherValues : pb::IMessage<CustomOptionOtherValues>
1615  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1616      , pb::IBufferMessage
1617  #endif
1618  {
1619    private static readonly pb::MessageParser<CustomOptionOtherValues> _parser = new pb::MessageParser<CustomOptionOtherValues>(() => new CustomOptionOtherValues());
1620    private pb::UnknownFieldSet _unknownFields;
1621    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1622    public static pb::MessageParser<CustomOptionOtherValues> Parser { get { return _parser; } }
1623
1624    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1625    public static pbr::MessageDescriptor Descriptor {
1626      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[9]; }
1627    }
1628
1629    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1630    pbr::MessageDescriptor pb::IMessage.Descriptor {
1631      get { return Descriptor; }
1632    }
1633
1634    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1635    public CustomOptionOtherValues() {
1636      OnConstruction();
1637    }
1638
1639    partial void OnConstruction();
1640
1641    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1642    public CustomOptionOtherValues(CustomOptionOtherValues other) : this() {
1643      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
1644    }
1645
1646    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1647    public CustomOptionOtherValues Clone() {
1648      return new CustomOptionOtherValues(this);
1649    }
1650
1651    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1652    public override bool Equals(object other) {
1653      return Equals(other as CustomOptionOtherValues);
1654    }
1655
1656    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1657    public bool Equals(CustomOptionOtherValues other) {
1658      if (ReferenceEquals(other, null)) {
1659        return false;
1660      }
1661      if (ReferenceEquals(other, this)) {
1662        return true;
1663      }
1664      return Equals(_unknownFields, other._unknownFields);
1665    }
1666
1667    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1668    public override int GetHashCode() {
1669      int hash = 1;
1670      if (_unknownFields != null) {
1671        hash ^= _unknownFields.GetHashCode();
1672      }
1673      return hash;
1674    }
1675
1676    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1677    public override string ToString() {
1678      return pb::JsonFormatter.ToDiagnosticString(this);
1679    }
1680
1681    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1682    public void WriteTo(pb::CodedOutputStream output) {
1683    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1684      output.WriteRawMessage(this);
1685    #else
1686      if (_unknownFields != null) {
1687        _unknownFields.WriteTo(output);
1688      }
1689    #endif
1690    }
1691
1692    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1693    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1694    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
1695      if (_unknownFields != null) {
1696        _unknownFields.WriteTo(ref output);
1697      }
1698    }
1699    #endif
1700
1701    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1702    public int CalculateSize() {
1703      int size = 0;
1704      if (_unknownFields != null) {
1705        size += _unknownFields.CalculateSize();
1706      }
1707      return size;
1708    }
1709
1710    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1711    public void MergeFrom(CustomOptionOtherValues other) {
1712      if (other == null) {
1713        return;
1714      }
1715      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
1716    }
1717
1718    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1719    public void MergeFrom(pb::CodedInputStream input) {
1720    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1721      input.ReadRawMessage(this);
1722    #else
1723      uint tag;
1724      while ((tag = input.ReadTag()) != 0) {
1725        switch(tag) {
1726          default:
1727            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
1728            break;
1729        }
1730      }
1731    #endif
1732    }
1733
1734    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1735    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1736    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
1737      uint tag;
1738      while ((tag = input.ReadTag()) != 0) {
1739        switch(tag) {
1740          default:
1741            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
1742            break;
1743        }
1744      }
1745    }
1746    #endif
1747
1748  }
1749
1750  public sealed partial class SettingRealsFromPositiveInts : pb::IMessage<SettingRealsFromPositiveInts>
1751  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1752      , pb::IBufferMessage
1753  #endif
1754  {
1755    private static readonly pb::MessageParser<SettingRealsFromPositiveInts> _parser = new pb::MessageParser<SettingRealsFromPositiveInts>(() => new SettingRealsFromPositiveInts());
1756    private pb::UnknownFieldSet _unknownFields;
1757    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1758    public static pb::MessageParser<SettingRealsFromPositiveInts> Parser { get { return _parser; } }
1759
1760    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1761    public static pbr::MessageDescriptor Descriptor {
1762      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[10]; }
1763    }
1764
1765    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1766    pbr::MessageDescriptor pb::IMessage.Descriptor {
1767      get { return Descriptor; }
1768    }
1769
1770    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1771    public SettingRealsFromPositiveInts() {
1772      OnConstruction();
1773    }
1774
1775    partial void OnConstruction();
1776
1777    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1778    public SettingRealsFromPositiveInts(SettingRealsFromPositiveInts other) : this() {
1779      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
1780    }
1781
1782    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1783    public SettingRealsFromPositiveInts Clone() {
1784      return new SettingRealsFromPositiveInts(this);
1785    }
1786
1787    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1788    public override bool Equals(object other) {
1789      return Equals(other as SettingRealsFromPositiveInts);
1790    }
1791
1792    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1793    public bool Equals(SettingRealsFromPositiveInts other) {
1794      if (ReferenceEquals(other, null)) {
1795        return false;
1796      }
1797      if (ReferenceEquals(other, this)) {
1798        return true;
1799      }
1800      return Equals(_unknownFields, other._unknownFields);
1801    }
1802
1803    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1804    public override int GetHashCode() {
1805      int hash = 1;
1806      if (_unknownFields != null) {
1807        hash ^= _unknownFields.GetHashCode();
1808      }
1809      return hash;
1810    }
1811
1812    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1813    public override string ToString() {
1814      return pb::JsonFormatter.ToDiagnosticString(this);
1815    }
1816
1817    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1818    public void WriteTo(pb::CodedOutputStream output) {
1819    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1820      output.WriteRawMessage(this);
1821    #else
1822      if (_unknownFields != null) {
1823        _unknownFields.WriteTo(output);
1824      }
1825    #endif
1826    }
1827
1828    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1829    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1830    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
1831      if (_unknownFields != null) {
1832        _unknownFields.WriteTo(ref output);
1833      }
1834    }
1835    #endif
1836
1837    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1838    public int CalculateSize() {
1839      int size = 0;
1840      if (_unknownFields != null) {
1841        size += _unknownFields.CalculateSize();
1842      }
1843      return size;
1844    }
1845
1846    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1847    public void MergeFrom(SettingRealsFromPositiveInts other) {
1848      if (other == null) {
1849        return;
1850      }
1851      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
1852    }
1853
1854    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1855    public void MergeFrom(pb::CodedInputStream input) {
1856    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1857      input.ReadRawMessage(this);
1858    #else
1859      uint tag;
1860      while ((tag = input.ReadTag()) != 0) {
1861        switch(tag) {
1862          default:
1863            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
1864            break;
1865        }
1866      }
1867    #endif
1868    }
1869
1870    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1871    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1872    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
1873      uint tag;
1874      while ((tag = input.ReadTag()) != 0) {
1875        switch(tag) {
1876          default:
1877            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
1878            break;
1879        }
1880      }
1881    }
1882    #endif
1883
1884  }
1885
1886  public sealed partial class SettingRealsFromNegativeInts : pb::IMessage<SettingRealsFromNegativeInts>
1887  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1888      , pb::IBufferMessage
1889  #endif
1890  {
1891    private static readonly pb::MessageParser<SettingRealsFromNegativeInts> _parser = new pb::MessageParser<SettingRealsFromNegativeInts>(() => new SettingRealsFromNegativeInts());
1892    private pb::UnknownFieldSet _unknownFields;
1893    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1894    public static pb::MessageParser<SettingRealsFromNegativeInts> Parser { get { return _parser; } }
1895
1896    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1897    public static pbr::MessageDescriptor Descriptor {
1898      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[11]; }
1899    }
1900
1901    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1902    pbr::MessageDescriptor pb::IMessage.Descriptor {
1903      get { return Descriptor; }
1904    }
1905
1906    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1907    public SettingRealsFromNegativeInts() {
1908      OnConstruction();
1909    }
1910
1911    partial void OnConstruction();
1912
1913    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1914    public SettingRealsFromNegativeInts(SettingRealsFromNegativeInts other) : this() {
1915      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
1916    }
1917
1918    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1919    public SettingRealsFromNegativeInts Clone() {
1920      return new SettingRealsFromNegativeInts(this);
1921    }
1922
1923    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1924    public override bool Equals(object other) {
1925      return Equals(other as SettingRealsFromNegativeInts);
1926    }
1927
1928    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1929    public bool Equals(SettingRealsFromNegativeInts other) {
1930      if (ReferenceEquals(other, null)) {
1931        return false;
1932      }
1933      if (ReferenceEquals(other, this)) {
1934        return true;
1935      }
1936      return Equals(_unknownFields, other._unknownFields);
1937    }
1938
1939    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1940    public override int GetHashCode() {
1941      int hash = 1;
1942      if (_unknownFields != null) {
1943        hash ^= _unknownFields.GetHashCode();
1944      }
1945      return hash;
1946    }
1947
1948    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1949    public override string ToString() {
1950      return pb::JsonFormatter.ToDiagnosticString(this);
1951    }
1952
1953    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1954    public void WriteTo(pb::CodedOutputStream output) {
1955    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1956      output.WriteRawMessage(this);
1957    #else
1958      if (_unknownFields != null) {
1959        _unknownFields.WriteTo(output);
1960      }
1961    #endif
1962    }
1963
1964    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1965    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1966    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
1967      if (_unknownFields != null) {
1968        _unknownFields.WriteTo(ref output);
1969      }
1970    }
1971    #endif
1972
1973    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1974    public int CalculateSize() {
1975      int size = 0;
1976      if (_unknownFields != null) {
1977        size += _unknownFields.CalculateSize();
1978      }
1979      return size;
1980    }
1981
1982    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1983    public void MergeFrom(SettingRealsFromNegativeInts other) {
1984      if (other == null) {
1985        return;
1986      }
1987      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
1988    }
1989
1990    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
1991    public void MergeFrom(pb::CodedInputStream input) {
1992    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
1993      input.ReadRawMessage(this);
1994    #else
1995      uint tag;
1996      while ((tag = input.ReadTag()) != 0) {
1997        switch(tag) {
1998          default:
1999            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
2000            break;
2001        }
2002      }
2003    #endif
2004    }
2005
2006    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2007    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2008    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
2009      uint tag;
2010      while ((tag = input.ReadTag()) != 0) {
2011        switch(tag) {
2012          default:
2013            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
2014            break;
2015        }
2016      }
2017    }
2018    #endif
2019
2020  }
2021
2022  public sealed partial class ComplexOptionType1 : pb::IMessage<ComplexOptionType1>
2023  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2024      , pb::IBufferMessage
2025  #endif
2026  {
2027    private static readonly pb::MessageParser<ComplexOptionType1> _parser = new pb::MessageParser<ComplexOptionType1>(() => new ComplexOptionType1());
2028    private pb::UnknownFieldSet _unknownFields;
2029    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2030    public static pb::MessageParser<ComplexOptionType1> Parser { get { return _parser; } }
2031
2032    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2033    public static pbr::MessageDescriptor Descriptor {
2034      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[12]; }
2035    }
2036
2037    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2038    pbr::MessageDescriptor pb::IMessage.Descriptor {
2039      get { return Descriptor; }
2040    }
2041
2042    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2043    public ComplexOptionType1() {
2044      OnConstruction();
2045    }
2046
2047    partial void OnConstruction();
2048
2049    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2050    public ComplexOptionType1(ComplexOptionType1 other) : this() {
2051      foo_ = other.foo_;
2052      foo2_ = other.foo2_;
2053      foo3_ = other.foo3_;
2054      foo4_ = other.foo4_.Clone();
2055      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
2056    }
2057
2058    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2059    public ComplexOptionType1 Clone() {
2060      return new ComplexOptionType1(this);
2061    }
2062
2063    /// <summary>Field number for the "foo" field.</summary>
2064    public const int FooFieldNumber = 1;
2065    private int foo_;
2066    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2067    public int Foo {
2068      get { return foo_; }
2069      set {
2070        foo_ = value;
2071      }
2072    }
2073
2074    /// <summary>Field number for the "foo2" field.</summary>
2075    public const int Foo2FieldNumber = 2;
2076    private int foo2_;
2077    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2078    public int Foo2 {
2079      get { return foo2_; }
2080      set {
2081        foo2_ = value;
2082      }
2083    }
2084
2085    /// <summary>Field number for the "foo3" field.</summary>
2086    public const int Foo3FieldNumber = 3;
2087    private int foo3_;
2088    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2089    public int Foo3 {
2090      get { return foo3_; }
2091      set {
2092        foo3_ = value;
2093      }
2094    }
2095
2096    /// <summary>Field number for the "foo4" field.</summary>
2097    public const int Foo4FieldNumber = 4;
2098    private static readonly pb::FieldCodec<int> _repeated_foo4_codec
2099        = pb::FieldCodec.ForInt32(34);
2100    private readonly pbc::RepeatedField<int> foo4_ = new pbc::RepeatedField<int>();
2101    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2102    public pbc::RepeatedField<int> Foo4 {
2103      get { return foo4_; }
2104    }
2105
2106    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2107    public override bool Equals(object other) {
2108      return Equals(other as ComplexOptionType1);
2109    }
2110
2111    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2112    public bool Equals(ComplexOptionType1 other) {
2113      if (ReferenceEquals(other, null)) {
2114        return false;
2115      }
2116      if (ReferenceEquals(other, this)) {
2117        return true;
2118      }
2119      if (Foo != other.Foo) return false;
2120      if (Foo2 != other.Foo2) return false;
2121      if (Foo3 != other.Foo3) return false;
2122      if(!foo4_.Equals(other.foo4_)) return false;
2123      return Equals(_unknownFields, other._unknownFields);
2124    }
2125
2126    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2127    public override int GetHashCode() {
2128      int hash = 1;
2129      if (Foo != 0) hash ^= Foo.GetHashCode();
2130      if (Foo2 != 0) hash ^= Foo2.GetHashCode();
2131      if (Foo3 != 0) hash ^= Foo3.GetHashCode();
2132      hash ^= foo4_.GetHashCode();
2133      if (_unknownFields != null) {
2134        hash ^= _unknownFields.GetHashCode();
2135      }
2136      return hash;
2137    }
2138
2139    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2140    public override string ToString() {
2141      return pb::JsonFormatter.ToDiagnosticString(this);
2142    }
2143
2144    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2145    public void WriteTo(pb::CodedOutputStream output) {
2146    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2147      output.WriteRawMessage(this);
2148    #else
2149      if (Foo != 0) {
2150        output.WriteRawTag(8);
2151        output.WriteInt32(Foo);
2152      }
2153      if (Foo2 != 0) {
2154        output.WriteRawTag(16);
2155        output.WriteInt32(Foo2);
2156      }
2157      if (Foo3 != 0) {
2158        output.WriteRawTag(24);
2159        output.WriteInt32(Foo3);
2160      }
2161      foo4_.WriteTo(output, _repeated_foo4_codec);
2162      if (_unknownFields != null) {
2163        _unknownFields.WriteTo(output);
2164      }
2165    #endif
2166    }
2167
2168    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2169    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2170    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
2171      if (Foo != 0) {
2172        output.WriteRawTag(8);
2173        output.WriteInt32(Foo);
2174      }
2175      if (Foo2 != 0) {
2176        output.WriteRawTag(16);
2177        output.WriteInt32(Foo2);
2178      }
2179      if (Foo3 != 0) {
2180        output.WriteRawTag(24);
2181        output.WriteInt32(Foo3);
2182      }
2183      foo4_.WriteTo(ref output, _repeated_foo4_codec);
2184      if (_unknownFields != null) {
2185        _unknownFields.WriteTo(ref output);
2186      }
2187    }
2188    #endif
2189
2190    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2191    public int CalculateSize() {
2192      int size = 0;
2193      if (Foo != 0) {
2194        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Foo);
2195      }
2196      if (Foo2 != 0) {
2197        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Foo2);
2198      }
2199      if (Foo3 != 0) {
2200        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Foo3);
2201      }
2202      size += foo4_.CalculateSize(_repeated_foo4_codec);
2203      if (_unknownFields != null) {
2204        size += _unknownFields.CalculateSize();
2205      }
2206      return size;
2207    }
2208
2209    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2210    public void MergeFrom(ComplexOptionType1 other) {
2211      if (other == null) {
2212        return;
2213      }
2214      if (other.Foo != 0) {
2215        Foo = other.Foo;
2216      }
2217      if (other.Foo2 != 0) {
2218        Foo2 = other.Foo2;
2219      }
2220      if (other.Foo3 != 0) {
2221        Foo3 = other.Foo3;
2222      }
2223      foo4_.Add(other.foo4_);
2224      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
2225    }
2226
2227    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2228    public void MergeFrom(pb::CodedInputStream input) {
2229    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2230      input.ReadRawMessage(this);
2231    #else
2232      uint tag;
2233      while ((tag = input.ReadTag()) != 0) {
2234        switch(tag) {
2235          default:
2236            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
2237            break;
2238          case 8: {
2239            Foo = input.ReadInt32();
2240            break;
2241          }
2242          case 16: {
2243            Foo2 = input.ReadInt32();
2244            break;
2245          }
2246          case 24: {
2247            Foo3 = input.ReadInt32();
2248            break;
2249          }
2250          case 34:
2251          case 32: {
2252            foo4_.AddEntriesFrom(input, _repeated_foo4_codec);
2253            break;
2254          }
2255        }
2256      }
2257    #endif
2258    }
2259
2260    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2261    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2262    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
2263      uint tag;
2264      while ((tag = input.ReadTag()) != 0) {
2265        switch(tag) {
2266          default:
2267            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
2268            break;
2269          case 8: {
2270            Foo = input.ReadInt32();
2271            break;
2272          }
2273          case 16: {
2274            Foo2 = input.ReadInt32();
2275            break;
2276          }
2277          case 24: {
2278            Foo3 = input.ReadInt32();
2279            break;
2280          }
2281          case 34:
2282          case 32: {
2283            foo4_.AddEntriesFrom(ref input, _repeated_foo4_codec);
2284            break;
2285          }
2286        }
2287      }
2288    }
2289    #endif
2290
2291  }
2292
2293  public sealed partial class ComplexOptionType2 : pb::IMessage<ComplexOptionType2>
2294  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2295      , pb::IBufferMessage
2296  #endif
2297  {
2298    private static readonly pb::MessageParser<ComplexOptionType2> _parser = new pb::MessageParser<ComplexOptionType2>(() => new ComplexOptionType2());
2299    private pb::UnknownFieldSet _unknownFields;
2300    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2301    public static pb::MessageParser<ComplexOptionType2> Parser { get { return _parser; } }
2302
2303    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2304    public static pbr::MessageDescriptor Descriptor {
2305      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[13]; }
2306    }
2307
2308    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2309    pbr::MessageDescriptor pb::IMessage.Descriptor {
2310      get { return Descriptor; }
2311    }
2312
2313    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2314    public ComplexOptionType2() {
2315      OnConstruction();
2316    }
2317
2318    partial void OnConstruction();
2319
2320    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2321    public ComplexOptionType2(ComplexOptionType2 other) : this() {
2322      bar_ = other.bar_ != null ? other.bar_.Clone() : null;
2323      baz_ = other.baz_;
2324      fred_ = other.fred_ != null ? other.fred_.Clone() : null;
2325      barney_ = other.barney_.Clone();
2326      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
2327    }
2328
2329    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2330    public ComplexOptionType2 Clone() {
2331      return new ComplexOptionType2(this);
2332    }
2333
2334    /// <summary>Field number for the "bar" field.</summary>
2335    public const int BarFieldNumber = 1;
2336    private global::UnitTest.Issues.TestProtos.ComplexOptionType1 bar_;
2337    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2338    public global::UnitTest.Issues.TestProtos.ComplexOptionType1 Bar {
2339      get { return bar_; }
2340      set {
2341        bar_ = value;
2342      }
2343    }
2344
2345    /// <summary>Field number for the "baz" field.</summary>
2346    public const int BazFieldNumber = 2;
2347    private int baz_;
2348    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2349    public int Baz {
2350      get { return baz_; }
2351      set {
2352        baz_ = value;
2353      }
2354    }
2355
2356    /// <summary>Field number for the "fred" field.</summary>
2357    public const int FredFieldNumber = 3;
2358    private global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4 fred_;
2359    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2360    public global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4 Fred {
2361      get { return fred_; }
2362      set {
2363        fred_ = value;
2364      }
2365    }
2366
2367    /// <summary>Field number for the "barney" field.</summary>
2368    public const int BarneyFieldNumber = 4;
2369    private static readonly pb::FieldCodec<global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4> _repeated_barney_codec
2370        = pb::FieldCodec.ForMessage(34, global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Parser);
2371    private readonly pbc::RepeatedField<global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4> barney_ = new pbc::RepeatedField<global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4>();
2372    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2373    public pbc::RepeatedField<global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4> Barney {
2374      get { return barney_; }
2375    }
2376
2377    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2378    public override bool Equals(object other) {
2379      return Equals(other as ComplexOptionType2);
2380    }
2381
2382    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2383    public bool Equals(ComplexOptionType2 other) {
2384      if (ReferenceEquals(other, null)) {
2385        return false;
2386      }
2387      if (ReferenceEquals(other, this)) {
2388        return true;
2389      }
2390      if (!object.Equals(Bar, other.Bar)) return false;
2391      if (Baz != other.Baz) return false;
2392      if (!object.Equals(Fred, other.Fred)) return false;
2393      if(!barney_.Equals(other.barney_)) return false;
2394      return Equals(_unknownFields, other._unknownFields);
2395    }
2396
2397    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2398    public override int GetHashCode() {
2399      int hash = 1;
2400      if (bar_ != null) hash ^= Bar.GetHashCode();
2401      if (Baz != 0) hash ^= Baz.GetHashCode();
2402      if (fred_ != null) hash ^= Fred.GetHashCode();
2403      hash ^= barney_.GetHashCode();
2404      if (_unknownFields != null) {
2405        hash ^= _unknownFields.GetHashCode();
2406      }
2407      return hash;
2408    }
2409
2410    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2411    public override string ToString() {
2412      return pb::JsonFormatter.ToDiagnosticString(this);
2413    }
2414
2415    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2416    public void WriteTo(pb::CodedOutputStream output) {
2417    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2418      output.WriteRawMessage(this);
2419    #else
2420      if (bar_ != null) {
2421        output.WriteRawTag(10);
2422        output.WriteMessage(Bar);
2423      }
2424      if (Baz != 0) {
2425        output.WriteRawTag(16);
2426        output.WriteInt32(Baz);
2427      }
2428      if (fred_ != null) {
2429        output.WriteRawTag(26);
2430        output.WriteMessage(Fred);
2431      }
2432      barney_.WriteTo(output, _repeated_barney_codec);
2433      if (_unknownFields != null) {
2434        _unknownFields.WriteTo(output);
2435      }
2436    #endif
2437    }
2438
2439    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2440    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2441    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
2442      if (bar_ != null) {
2443        output.WriteRawTag(10);
2444        output.WriteMessage(Bar);
2445      }
2446      if (Baz != 0) {
2447        output.WriteRawTag(16);
2448        output.WriteInt32(Baz);
2449      }
2450      if (fred_ != null) {
2451        output.WriteRawTag(26);
2452        output.WriteMessage(Fred);
2453      }
2454      barney_.WriteTo(ref output, _repeated_barney_codec);
2455      if (_unknownFields != null) {
2456        _unknownFields.WriteTo(ref output);
2457      }
2458    }
2459    #endif
2460
2461    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2462    public int CalculateSize() {
2463      int size = 0;
2464      if (bar_ != null) {
2465        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Bar);
2466      }
2467      if (Baz != 0) {
2468        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Baz);
2469      }
2470      if (fred_ != null) {
2471        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Fred);
2472      }
2473      size += barney_.CalculateSize(_repeated_barney_codec);
2474      if (_unknownFields != null) {
2475        size += _unknownFields.CalculateSize();
2476      }
2477      return size;
2478    }
2479
2480    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2481    public void MergeFrom(ComplexOptionType2 other) {
2482      if (other == null) {
2483        return;
2484      }
2485      if (other.bar_ != null) {
2486        if (bar_ == null) {
2487          Bar = new global::UnitTest.Issues.TestProtos.ComplexOptionType1();
2488        }
2489        Bar.MergeFrom(other.Bar);
2490      }
2491      if (other.Baz != 0) {
2492        Baz = other.Baz;
2493      }
2494      if (other.fred_ != null) {
2495        if (fred_ == null) {
2496          Fred = new global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4();
2497        }
2498        Fred.MergeFrom(other.Fred);
2499      }
2500      barney_.Add(other.barney_);
2501      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
2502    }
2503
2504    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2505    public void MergeFrom(pb::CodedInputStream input) {
2506    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2507      input.ReadRawMessage(this);
2508    #else
2509      uint tag;
2510      while ((tag = input.ReadTag()) != 0) {
2511        switch(tag) {
2512          default:
2513            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
2514            break;
2515          case 10: {
2516            if (bar_ == null) {
2517              Bar = new global::UnitTest.Issues.TestProtos.ComplexOptionType1();
2518            }
2519            input.ReadMessage(Bar);
2520            break;
2521          }
2522          case 16: {
2523            Baz = input.ReadInt32();
2524            break;
2525          }
2526          case 26: {
2527            if (fred_ == null) {
2528              Fred = new global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4();
2529            }
2530            input.ReadMessage(Fred);
2531            break;
2532          }
2533          case 34: {
2534            barney_.AddEntriesFrom(input, _repeated_barney_codec);
2535            break;
2536          }
2537        }
2538      }
2539    #endif
2540    }
2541
2542    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2543    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2544    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
2545      uint tag;
2546      while ((tag = input.ReadTag()) != 0) {
2547        switch(tag) {
2548          default:
2549            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
2550            break;
2551          case 10: {
2552            if (bar_ == null) {
2553              Bar = new global::UnitTest.Issues.TestProtos.ComplexOptionType1();
2554            }
2555            input.ReadMessage(Bar);
2556            break;
2557          }
2558          case 16: {
2559            Baz = input.ReadInt32();
2560            break;
2561          }
2562          case 26: {
2563            if (fred_ == null) {
2564              Fred = new global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4();
2565            }
2566            input.ReadMessage(Fred);
2567            break;
2568          }
2569          case 34: {
2570            barney_.AddEntriesFrom(ref input, _repeated_barney_codec);
2571            break;
2572          }
2573        }
2574      }
2575    }
2576    #endif
2577
2578    #region Nested types
2579    /// <summary>Container for nested types declared in the ComplexOptionType2 message type.</summary>
2580    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2581    public static partial class Types {
2582      public sealed partial class ComplexOptionType4 : pb::IMessage<ComplexOptionType4>
2583      #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2584          , pb::IBufferMessage
2585      #endif
2586      {
2587        private static readonly pb::MessageParser<ComplexOptionType4> _parser = new pb::MessageParser<ComplexOptionType4>(() => new ComplexOptionType4());
2588        private pb::UnknownFieldSet _unknownFields;
2589        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2590        public static pb::MessageParser<ComplexOptionType4> Parser { get { return _parser; } }
2591
2592        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2593        public static pbr::MessageDescriptor Descriptor {
2594          get { return global::UnitTest.Issues.TestProtos.ComplexOptionType2.Descriptor.NestedTypes[0]; }
2595        }
2596
2597        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2598        pbr::MessageDescriptor pb::IMessage.Descriptor {
2599          get { return Descriptor; }
2600        }
2601
2602        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2603        public ComplexOptionType4() {
2604          OnConstruction();
2605        }
2606
2607        partial void OnConstruction();
2608
2609        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2610        public ComplexOptionType4(ComplexOptionType4 other) : this() {
2611          waldo_ = other.waldo_;
2612          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
2613        }
2614
2615        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2616        public ComplexOptionType4 Clone() {
2617          return new ComplexOptionType4(this);
2618        }
2619
2620        /// <summary>Field number for the "waldo" field.</summary>
2621        public const int WaldoFieldNumber = 1;
2622        private int waldo_;
2623        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2624        public int Waldo {
2625          get { return waldo_; }
2626          set {
2627            waldo_ = value;
2628          }
2629        }
2630
2631        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2632        public override bool Equals(object other) {
2633          return Equals(other as ComplexOptionType4);
2634        }
2635
2636        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2637        public bool Equals(ComplexOptionType4 other) {
2638          if (ReferenceEquals(other, null)) {
2639            return false;
2640          }
2641          if (ReferenceEquals(other, this)) {
2642            return true;
2643          }
2644          if (Waldo != other.Waldo) return false;
2645          return Equals(_unknownFields, other._unknownFields);
2646        }
2647
2648        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2649        public override int GetHashCode() {
2650          int hash = 1;
2651          if (Waldo != 0) hash ^= Waldo.GetHashCode();
2652          if (_unknownFields != null) {
2653            hash ^= _unknownFields.GetHashCode();
2654          }
2655          return hash;
2656        }
2657
2658        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2659        public override string ToString() {
2660          return pb::JsonFormatter.ToDiagnosticString(this);
2661        }
2662
2663        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2664        public void WriteTo(pb::CodedOutputStream output) {
2665        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2666          output.WriteRawMessage(this);
2667        #else
2668          if (Waldo != 0) {
2669            output.WriteRawTag(8);
2670            output.WriteInt32(Waldo);
2671          }
2672          if (_unknownFields != null) {
2673            _unknownFields.WriteTo(output);
2674          }
2675        #endif
2676        }
2677
2678        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2679        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2680        void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
2681          if (Waldo != 0) {
2682            output.WriteRawTag(8);
2683            output.WriteInt32(Waldo);
2684          }
2685          if (_unknownFields != null) {
2686            _unknownFields.WriteTo(ref output);
2687          }
2688        }
2689        #endif
2690
2691        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2692        public int CalculateSize() {
2693          int size = 0;
2694          if (Waldo != 0) {
2695            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Waldo);
2696          }
2697          if (_unknownFields != null) {
2698            size += _unknownFields.CalculateSize();
2699          }
2700          return size;
2701        }
2702
2703        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2704        public void MergeFrom(ComplexOptionType4 other) {
2705          if (other == null) {
2706            return;
2707          }
2708          if (other.Waldo != 0) {
2709            Waldo = other.Waldo;
2710          }
2711          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
2712        }
2713
2714        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2715        public void MergeFrom(pb::CodedInputStream input) {
2716        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2717          input.ReadRawMessage(this);
2718        #else
2719          uint tag;
2720          while ((tag = input.ReadTag()) != 0) {
2721            switch(tag) {
2722              default:
2723                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
2724                break;
2725              case 8: {
2726                Waldo = input.ReadInt32();
2727                break;
2728              }
2729            }
2730          }
2731        #endif
2732        }
2733
2734        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2735        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2736        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
2737          uint tag;
2738          while ((tag = input.ReadTag()) != 0) {
2739            switch(tag) {
2740              default:
2741                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
2742                break;
2743              case 8: {
2744                Waldo = input.ReadInt32();
2745                break;
2746              }
2747            }
2748          }
2749        }
2750        #endif
2751
2752        #region Extensions
2753        /// <summary>Container for extensions for other messages declared in the ComplexOptionType4 message type.</summary>
2754        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2755        public static partial class Extensions {
2756          public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4> ComplexOpt4 =
2757            new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4>(7633546, pb::FieldCodec.ForMessage(61068370, global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Parser));
2758        }
2759        #endregion
2760
2761      }
2762
2763    }
2764    #endregion
2765
2766  }
2767
2768  public sealed partial class ComplexOptionType3 : pb::IMessage<ComplexOptionType3>
2769  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2770      , pb::IBufferMessage
2771  #endif
2772  {
2773    private static readonly pb::MessageParser<ComplexOptionType3> _parser = new pb::MessageParser<ComplexOptionType3>(() => new ComplexOptionType3());
2774    private pb::UnknownFieldSet _unknownFields;
2775    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2776    public static pb::MessageParser<ComplexOptionType3> Parser { get { return _parser; } }
2777
2778    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2779    public static pbr::MessageDescriptor Descriptor {
2780      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[14]; }
2781    }
2782
2783    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2784    pbr::MessageDescriptor pb::IMessage.Descriptor {
2785      get { return Descriptor; }
2786    }
2787
2788    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2789    public ComplexOptionType3() {
2790      OnConstruction();
2791    }
2792
2793    partial void OnConstruction();
2794
2795    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2796    public ComplexOptionType3(ComplexOptionType3 other) : this() {
2797      qux_ = other.qux_;
2798      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
2799    }
2800
2801    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2802    public ComplexOptionType3 Clone() {
2803      return new ComplexOptionType3(this);
2804    }
2805
2806    /// <summary>Field number for the "qux" field.</summary>
2807    public const int QuxFieldNumber = 1;
2808    private int qux_;
2809    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2810    public int Qux {
2811      get { return qux_; }
2812      set {
2813        qux_ = value;
2814      }
2815    }
2816
2817    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2818    public override bool Equals(object other) {
2819      return Equals(other as ComplexOptionType3);
2820    }
2821
2822    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2823    public bool Equals(ComplexOptionType3 other) {
2824      if (ReferenceEquals(other, null)) {
2825        return false;
2826      }
2827      if (ReferenceEquals(other, this)) {
2828        return true;
2829      }
2830      if (Qux != other.Qux) return false;
2831      return Equals(_unknownFields, other._unknownFields);
2832    }
2833
2834    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2835    public override int GetHashCode() {
2836      int hash = 1;
2837      if (Qux != 0) hash ^= Qux.GetHashCode();
2838      if (_unknownFields != null) {
2839        hash ^= _unknownFields.GetHashCode();
2840      }
2841      return hash;
2842    }
2843
2844    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2845    public override string ToString() {
2846      return pb::JsonFormatter.ToDiagnosticString(this);
2847    }
2848
2849    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2850    public void WriteTo(pb::CodedOutputStream output) {
2851    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2852      output.WriteRawMessage(this);
2853    #else
2854      if (Qux != 0) {
2855        output.WriteRawTag(8);
2856        output.WriteInt32(Qux);
2857      }
2858      if (_unknownFields != null) {
2859        _unknownFields.WriteTo(output);
2860      }
2861    #endif
2862    }
2863
2864    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2865    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2866    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
2867      if (Qux != 0) {
2868        output.WriteRawTag(8);
2869        output.WriteInt32(Qux);
2870      }
2871      if (_unknownFields != null) {
2872        _unknownFields.WriteTo(ref output);
2873      }
2874    }
2875    #endif
2876
2877    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2878    public int CalculateSize() {
2879      int size = 0;
2880      if (Qux != 0) {
2881        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Qux);
2882      }
2883      if (_unknownFields != null) {
2884        size += _unknownFields.CalculateSize();
2885      }
2886      return size;
2887    }
2888
2889    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2890    public void MergeFrom(ComplexOptionType3 other) {
2891      if (other == null) {
2892        return;
2893      }
2894      if (other.Qux != 0) {
2895        Qux = other.Qux;
2896      }
2897      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
2898    }
2899
2900    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2901    public void MergeFrom(pb::CodedInputStream input) {
2902    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2903      input.ReadRawMessage(this);
2904    #else
2905      uint tag;
2906      while ((tag = input.ReadTag()) != 0) {
2907        switch(tag) {
2908          default:
2909            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
2910            break;
2911          case 8: {
2912            Qux = input.ReadInt32();
2913            break;
2914          }
2915        }
2916      }
2917    #endif
2918    }
2919
2920    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2921    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2922    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
2923      uint tag;
2924      while ((tag = input.ReadTag()) != 0) {
2925        switch(tag) {
2926          default:
2927            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
2928            break;
2929          case 8: {
2930            Qux = input.ReadInt32();
2931            break;
2932          }
2933        }
2934      }
2935    }
2936    #endif
2937
2938  }
2939
2940  /// <summary>
2941  /// Note that we try various different ways of naming the same extension.
2942  /// </summary>
2943  public sealed partial class VariousComplexOptions : pb::IMessage<VariousComplexOptions>
2944  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
2945      , pb::IBufferMessage
2946  #endif
2947  {
2948    private static readonly pb::MessageParser<VariousComplexOptions> _parser = new pb::MessageParser<VariousComplexOptions>(() => new VariousComplexOptions());
2949    private pb::UnknownFieldSet _unknownFields;
2950    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2951    public static pb::MessageParser<VariousComplexOptions> Parser { get { return _parser; } }
2952
2953    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2954    public static pbr::MessageDescriptor Descriptor {
2955      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[15]; }
2956    }
2957
2958    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2959    pbr::MessageDescriptor pb::IMessage.Descriptor {
2960      get { return Descriptor; }
2961    }
2962
2963    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2964    public VariousComplexOptions() {
2965      OnConstruction();
2966    }
2967
2968    partial void OnConstruction();
2969
2970    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2971    public VariousComplexOptions(VariousComplexOptions other) : this() {
2972      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
2973    }
2974
2975    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2976    public VariousComplexOptions Clone() {
2977      return new VariousComplexOptions(this);
2978    }
2979
2980    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2981    public override bool Equals(object other) {
2982      return Equals(other as VariousComplexOptions);
2983    }
2984
2985    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2986    public bool Equals(VariousComplexOptions other) {
2987      if (ReferenceEquals(other, null)) {
2988        return false;
2989      }
2990      if (ReferenceEquals(other, this)) {
2991        return true;
2992      }
2993      return Equals(_unknownFields, other._unknownFields);
2994    }
2995
2996    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
2997    public override int GetHashCode() {
2998      int hash = 1;
2999      if (_unknownFields != null) {
3000        hash ^= _unknownFields.GetHashCode();
3001      }
3002      return hash;
3003    }
3004
3005    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3006    public override string ToString() {
3007      return pb::JsonFormatter.ToDiagnosticString(this);
3008    }
3009
3010    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3011    public void WriteTo(pb::CodedOutputStream output) {
3012    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3013      output.WriteRawMessage(this);
3014    #else
3015      if (_unknownFields != null) {
3016        _unknownFields.WriteTo(output);
3017      }
3018    #endif
3019    }
3020
3021    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3022    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3023    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
3024      if (_unknownFields != null) {
3025        _unknownFields.WriteTo(ref output);
3026      }
3027    }
3028    #endif
3029
3030    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3031    public int CalculateSize() {
3032      int size = 0;
3033      if (_unknownFields != null) {
3034        size += _unknownFields.CalculateSize();
3035      }
3036      return size;
3037    }
3038
3039    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3040    public void MergeFrom(VariousComplexOptions other) {
3041      if (other == null) {
3042        return;
3043      }
3044      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
3045    }
3046
3047    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3048    public void MergeFrom(pb::CodedInputStream input) {
3049    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3050      input.ReadRawMessage(this);
3051    #else
3052      uint tag;
3053      while ((tag = input.ReadTag()) != 0) {
3054        switch(tag) {
3055          default:
3056            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
3057            break;
3058        }
3059      }
3060    #endif
3061    }
3062
3063    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3064    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3065    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
3066      uint tag;
3067      while ((tag = input.ReadTag()) != 0) {
3068        switch(tag) {
3069          default:
3070            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
3071            break;
3072        }
3073      }
3074    }
3075    #endif
3076
3077  }
3078
3079  /// <summary>
3080  /// A helper type used to test aggregate option parsing
3081  /// </summary>
3082  public sealed partial class Aggregate : pb::IMessage<Aggregate>
3083  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3084      , pb::IBufferMessage
3085  #endif
3086  {
3087    private static readonly pb::MessageParser<Aggregate> _parser = new pb::MessageParser<Aggregate>(() => new Aggregate());
3088    private pb::UnknownFieldSet _unknownFields;
3089    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3090    public static pb::MessageParser<Aggregate> Parser { get { return _parser; } }
3091
3092    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3093    public static pbr::MessageDescriptor Descriptor {
3094      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[16]; }
3095    }
3096
3097    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3098    pbr::MessageDescriptor pb::IMessage.Descriptor {
3099      get { return Descriptor; }
3100    }
3101
3102    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3103    public Aggregate() {
3104      OnConstruction();
3105    }
3106
3107    partial void OnConstruction();
3108
3109    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3110    public Aggregate(Aggregate other) : this() {
3111      i_ = other.i_;
3112      s_ = other.s_;
3113      sub_ = other.sub_ != null ? other.sub_.Clone() : null;
3114      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
3115    }
3116
3117    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3118    public Aggregate Clone() {
3119      return new Aggregate(this);
3120    }
3121
3122    /// <summary>Field number for the "i" field.</summary>
3123    public const int IFieldNumber = 1;
3124    private int i_;
3125    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3126    public int I {
3127      get { return i_; }
3128      set {
3129        i_ = value;
3130      }
3131    }
3132
3133    /// <summary>Field number for the "s" field.</summary>
3134    public const int SFieldNumber = 2;
3135    private string s_ = "";
3136    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3137    public string S {
3138      get { return s_; }
3139      set {
3140        s_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
3141      }
3142    }
3143
3144    /// <summary>Field number for the "sub" field.</summary>
3145    public const int SubFieldNumber = 3;
3146    private global::UnitTest.Issues.TestProtos.Aggregate sub_;
3147    /// <summary>
3148    /// A nested object
3149    /// </summary>
3150    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3151    public global::UnitTest.Issues.TestProtos.Aggregate Sub {
3152      get { return sub_; }
3153      set {
3154        sub_ = value;
3155      }
3156    }
3157
3158    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3159    public override bool Equals(object other) {
3160      return Equals(other as Aggregate);
3161    }
3162
3163    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3164    public bool Equals(Aggregate other) {
3165      if (ReferenceEquals(other, null)) {
3166        return false;
3167      }
3168      if (ReferenceEquals(other, this)) {
3169        return true;
3170      }
3171      if (I != other.I) return false;
3172      if (S != other.S) return false;
3173      if (!object.Equals(Sub, other.Sub)) return false;
3174      return Equals(_unknownFields, other._unknownFields);
3175    }
3176
3177    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3178    public override int GetHashCode() {
3179      int hash = 1;
3180      if (I != 0) hash ^= I.GetHashCode();
3181      if (S.Length != 0) hash ^= S.GetHashCode();
3182      if (sub_ != null) hash ^= Sub.GetHashCode();
3183      if (_unknownFields != null) {
3184        hash ^= _unknownFields.GetHashCode();
3185      }
3186      return hash;
3187    }
3188
3189    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3190    public override string ToString() {
3191      return pb::JsonFormatter.ToDiagnosticString(this);
3192    }
3193
3194    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3195    public void WriteTo(pb::CodedOutputStream output) {
3196    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3197      output.WriteRawMessage(this);
3198    #else
3199      if (I != 0) {
3200        output.WriteRawTag(8);
3201        output.WriteInt32(I);
3202      }
3203      if (S.Length != 0) {
3204        output.WriteRawTag(18);
3205        output.WriteString(S);
3206      }
3207      if (sub_ != null) {
3208        output.WriteRawTag(26);
3209        output.WriteMessage(Sub);
3210      }
3211      if (_unknownFields != null) {
3212        _unknownFields.WriteTo(output);
3213      }
3214    #endif
3215    }
3216
3217    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3218    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3219    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
3220      if (I != 0) {
3221        output.WriteRawTag(8);
3222        output.WriteInt32(I);
3223      }
3224      if (S.Length != 0) {
3225        output.WriteRawTag(18);
3226        output.WriteString(S);
3227      }
3228      if (sub_ != null) {
3229        output.WriteRawTag(26);
3230        output.WriteMessage(Sub);
3231      }
3232      if (_unknownFields != null) {
3233        _unknownFields.WriteTo(ref output);
3234      }
3235    }
3236    #endif
3237
3238    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3239    public int CalculateSize() {
3240      int size = 0;
3241      if (I != 0) {
3242        size += 1 + pb::CodedOutputStream.ComputeInt32Size(I);
3243      }
3244      if (S.Length != 0) {
3245        size += 1 + pb::CodedOutputStream.ComputeStringSize(S);
3246      }
3247      if (sub_ != null) {
3248        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sub);
3249      }
3250      if (_unknownFields != null) {
3251        size += _unknownFields.CalculateSize();
3252      }
3253      return size;
3254    }
3255
3256    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3257    public void MergeFrom(Aggregate other) {
3258      if (other == null) {
3259        return;
3260      }
3261      if (other.I != 0) {
3262        I = other.I;
3263      }
3264      if (other.S.Length != 0) {
3265        S = other.S;
3266      }
3267      if (other.sub_ != null) {
3268        if (sub_ == null) {
3269          Sub = new global::UnitTest.Issues.TestProtos.Aggregate();
3270        }
3271        Sub.MergeFrom(other.Sub);
3272      }
3273      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
3274    }
3275
3276    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3277    public void MergeFrom(pb::CodedInputStream input) {
3278    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3279      input.ReadRawMessage(this);
3280    #else
3281      uint tag;
3282      while ((tag = input.ReadTag()) != 0) {
3283        switch(tag) {
3284          default:
3285            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
3286            break;
3287          case 8: {
3288            I = input.ReadInt32();
3289            break;
3290          }
3291          case 18: {
3292            S = input.ReadString();
3293            break;
3294          }
3295          case 26: {
3296            if (sub_ == null) {
3297              Sub = new global::UnitTest.Issues.TestProtos.Aggregate();
3298            }
3299            input.ReadMessage(Sub);
3300            break;
3301          }
3302        }
3303      }
3304    #endif
3305    }
3306
3307    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3308    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3309    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
3310      uint tag;
3311      while ((tag = input.ReadTag()) != 0) {
3312        switch(tag) {
3313          default:
3314            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
3315            break;
3316          case 8: {
3317            I = input.ReadInt32();
3318            break;
3319          }
3320          case 18: {
3321            S = input.ReadString();
3322            break;
3323          }
3324          case 26: {
3325            if (sub_ == null) {
3326              Sub = new global::UnitTest.Issues.TestProtos.Aggregate();
3327            }
3328            input.ReadMessage(Sub);
3329            break;
3330          }
3331        }
3332      }
3333    }
3334    #endif
3335
3336  }
3337
3338  public sealed partial class AggregateMessage : pb::IMessage<AggregateMessage>
3339  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3340      , pb::IBufferMessage
3341  #endif
3342  {
3343    private static readonly pb::MessageParser<AggregateMessage> _parser = new pb::MessageParser<AggregateMessage>(() => new AggregateMessage());
3344    private pb::UnknownFieldSet _unknownFields;
3345    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3346    public static pb::MessageParser<AggregateMessage> Parser { get { return _parser; } }
3347
3348    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3349    public static pbr::MessageDescriptor Descriptor {
3350      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[17]; }
3351    }
3352
3353    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3354    pbr::MessageDescriptor pb::IMessage.Descriptor {
3355      get { return Descriptor; }
3356    }
3357
3358    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3359    public AggregateMessage() {
3360      OnConstruction();
3361    }
3362
3363    partial void OnConstruction();
3364
3365    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3366    public AggregateMessage(AggregateMessage other) : this() {
3367      fieldname_ = other.fieldname_;
3368      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
3369    }
3370
3371    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3372    public AggregateMessage Clone() {
3373      return new AggregateMessage(this);
3374    }
3375
3376    /// <summary>Field number for the "fieldname" field.</summary>
3377    public const int FieldnameFieldNumber = 1;
3378    private int fieldname_;
3379    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3380    public int Fieldname {
3381      get { return fieldname_; }
3382      set {
3383        fieldname_ = value;
3384      }
3385    }
3386
3387    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3388    public override bool Equals(object other) {
3389      return Equals(other as AggregateMessage);
3390    }
3391
3392    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3393    public bool Equals(AggregateMessage other) {
3394      if (ReferenceEquals(other, null)) {
3395        return false;
3396      }
3397      if (ReferenceEquals(other, this)) {
3398        return true;
3399      }
3400      if (Fieldname != other.Fieldname) return false;
3401      return Equals(_unknownFields, other._unknownFields);
3402    }
3403
3404    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3405    public override int GetHashCode() {
3406      int hash = 1;
3407      if (Fieldname != 0) hash ^= Fieldname.GetHashCode();
3408      if (_unknownFields != null) {
3409        hash ^= _unknownFields.GetHashCode();
3410      }
3411      return hash;
3412    }
3413
3414    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3415    public override string ToString() {
3416      return pb::JsonFormatter.ToDiagnosticString(this);
3417    }
3418
3419    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3420    public void WriteTo(pb::CodedOutputStream output) {
3421    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3422      output.WriteRawMessage(this);
3423    #else
3424      if (Fieldname != 0) {
3425        output.WriteRawTag(8);
3426        output.WriteInt32(Fieldname);
3427      }
3428      if (_unknownFields != null) {
3429        _unknownFields.WriteTo(output);
3430      }
3431    #endif
3432    }
3433
3434    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3435    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3436    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
3437      if (Fieldname != 0) {
3438        output.WriteRawTag(8);
3439        output.WriteInt32(Fieldname);
3440      }
3441      if (_unknownFields != null) {
3442        _unknownFields.WriteTo(ref output);
3443      }
3444    }
3445    #endif
3446
3447    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3448    public int CalculateSize() {
3449      int size = 0;
3450      if (Fieldname != 0) {
3451        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Fieldname);
3452      }
3453      if (_unknownFields != null) {
3454        size += _unknownFields.CalculateSize();
3455      }
3456      return size;
3457    }
3458
3459    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3460    public void MergeFrom(AggregateMessage other) {
3461      if (other == null) {
3462        return;
3463      }
3464      if (other.Fieldname != 0) {
3465        Fieldname = other.Fieldname;
3466      }
3467      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
3468    }
3469
3470    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3471    public void MergeFrom(pb::CodedInputStream input) {
3472    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3473      input.ReadRawMessage(this);
3474    #else
3475      uint tag;
3476      while ((tag = input.ReadTag()) != 0) {
3477        switch(tag) {
3478          default:
3479            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
3480            break;
3481          case 8: {
3482            Fieldname = input.ReadInt32();
3483            break;
3484          }
3485        }
3486      }
3487    #endif
3488    }
3489
3490    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3491    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3492    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
3493      uint tag;
3494      while ((tag = input.ReadTag()) != 0) {
3495        switch(tag) {
3496          default:
3497            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
3498            break;
3499          case 8: {
3500            Fieldname = input.ReadInt32();
3501            break;
3502          }
3503        }
3504      }
3505    }
3506    #endif
3507
3508  }
3509
3510  /// <summary>
3511  /// Test custom options for nested type.
3512  /// </summary>
3513  public sealed partial class NestedOptionType : pb::IMessage<NestedOptionType>
3514  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3515      , pb::IBufferMessage
3516  #endif
3517  {
3518    private static readonly pb::MessageParser<NestedOptionType> _parser = new pb::MessageParser<NestedOptionType>(() => new NestedOptionType());
3519    private pb::UnknownFieldSet _unknownFields;
3520    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3521    public static pb::MessageParser<NestedOptionType> Parser { get { return _parser; } }
3522
3523    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3524    public static pbr::MessageDescriptor Descriptor {
3525      get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[18]; }
3526    }
3527
3528    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3529    pbr::MessageDescriptor pb::IMessage.Descriptor {
3530      get { return Descriptor; }
3531    }
3532
3533    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3534    public NestedOptionType() {
3535      OnConstruction();
3536    }
3537
3538    partial void OnConstruction();
3539
3540    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3541    public NestedOptionType(NestedOptionType other) : this() {
3542      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
3543    }
3544
3545    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3546    public NestedOptionType Clone() {
3547      return new NestedOptionType(this);
3548    }
3549
3550    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3551    public override bool Equals(object other) {
3552      return Equals(other as NestedOptionType);
3553    }
3554
3555    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3556    public bool Equals(NestedOptionType other) {
3557      if (ReferenceEquals(other, null)) {
3558        return false;
3559      }
3560      if (ReferenceEquals(other, this)) {
3561        return true;
3562      }
3563      return Equals(_unknownFields, other._unknownFields);
3564    }
3565
3566    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3567    public override int GetHashCode() {
3568      int hash = 1;
3569      if (_unknownFields != null) {
3570        hash ^= _unknownFields.GetHashCode();
3571      }
3572      return hash;
3573    }
3574
3575    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3576    public override string ToString() {
3577      return pb::JsonFormatter.ToDiagnosticString(this);
3578    }
3579
3580    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3581    public void WriteTo(pb::CodedOutputStream output) {
3582    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3583      output.WriteRawMessage(this);
3584    #else
3585      if (_unknownFields != null) {
3586        _unknownFields.WriteTo(output);
3587      }
3588    #endif
3589    }
3590
3591    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3592    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3593    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
3594      if (_unknownFields != null) {
3595        _unknownFields.WriteTo(ref output);
3596      }
3597    }
3598    #endif
3599
3600    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3601    public int CalculateSize() {
3602      int size = 0;
3603      if (_unknownFields != null) {
3604        size += _unknownFields.CalculateSize();
3605      }
3606      return size;
3607    }
3608
3609    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3610    public void MergeFrom(NestedOptionType other) {
3611      if (other == null) {
3612        return;
3613      }
3614      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
3615    }
3616
3617    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3618    public void MergeFrom(pb::CodedInputStream input) {
3619    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3620      input.ReadRawMessage(this);
3621    #else
3622      uint tag;
3623      while ((tag = input.ReadTag()) != 0) {
3624        switch(tag) {
3625          default:
3626            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
3627            break;
3628        }
3629      }
3630    #endif
3631    }
3632
3633    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3634    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3635    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
3636      uint tag;
3637      while ((tag = input.ReadTag()) != 0) {
3638        switch(tag) {
3639          default:
3640            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
3641            break;
3642        }
3643      }
3644    }
3645    #endif
3646
3647    #region Nested types
3648    /// <summary>Container for nested types declared in the NestedOptionType message type.</summary>
3649    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3650    public static partial class Types {
3651      public enum NestedEnum {
3652        [pbr::OriginalName("UNSPECIFIED")] Unspecified = 0,
3653        [pbr::OriginalName("NESTED_ENUM_VALUE")] Value = 1,
3654      }
3655
3656      public sealed partial class NestedMessage : pb::IMessage<NestedMessage>
3657      #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3658          , pb::IBufferMessage
3659      #endif
3660      {
3661        private static readonly pb::MessageParser<NestedMessage> _parser = new pb::MessageParser<NestedMessage>(() => new NestedMessage());
3662        private pb::UnknownFieldSet _unknownFields;
3663        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3664        public static pb::MessageParser<NestedMessage> Parser { get { return _parser; } }
3665
3666        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3667        public static pbr::MessageDescriptor Descriptor {
3668          get { return global::UnitTest.Issues.TestProtos.NestedOptionType.Descriptor.NestedTypes[0]; }
3669        }
3670
3671        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3672        pbr::MessageDescriptor pb::IMessage.Descriptor {
3673          get { return Descriptor; }
3674        }
3675
3676        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3677        public NestedMessage() {
3678          OnConstruction();
3679        }
3680
3681        partial void OnConstruction();
3682
3683        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3684        public NestedMessage(NestedMessage other) : this() {
3685          nestedField_ = other.nestedField_;
3686          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
3687        }
3688
3689        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3690        public NestedMessage Clone() {
3691          return new NestedMessage(this);
3692        }
3693
3694        /// <summary>Field number for the "nested_field" field.</summary>
3695        public const int NestedFieldFieldNumber = 1;
3696        private int nestedField_;
3697        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3698        public int NestedField {
3699          get { return nestedField_; }
3700          set {
3701            nestedField_ = value;
3702          }
3703        }
3704
3705        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3706        public override bool Equals(object other) {
3707          return Equals(other as NestedMessage);
3708        }
3709
3710        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3711        public bool Equals(NestedMessage other) {
3712          if (ReferenceEquals(other, null)) {
3713            return false;
3714          }
3715          if (ReferenceEquals(other, this)) {
3716            return true;
3717          }
3718          if (NestedField != other.NestedField) return false;
3719          return Equals(_unknownFields, other._unknownFields);
3720        }
3721
3722        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3723        public override int GetHashCode() {
3724          int hash = 1;
3725          if (NestedField != 0) hash ^= NestedField.GetHashCode();
3726          if (_unknownFields != null) {
3727            hash ^= _unknownFields.GetHashCode();
3728          }
3729          return hash;
3730        }
3731
3732        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3733        public override string ToString() {
3734          return pb::JsonFormatter.ToDiagnosticString(this);
3735        }
3736
3737        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3738        public void WriteTo(pb::CodedOutputStream output) {
3739        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3740          output.WriteRawMessage(this);
3741        #else
3742          if (NestedField != 0) {
3743            output.WriteRawTag(8);
3744            output.WriteInt32(NestedField);
3745          }
3746          if (_unknownFields != null) {
3747            _unknownFields.WriteTo(output);
3748          }
3749        #endif
3750        }
3751
3752        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3753        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3754        void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
3755          if (NestedField != 0) {
3756            output.WriteRawTag(8);
3757            output.WriteInt32(NestedField);
3758          }
3759          if (_unknownFields != null) {
3760            _unknownFields.WriteTo(ref output);
3761          }
3762        }
3763        #endif
3764
3765        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3766        public int CalculateSize() {
3767          int size = 0;
3768          if (NestedField != 0) {
3769            size += 1 + pb::CodedOutputStream.ComputeInt32Size(NestedField);
3770          }
3771          if (_unknownFields != null) {
3772            size += _unknownFields.CalculateSize();
3773          }
3774          return size;
3775        }
3776
3777        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3778        public void MergeFrom(NestedMessage other) {
3779          if (other == null) {
3780            return;
3781          }
3782          if (other.NestedField != 0) {
3783            NestedField = other.NestedField;
3784          }
3785          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
3786        }
3787
3788        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3789        public void MergeFrom(pb::CodedInputStream input) {
3790        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3791          input.ReadRawMessage(this);
3792        #else
3793          uint tag;
3794          while ((tag = input.ReadTag()) != 0) {
3795            switch(tag) {
3796              default:
3797                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
3798                break;
3799              case 8: {
3800                NestedField = input.ReadInt32();
3801                break;
3802              }
3803            }
3804          }
3805        #endif
3806        }
3807
3808        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
3809        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
3810        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
3811          uint tag;
3812          while ((tag = input.ReadTag()) != 0) {
3813            switch(tag) {
3814              default:
3815                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
3816                break;
3817              case 8: {
3818                NestedField = input.ReadInt32();
3819                break;
3820              }
3821            }
3822          }
3823        }
3824        #endif
3825
3826      }
3827
3828    }
3829    #endregion
3830
3831  }
3832
3833  #endregion
3834
3835}
3836
3837#endregion Designer generated code
3838