1// Generated by the protocol buffer compiler.  DO NOT EDIT!
2// source: google/protobuf/unittest_proto3.proto
3#pragma warning disable 1591, 0612, 3021
4#region Designer generated code
5
6using pb = global::Google.Protobuf;
7using pbc = global::Google.Protobuf.Collections;
8using pbr = global::Google.Protobuf.Reflection;
9using scg = global::System.Collections.Generic;
10namespace Google.Protobuf.TestProtos {
11
12  /// <summary>Holder for reflection information generated from google/protobuf/unittest_proto3.proto</summary>
13  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
14  public static partial class UnittestProto3Reflection {
15
16    #region Descriptor
17    /// <summary>File descriptor for google/protobuf/unittest_proto3.proto</summary>
18    public static pbr::FileDescriptor Descriptor {
19      get { return descriptor; }
20    }
21    private static pbr::FileDescriptor descriptor;
22
23    static UnittestProto3Reflection() {
24      byte[] descriptorData = global::System.Convert.FromBase64String(
25          string.Concat(
26            "CiVnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfcHJvdG8zLnByb3RvEhFwcm90",
27            "b2J1Zl91bml0dGVzdBosZ29vZ2xlL3Byb3RvYnVmL3VuaXR0ZXN0X2ltcG9y",
28            "dF9wcm90bzMucHJvdG8i8A8KDFRlc3RBbGxUeXBlcxIUCgxzaW5nbGVfaW50",
29            "MzIYASABKAUSFAoMc2luZ2xlX2ludDY0GAIgASgDEhUKDXNpbmdsZV91aW50",
30            "MzIYAyABKA0SFQoNc2luZ2xlX3VpbnQ2NBgEIAEoBBIVCg1zaW5nbGVfc2lu",
31            "dDMyGAUgASgREhUKDXNpbmdsZV9zaW50NjQYBiABKBISFgoOc2luZ2xlX2Zp",
32            "eGVkMzIYByABKAcSFgoOc2luZ2xlX2ZpeGVkNjQYCCABKAYSFwoPc2luZ2xl",
33            "X3NmaXhlZDMyGAkgASgPEhcKD3NpbmdsZV9zZml4ZWQ2NBgKIAEoEBIUCgxz",
34            "aW5nbGVfZmxvYXQYCyABKAISFQoNc2luZ2xlX2RvdWJsZRgMIAEoARITCgtz",
35            "aW5nbGVfYm9vbBgNIAEoCBIVCg1zaW5nbGVfc3RyaW5nGA4gASgJEhQKDHNp",
36            "bmdsZV9ieXRlcxgPIAEoDBJMChVzaW5nbGVfbmVzdGVkX21lc3NhZ2UYEiAB",
37            "KAsyLS5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVz",
38            "c2FnZRJBChZzaW5nbGVfZm9yZWlnbl9tZXNzYWdlGBMgASgLMiEucHJvdG9i",
39            "dWZfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2USRgoVc2luZ2xlX2ltcG9ydF9t",
40            "ZXNzYWdlGBQgASgLMicucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9y",
41            "dE1lc3NhZ2USRgoSc2luZ2xlX25lc3RlZF9lbnVtGBUgASgOMioucHJvdG9i",
42            "dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW0SOwoTc2luZ2xl",
43            "X2ZvcmVpZ25fZW51bRgWIAEoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVp",
44            "Z25FbnVtEkAKEnNpbmdsZV9pbXBvcnRfZW51bRgXIAEoDjIkLnByb3RvYnVm",
45            "X3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRFbnVtElMKHHNpbmdsZV9wdWJsaWNf",
46            "aW1wb3J0X21lc3NhZ2UYGiABKAsyLS5wcm90b2J1Zl91bml0dGVzdF9pbXBv",
47            "cnQuUHVibGljSW1wb3J0TWVzc2FnZRIWCg5yZXBlYXRlZF9pbnQzMhgfIAMo",
48            "BRIWCg5yZXBlYXRlZF9pbnQ2NBggIAMoAxIXCg9yZXBlYXRlZF91aW50MzIY",
49            "ISADKA0SFwoPcmVwZWF0ZWRfdWludDY0GCIgAygEEhcKD3JlcGVhdGVkX3Np",
50            "bnQzMhgjIAMoERIXCg9yZXBlYXRlZF9zaW50NjQYJCADKBISGAoQcmVwZWF0",
51            "ZWRfZml4ZWQzMhglIAMoBxIYChByZXBlYXRlZF9maXhlZDY0GCYgAygGEhkK",
52            "EXJlcGVhdGVkX3NmaXhlZDMyGCcgAygPEhkKEXJlcGVhdGVkX3NmaXhlZDY0",
53            "GCggAygQEhYKDnJlcGVhdGVkX2Zsb2F0GCkgAygCEhcKD3JlcGVhdGVkX2Rv",
54            "dWJsZRgqIAMoARIVCg1yZXBlYXRlZF9ib29sGCsgAygIEhcKD3JlcGVhdGVk",
55            "X3N0cmluZxgsIAMoCRIWCg5yZXBlYXRlZF9ieXRlcxgtIAMoDBJOChdyZXBl",
56            "YXRlZF9uZXN0ZWRfbWVzc2FnZRgwIAMoCzItLnByb3RvYnVmX3VuaXR0ZXN0",
57            "LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlEkMKGHJlcGVhdGVkX2ZvcmVp",
58            "Z25fbWVzc2FnZRgxIAMoCzIhLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25N",
59            "ZXNzYWdlEkgKF3JlcGVhdGVkX2ltcG9ydF9tZXNzYWdlGDIgAygLMicucHJv",
60            "dG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydE1lc3NhZ2USSAoUcmVwZWF0",
61            "ZWRfbmVzdGVkX2VudW0YMyADKA4yKi5wcm90b2J1Zl91bml0dGVzdC5UZXN0",
62            "QWxsVHlwZXMuTmVzdGVkRW51bRI9ChVyZXBlYXRlZF9mb3JlaWduX2VudW0Y",
63            "NCADKA4yHi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51bRJCChRyZXBl",
64            "YXRlZF9pbXBvcnRfZW51bRg1IAMoDjIkLnByb3RvYnVmX3VuaXR0ZXN0X2lt",
65            "cG9ydC5JbXBvcnRFbnVtElUKHnJlcGVhdGVkX3B1YmxpY19pbXBvcnRfbWVz",
66            "c2FnZRg2IAMoCzItLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5QdWJsaWNJ",
67            "bXBvcnRNZXNzYWdlEhYKDG9uZW9mX3VpbnQzMhhvIAEoDUgAEk0KFG9uZW9m",
68            "X25lc3RlZF9tZXNzYWdlGHAgASgLMi0ucHJvdG9idWZfdW5pdHRlc3QuVGVz",
69            "dEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2VIABIWCgxvbmVvZl9zdHJpbmcYcSAB",
70            "KAlIABIVCgtvbmVvZl9ieXRlcxhyIAEoDEgAGhsKDU5lc3RlZE1lc3NhZ2US",
71            "CgoCYmIYASABKAUiVgoKTmVzdGVkRW51bRIbChdORVNURURfRU5VTV9VTlNQ",
72            "RUNJRklFRBAAEgcKA0ZPTxABEgcKA0JBUhACEgcKA0JBWhADEhAKA05FRxD/",
73            "//////////8BQg0KC29uZW9mX2ZpZWxkIrsBChJOZXN0ZWRUZXN0QWxsVHlw",
74            "ZXMSNAoFY2hpbGQYASABKAsyJS5wcm90b2J1Zl91bml0dGVzdC5OZXN0ZWRU",
75            "ZXN0QWxsVHlwZXMSMAoHcGF5bG9hZBgCIAEoCzIfLnByb3RvYnVmX3VuaXR0",
76            "ZXN0LlRlc3RBbGxUeXBlcxI9Cg5yZXBlYXRlZF9jaGlsZBgDIAMoCzIlLnBy",
77            "b3RvYnVmX3VuaXR0ZXN0Lk5lc3RlZFRlc3RBbGxUeXBlcyI0ChRUZXN0RGVw",
78            "cmVjYXRlZEZpZWxkcxIcChBkZXByZWNhdGVkX2ludDMyGAEgASgFQgIYASIb",
79            "Cg5Gb3JlaWduTWVzc2FnZRIJCgFjGAEgASgFIjAKElRlc3RSZXNlcnZlZEZp",
80            "ZWxkc0oECAIQA0oECA8QEEoECAkQDFIDYmFyUgNiYXoiWgoRVGVzdEZvcmVp",
81            "Z25OZXN0ZWQSRQoOZm9yZWlnbl9uZXN0ZWQYASABKAsyLS5wcm90b2J1Zl91",
82            "bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZSI0ChhUZXN0UmVh",
83            "bGx5TGFyZ2VUYWdOdW1iZXISCQoBYRgBIAEoBRINCgJiYhj///9/IAEoBSJV",
84            "ChRUZXN0UmVjdXJzaXZlTWVzc2FnZRIyCgFhGAEgASgLMicucHJvdG9idWZf",
85            "dW5pdHRlc3QuVGVzdFJlY3Vyc2l2ZU1lc3NhZ2USCQoBaRgCIAEoBSJLChRU",
86            "ZXN0TXV0dWFsUmVjdXJzaW9uQRIzCgJiYhgBIAEoCzInLnByb3RvYnVmX3Vu",
87            "aXR0ZXN0LlRlc3RNdXR1YWxSZWN1cnNpb25CImIKFFRlc3RNdXR1YWxSZWN1",
88            "cnNpb25CEjIKAWEYASABKAsyJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0TXV0",
89            "dWFsUmVjdXJzaW9uQRIWCg5vcHRpb25hbF9pbnQzMhgCIAEoBSLrAgoXVGVz",
90            "dENhbWVsQ2FzZUZpZWxkTmFtZXMSFgoOUHJpbWl0aXZlRmllbGQYASABKAUS",
91            "EwoLU3RyaW5nRmllbGQYAiABKAkSMQoJRW51bUZpZWxkGAMgASgOMh4ucHJv",
92            "dG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW0SNwoMTWVzc2FnZUZpZWxkGAQg",
93            "ASgLMiEucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2USHgoWUmVw",
94            "ZWF0ZWRQcmltaXRpdmVGaWVsZBgHIAMoBRIbChNSZXBlYXRlZFN0cmluZ0Zp",
95            "ZWxkGAggAygJEjkKEVJlcGVhdGVkRW51bUZpZWxkGAkgAygOMh4ucHJvdG9i",
96            "dWZfdW5pdHRlc3QuRm9yZWlnbkVudW0SPwoUUmVwZWF0ZWRNZXNzYWdlRmll",
97            "bGQYCiADKAsyIS5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZSLH",
98            "AQoSVGVzdEZpZWxkT3JkZXJpbmdzEhEKCW15X3N0cmluZxgLIAEoCRIOCgZt",
99            "eV9pbnQYASABKAMSEAoIbXlfZmxvYXQYZSABKAISUwoVc2luZ2xlX25lc3Rl",
100            "ZF9tZXNzYWdlGMgBIAEoCzIzLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RGaWVs",
101            "ZE9yZGVyaW5ncy5OZXN0ZWRNZXNzYWdlGicKDU5lc3RlZE1lc3NhZ2USCgoC",
102            "b28YAiABKAMSCgoCYmIYASABKAUiSwoRU3BhcnNlRW51bU1lc3NhZ2USNgoL",
103            "c3BhcnNlX2VudW0YASABKA4yIS5wcm90b2J1Zl91bml0dGVzdC5UZXN0U3Bh",
104            "cnNlRW51bSIZCglPbmVTdHJpbmcSDAoEZGF0YRgBIAEoCSIaCgpNb3JlU3Ry",
105            "aW5nEgwKBGRhdGEYASADKAkiGAoIT25lQnl0ZXMSDAoEZGF0YRgBIAEoDCIZ",
106            "CglNb3JlQnl0ZXMSDAoEZGF0YRgBIAEoDCIcCgxJbnQzMk1lc3NhZ2USDAoE",
107            "ZGF0YRgBIAEoBSIdCg1VaW50MzJNZXNzYWdlEgwKBGRhdGEYASABKA0iHAoM",
108            "SW50NjRNZXNzYWdlEgwKBGRhdGEYASABKAMiHQoNVWludDY0TWVzc2FnZRIM",
109            "CgRkYXRhGAEgASgEIhsKC0Jvb2xNZXNzYWdlEgwKBGRhdGEYASABKAgicwoJ",
110            "VGVzdE9uZW9mEhEKB2Zvb19pbnQYASABKAVIABIUCgpmb29fc3RyaW5nGAIg",
111            "ASgJSAASNgoLZm9vX21lc3NhZ2UYAyABKAsyHy5wcm90b2J1Zl91bml0dGVz",
112            "dC5UZXN0QWxsVHlwZXNIAEIFCgNmb28iqgMKD1Rlc3RQYWNrZWRUeXBlcxIY",
113            "CgxwYWNrZWRfaW50MzIYWiADKAVCAhABEhgKDHBhY2tlZF9pbnQ2NBhbIAMo",
114            "A0ICEAESGQoNcGFja2VkX3VpbnQzMhhcIAMoDUICEAESGQoNcGFja2VkX3Vp",
115            "bnQ2NBhdIAMoBEICEAESGQoNcGFja2VkX3NpbnQzMhheIAMoEUICEAESGQoN",
116            "cGFja2VkX3NpbnQ2NBhfIAMoEkICEAESGgoOcGFja2VkX2ZpeGVkMzIYYCAD",
117            "KAdCAhABEhoKDnBhY2tlZF9maXhlZDY0GGEgAygGQgIQARIbCg9wYWNrZWRf",
118            "c2ZpeGVkMzIYYiADKA9CAhABEhsKD3BhY2tlZF9zZml4ZWQ2NBhjIAMoEEIC",
119            "EAESGAoMcGFja2VkX2Zsb2F0GGQgAygCQgIQARIZCg1wYWNrZWRfZG91Ymxl",
120            "GGUgAygBQgIQARIXCgtwYWNrZWRfYm9vbBhmIAMoCEICEAESNwoLcGFja2Vk",
121            "X2VudW0YZyADKA4yHi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51bUIC",
122            "EAEiyAMKEVRlc3RVbnBhY2tlZFR5cGVzEhoKDnVucGFja2VkX2ludDMyGFog",
123            "AygFQgIQABIaCg51bnBhY2tlZF9pbnQ2NBhbIAMoA0ICEAASGwoPdW5wYWNr",
124            "ZWRfdWludDMyGFwgAygNQgIQABIbCg91bnBhY2tlZF91aW50NjQYXSADKARC",
125            "AhAAEhsKD3VucGFja2VkX3NpbnQzMhheIAMoEUICEAASGwoPdW5wYWNrZWRf",
126            "c2ludDY0GF8gAygSQgIQABIcChB1bnBhY2tlZF9maXhlZDMyGGAgAygHQgIQ",
127            "ABIcChB1bnBhY2tlZF9maXhlZDY0GGEgAygGQgIQABIdChF1bnBhY2tlZF9z",
128            "Zml4ZWQzMhhiIAMoD0ICEAASHQoRdW5wYWNrZWRfc2ZpeGVkNjQYYyADKBBC",
129            "AhAAEhoKDnVucGFja2VkX2Zsb2F0GGQgAygCQgIQABIbCg91bnBhY2tlZF9k",
130            "b3VibGUYZSADKAFCAhAAEhkKDXVucGFja2VkX2Jvb2wYZiADKAhCAhAAEjkK",
131            "DXVucGFja2VkX2VudW0YZyADKA4yHi5wcm90b2J1Zl91bml0dGVzdC5Gb3Jl",
132            "aWduRW51bUICEAAiwAEKI1Rlc3RSZXBlYXRlZFNjYWxhckRpZmZlcmVudFRh",
133            "Z1NpemVzEhgKEHJlcGVhdGVkX2ZpeGVkMzIYDCADKAcSFgoOcmVwZWF0ZWRf",
134            "aW50MzIYDSADKAUSGQoQcmVwZWF0ZWRfZml4ZWQ2NBj+DyADKAYSFwoOcmVw",
135            "ZWF0ZWRfaW50NjQY/w8gAygDEhgKDnJlcGVhdGVkX2Zsb2F0GP7/DyADKAIS",
136            "GQoPcmVwZWF0ZWRfdWludDY0GP//DyADKAQiKAobVGVzdENvbW1lbnRJbmpl",
137            "Y3Rpb25NZXNzYWdlEgkKAWEYASABKAkiDAoKRm9vUmVxdWVzdCINCgtGb29S",
138            "ZXNwb25zZSISChBGb29DbGllbnRNZXNzYWdlIhIKEEZvb1NlcnZlck1lc3Nh",
139            "Z2UiDAoKQmFyUmVxdWVzdCINCgtCYXJSZXNwb25zZSpZCgtGb3JlaWduRW51",
140            "bRIXChNGT1JFSUdOX1VOU1BFQ0lGSUVEEAASDwoLRk9SRUlHTl9GT08QBBIP",
141            "CgtGT1JFSUdOX0JBUhAFEg8KC0ZPUkVJR05fQkFaEAYqdQoUVGVzdEVudW1X",
142            "aXRoRHVwVmFsdWUSKAokVEVTVF9FTlVNX1dJVEhfRFVQX1ZBTFVFX1VOU1BF",
143            "Q0lGSUVEEAASCAoERk9PMRABEggKBEJBUjEQAhIHCgNCQVoQAxIICgRGT08y",
144            "EAESCAoEQkFSMhACGgIQASqdAQoOVGVzdFNwYXJzZUVudW0SIAocVEVTVF9T",
145            "UEFSU0VfRU5VTV9VTlNQRUNJRklFRBAAEgwKCFNQQVJTRV9BEHsSDgoIU1BB",
146            "UlNFX0IQpucDEg8KCFNQQVJTRV9DELKxgAYSFQoIU1BBUlNFX0QQ8f//////",
147            "////ARIVCghTUEFSU0VfRRC03vz///////8BEgwKCFNQQVJTRV9HEAIymQEK",
148            "C1Rlc3RTZXJ2aWNlEkQKA0ZvbxIdLnByb3RvYnVmX3VuaXR0ZXN0LkZvb1Jl",
149            "cXVlc3QaHi5wcm90b2J1Zl91bml0dGVzdC5Gb29SZXNwb25zZRJECgNCYXIS",
150            "HS5wcm90b2J1Zl91bml0dGVzdC5CYXJSZXF1ZXN0Gh4ucHJvdG9idWZfdW5p",
151            "dHRlc3QuQmFyUmVzcG9uc2VCOkINVW5pdHRlc3RQcm90b0gBgAEBiAEBkAEB",
152            "+AEBqgIaR29vZ2xlLlByb3RvYnVmLlRlc3RQcm90b3NiBnByb3RvMw=="));
153      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
154          new pbr::FileDescriptor[] { global::Google.Protobuf.TestProtos.UnittestImportProto3Reflection.Descriptor, },
155          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Google.Protobuf.TestProtos.ForeignEnum), typeof(global::Google.Protobuf.TestProtos.TestEnumWithDupValue), typeof(global::Google.Protobuf.TestProtos.TestSparseEnum), }, new pbr::GeneratedClrTypeInfo[] {
156            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestAllTypes), global::Google.Protobuf.TestProtos.TestAllTypes.Parser, new[]{ "SingleInt32", "SingleInt64", "SingleUint32", "SingleUint64", "SingleSint32", "SingleSint64", "SingleFixed32", "SingleFixed64", "SingleSfixed32", "SingleSfixed64", "SingleFloat", "SingleDouble", "SingleBool", "SingleString", "SingleBytes", "SingleNestedMessage", "SingleForeignMessage", "SingleImportMessage", "SingleNestedEnum", "SingleForeignEnum", "SingleImportEnum", "SinglePublicImportMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedPublicImportMessage", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofBytes" }, new[]{ "OneofField" }, new[]{ typeof(global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum) }, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage), global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage.Parser, new[]{ "Bb" }, null, null, null)}),
157            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.NestedTestAllTypes), global::Google.Protobuf.TestProtos.NestedTestAllTypes.Parser, new[]{ "Child", "Payload", "RepeatedChild" }, null, null, null),
158            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestDeprecatedFields), global::Google.Protobuf.TestProtos.TestDeprecatedFields.Parser, new[]{ "DeprecatedInt32" }, null, null, null),
159            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.ForeignMessage), global::Google.Protobuf.TestProtos.ForeignMessage.Parser, new[]{ "C" }, null, null, null),
160            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestReservedFields), global::Google.Protobuf.TestProtos.TestReservedFields.Parser, null, null, null, null),
161            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestForeignNested), global::Google.Protobuf.TestProtos.TestForeignNested.Parser, new[]{ "ForeignNested" }, null, null, null),
162            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestReallyLargeTagNumber), global::Google.Protobuf.TestProtos.TestReallyLargeTagNumber.Parser, new[]{ "A", "Bb" }, null, null, null),
163            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestRecursiveMessage), global::Google.Protobuf.TestProtos.TestRecursiveMessage.Parser, new[]{ "A", "I" }, null, null, null),
164            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestMutualRecursionA), global::Google.Protobuf.TestProtos.TestMutualRecursionA.Parser, new[]{ "Bb" }, null, null, null),
165            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestMutualRecursionB), global::Google.Protobuf.TestProtos.TestMutualRecursionB.Parser, new[]{ "A", "OptionalInt32" }, null, null, null),
166            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestCamelCaseFieldNames), global::Google.Protobuf.TestProtos.TestCamelCaseFieldNames.Parser, new[]{ "PrimitiveField", "StringField", "EnumField", "MessageField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedEnumField", "RepeatedMessageField" }, null, null, null),
167            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestFieldOrderings), global::Google.Protobuf.TestProtos.TestFieldOrderings.Parser, new[]{ "MyString", "MyInt", "MyFloat", "SingleNestedMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage), global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage.Parser, new[]{ "Oo", "Bb" }, null, null, null)}),
168            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.SparseEnumMessage), global::Google.Protobuf.TestProtos.SparseEnumMessage.Parser, new[]{ "SparseEnum" }, null, null, null),
169            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.OneString), global::Google.Protobuf.TestProtos.OneString.Parser, new[]{ "Data" }, null, null, null),
170            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.MoreString), global::Google.Protobuf.TestProtos.MoreString.Parser, new[]{ "Data" }, null, null, null),
171            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.OneBytes), global::Google.Protobuf.TestProtos.OneBytes.Parser, new[]{ "Data" }, null, null, null),
172            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.MoreBytes), global::Google.Protobuf.TestProtos.MoreBytes.Parser, new[]{ "Data" }, null, null, null),
173            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.Int32Message), global::Google.Protobuf.TestProtos.Int32Message.Parser, new[]{ "Data" }, null, null, null),
174            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.Uint32Message), global::Google.Protobuf.TestProtos.Uint32Message.Parser, new[]{ "Data" }, null, null, null),
175            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.Int64Message), global::Google.Protobuf.TestProtos.Int64Message.Parser, new[]{ "Data" }, null, null, null),
176            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.Uint64Message), global::Google.Protobuf.TestProtos.Uint64Message.Parser, new[]{ "Data" }, null, null, null),
177            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.BoolMessage), global::Google.Protobuf.TestProtos.BoolMessage.Parser, new[]{ "Data" }, null, null, null),
178            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestOneof), global::Google.Protobuf.TestProtos.TestOneof.Parser, new[]{ "FooInt", "FooString", "FooMessage" }, new[]{ "Foo" }, null, null),
179            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestPackedTypes), global::Google.Protobuf.TestProtos.TestPackedTypes.Parser, new[]{ "PackedInt32", "PackedInt64", "PackedUint32", "PackedUint64", "PackedSint32", "PackedSint64", "PackedFixed32", "PackedFixed64", "PackedSfixed32", "PackedSfixed64", "PackedFloat", "PackedDouble", "PackedBool", "PackedEnum" }, null, null, null),
180            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestUnpackedTypes), global::Google.Protobuf.TestProtos.TestUnpackedTypes.Parser, new[]{ "UnpackedInt32", "UnpackedInt64", "UnpackedUint32", "UnpackedUint64", "UnpackedSint32", "UnpackedSint64", "UnpackedFixed32", "UnpackedFixed64", "UnpackedSfixed32", "UnpackedSfixed64", "UnpackedFloat", "UnpackedDouble", "UnpackedBool", "UnpackedEnum" }, null, null, null),
181            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestRepeatedScalarDifferentTagSizes), global::Google.Protobuf.TestProtos.TestRepeatedScalarDifferentTagSizes.Parser, new[]{ "RepeatedFixed32", "RepeatedInt32", "RepeatedFixed64", "RepeatedInt64", "RepeatedFloat", "RepeatedUint64" }, null, null, null),
182            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestCommentInjectionMessage), global::Google.Protobuf.TestProtos.TestCommentInjectionMessage.Parser, new[]{ "A" }, null, null, null),
183            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.FooRequest), global::Google.Protobuf.TestProtos.FooRequest.Parser, null, null, null, null),
184            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.FooResponse), global::Google.Protobuf.TestProtos.FooResponse.Parser, null, null, null, null),
185            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.FooClientMessage), global::Google.Protobuf.TestProtos.FooClientMessage.Parser, null, null, null, null),
186            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.FooServerMessage), global::Google.Protobuf.TestProtos.FooServerMessage.Parser, null, null, null, null),
187            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.BarRequest), global::Google.Protobuf.TestProtos.BarRequest.Parser, null, null, null, null),
188            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.BarResponse), global::Google.Protobuf.TestProtos.BarResponse.Parser, null, null, null, null)
189          }));
190    }
191    #endregion
192
193  }
194  #region Enums
195  public enum ForeignEnum {
196    [pbr::OriginalName("FOREIGN_UNSPECIFIED")] ForeignUnspecified = 0,
197    [pbr::OriginalName("FOREIGN_FOO")] ForeignFoo = 4,
198    [pbr::OriginalName("FOREIGN_BAR")] ForeignBar = 5,
199    [pbr::OriginalName("FOREIGN_BAZ")] ForeignBaz = 6,
200  }
201
202  /// <summary>
203  ///  Test an enum that has multiple values with the same number.
204  /// </summary>
205  public enum TestEnumWithDupValue {
206    [pbr::OriginalName("TEST_ENUM_WITH_DUP_VALUE_UNSPECIFIED")] Unspecified = 0,
207    [pbr::OriginalName("FOO1")] Foo1 = 1,
208    [pbr::OriginalName("BAR1")] Bar1 = 2,
209    [pbr::OriginalName("BAZ")] Baz = 3,
210    [pbr::OriginalName("FOO2")] Foo2 = 1,
211    [pbr::OriginalName("BAR2")] Bar2 = 2,
212  }
213
214  /// <summary>
215  ///  Test an enum with large, unordered values.
216  /// </summary>
217  public enum TestSparseEnum {
218    [pbr::OriginalName("TEST_SPARSE_ENUM_UNSPECIFIED")] Unspecified = 0,
219    [pbr::OriginalName("SPARSE_A")] SparseA = 123,
220    [pbr::OriginalName("SPARSE_B")] SparseB = 62374,
221    [pbr::OriginalName("SPARSE_C")] SparseC = 12589234,
222    [pbr::OriginalName("SPARSE_D")] SparseD = -15,
223    [pbr::OriginalName("SPARSE_E")] SparseE = -53452,
224    /// <summary>
225    ///  In proto3, value 0 must be the first one specified
226    ///  SPARSE_F = 0;
227    /// </summary>
228    [pbr::OriginalName("SPARSE_G")] SparseG = 2,
229  }
230
231  #endregion
232
233  #region Messages
234  /// <summary>
235  ///  This proto includes every type of field in both singular and repeated
236  ///  forms.
237  /// </summary>
238  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
239  public sealed partial class TestAllTypes : pb::IMessage<TestAllTypes> {
240    private static readonly pb::MessageParser<TestAllTypes> _parser = new pb::MessageParser<TestAllTypes>(() => new TestAllTypes());
241    public static pb::MessageParser<TestAllTypes> Parser { get { return _parser; } }
242
243    public static pbr::MessageDescriptor Descriptor {
244      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[0]; }
245    }
246
247    pbr::MessageDescriptor pb::IMessage.Descriptor {
248      get { return Descriptor; }
249    }
250
251    public TestAllTypes() {
252      OnConstruction();
253    }
254
255    partial void OnConstruction();
256
257    public TestAllTypes(TestAllTypes other) : this() {
258      singleInt32_ = other.singleInt32_;
259      singleInt64_ = other.singleInt64_;
260      singleUint32_ = other.singleUint32_;
261      singleUint64_ = other.singleUint64_;
262      singleSint32_ = other.singleSint32_;
263      singleSint64_ = other.singleSint64_;
264      singleFixed32_ = other.singleFixed32_;
265      singleFixed64_ = other.singleFixed64_;
266      singleSfixed32_ = other.singleSfixed32_;
267      singleSfixed64_ = other.singleSfixed64_;
268      singleFloat_ = other.singleFloat_;
269      singleDouble_ = other.singleDouble_;
270      singleBool_ = other.singleBool_;
271      singleString_ = other.singleString_;
272      singleBytes_ = other.singleBytes_;
273      SingleNestedMessage = other.singleNestedMessage_ != null ? other.SingleNestedMessage.Clone() : null;
274      SingleForeignMessage = other.singleForeignMessage_ != null ? other.SingleForeignMessage.Clone() : null;
275      SingleImportMessage = other.singleImportMessage_ != null ? other.SingleImportMessage.Clone() : null;
276      singleNestedEnum_ = other.singleNestedEnum_;
277      singleForeignEnum_ = other.singleForeignEnum_;
278      singleImportEnum_ = other.singleImportEnum_;
279      SinglePublicImportMessage = other.singlePublicImportMessage_ != null ? other.SinglePublicImportMessage.Clone() : null;
280      repeatedInt32_ = other.repeatedInt32_.Clone();
281      repeatedInt64_ = other.repeatedInt64_.Clone();
282      repeatedUint32_ = other.repeatedUint32_.Clone();
283      repeatedUint64_ = other.repeatedUint64_.Clone();
284      repeatedSint32_ = other.repeatedSint32_.Clone();
285      repeatedSint64_ = other.repeatedSint64_.Clone();
286      repeatedFixed32_ = other.repeatedFixed32_.Clone();
287      repeatedFixed64_ = other.repeatedFixed64_.Clone();
288      repeatedSfixed32_ = other.repeatedSfixed32_.Clone();
289      repeatedSfixed64_ = other.repeatedSfixed64_.Clone();
290      repeatedFloat_ = other.repeatedFloat_.Clone();
291      repeatedDouble_ = other.repeatedDouble_.Clone();
292      repeatedBool_ = other.repeatedBool_.Clone();
293      repeatedString_ = other.repeatedString_.Clone();
294      repeatedBytes_ = other.repeatedBytes_.Clone();
295      repeatedNestedMessage_ = other.repeatedNestedMessage_.Clone();
296      repeatedForeignMessage_ = other.repeatedForeignMessage_.Clone();
297      repeatedImportMessage_ = other.repeatedImportMessage_.Clone();
298      repeatedNestedEnum_ = other.repeatedNestedEnum_.Clone();
299      repeatedForeignEnum_ = other.repeatedForeignEnum_.Clone();
300      repeatedImportEnum_ = other.repeatedImportEnum_.Clone();
301      repeatedPublicImportMessage_ = other.repeatedPublicImportMessage_.Clone();
302      switch (other.OneofFieldCase) {
303        case OneofFieldOneofCase.OneofUint32:
304          OneofUint32 = other.OneofUint32;
305          break;
306        case OneofFieldOneofCase.OneofNestedMessage:
307          OneofNestedMessage = other.OneofNestedMessage.Clone();
308          break;
309        case OneofFieldOneofCase.OneofString:
310          OneofString = other.OneofString;
311          break;
312        case OneofFieldOneofCase.OneofBytes:
313          OneofBytes = other.OneofBytes;
314          break;
315      }
316
317    }
318
319    public TestAllTypes Clone() {
320      return new TestAllTypes(this);
321    }
322
323    /// <summary>Field number for the "single_int32" field.</summary>
324    public const int SingleInt32FieldNumber = 1;
325    private int singleInt32_;
326    /// <summary>
327    ///  Singular
328    /// </summary>
329    public int SingleInt32 {
330      get { return singleInt32_; }
331      set {
332        singleInt32_ = value;
333      }
334    }
335
336    /// <summary>Field number for the "single_int64" field.</summary>
337    public const int SingleInt64FieldNumber = 2;
338    private long singleInt64_;
339    public long SingleInt64 {
340      get { return singleInt64_; }
341      set {
342        singleInt64_ = value;
343      }
344    }
345
346    /// <summary>Field number for the "single_uint32" field.</summary>
347    public const int SingleUint32FieldNumber = 3;
348    private uint singleUint32_;
349    public uint SingleUint32 {
350      get { return singleUint32_; }
351      set {
352        singleUint32_ = value;
353      }
354    }
355
356    /// <summary>Field number for the "single_uint64" field.</summary>
357    public const int SingleUint64FieldNumber = 4;
358    private ulong singleUint64_;
359    public ulong SingleUint64 {
360      get { return singleUint64_; }
361      set {
362        singleUint64_ = value;
363      }
364    }
365
366    /// <summary>Field number for the "single_sint32" field.</summary>
367    public const int SingleSint32FieldNumber = 5;
368    private int singleSint32_;
369    public int SingleSint32 {
370      get { return singleSint32_; }
371      set {
372        singleSint32_ = value;
373      }
374    }
375
376    /// <summary>Field number for the "single_sint64" field.</summary>
377    public const int SingleSint64FieldNumber = 6;
378    private long singleSint64_;
379    public long SingleSint64 {
380      get { return singleSint64_; }
381      set {
382        singleSint64_ = value;
383      }
384    }
385
386    /// <summary>Field number for the "single_fixed32" field.</summary>
387    public const int SingleFixed32FieldNumber = 7;
388    private uint singleFixed32_;
389    public uint SingleFixed32 {
390      get { return singleFixed32_; }
391      set {
392        singleFixed32_ = value;
393      }
394    }
395
396    /// <summary>Field number for the "single_fixed64" field.</summary>
397    public const int SingleFixed64FieldNumber = 8;
398    private ulong singleFixed64_;
399    public ulong SingleFixed64 {
400      get { return singleFixed64_; }
401      set {
402        singleFixed64_ = value;
403      }
404    }
405
406    /// <summary>Field number for the "single_sfixed32" field.</summary>
407    public const int SingleSfixed32FieldNumber = 9;
408    private int singleSfixed32_;
409    public int SingleSfixed32 {
410      get { return singleSfixed32_; }
411      set {
412        singleSfixed32_ = value;
413      }
414    }
415
416    /// <summary>Field number for the "single_sfixed64" field.</summary>
417    public const int SingleSfixed64FieldNumber = 10;
418    private long singleSfixed64_;
419    public long SingleSfixed64 {
420      get { return singleSfixed64_; }
421      set {
422        singleSfixed64_ = value;
423      }
424    }
425
426    /// <summary>Field number for the "single_float" field.</summary>
427    public const int SingleFloatFieldNumber = 11;
428    private float singleFloat_;
429    public float SingleFloat {
430      get { return singleFloat_; }
431      set {
432        singleFloat_ = value;
433      }
434    }
435
436    /// <summary>Field number for the "single_double" field.</summary>
437    public const int SingleDoubleFieldNumber = 12;
438    private double singleDouble_;
439    public double SingleDouble {
440      get { return singleDouble_; }
441      set {
442        singleDouble_ = value;
443      }
444    }
445
446    /// <summary>Field number for the "single_bool" field.</summary>
447    public const int SingleBoolFieldNumber = 13;
448    private bool singleBool_;
449    public bool SingleBool {
450      get { return singleBool_; }
451      set {
452        singleBool_ = value;
453      }
454    }
455
456    /// <summary>Field number for the "single_string" field.</summary>
457    public const int SingleStringFieldNumber = 14;
458    private string singleString_ = "";
459    public string SingleString {
460      get { return singleString_; }
461      set {
462        singleString_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
463      }
464    }
465
466    /// <summary>Field number for the "single_bytes" field.</summary>
467    public const int SingleBytesFieldNumber = 15;
468    private pb::ByteString singleBytes_ = pb::ByteString.Empty;
469    public pb::ByteString SingleBytes {
470      get { return singleBytes_; }
471      set {
472        singleBytes_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
473      }
474    }
475
476    /// <summary>Field number for the "single_nested_message" field.</summary>
477    public const int SingleNestedMessageFieldNumber = 18;
478    private global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage singleNestedMessage_;
479    public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage SingleNestedMessage {
480      get { return singleNestedMessage_; }
481      set {
482        singleNestedMessage_ = value;
483      }
484    }
485
486    /// <summary>Field number for the "single_foreign_message" field.</summary>
487    public const int SingleForeignMessageFieldNumber = 19;
488    private global::Google.Protobuf.TestProtos.ForeignMessage singleForeignMessage_;
489    public global::Google.Protobuf.TestProtos.ForeignMessage SingleForeignMessage {
490      get { return singleForeignMessage_; }
491      set {
492        singleForeignMessage_ = value;
493      }
494    }
495
496    /// <summary>Field number for the "single_import_message" field.</summary>
497    public const int SingleImportMessageFieldNumber = 20;
498    private global::Google.Protobuf.TestProtos.ImportMessage singleImportMessage_;
499    public global::Google.Protobuf.TestProtos.ImportMessage SingleImportMessage {
500      get { return singleImportMessage_; }
501      set {
502        singleImportMessage_ = value;
503      }
504    }
505
506    /// <summary>Field number for the "single_nested_enum" field.</summary>
507    public const int SingleNestedEnumFieldNumber = 21;
508    private global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum singleNestedEnum_ = 0;
509    public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum SingleNestedEnum {
510      get { return singleNestedEnum_; }
511      set {
512        singleNestedEnum_ = value;
513      }
514    }
515
516    /// <summary>Field number for the "single_foreign_enum" field.</summary>
517    public const int SingleForeignEnumFieldNumber = 22;
518    private global::Google.Protobuf.TestProtos.ForeignEnum singleForeignEnum_ = 0;
519    public global::Google.Protobuf.TestProtos.ForeignEnum SingleForeignEnum {
520      get { return singleForeignEnum_; }
521      set {
522        singleForeignEnum_ = value;
523      }
524    }
525
526    /// <summary>Field number for the "single_import_enum" field.</summary>
527    public const int SingleImportEnumFieldNumber = 23;
528    private global::Google.Protobuf.TestProtos.ImportEnum singleImportEnum_ = 0;
529    public global::Google.Protobuf.TestProtos.ImportEnum SingleImportEnum {
530      get { return singleImportEnum_; }
531      set {
532        singleImportEnum_ = value;
533      }
534    }
535
536    /// <summary>Field number for the "single_public_import_message" field.</summary>
537    public const int SinglePublicImportMessageFieldNumber = 26;
538    private global::Google.Protobuf.TestProtos.PublicImportMessage singlePublicImportMessage_;
539    /// <summary>
540    ///  Defined in unittest_import_public.proto
541    /// </summary>
542    public global::Google.Protobuf.TestProtos.PublicImportMessage SinglePublicImportMessage {
543      get { return singlePublicImportMessage_; }
544      set {
545        singlePublicImportMessage_ = value;
546      }
547    }
548
549    /// <summary>Field number for the "repeated_int32" field.</summary>
550    public const int RepeatedInt32FieldNumber = 31;
551    private static readonly pb::FieldCodec<int> _repeated_repeatedInt32_codec
552        = pb::FieldCodec.ForInt32(250);
553    private readonly pbc::RepeatedField<int> repeatedInt32_ = new pbc::RepeatedField<int>();
554    /// <summary>
555    ///  Repeated
556    /// </summary>
557    public pbc::RepeatedField<int> RepeatedInt32 {
558      get { return repeatedInt32_; }
559    }
560
561    /// <summary>Field number for the "repeated_int64" field.</summary>
562    public const int RepeatedInt64FieldNumber = 32;
563    private static readonly pb::FieldCodec<long> _repeated_repeatedInt64_codec
564        = pb::FieldCodec.ForInt64(258);
565    private readonly pbc::RepeatedField<long> repeatedInt64_ = new pbc::RepeatedField<long>();
566    public pbc::RepeatedField<long> RepeatedInt64 {
567      get { return repeatedInt64_; }
568    }
569
570    /// <summary>Field number for the "repeated_uint32" field.</summary>
571    public const int RepeatedUint32FieldNumber = 33;
572    private static readonly pb::FieldCodec<uint> _repeated_repeatedUint32_codec
573        = pb::FieldCodec.ForUInt32(266);
574    private readonly pbc::RepeatedField<uint> repeatedUint32_ = new pbc::RepeatedField<uint>();
575    public pbc::RepeatedField<uint> RepeatedUint32 {
576      get { return repeatedUint32_; }
577    }
578
579    /// <summary>Field number for the "repeated_uint64" field.</summary>
580    public const int RepeatedUint64FieldNumber = 34;
581    private static readonly pb::FieldCodec<ulong> _repeated_repeatedUint64_codec
582        = pb::FieldCodec.ForUInt64(274);
583    private readonly pbc::RepeatedField<ulong> repeatedUint64_ = new pbc::RepeatedField<ulong>();
584    public pbc::RepeatedField<ulong> RepeatedUint64 {
585      get { return repeatedUint64_; }
586    }
587
588    /// <summary>Field number for the "repeated_sint32" field.</summary>
589    public const int RepeatedSint32FieldNumber = 35;
590    private static readonly pb::FieldCodec<int> _repeated_repeatedSint32_codec
591        = pb::FieldCodec.ForSInt32(282);
592    private readonly pbc::RepeatedField<int> repeatedSint32_ = new pbc::RepeatedField<int>();
593    public pbc::RepeatedField<int> RepeatedSint32 {
594      get { return repeatedSint32_; }
595    }
596
597    /// <summary>Field number for the "repeated_sint64" field.</summary>
598    public const int RepeatedSint64FieldNumber = 36;
599    private static readonly pb::FieldCodec<long> _repeated_repeatedSint64_codec
600        = pb::FieldCodec.ForSInt64(290);
601    private readonly pbc::RepeatedField<long> repeatedSint64_ = new pbc::RepeatedField<long>();
602    public pbc::RepeatedField<long> RepeatedSint64 {
603      get { return repeatedSint64_; }
604    }
605
606    /// <summary>Field number for the "repeated_fixed32" field.</summary>
607    public const int RepeatedFixed32FieldNumber = 37;
608    private static readonly pb::FieldCodec<uint> _repeated_repeatedFixed32_codec
609        = pb::FieldCodec.ForFixed32(298);
610    private readonly pbc::RepeatedField<uint> repeatedFixed32_ = new pbc::RepeatedField<uint>();
611    public pbc::RepeatedField<uint> RepeatedFixed32 {
612      get { return repeatedFixed32_; }
613    }
614
615    /// <summary>Field number for the "repeated_fixed64" field.</summary>
616    public const int RepeatedFixed64FieldNumber = 38;
617    private static readonly pb::FieldCodec<ulong> _repeated_repeatedFixed64_codec
618        = pb::FieldCodec.ForFixed64(306);
619    private readonly pbc::RepeatedField<ulong> repeatedFixed64_ = new pbc::RepeatedField<ulong>();
620    public pbc::RepeatedField<ulong> RepeatedFixed64 {
621      get { return repeatedFixed64_; }
622    }
623
624    /// <summary>Field number for the "repeated_sfixed32" field.</summary>
625    public const int RepeatedSfixed32FieldNumber = 39;
626    private static readonly pb::FieldCodec<int> _repeated_repeatedSfixed32_codec
627        = pb::FieldCodec.ForSFixed32(314);
628    private readonly pbc::RepeatedField<int> repeatedSfixed32_ = new pbc::RepeatedField<int>();
629    public pbc::RepeatedField<int> RepeatedSfixed32 {
630      get { return repeatedSfixed32_; }
631    }
632
633    /// <summary>Field number for the "repeated_sfixed64" field.</summary>
634    public const int RepeatedSfixed64FieldNumber = 40;
635    private static readonly pb::FieldCodec<long> _repeated_repeatedSfixed64_codec
636        = pb::FieldCodec.ForSFixed64(322);
637    private readonly pbc::RepeatedField<long> repeatedSfixed64_ = new pbc::RepeatedField<long>();
638    public pbc::RepeatedField<long> RepeatedSfixed64 {
639      get { return repeatedSfixed64_; }
640    }
641
642    /// <summary>Field number for the "repeated_float" field.</summary>
643    public const int RepeatedFloatFieldNumber = 41;
644    private static readonly pb::FieldCodec<float> _repeated_repeatedFloat_codec
645        = pb::FieldCodec.ForFloat(330);
646    private readonly pbc::RepeatedField<float> repeatedFloat_ = new pbc::RepeatedField<float>();
647    public pbc::RepeatedField<float> RepeatedFloat {
648      get { return repeatedFloat_; }
649    }
650
651    /// <summary>Field number for the "repeated_double" field.</summary>
652    public const int RepeatedDoubleFieldNumber = 42;
653    private static readonly pb::FieldCodec<double> _repeated_repeatedDouble_codec
654        = pb::FieldCodec.ForDouble(338);
655    private readonly pbc::RepeatedField<double> repeatedDouble_ = new pbc::RepeatedField<double>();
656    public pbc::RepeatedField<double> RepeatedDouble {
657      get { return repeatedDouble_; }
658    }
659
660    /// <summary>Field number for the "repeated_bool" field.</summary>
661    public const int RepeatedBoolFieldNumber = 43;
662    private static readonly pb::FieldCodec<bool> _repeated_repeatedBool_codec
663        = pb::FieldCodec.ForBool(346);
664    private readonly pbc::RepeatedField<bool> repeatedBool_ = new pbc::RepeatedField<bool>();
665    public pbc::RepeatedField<bool> RepeatedBool {
666      get { return repeatedBool_; }
667    }
668
669    /// <summary>Field number for the "repeated_string" field.</summary>
670    public const int RepeatedStringFieldNumber = 44;
671    private static readonly pb::FieldCodec<string> _repeated_repeatedString_codec
672        = pb::FieldCodec.ForString(354);
673    private readonly pbc::RepeatedField<string> repeatedString_ = new pbc::RepeatedField<string>();
674    public pbc::RepeatedField<string> RepeatedString {
675      get { return repeatedString_; }
676    }
677
678    /// <summary>Field number for the "repeated_bytes" field.</summary>
679    public const int RepeatedBytesFieldNumber = 45;
680    private static readonly pb::FieldCodec<pb::ByteString> _repeated_repeatedBytes_codec
681        = pb::FieldCodec.ForBytes(362);
682    private readonly pbc::RepeatedField<pb::ByteString> repeatedBytes_ = new pbc::RepeatedField<pb::ByteString>();
683    public pbc::RepeatedField<pb::ByteString> RepeatedBytes {
684      get { return repeatedBytes_; }
685    }
686
687    /// <summary>Field number for the "repeated_nested_message" field.</summary>
688    public const int RepeatedNestedMessageFieldNumber = 48;
689    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage> _repeated_repeatedNestedMessage_codec
690        = pb::FieldCodec.ForMessage(386, global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage.Parser);
691    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage> repeatedNestedMessage_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage>();
692    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage> RepeatedNestedMessage {
693      get { return repeatedNestedMessage_; }
694    }
695
696    /// <summary>Field number for the "repeated_foreign_message" field.</summary>
697    public const int RepeatedForeignMessageFieldNumber = 49;
698    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.ForeignMessage> _repeated_repeatedForeignMessage_codec
699        = pb::FieldCodec.ForMessage(394, global::Google.Protobuf.TestProtos.ForeignMessage.Parser);
700    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignMessage> repeatedForeignMessage_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignMessage>();
701    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignMessage> RepeatedForeignMessage {
702      get { return repeatedForeignMessage_; }
703    }
704
705    /// <summary>Field number for the "repeated_import_message" field.</summary>
706    public const int RepeatedImportMessageFieldNumber = 50;
707    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.ImportMessage> _repeated_repeatedImportMessage_codec
708        = pb::FieldCodec.ForMessage(402, global::Google.Protobuf.TestProtos.ImportMessage.Parser);
709    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.ImportMessage> repeatedImportMessage_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.ImportMessage>();
710    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.ImportMessage> RepeatedImportMessage {
711      get { return repeatedImportMessage_; }
712    }
713
714    /// <summary>Field number for the "repeated_nested_enum" field.</summary>
715    public const int RepeatedNestedEnumFieldNumber = 51;
716    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum> _repeated_repeatedNestedEnum_codec
717        = pb::FieldCodec.ForEnum(410, x => (int) x, x => (global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum) x);
718    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum> repeatedNestedEnum_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum>();
719    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum> RepeatedNestedEnum {
720      get { return repeatedNestedEnum_; }
721    }
722
723    /// <summary>Field number for the "repeated_foreign_enum" field.</summary>
724    public const int RepeatedForeignEnumFieldNumber = 52;
725    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.ForeignEnum> _repeated_repeatedForeignEnum_codec
726        = pb::FieldCodec.ForEnum(418, x => (int) x, x => (global::Google.Protobuf.TestProtos.ForeignEnum) x);
727    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum> repeatedForeignEnum_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum>();
728    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum> RepeatedForeignEnum {
729      get { return repeatedForeignEnum_; }
730    }
731
732    /// <summary>Field number for the "repeated_import_enum" field.</summary>
733    public const int RepeatedImportEnumFieldNumber = 53;
734    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.ImportEnum> _repeated_repeatedImportEnum_codec
735        = pb::FieldCodec.ForEnum(426, x => (int) x, x => (global::Google.Protobuf.TestProtos.ImportEnum) x);
736    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.ImportEnum> repeatedImportEnum_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.ImportEnum>();
737    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.ImportEnum> RepeatedImportEnum {
738      get { return repeatedImportEnum_; }
739    }
740
741    /// <summary>Field number for the "repeated_public_import_message" field.</summary>
742    public const int RepeatedPublicImportMessageFieldNumber = 54;
743    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.PublicImportMessage> _repeated_repeatedPublicImportMessage_codec
744        = pb::FieldCodec.ForMessage(434, global::Google.Protobuf.TestProtos.PublicImportMessage.Parser);
745    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.PublicImportMessage> repeatedPublicImportMessage_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.PublicImportMessage>();
746    /// <summary>
747    ///  Defined in unittest_import_public.proto
748    /// </summary>
749    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.PublicImportMessage> RepeatedPublicImportMessage {
750      get { return repeatedPublicImportMessage_; }
751    }
752
753    /// <summary>Field number for the "oneof_uint32" field.</summary>
754    public const int OneofUint32FieldNumber = 111;
755    public uint OneofUint32 {
756      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) oneofField_ : 0; }
757      set {
758        oneofField_ = value;
759        oneofFieldCase_ = OneofFieldOneofCase.OneofUint32;
760      }
761    }
762
763    /// <summary>Field number for the "oneof_nested_message" field.</summary>
764    public const int OneofNestedMessageFieldNumber = 112;
765    public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage OneofNestedMessage {
766      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage) oneofField_ : null; }
767      set {
768        oneofField_ = value;
769        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.OneofNestedMessage;
770      }
771    }
772
773    /// <summary>Field number for the "oneof_string" field.</summary>
774    public const int OneofStringFieldNumber = 113;
775    public string OneofString {
776      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) oneofField_ : ""; }
777      set {
778        oneofField_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
779        oneofFieldCase_ = OneofFieldOneofCase.OneofString;
780      }
781    }
782
783    /// <summary>Field number for the "oneof_bytes" field.</summary>
784    public const int OneofBytesFieldNumber = 114;
785    public pb::ByteString OneofBytes {
786      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) oneofField_ : pb::ByteString.Empty; }
787      set {
788        oneofField_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
789        oneofFieldCase_ = OneofFieldOneofCase.OneofBytes;
790      }
791    }
792
793    private object oneofField_;
794    /// <summary>Enum of possible cases for the "oneof_field" oneof.</summary>
795    public enum OneofFieldOneofCase {
796      None = 0,
797      OneofUint32 = 111,
798      OneofNestedMessage = 112,
799      OneofString = 113,
800      OneofBytes = 114,
801    }
802    private OneofFieldOneofCase oneofFieldCase_ = OneofFieldOneofCase.None;
803    public OneofFieldOneofCase OneofFieldCase {
804      get { return oneofFieldCase_; }
805    }
806
807    public void ClearOneofField() {
808      oneofFieldCase_ = OneofFieldOneofCase.None;
809      oneofField_ = null;
810    }
811
812    public override bool Equals(object other) {
813      return Equals(other as TestAllTypes);
814    }
815
816    public bool Equals(TestAllTypes other) {
817      if (ReferenceEquals(other, null)) {
818        return false;
819      }
820      if (ReferenceEquals(other, this)) {
821        return true;
822      }
823      if (SingleInt32 != other.SingleInt32) return false;
824      if (SingleInt64 != other.SingleInt64) return false;
825      if (SingleUint32 != other.SingleUint32) return false;
826      if (SingleUint64 != other.SingleUint64) return false;
827      if (SingleSint32 != other.SingleSint32) return false;
828      if (SingleSint64 != other.SingleSint64) return false;
829      if (SingleFixed32 != other.SingleFixed32) return false;
830      if (SingleFixed64 != other.SingleFixed64) return false;
831      if (SingleSfixed32 != other.SingleSfixed32) return false;
832      if (SingleSfixed64 != other.SingleSfixed64) return false;
833      if (SingleFloat != other.SingleFloat) return false;
834      if (SingleDouble != other.SingleDouble) return false;
835      if (SingleBool != other.SingleBool) return false;
836      if (SingleString != other.SingleString) return false;
837      if (SingleBytes != other.SingleBytes) return false;
838      if (!object.Equals(SingleNestedMessage, other.SingleNestedMessage)) return false;
839      if (!object.Equals(SingleForeignMessage, other.SingleForeignMessage)) return false;
840      if (!object.Equals(SingleImportMessage, other.SingleImportMessage)) return false;
841      if (SingleNestedEnum != other.SingleNestedEnum) return false;
842      if (SingleForeignEnum != other.SingleForeignEnum) return false;
843      if (SingleImportEnum != other.SingleImportEnum) return false;
844      if (!object.Equals(SinglePublicImportMessage, other.SinglePublicImportMessage)) return false;
845      if(!repeatedInt32_.Equals(other.repeatedInt32_)) return false;
846      if(!repeatedInt64_.Equals(other.repeatedInt64_)) return false;
847      if(!repeatedUint32_.Equals(other.repeatedUint32_)) return false;
848      if(!repeatedUint64_.Equals(other.repeatedUint64_)) return false;
849      if(!repeatedSint32_.Equals(other.repeatedSint32_)) return false;
850      if(!repeatedSint64_.Equals(other.repeatedSint64_)) return false;
851      if(!repeatedFixed32_.Equals(other.repeatedFixed32_)) return false;
852      if(!repeatedFixed64_.Equals(other.repeatedFixed64_)) return false;
853      if(!repeatedSfixed32_.Equals(other.repeatedSfixed32_)) return false;
854      if(!repeatedSfixed64_.Equals(other.repeatedSfixed64_)) return false;
855      if(!repeatedFloat_.Equals(other.repeatedFloat_)) return false;
856      if(!repeatedDouble_.Equals(other.repeatedDouble_)) return false;
857      if(!repeatedBool_.Equals(other.repeatedBool_)) return false;
858      if(!repeatedString_.Equals(other.repeatedString_)) return false;
859      if(!repeatedBytes_.Equals(other.repeatedBytes_)) return false;
860      if(!repeatedNestedMessage_.Equals(other.repeatedNestedMessage_)) return false;
861      if(!repeatedForeignMessage_.Equals(other.repeatedForeignMessage_)) return false;
862      if(!repeatedImportMessage_.Equals(other.repeatedImportMessage_)) return false;
863      if(!repeatedNestedEnum_.Equals(other.repeatedNestedEnum_)) return false;
864      if(!repeatedForeignEnum_.Equals(other.repeatedForeignEnum_)) return false;
865      if(!repeatedImportEnum_.Equals(other.repeatedImportEnum_)) return false;
866      if(!repeatedPublicImportMessage_.Equals(other.repeatedPublicImportMessage_)) return false;
867      if (OneofUint32 != other.OneofUint32) return false;
868      if (!object.Equals(OneofNestedMessage, other.OneofNestedMessage)) return false;
869      if (OneofString != other.OneofString) return false;
870      if (OneofBytes != other.OneofBytes) return false;
871      if (OneofFieldCase != other.OneofFieldCase) return false;
872      return true;
873    }
874
875    public override int GetHashCode() {
876      int hash = 1;
877      if (SingleInt32 != 0) hash ^= SingleInt32.GetHashCode();
878      if (SingleInt64 != 0L) hash ^= SingleInt64.GetHashCode();
879      if (SingleUint32 != 0) hash ^= SingleUint32.GetHashCode();
880      if (SingleUint64 != 0UL) hash ^= SingleUint64.GetHashCode();
881      if (SingleSint32 != 0) hash ^= SingleSint32.GetHashCode();
882      if (SingleSint64 != 0L) hash ^= SingleSint64.GetHashCode();
883      if (SingleFixed32 != 0) hash ^= SingleFixed32.GetHashCode();
884      if (SingleFixed64 != 0UL) hash ^= SingleFixed64.GetHashCode();
885      if (SingleSfixed32 != 0) hash ^= SingleSfixed32.GetHashCode();
886      if (SingleSfixed64 != 0L) hash ^= SingleSfixed64.GetHashCode();
887      if (SingleFloat != 0F) hash ^= SingleFloat.GetHashCode();
888      if (SingleDouble != 0D) hash ^= SingleDouble.GetHashCode();
889      if (SingleBool != false) hash ^= SingleBool.GetHashCode();
890      if (SingleString.Length != 0) hash ^= SingleString.GetHashCode();
891      if (SingleBytes.Length != 0) hash ^= SingleBytes.GetHashCode();
892      if (singleNestedMessage_ != null) hash ^= SingleNestedMessage.GetHashCode();
893      if (singleForeignMessage_ != null) hash ^= SingleForeignMessage.GetHashCode();
894      if (singleImportMessage_ != null) hash ^= SingleImportMessage.GetHashCode();
895      if (SingleNestedEnum != 0) hash ^= SingleNestedEnum.GetHashCode();
896      if (SingleForeignEnum != 0) hash ^= SingleForeignEnum.GetHashCode();
897      if (SingleImportEnum != 0) hash ^= SingleImportEnum.GetHashCode();
898      if (singlePublicImportMessage_ != null) hash ^= SinglePublicImportMessage.GetHashCode();
899      hash ^= repeatedInt32_.GetHashCode();
900      hash ^= repeatedInt64_.GetHashCode();
901      hash ^= repeatedUint32_.GetHashCode();
902      hash ^= repeatedUint64_.GetHashCode();
903      hash ^= repeatedSint32_.GetHashCode();
904      hash ^= repeatedSint64_.GetHashCode();
905      hash ^= repeatedFixed32_.GetHashCode();
906      hash ^= repeatedFixed64_.GetHashCode();
907      hash ^= repeatedSfixed32_.GetHashCode();
908      hash ^= repeatedSfixed64_.GetHashCode();
909      hash ^= repeatedFloat_.GetHashCode();
910      hash ^= repeatedDouble_.GetHashCode();
911      hash ^= repeatedBool_.GetHashCode();
912      hash ^= repeatedString_.GetHashCode();
913      hash ^= repeatedBytes_.GetHashCode();
914      hash ^= repeatedNestedMessage_.GetHashCode();
915      hash ^= repeatedForeignMessage_.GetHashCode();
916      hash ^= repeatedImportMessage_.GetHashCode();
917      hash ^= repeatedNestedEnum_.GetHashCode();
918      hash ^= repeatedForeignEnum_.GetHashCode();
919      hash ^= repeatedImportEnum_.GetHashCode();
920      hash ^= repeatedPublicImportMessage_.GetHashCode();
921      if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) hash ^= OneofUint32.GetHashCode();
922      if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) hash ^= OneofNestedMessage.GetHashCode();
923      if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) hash ^= OneofString.GetHashCode();
924      if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) hash ^= OneofBytes.GetHashCode();
925      hash ^= (int) oneofFieldCase_;
926      return hash;
927    }
928
929    public override string ToString() {
930      return pb::JsonFormatter.ToDiagnosticString(this);
931    }
932
933    public void WriteTo(pb::CodedOutputStream output) {
934      if (SingleInt32 != 0) {
935        output.WriteRawTag(8);
936        output.WriteInt32(SingleInt32);
937      }
938      if (SingleInt64 != 0L) {
939        output.WriteRawTag(16);
940        output.WriteInt64(SingleInt64);
941      }
942      if (SingleUint32 != 0) {
943        output.WriteRawTag(24);
944        output.WriteUInt32(SingleUint32);
945      }
946      if (SingleUint64 != 0UL) {
947        output.WriteRawTag(32);
948        output.WriteUInt64(SingleUint64);
949      }
950      if (SingleSint32 != 0) {
951        output.WriteRawTag(40);
952        output.WriteSInt32(SingleSint32);
953      }
954      if (SingleSint64 != 0L) {
955        output.WriteRawTag(48);
956        output.WriteSInt64(SingleSint64);
957      }
958      if (SingleFixed32 != 0) {
959        output.WriteRawTag(61);
960        output.WriteFixed32(SingleFixed32);
961      }
962      if (SingleFixed64 != 0UL) {
963        output.WriteRawTag(65);
964        output.WriteFixed64(SingleFixed64);
965      }
966      if (SingleSfixed32 != 0) {
967        output.WriteRawTag(77);
968        output.WriteSFixed32(SingleSfixed32);
969      }
970      if (SingleSfixed64 != 0L) {
971        output.WriteRawTag(81);
972        output.WriteSFixed64(SingleSfixed64);
973      }
974      if (SingleFloat != 0F) {
975        output.WriteRawTag(93);
976        output.WriteFloat(SingleFloat);
977      }
978      if (SingleDouble != 0D) {
979        output.WriteRawTag(97);
980        output.WriteDouble(SingleDouble);
981      }
982      if (SingleBool != false) {
983        output.WriteRawTag(104);
984        output.WriteBool(SingleBool);
985      }
986      if (SingleString.Length != 0) {
987        output.WriteRawTag(114);
988        output.WriteString(SingleString);
989      }
990      if (SingleBytes.Length != 0) {
991        output.WriteRawTag(122);
992        output.WriteBytes(SingleBytes);
993      }
994      if (singleNestedMessage_ != null) {
995        output.WriteRawTag(146, 1);
996        output.WriteMessage(SingleNestedMessage);
997      }
998      if (singleForeignMessage_ != null) {
999        output.WriteRawTag(154, 1);
1000        output.WriteMessage(SingleForeignMessage);
1001      }
1002      if (singleImportMessage_ != null) {
1003        output.WriteRawTag(162, 1);
1004        output.WriteMessage(SingleImportMessage);
1005      }
1006      if (SingleNestedEnum != 0) {
1007        output.WriteRawTag(168, 1);
1008        output.WriteEnum((int) SingleNestedEnum);
1009      }
1010      if (SingleForeignEnum != 0) {
1011        output.WriteRawTag(176, 1);
1012        output.WriteEnum((int) SingleForeignEnum);
1013      }
1014      if (SingleImportEnum != 0) {
1015        output.WriteRawTag(184, 1);
1016        output.WriteEnum((int) SingleImportEnum);
1017      }
1018      if (singlePublicImportMessage_ != null) {
1019        output.WriteRawTag(210, 1);
1020        output.WriteMessage(SinglePublicImportMessage);
1021      }
1022      repeatedInt32_.WriteTo(output, _repeated_repeatedInt32_codec);
1023      repeatedInt64_.WriteTo(output, _repeated_repeatedInt64_codec);
1024      repeatedUint32_.WriteTo(output, _repeated_repeatedUint32_codec);
1025      repeatedUint64_.WriteTo(output, _repeated_repeatedUint64_codec);
1026      repeatedSint32_.WriteTo(output, _repeated_repeatedSint32_codec);
1027      repeatedSint64_.WriteTo(output, _repeated_repeatedSint64_codec);
1028      repeatedFixed32_.WriteTo(output, _repeated_repeatedFixed32_codec);
1029      repeatedFixed64_.WriteTo(output, _repeated_repeatedFixed64_codec);
1030      repeatedSfixed32_.WriteTo(output, _repeated_repeatedSfixed32_codec);
1031      repeatedSfixed64_.WriteTo(output, _repeated_repeatedSfixed64_codec);
1032      repeatedFloat_.WriteTo(output, _repeated_repeatedFloat_codec);
1033      repeatedDouble_.WriteTo(output, _repeated_repeatedDouble_codec);
1034      repeatedBool_.WriteTo(output, _repeated_repeatedBool_codec);
1035      repeatedString_.WriteTo(output, _repeated_repeatedString_codec);
1036      repeatedBytes_.WriteTo(output, _repeated_repeatedBytes_codec);
1037      repeatedNestedMessage_.WriteTo(output, _repeated_repeatedNestedMessage_codec);
1038      repeatedForeignMessage_.WriteTo(output, _repeated_repeatedForeignMessage_codec);
1039      repeatedImportMessage_.WriteTo(output, _repeated_repeatedImportMessage_codec);
1040      repeatedNestedEnum_.WriteTo(output, _repeated_repeatedNestedEnum_codec);
1041      repeatedForeignEnum_.WriteTo(output, _repeated_repeatedForeignEnum_codec);
1042      repeatedImportEnum_.WriteTo(output, _repeated_repeatedImportEnum_codec);
1043      repeatedPublicImportMessage_.WriteTo(output, _repeated_repeatedPublicImportMessage_codec);
1044      if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) {
1045        output.WriteRawTag(248, 6);
1046        output.WriteUInt32(OneofUint32);
1047      }
1048      if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) {
1049        output.WriteRawTag(130, 7);
1050        output.WriteMessage(OneofNestedMessage);
1051      }
1052      if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) {
1053        output.WriteRawTag(138, 7);
1054        output.WriteString(OneofString);
1055      }
1056      if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) {
1057        output.WriteRawTag(146, 7);
1058        output.WriteBytes(OneofBytes);
1059      }
1060    }
1061
1062    public int CalculateSize() {
1063      int size = 0;
1064      if (SingleInt32 != 0) {
1065        size += 1 + pb::CodedOutputStream.ComputeInt32Size(SingleInt32);
1066      }
1067      if (SingleInt64 != 0L) {
1068        size += 1 + pb::CodedOutputStream.ComputeInt64Size(SingleInt64);
1069      }
1070      if (SingleUint32 != 0) {
1071        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SingleUint32);
1072      }
1073      if (SingleUint64 != 0UL) {
1074        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(SingleUint64);
1075      }
1076      if (SingleSint32 != 0) {
1077        size += 1 + pb::CodedOutputStream.ComputeSInt32Size(SingleSint32);
1078      }
1079      if (SingleSint64 != 0L) {
1080        size += 1 + pb::CodedOutputStream.ComputeSInt64Size(SingleSint64);
1081      }
1082      if (SingleFixed32 != 0) {
1083        size += 1 + 4;
1084      }
1085      if (SingleFixed64 != 0UL) {
1086        size += 1 + 8;
1087      }
1088      if (SingleSfixed32 != 0) {
1089        size += 1 + 4;
1090      }
1091      if (SingleSfixed64 != 0L) {
1092        size += 1 + 8;
1093      }
1094      if (SingleFloat != 0F) {
1095        size += 1 + 4;
1096      }
1097      if (SingleDouble != 0D) {
1098        size += 1 + 8;
1099      }
1100      if (SingleBool != false) {
1101        size += 1 + 1;
1102      }
1103      if (SingleString.Length != 0) {
1104        size += 1 + pb::CodedOutputStream.ComputeStringSize(SingleString);
1105      }
1106      if (SingleBytes.Length != 0) {
1107        size += 1 + pb::CodedOutputStream.ComputeBytesSize(SingleBytes);
1108      }
1109      if (singleNestedMessage_ != null) {
1110        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleNestedMessage);
1111      }
1112      if (singleForeignMessage_ != null) {
1113        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleForeignMessage);
1114      }
1115      if (singleImportMessage_ != null) {
1116        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleImportMessage);
1117      }
1118      if (SingleNestedEnum != 0) {
1119        size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleNestedEnum);
1120      }
1121      if (SingleForeignEnum != 0) {
1122        size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleForeignEnum);
1123      }
1124      if (SingleImportEnum != 0) {
1125        size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleImportEnum);
1126      }
1127      if (singlePublicImportMessage_ != null) {
1128        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SinglePublicImportMessage);
1129      }
1130      size += repeatedInt32_.CalculateSize(_repeated_repeatedInt32_codec);
1131      size += repeatedInt64_.CalculateSize(_repeated_repeatedInt64_codec);
1132      size += repeatedUint32_.CalculateSize(_repeated_repeatedUint32_codec);
1133      size += repeatedUint64_.CalculateSize(_repeated_repeatedUint64_codec);
1134      size += repeatedSint32_.CalculateSize(_repeated_repeatedSint32_codec);
1135      size += repeatedSint64_.CalculateSize(_repeated_repeatedSint64_codec);
1136      size += repeatedFixed32_.CalculateSize(_repeated_repeatedFixed32_codec);
1137      size += repeatedFixed64_.CalculateSize(_repeated_repeatedFixed64_codec);
1138      size += repeatedSfixed32_.CalculateSize(_repeated_repeatedSfixed32_codec);
1139      size += repeatedSfixed64_.CalculateSize(_repeated_repeatedSfixed64_codec);
1140      size += repeatedFloat_.CalculateSize(_repeated_repeatedFloat_codec);
1141      size += repeatedDouble_.CalculateSize(_repeated_repeatedDouble_codec);
1142      size += repeatedBool_.CalculateSize(_repeated_repeatedBool_codec);
1143      size += repeatedString_.CalculateSize(_repeated_repeatedString_codec);
1144      size += repeatedBytes_.CalculateSize(_repeated_repeatedBytes_codec);
1145      size += repeatedNestedMessage_.CalculateSize(_repeated_repeatedNestedMessage_codec);
1146      size += repeatedForeignMessage_.CalculateSize(_repeated_repeatedForeignMessage_codec);
1147      size += repeatedImportMessage_.CalculateSize(_repeated_repeatedImportMessage_codec);
1148      size += repeatedNestedEnum_.CalculateSize(_repeated_repeatedNestedEnum_codec);
1149      size += repeatedForeignEnum_.CalculateSize(_repeated_repeatedForeignEnum_codec);
1150      size += repeatedImportEnum_.CalculateSize(_repeated_repeatedImportEnum_codec);
1151      size += repeatedPublicImportMessage_.CalculateSize(_repeated_repeatedPublicImportMessage_codec);
1152      if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) {
1153        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(OneofUint32);
1154      }
1155      if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) {
1156        size += 2 + pb::CodedOutputStream.ComputeMessageSize(OneofNestedMessage);
1157      }
1158      if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) {
1159        size += 2 + pb::CodedOutputStream.ComputeStringSize(OneofString);
1160      }
1161      if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) {
1162        size += 2 + pb::CodedOutputStream.ComputeBytesSize(OneofBytes);
1163      }
1164      return size;
1165    }
1166
1167    public void MergeFrom(TestAllTypes other) {
1168      if (other == null) {
1169        return;
1170      }
1171      if (other.SingleInt32 != 0) {
1172        SingleInt32 = other.SingleInt32;
1173      }
1174      if (other.SingleInt64 != 0L) {
1175        SingleInt64 = other.SingleInt64;
1176      }
1177      if (other.SingleUint32 != 0) {
1178        SingleUint32 = other.SingleUint32;
1179      }
1180      if (other.SingleUint64 != 0UL) {
1181        SingleUint64 = other.SingleUint64;
1182      }
1183      if (other.SingleSint32 != 0) {
1184        SingleSint32 = other.SingleSint32;
1185      }
1186      if (other.SingleSint64 != 0L) {
1187        SingleSint64 = other.SingleSint64;
1188      }
1189      if (other.SingleFixed32 != 0) {
1190        SingleFixed32 = other.SingleFixed32;
1191      }
1192      if (other.SingleFixed64 != 0UL) {
1193        SingleFixed64 = other.SingleFixed64;
1194      }
1195      if (other.SingleSfixed32 != 0) {
1196        SingleSfixed32 = other.SingleSfixed32;
1197      }
1198      if (other.SingleSfixed64 != 0L) {
1199        SingleSfixed64 = other.SingleSfixed64;
1200      }
1201      if (other.SingleFloat != 0F) {
1202        SingleFloat = other.SingleFloat;
1203      }
1204      if (other.SingleDouble != 0D) {
1205        SingleDouble = other.SingleDouble;
1206      }
1207      if (other.SingleBool != false) {
1208        SingleBool = other.SingleBool;
1209      }
1210      if (other.SingleString.Length != 0) {
1211        SingleString = other.SingleString;
1212      }
1213      if (other.SingleBytes.Length != 0) {
1214        SingleBytes = other.SingleBytes;
1215      }
1216      if (other.singleNestedMessage_ != null) {
1217        if (singleNestedMessage_ == null) {
1218          singleNestedMessage_ = new global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage();
1219        }
1220        SingleNestedMessage.MergeFrom(other.SingleNestedMessage);
1221      }
1222      if (other.singleForeignMessage_ != null) {
1223        if (singleForeignMessage_ == null) {
1224          singleForeignMessage_ = new global::Google.Protobuf.TestProtos.ForeignMessage();
1225        }
1226        SingleForeignMessage.MergeFrom(other.SingleForeignMessage);
1227      }
1228      if (other.singleImportMessage_ != null) {
1229        if (singleImportMessage_ == null) {
1230          singleImportMessage_ = new global::Google.Protobuf.TestProtos.ImportMessage();
1231        }
1232        SingleImportMessage.MergeFrom(other.SingleImportMessage);
1233      }
1234      if (other.SingleNestedEnum != 0) {
1235        SingleNestedEnum = other.SingleNestedEnum;
1236      }
1237      if (other.SingleForeignEnum != 0) {
1238        SingleForeignEnum = other.SingleForeignEnum;
1239      }
1240      if (other.SingleImportEnum != 0) {
1241        SingleImportEnum = other.SingleImportEnum;
1242      }
1243      if (other.singlePublicImportMessage_ != null) {
1244        if (singlePublicImportMessage_ == null) {
1245          singlePublicImportMessage_ = new global::Google.Protobuf.TestProtos.PublicImportMessage();
1246        }
1247        SinglePublicImportMessage.MergeFrom(other.SinglePublicImportMessage);
1248      }
1249      repeatedInt32_.Add(other.repeatedInt32_);
1250      repeatedInt64_.Add(other.repeatedInt64_);
1251      repeatedUint32_.Add(other.repeatedUint32_);
1252      repeatedUint64_.Add(other.repeatedUint64_);
1253      repeatedSint32_.Add(other.repeatedSint32_);
1254      repeatedSint64_.Add(other.repeatedSint64_);
1255      repeatedFixed32_.Add(other.repeatedFixed32_);
1256      repeatedFixed64_.Add(other.repeatedFixed64_);
1257      repeatedSfixed32_.Add(other.repeatedSfixed32_);
1258      repeatedSfixed64_.Add(other.repeatedSfixed64_);
1259      repeatedFloat_.Add(other.repeatedFloat_);
1260      repeatedDouble_.Add(other.repeatedDouble_);
1261      repeatedBool_.Add(other.repeatedBool_);
1262      repeatedString_.Add(other.repeatedString_);
1263      repeatedBytes_.Add(other.repeatedBytes_);
1264      repeatedNestedMessage_.Add(other.repeatedNestedMessage_);
1265      repeatedForeignMessage_.Add(other.repeatedForeignMessage_);
1266      repeatedImportMessage_.Add(other.repeatedImportMessage_);
1267      repeatedNestedEnum_.Add(other.repeatedNestedEnum_);
1268      repeatedForeignEnum_.Add(other.repeatedForeignEnum_);
1269      repeatedImportEnum_.Add(other.repeatedImportEnum_);
1270      repeatedPublicImportMessage_.Add(other.repeatedPublicImportMessage_);
1271      switch (other.OneofFieldCase) {
1272        case OneofFieldOneofCase.OneofUint32:
1273          OneofUint32 = other.OneofUint32;
1274          break;
1275        case OneofFieldOneofCase.OneofNestedMessage:
1276          OneofNestedMessage = other.OneofNestedMessage;
1277          break;
1278        case OneofFieldOneofCase.OneofString:
1279          OneofString = other.OneofString;
1280          break;
1281        case OneofFieldOneofCase.OneofBytes:
1282          OneofBytes = other.OneofBytes;
1283          break;
1284      }
1285
1286    }
1287
1288    public void MergeFrom(pb::CodedInputStream input) {
1289      uint tag;
1290      while ((tag = input.ReadTag()) != 0) {
1291        switch(tag) {
1292          default:
1293            input.SkipLastField();
1294            break;
1295          case 8: {
1296            SingleInt32 = input.ReadInt32();
1297            break;
1298          }
1299          case 16: {
1300            SingleInt64 = input.ReadInt64();
1301            break;
1302          }
1303          case 24: {
1304            SingleUint32 = input.ReadUInt32();
1305            break;
1306          }
1307          case 32: {
1308            SingleUint64 = input.ReadUInt64();
1309            break;
1310          }
1311          case 40: {
1312            SingleSint32 = input.ReadSInt32();
1313            break;
1314          }
1315          case 48: {
1316            SingleSint64 = input.ReadSInt64();
1317            break;
1318          }
1319          case 61: {
1320            SingleFixed32 = input.ReadFixed32();
1321            break;
1322          }
1323          case 65: {
1324            SingleFixed64 = input.ReadFixed64();
1325            break;
1326          }
1327          case 77: {
1328            SingleSfixed32 = input.ReadSFixed32();
1329            break;
1330          }
1331          case 81: {
1332            SingleSfixed64 = input.ReadSFixed64();
1333            break;
1334          }
1335          case 93: {
1336            SingleFloat = input.ReadFloat();
1337            break;
1338          }
1339          case 97: {
1340            SingleDouble = input.ReadDouble();
1341            break;
1342          }
1343          case 104: {
1344            SingleBool = input.ReadBool();
1345            break;
1346          }
1347          case 114: {
1348            SingleString = input.ReadString();
1349            break;
1350          }
1351          case 122: {
1352            SingleBytes = input.ReadBytes();
1353            break;
1354          }
1355          case 146: {
1356            if (singleNestedMessage_ == null) {
1357              singleNestedMessage_ = new global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage();
1358            }
1359            input.ReadMessage(singleNestedMessage_);
1360            break;
1361          }
1362          case 154: {
1363            if (singleForeignMessage_ == null) {
1364              singleForeignMessage_ = new global::Google.Protobuf.TestProtos.ForeignMessage();
1365            }
1366            input.ReadMessage(singleForeignMessage_);
1367            break;
1368          }
1369          case 162: {
1370            if (singleImportMessage_ == null) {
1371              singleImportMessage_ = new global::Google.Protobuf.TestProtos.ImportMessage();
1372            }
1373            input.ReadMessage(singleImportMessage_);
1374            break;
1375          }
1376          case 168: {
1377            singleNestedEnum_ = (global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum) input.ReadEnum();
1378            break;
1379          }
1380          case 176: {
1381            singleForeignEnum_ = (global::Google.Protobuf.TestProtos.ForeignEnum) input.ReadEnum();
1382            break;
1383          }
1384          case 184: {
1385            singleImportEnum_ = (global::Google.Protobuf.TestProtos.ImportEnum) input.ReadEnum();
1386            break;
1387          }
1388          case 210: {
1389            if (singlePublicImportMessage_ == null) {
1390              singlePublicImportMessage_ = new global::Google.Protobuf.TestProtos.PublicImportMessage();
1391            }
1392            input.ReadMessage(singlePublicImportMessage_);
1393            break;
1394          }
1395          case 250:
1396          case 248: {
1397            repeatedInt32_.AddEntriesFrom(input, _repeated_repeatedInt32_codec);
1398            break;
1399          }
1400          case 258:
1401          case 256: {
1402            repeatedInt64_.AddEntriesFrom(input, _repeated_repeatedInt64_codec);
1403            break;
1404          }
1405          case 266:
1406          case 264: {
1407            repeatedUint32_.AddEntriesFrom(input, _repeated_repeatedUint32_codec);
1408            break;
1409          }
1410          case 274:
1411          case 272: {
1412            repeatedUint64_.AddEntriesFrom(input, _repeated_repeatedUint64_codec);
1413            break;
1414          }
1415          case 282:
1416          case 280: {
1417            repeatedSint32_.AddEntriesFrom(input, _repeated_repeatedSint32_codec);
1418            break;
1419          }
1420          case 290:
1421          case 288: {
1422            repeatedSint64_.AddEntriesFrom(input, _repeated_repeatedSint64_codec);
1423            break;
1424          }
1425          case 298:
1426          case 301: {
1427            repeatedFixed32_.AddEntriesFrom(input, _repeated_repeatedFixed32_codec);
1428            break;
1429          }
1430          case 306:
1431          case 305: {
1432            repeatedFixed64_.AddEntriesFrom(input, _repeated_repeatedFixed64_codec);
1433            break;
1434          }
1435          case 314:
1436          case 317: {
1437            repeatedSfixed32_.AddEntriesFrom(input, _repeated_repeatedSfixed32_codec);
1438            break;
1439          }
1440          case 322:
1441          case 321: {
1442            repeatedSfixed64_.AddEntriesFrom(input, _repeated_repeatedSfixed64_codec);
1443            break;
1444          }
1445          case 330:
1446          case 333: {
1447            repeatedFloat_.AddEntriesFrom(input, _repeated_repeatedFloat_codec);
1448            break;
1449          }
1450          case 338:
1451          case 337: {
1452            repeatedDouble_.AddEntriesFrom(input, _repeated_repeatedDouble_codec);
1453            break;
1454          }
1455          case 346:
1456          case 344: {
1457            repeatedBool_.AddEntriesFrom(input, _repeated_repeatedBool_codec);
1458            break;
1459          }
1460          case 354: {
1461            repeatedString_.AddEntriesFrom(input, _repeated_repeatedString_codec);
1462            break;
1463          }
1464          case 362: {
1465            repeatedBytes_.AddEntriesFrom(input, _repeated_repeatedBytes_codec);
1466            break;
1467          }
1468          case 386: {
1469            repeatedNestedMessage_.AddEntriesFrom(input, _repeated_repeatedNestedMessage_codec);
1470            break;
1471          }
1472          case 394: {
1473            repeatedForeignMessage_.AddEntriesFrom(input, _repeated_repeatedForeignMessage_codec);
1474            break;
1475          }
1476          case 402: {
1477            repeatedImportMessage_.AddEntriesFrom(input, _repeated_repeatedImportMessage_codec);
1478            break;
1479          }
1480          case 410:
1481          case 408: {
1482            repeatedNestedEnum_.AddEntriesFrom(input, _repeated_repeatedNestedEnum_codec);
1483            break;
1484          }
1485          case 418:
1486          case 416: {
1487            repeatedForeignEnum_.AddEntriesFrom(input, _repeated_repeatedForeignEnum_codec);
1488            break;
1489          }
1490          case 426:
1491          case 424: {
1492            repeatedImportEnum_.AddEntriesFrom(input, _repeated_repeatedImportEnum_codec);
1493            break;
1494          }
1495          case 434: {
1496            repeatedPublicImportMessage_.AddEntriesFrom(input, _repeated_repeatedPublicImportMessage_codec);
1497            break;
1498          }
1499          case 888: {
1500            OneofUint32 = input.ReadUInt32();
1501            break;
1502          }
1503          case 898: {
1504            global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage subBuilder = new global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage();
1505            if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) {
1506              subBuilder.MergeFrom(OneofNestedMessage);
1507            }
1508            input.ReadMessage(subBuilder);
1509            OneofNestedMessage = subBuilder;
1510            break;
1511          }
1512          case 906: {
1513            OneofString = input.ReadString();
1514            break;
1515          }
1516          case 914: {
1517            OneofBytes = input.ReadBytes();
1518            break;
1519          }
1520        }
1521      }
1522    }
1523
1524    #region Nested types
1525    /// <summary>Container for nested types declared in the TestAllTypes message type.</summary>
1526    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
1527    public static partial class Types {
1528      public enum NestedEnum {
1529        [pbr::OriginalName("NESTED_ENUM_UNSPECIFIED")] Unspecified = 0,
1530        [pbr::OriginalName("FOO")] Foo = 1,
1531        [pbr::OriginalName("BAR")] Bar = 2,
1532        [pbr::OriginalName("BAZ")] Baz = 3,
1533        /// <summary>
1534        ///  Intentionally negative.
1535        /// </summary>
1536        [pbr::OriginalName("NEG")] Neg = -1,
1537      }
1538
1539      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
1540      public sealed partial class NestedMessage : pb::IMessage<NestedMessage> {
1541        private static readonly pb::MessageParser<NestedMessage> _parser = new pb::MessageParser<NestedMessage>(() => new NestedMessage());
1542        public static pb::MessageParser<NestedMessage> Parser { get { return _parser; } }
1543
1544        public static pbr::MessageDescriptor Descriptor {
1545          get { return global::Google.Protobuf.TestProtos.TestAllTypes.Descriptor.NestedTypes[0]; }
1546        }
1547
1548        pbr::MessageDescriptor pb::IMessage.Descriptor {
1549          get { return Descriptor; }
1550        }
1551
1552        public NestedMessage() {
1553          OnConstruction();
1554        }
1555
1556        partial void OnConstruction();
1557
1558        public NestedMessage(NestedMessage other) : this() {
1559          bb_ = other.bb_;
1560        }
1561
1562        public NestedMessage Clone() {
1563          return new NestedMessage(this);
1564        }
1565
1566        /// <summary>Field number for the "bb" field.</summary>
1567        public const int BbFieldNumber = 1;
1568        private int bb_;
1569        /// <summary>
1570        ///  The field name "b" fails to compile in proto1 because it conflicts with
1571        ///  a local variable named "b" in one of the generated methods.  Doh.
1572        ///  This file needs to compile in proto1 to test backwards-compatibility.
1573        /// </summary>
1574        public int Bb {
1575          get { return bb_; }
1576          set {
1577            bb_ = value;
1578          }
1579        }
1580
1581        public override bool Equals(object other) {
1582          return Equals(other as NestedMessage);
1583        }
1584
1585        public bool Equals(NestedMessage other) {
1586          if (ReferenceEquals(other, null)) {
1587            return false;
1588          }
1589          if (ReferenceEquals(other, this)) {
1590            return true;
1591          }
1592          if (Bb != other.Bb) return false;
1593          return true;
1594        }
1595
1596        public override int GetHashCode() {
1597          int hash = 1;
1598          if (Bb != 0) hash ^= Bb.GetHashCode();
1599          return hash;
1600        }
1601
1602        public override string ToString() {
1603          return pb::JsonFormatter.ToDiagnosticString(this);
1604        }
1605
1606        public void WriteTo(pb::CodedOutputStream output) {
1607          if (Bb != 0) {
1608            output.WriteRawTag(8);
1609            output.WriteInt32(Bb);
1610          }
1611        }
1612
1613        public int CalculateSize() {
1614          int size = 0;
1615          if (Bb != 0) {
1616            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Bb);
1617          }
1618          return size;
1619        }
1620
1621        public void MergeFrom(NestedMessage other) {
1622          if (other == null) {
1623            return;
1624          }
1625          if (other.Bb != 0) {
1626            Bb = other.Bb;
1627          }
1628        }
1629
1630        public void MergeFrom(pb::CodedInputStream input) {
1631          uint tag;
1632          while ((tag = input.ReadTag()) != 0) {
1633            switch(tag) {
1634              default:
1635                input.SkipLastField();
1636                break;
1637              case 8: {
1638                Bb = input.ReadInt32();
1639                break;
1640              }
1641            }
1642          }
1643        }
1644
1645      }
1646
1647    }
1648    #endregion
1649
1650  }
1651
1652  /// <summary>
1653  ///  This proto includes a recusively nested message.
1654  /// </summary>
1655  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
1656  public sealed partial class NestedTestAllTypes : pb::IMessage<NestedTestAllTypes> {
1657    private static readonly pb::MessageParser<NestedTestAllTypes> _parser = new pb::MessageParser<NestedTestAllTypes>(() => new NestedTestAllTypes());
1658    public static pb::MessageParser<NestedTestAllTypes> Parser { get { return _parser; } }
1659
1660    public static pbr::MessageDescriptor Descriptor {
1661      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[1]; }
1662    }
1663
1664    pbr::MessageDescriptor pb::IMessage.Descriptor {
1665      get { return Descriptor; }
1666    }
1667
1668    public NestedTestAllTypes() {
1669      OnConstruction();
1670    }
1671
1672    partial void OnConstruction();
1673
1674    public NestedTestAllTypes(NestedTestAllTypes other) : this() {
1675      Child = other.child_ != null ? other.Child.Clone() : null;
1676      Payload = other.payload_ != null ? other.Payload.Clone() : null;
1677      repeatedChild_ = other.repeatedChild_.Clone();
1678    }
1679
1680    public NestedTestAllTypes Clone() {
1681      return new NestedTestAllTypes(this);
1682    }
1683
1684    /// <summary>Field number for the "child" field.</summary>
1685    public const int ChildFieldNumber = 1;
1686    private global::Google.Protobuf.TestProtos.NestedTestAllTypes child_;
1687    public global::Google.Protobuf.TestProtos.NestedTestAllTypes Child {
1688      get { return child_; }
1689      set {
1690        child_ = value;
1691      }
1692    }
1693
1694    /// <summary>Field number for the "payload" field.</summary>
1695    public const int PayloadFieldNumber = 2;
1696    private global::Google.Protobuf.TestProtos.TestAllTypes payload_;
1697    public global::Google.Protobuf.TestProtos.TestAllTypes Payload {
1698      get { return payload_; }
1699      set {
1700        payload_ = value;
1701      }
1702    }
1703
1704    /// <summary>Field number for the "repeated_child" field.</summary>
1705    public const int RepeatedChildFieldNumber = 3;
1706    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.NestedTestAllTypes> _repeated_repeatedChild_codec
1707        = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.TestProtos.NestedTestAllTypes.Parser);
1708    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.NestedTestAllTypes> repeatedChild_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.NestedTestAllTypes>();
1709    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.NestedTestAllTypes> RepeatedChild {
1710      get { return repeatedChild_; }
1711    }
1712
1713    public override bool Equals(object other) {
1714      return Equals(other as NestedTestAllTypes);
1715    }
1716
1717    public bool Equals(NestedTestAllTypes other) {
1718      if (ReferenceEquals(other, null)) {
1719        return false;
1720      }
1721      if (ReferenceEquals(other, this)) {
1722        return true;
1723      }
1724      if (!object.Equals(Child, other.Child)) return false;
1725      if (!object.Equals(Payload, other.Payload)) return false;
1726      if(!repeatedChild_.Equals(other.repeatedChild_)) return false;
1727      return true;
1728    }
1729
1730    public override int GetHashCode() {
1731      int hash = 1;
1732      if (child_ != null) hash ^= Child.GetHashCode();
1733      if (payload_ != null) hash ^= Payload.GetHashCode();
1734      hash ^= repeatedChild_.GetHashCode();
1735      return hash;
1736    }
1737
1738    public override string ToString() {
1739      return pb::JsonFormatter.ToDiagnosticString(this);
1740    }
1741
1742    public void WriteTo(pb::CodedOutputStream output) {
1743      if (child_ != null) {
1744        output.WriteRawTag(10);
1745        output.WriteMessage(Child);
1746      }
1747      if (payload_ != null) {
1748        output.WriteRawTag(18);
1749        output.WriteMessage(Payload);
1750      }
1751      repeatedChild_.WriteTo(output, _repeated_repeatedChild_codec);
1752    }
1753
1754    public int CalculateSize() {
1755      int size = 0;
1756      if (child_ != null) {
1757        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Child);
1758      }
1759      if (payload_ != null) {
1760        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Payload);
1761      }
1762      size += repeatedChild_.CalculateSize(_repeated_repeatedChild_codec);
1763      return size;
1764    }
1765
1766    public void MergeFrom(NestedTestAllTypes other) {
1767      if (other == null) {
1768        return;
1769      }
1770      if (other.child_ != null) {
1771        if (child_ == null) {
1772          child_ = new global::Google.Protobuf.TestProtos.NestedTestAllTypes();
1773        }
1774        Child.MergeFrom(other.Child);
1775      }
1776      if (other.payload_ != null) {
1777        if (payload_ == null) {
1778          payload_ = new global::Google.Protobuf.TestProtos.TestAllTypes();
1779        }
1780        Payload.MergeFrom(other.Payload);
1781      }
1782      repeatedChild_.Add(other.repeatedChild_);
1783    }
1784
1785    public void MergeFrom(pb::CodedInputStream input) {
1786      uint tag;
1787      while ((tag = input.ReadTag()) != 0) {
1788        switch(tag) {
1789          default:
1790            input.SkipLastField();
1791            break;
1792          case 10: {
1793            if (child_ == null) {
1794              child_ = new global::Google.Protobuf.TestProtos.NestedTestAllTypes();
1795            }
1796            input.ReadMessage(child_);
1797            break;
1798          }
1799          case 18: {
1800            if (payload_ == null) {
1801              payload_ = new global::Google.Protobuf.TestProtos.TestAllTypes();
1802            }
1803            input.ReadMessage(payload_);
1804            break;
1805          }
1806          case 26: {
1807            repeatedChild_.AddEntriesFrom(input, _repeated_repeatedChild_codec);
1808            break;
1809          }
1810        }
1811      }
1812    }
1813
1814  }
1815
1816  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
1817  public sealed partial class TestDeprecatedFields : pb::IMessage<TestDeprecatedFields> {
1818    private static readonly pb::MessageParser<TestDeprecatedFields> _parser = new pb::MessageParser<TestDeprecatedFields>(() => new TestDeprecatedFields());
1819    public static pb::MessageParser<TestDeprecatedFields> Parser { get { return _parser; } }
1820
1821    public static pbr::MessageDescriptor Descriptor {
1822      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[2]; }
1823    }
1824
1825    pbr::MessageDescriptor pb::IMessage.Descriptor {
1826      get { return Descriptor; }
1827    }
1828
1829    public TestDeprecatedFields() {
1830      OnConstruction();
1831    }
1832
1833    partial void OnConstruction();
1834
1835    public TestDeprecatedFields(TestDeprecatedFields other) : this() {
1836      deprecatedInt32_ = other.deprecatedInt32_;
1837    }
1838
1839    public TestDeprecatedFields Clone() {
1840      return new TestDeprecatedFields(this);
1841    }
1842
1843    /// <summary>Field number for the "deprecated_int32" field.</summary>
1844    public const int DeprecatedInt32FieldNumber = 1;
1845    private int deprecatedInt32_;
1846    [global::System.ObsoleteAttribute()]
1847    public int DeprecatedInt32 {
1848      get { return deprecatedInt32_; }
1849      set {
1850        deprecatedInt32_ = value;
1851      }
1852    }
1853
1854    public override bool Equals(object other) {
1855      return Equals(other as TestDeprecatedFields);
1856    }
1857
1858    public bool Equals(TestDeprecatedFields other) {
1859      if (ReferenceEquals(other, null)) {
1860        return false;
1861      }
1862      if (ReferenceEquals(other, this)) {
1863        return true;
1864      }
1865      if (DeprecatedInt32 != other.DeprecatedInt32) return false;
1866      return true;
1867    }
1868
1869    public override int GetHashCode() {
1870      int hash = 1;
1871      if (DeprecatedInt32 != 0) hash ^= DeprecatedInt32.GetHashCode();
1872      return hash;
1873    }
1874
1875    public override string ToString() {
1876      return pb::JsonFormatter.ToDiagnosticString(this);
1877    }
1878
1879    public void WriteTo(pb::CodedOutputStream output) {
1880      if (DeprecatedInt32 != 0) {
1881        output.WriteRawTag(8);
1882        output.WriteInt32(DeprecatedInt32);
1883      }
1884    }
1885
1886    public int CalculateSize() {
1887      int size = 0;
1888      if (DeprecatedInt32 != 0) {
1889        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DeprecatedInt32);
1890      }
1891      return size;
1892    }
1893
1894    public void MergeFrom(TestDeprecatedFields other) {
1895      if (other == null) {
1896        return;
1897      }
1898      if (other.DeprecatedInt32 != 0) {
1899        DeprecatedInt32 = other.DeprecatedInt32;
1900      }
1901    }
1902
1903    public void MergeFrom(pb::CodedInputStream input) {
1904      uint tag;
1905      while ((tag = input.ReadTag()) != 0) {
1906        switch(tag) {
1907          default:
1908            input.SkipLastField();
1909            break;
1910          case 8: {
1911            DeprecatedInt32 = input.ReadInt32();
1912            break;
1913          }
1914        }
1915      }
1916    }
1917
1918  }
1919
1920  /// <summary>
1921  ///  Define these after TestAllTypes to make sure the compiler can handle
1922  ///  that.
1923  /// </summary>
1924  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
1925  public sealed partial class ForeignMessage : pb::IMessage<ForeignMessage> {
1926    private static readonly pb::MessageParser<ForeignMessage> _parser = new pb::MessageParser<ForeignMessage>(() => new ForeignMessage());
1927    public static pb::MessageParser<ForeignMessage> Parser { get { return _parser; } }
1928
1929    public static pbr::MessageDescriptor Descriptor {
1930      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[3]; }
1931    }
1932
1933    pbr::MessageDescriptor pb::IMessage.Descriptor {
1934      get { return Descriptor; }
1935    }
1936
1937    public ForeignMessage() {
1938      OnConstruction();
1939    }
1940
1941    partial void OnConstruction();
1942
1943    public ForeignMessage(ForeignMessage other) : this() {
1944      c_ = other.c_;
1945    }
1946
1947    public ForeignMessage Clone() {
1948      return new ForeignMessage(this);
1949    }
1950
1951    /// <summary>Field number for the "c" field.</summary>
1952    public const int CFieldNumber = 1;
1953    private int c_;
1954    public int C {
1955      get { return c_; }
1956      set {
1957        c_ = value;
1958      }
1959    }
1960
1961    public override bool Equals(object other) {
1962      return Equals(other as ForeignMessage);
1963    }
1964
1965    public bool Equals(ForeignMessage other) {
1966      if (ReferenceEquals(other, null)) {
1967        return false;
1968      }
1969      if (ReferenceEquals(other, this)) {
1970        return true;
1971      }
1972      if (C != other.C) return false;
1973      return true;
1974    }
1975
1976    public override int GetHashCode() {
1977      int hash = 1;
1978      if (C != 0) hash ^= C.GetHashCode();
1979      return hash;
1980    }
1981
1982    public override string ToString() {
1983      return pb::JsonFormatter.ToDiagnosticString(this);
1984    }
1985
1986    public void WriteTo(pb::CodedOutputStream output) {
1987      if (C != 0) {
1988        output.WriteRawTag(8);
1989        output.WriteInt32(C);
1990      }
1991    }
1992
1993    public int CalculateSize() {
1994      int size = 0;
1995      if (C != 0) {
1996        size += 1 + pb::CodedOutputStream.ComputeInt32Size(C);
1997      }
1998      return size;
1999    }
2000
2001    public void MergeFrom(ForeignMessage other) {
2002      if (other == null) {
2003        return;
2004      }
2005      if (other.C != 0) {
2006        C = other.C;
2007      }
2008    }
2009
2010    public void MergeFrom(pb::CodedInputStream input) {
2011      uint tag;
2012      while ((tag = input.ReadTag()) != 0) {
2013        switch(tag) {
2014          default:
2015            input.SkipLastField();
2016            break;
2017          case 8: {
2018            C = input.ReadInt32();
2019            break;
2020          }
2021        }
2022      }
2023    }
2024
2025  }
2026
2027  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
2028  public sealed partial class TestReservedFields : pb::IMessage<TestReservedFields> {
2029    private static readonly pb::MessageParser<TestReservedFields> _parser = new pb::MessageParser<TestReservedFields>(() => new TestReservedFields());
2030    public static pb::MessageParser<TestReservedFields> Parser { get { return _parser; } }
2031
2032    public static pbr::MessageDescriptor Descriptor {
2033      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[4]; }
2034    }
2035
2036    pbr::MessageDescriptor pb::IMessage.Descriptor {
2037      get { return Descriptor; }
2038    }
2039
2040    public TestReservedFields() {
2041      OnConstruction();
2042    }
2043
2044    partial void OnConstruction();
2045
2046    public TestReservedFields(TestReservedFields other) : this() {
2047    }
2048
2049    public TestReservedFields Clone() {
2050      return new TestReservedFields(this);
2051    }
2052
2053    public override bool Equals(object other) {
2054      return Equals(other as TestReservedFields);
2055    }
2056
2057    public bool Equals(TestReservedFields other) {
2058      if (ReferenceEquals(other, null)) {
2059        return false;
2060      }
2061      if (ReferenceEquals(other, this)) {
2062        return true;
2063      }
2064      return true;
2065    }
2066
2067    public override int GetHashCode() {
2068      int hash = 1;
2069      return hash;
2070    }
2071
2072    public override string ToString() {
2073      return pb::JsonFormatter.ToDiagnosticString(this);
2074    }
2075
2076    public void WriteTo(pb::CodedOutputStream output) {
2077    }
2078
2079    public int CalculateSize() {
2080      int size = 0;
2081      return size;
2082    }
2083
2084    public void MergeFrom(TestReservedFields other) {
2085      if (other == null) {
2086        return;
2087      }
2088    }
2089
2090    public void MergeFrom(pb::CodedInputStream input) {
2091      uint tag;
2092      while ((tag = input.ReadTag()) != 0) {
2093        switch(tag) {
2094          default:
2095            input.SkipLastField();
2096            break;
2097        }
2098      }
2099    }
2100
2101  }
2102
2103  /// <summary>
2104  ///  Test that we can use NestedMessage from outside TestAllTypes.
2105  /// </summary>
2106  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
2107  public sealed partial class TestForeignNested : pb::IMessage<TestForeignNested> {
2108    private static readonly pb::MessageParser<TestForeignNested> _parser = new pb::MessageParser<TestForeignNested>(() => new TestForeignNested());
2109    public static pb::MessageParser<TestForeignNested> Parser { get { return _parser; } }
2110
2111    public static pbr::MessageDescriptor Descriptor {
2112      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[5]; }
2113    }
2114
2115    pbr::MessageDescriptor pb::IMessage.Descriptor {
2116      get { return Descriptor; }
2117    }
2118
2119    public TestForeignNested() {
2120      OnConstruction();
2121    }
2122
2123    partial void OnConstruction();
2124
2125    public TestForeignNested(TestForeignNested other) : this() {
2126      ForeignNested = other.foreignNested_ != null ? other.ForeignNested.Clone() : null;
2127    }
2128
2129    public TestForeignNested Clone() {
2130      return new TestForeignNested(this);
2131    }
2132
2133    /// <summary>Field number for the "foreign_nested" field.</summary>
2134    public const int ForeignNestedFieldNumber = 1;
2135    private global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage foreignNested_;
2136    public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage ForeignNested {
2137      get { return foreignNested_; }
2138      set {
2139        foreignNested_ = value;
2140      }
2141    }
2142
2143    public override bool Equals(object other) {
2144      return Equals(other as TestForeignNested);
2145    }
2146
2147    public bool Equals(TestForeignNested other) {
2148      if (ReferenceEquals(other, null)) {
2149        return false;
2150      }
2151      if (ReferenceEquals(other, this)) {
2152        return true;
2153      }
2154      if (!object.Equals(ForeignNested, other.ForeignNested)) return false;
2155      return true;
2156    }
2157
2158    public override int GetHashCode() {
2159      int hash = 1;
2160      if (foreignNested_ != null) hash ^= ForeignNested.GetHashCode();
2161      return hash;
2162    }
2163
2164    public override string ToString() {
2165      return pb::JsonFormatter.ToDiagnosticString(this);
2166    }
2167
2168    public void WriteTo(pb::CodedOutputStream output) {
2169      if (foreignNested_ != null) {
2170        output.WriteRawTag(10);
2171        output.WriteMessage(ForeignNested);
2172      }
2173    }
2174
2175    public int CalculateSize() {
2176      int size = 0;
2177      if (foreignNested_ != null) {
2178        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ForeignNested);
2179      }
2180      return size;
2181    }
2182
2183    public void MergeFrom(TestForeignNested other) {
2184      if (other == null) {
2185        return;
2186      }
2187      if (other.foreignNested_ != null) {
2188        if (foreignNested_ == null) {
2189          foreignNested_ = new global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage();
2190        }
2191        ForeignNested.MergeFrom(other.ForeignNested);
2192      }
2193    }
2194
2195    public void MergeFrom(pb::CodedInputStream input) {
2196      uint tag;
2197      while ((tag = input.ReadTag()) != 0) {
2198        switch(tag) {
2199          default:
2200            input.SkipLastField();
2201            break;
2202          case 10: {
2203            if (foreignNested_ == null) {
2204              foreignNested_ = new global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage();
2205            }
2206            input.ReadMessage(foreignNested_);
2207            break;
2208          }
2209        }
2210      }
2211    }
2212
2213  }
2214
2215  /// <summary>
2216  ///  Test that really large tag numbers don't break anything.
2217  /// </summary>
2218  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
2219  public sealed partial class TestReallyLargeTagNumber : pb::IMessage<TestReallyLargeTagNumber> {
2220    private static readonly pb::MessageParser<TestReallyLargeTagNumber> _parser = new pb::MessageParser<TestReallyLargeTagNumber>(() => new TestReallyLargeTagNumber());
2221    public static pb::MessageParser<TestReallyLargeTagNumber> Parser { get { return _parser; } }
2222
2223    public static pbr::MessageDescriptor Descriptor {
2224      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[6]; }
2225    }
2226
2227    pbr::MessageDescriptor pb::IMessage.Descriptor {
2228      get { return Descriptor; }
2229    }
2230
2231    public TestReallyLargeTagNumber() {
2232      OnConstruction();
2233    }
2234
2235    partial void OnConstruction();
2236
2237    public TestReallyLargeTagNumber(TestReallyLargeTagNumber other) : this() {
2238      a_ = other.a_;
2239      bb_ = other.bb_;
2240    }
2241
2242    public TestReallyLargeTagNumber Clone() {
2243      return new TestReallyLargeTagNumber(this);
2244    }
2245
2246    /// <summary>Field number for the "a" field.</summary>
2247    public const int AFieldNumber = 1;
2248    private int a_;
2249    /// <summary>
2250    ///  The largest possible tag number is 2^28 - 1, since the wire format uses
2251    ///  three bits to communicate wire type.
2252    /// </summary>
2253    public int A {
2254      get { return a_; }
2255      set {
2256        a_ = value;
2257      }
2258    }
2259
2260    /// <summary>Field number for the "bb" field.</summary>
2261    public const int BbFieldNumber = 268435455;
2262    private int bb_;
2263    public int Bb {
2264      get { return bb_; }
2265      set {
2266        bb_ = value;
2267      }
2268    }
2269
2270    public override bool Equals(object other) {
2271      return Equals(other as TestReallyLargeTagNumber);
2272    }
2273
2274    public bool Equals(TestReallyLargeTagNumber other) {
2275      if (ReferenceEquals(other, null)) {
2276        return false;
2277      }
2278      if (ReferenceEquals(other, this)) {
2279        return true;
2280      }
2281      if (A != other.A) return false;
2282      if (Bb != other.Bb) return false;
2283      return true;
2284    }
2285
2286    public override int GetHashCode() {
2287      int hash = 1;
2288      if (A != 0) hash ^= A.GetHashCode();
2289      if (Bb != 0) hash ^= Bb.GetHashCode();
2290      return hash;
2291    }
2292
2293    public override string ToString() {
2294      return pb::JsonFormatter.ToDiagnosticString(this);
2295    }
2296
2297    public void WriteTo(pb::CodedOutputStream output) {
2298      if (A != 0) {
2299        output.WriteRawTag(8);
2300        output.WriteInt32(A);
2301      }
2302      if (Bb != 0) {
2303        output.WriteRawTag(248, 255, 255, 255, 7);
2304        output.WriteInt32(Bb);
2305      }
2306    }
2307
2308    public int CalculateSize() {
2309      int size = 0;
2310      if (A != 0) {
2311        size += 1 + pb::CodedOutputStream.ComputeInt32Size(A);
2312      }
2313      if (Bb != 0) {
2314        size += 5 + pb::CodedOutputStream.ComputeInt32Size(Bb);
2315      }
2316      return size;
2317    }
2318
2319    public void MergeFrom(TestReallyLargeTagNumber other) {
2320      if (other == null) {
2321        return;
2322      }
2323      if (other.A != 0) {
2324        A = other.A;
2325      }
2326      if (other.Bb != 0) {
2327        Bb = other.Bb;
2328      }
2329    }
2330
2331    public void MergeFrom(pb::CodedInputStream input) {
2332      uint tag;
2333      while ((tag = input.ReadTag()) != 0) {
2334        switch(tag) {
2335          default:
2336            input.SkipLastField();
2337            break;
2338          case 8: {
2339            A = input.ReadInt32();
2340            break;
2341          }
2342          case 2147483640: {
2343            Bb = input.ReadInt32();
2344            break;
2345          }
2346        }
2347      }
2348    }
2349
2350  }
2351
2352  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
2353  public sealed partial class TestRecursiveMessage : pb::IMessage<TestRecursiveMessage> {
2354    private static readonly pb::MessageParser<TestRecursiveMessage> _parser = new pb::MessageParser<TestRecursiveMessage>(() => new TestRecursiveMessage());
2355    public static pb::MessageParser<TestRecursiveMessage> Parser { get { return _parser; } }
2356
2357    public static pbr::MessageDescriptor Descriptor {
2358      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[7]; }
2359    }
2360
2361    pbr::MessageDescriptor pb::IMessage.Descriptor {
2362      get { return Descriptor; }
2363    }
2364
2365    public TestRecursiveMessage() {
2366      OnConstruction();
2367    }
2368
2369    partial void OnConstruction();
2370
2371    public TestRecursiveMessage(TestRecursiveMessage other) : this() {
2372      A = other.a_ != null ? other.A.Clone() : null;
2373      i_ = other.i_;
2374    }
2375
2376    public TestRecursiveMessage Clone() {
2377      return new TestRecursiveMessage(this);
2378    }
2379
2380    /// <summary>Field number for the "a" field.</summary>
2381    public const int AFieldNumber = 1;
2382    private global::Google.Protobuf.TestProtos.TestRecursiveMessage a_;
2383    public global::Google.Protobuf.TestProtos.TestRecursiveMessage A {
2384      get { return a_; }
2385      set {
2386        a_ = value;
2387      }
2388    }
2389
2390    /// <summary>Field number for the "i" field.</summary>
2391    public const int IFieldNumber = 2;
2392    private int i_;
2393    public int I {
2394      get { return i_; }
2395      set {
2396        i_ = value;
2397      }
2398    }
2399
2400    public override bool Equals(object other) {
2401      return Equals(other as TestRecursiveMessage);
2402    }
2403
2404    public bool Equals(TestRecursiveMessage other) {
2405      if (ReferenceEquals(other, null)) {
2406        return false;
2407      }
2408      if (ReferenceEquals(other, this)) {
2409        return true;
2410      }
2411      if (!object.Equals(A, other.A)) return false;
2412      if (I != other.I) return false;
2413      return true;
2414    }
2415
2416    public override int GetHashCode() {
2417      int hash = 1;
2418      if (a_ != null) hash ^= A.GetHashCode();
2419      if (I != 0) hash ^= I.GetHashCode();
2420      return hash;
2421    }
2422
2423    public override string ToString() {
2424      return pb::JsonFormatter.ToDiagnosticString(this);
2425    }
2426
2427    public void WriteTo(pb::CodedOutputStream output) {
2428      if (a_ != null) {
2429        output.WriteRawTag(10);
2430        output.WriteMessage(A);
2431      }
2432      if (I != 0) {
2433        output.WriteRawTag(16);
2434        output.WriteInt32(I);
2435      }
2436    }
2437
2438    public int CalculateSize() {
2439      int size = 0;
2440      if (a_ != null) {
2441        size += 1 + pb::CodedOutputStream.ComputeMessageSize(A);
2442      }
2443      if (I != 0) {
2444        size += 1 + pb::CodedOutputStream.ComputeInt32Size(I);
2445      }
2446      return size;
2447    }
2448
2449    public void MergeFrom(TestRecursiveMessage other) {
2450      if (other == null) {
2451        return;
2452      }
2453      if (other.a_ != null) {
2454        if (a_ == null) {
2455          a_ = new global::Google.Protobuf.TestProtos.TestRecursiveMessage();
2456        }
2457        A.MergeFrom(other.A);
2458      }
2459      if (other.I != 0) {
2460        I = other.I;
2461      }
2462    }
2463
2464    public void MergeFrom(pb::CodedInputStream input) {
2465      uint tag;
2466      while ((tag = input.ReadTag()) != 0) {
2467        switch(tag) {
2468          default:
2469            input.SkipLastField();
2470            break;
2471          case 10: {
2472            if (a_ == null) {
2473              a_ = new global::Google.Protobuf.TestProtos.TestRecursiveMessage();
2474            }
2475            input.ReadMessage(a_);
2476            break;
2477          }
2478          case 16: {
2479            I = input.ReadInt32();
2480            break;
2481          }
2482        }
2483      }
2484    }
2485
2486  }
2487
2488  /// <summary>
2489  ///  Test that mutual recursion works.
2490  /// </summary>
2491  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
2492  public sealed partial class TestMutualRecursionA : pb::IMessage<TestMutualRecursionA> {
2493    private static readonly pb::MessageParser<TestMutualRecursionA> _parser = new pb::MessageParser<TestMutualRecursionA>(() => new TestMutualRecursionA());
2494    public static pb::MessageParser<TestMutualRecursionA> Parser { get { return _parser; } }
2495
2496    public static pbr::MessageDescriptor Descriptor {
2497      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[8]; }
2498    }
2499
2500    pbr::MessageDescriptor pb::IMessage.Descriptor {
2501      get { return Descriptor; }
2502    }
2503
2504    public TestMutualRecursionA() {
2505      OnConstruction();
2506    }
2507
2508    partial void OnConstruction();
2509
2510    public TestMutualRecursionA(TestMutualRecursionA other) : this() {
2511      Bb = other.bb_ != null ? other.Bb.Clone() : null;
2512    }
2513
2514    public TestMutualRecursionA Clone() {
2515      return new TestMutualRecursionA(this);
2516    }
2517
2518    /// <summary>Field number for the "bb" field.</summary>
2519    public const int BbFieldNumber = 1;
2520    private global::Google.Protobuf.TestProtos.TestMutualRecursionB bb_;
2521    public global::Google.Protobuf.TestProtos.TestMutualRecursionB Bb {
2522      get { return bb_; }
2523      set {
2524        bb_ = value;
2525      }
2526    }
2527
2528    public override bool Equals(object other) {
2529      return Equals(other as TestMutualRecursionA);
2530    }
2531
2532    public bool Equals(TestMutualRecursionA other) {
2533      if (ReferenceEquals(other, null)) {
2534        return false;
2535      }
2536      if (ReferenceEquals(other, this)) {
2537        return true;
2538      }
2539      if (!object.Equals(Bb, other.Bb)) return false;
2540      return true;
2541    }
2542
2543    public override int GetHashCode() {
2544      int hash = 1;
2545      if (bb_ != null) hash ^= Bb.GetHashCode();
2546      return hash;
2547    }
2548
2549    public override string ToString() {
2550      return pb::JsonFormatter.ToDiagnosticString(this);
2551    }
2552
2553    public void WriteTo(pb::CodedOutputStream output) {
2554      if (bb_ != null) {
2555        output.WriteRawTag(10);
2556        output.WriteMessage(Bb);
2557      }
2558    }
2559
2560    public int CalculateSize() {
2561      int size = 0;
2562      if (bb_ != null) {
2563        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Bb);
2564      }
2565      return size;
2566    }
2567
2568    public void MergeFrom(TestMutualRecursionA other) {
2569      if (other == null) {
2570        return;
2571      }
2572      if (other.bb_ != null) {
2573        if (bb_ == null) {
2574          bb_ = new global::Google.Protobuf.TestProtos.TestMutualRecursionB();
2575        }
2576        Bb.MergeFrom(other.Bb);
2577      }
2578    }
2579
2580    public void MergeFrom(pb::CodedInputStream input) {
2581      uint tag;
2582      while ((tag = input.ReadTag()) != 0) {
2583        switch(tag) {
2584          default:
2585            input.SkipLastField();
2586            break;
2587          case 10: {
2588            if (bb_ == null) {
2589              bb_ = new global::Google.Protobuf.TestProtos.TestMutualRecursionB();
2590            }
2591            input.ReadMessage(bb_);
2592            break;
2593          }
2594        }
2595      }
2596    }
2597
2598  }
2599
2600  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
2601  public sealed partial class TestMutualRecursionB : pb::IMessage<TestMutualRecursionB> {
2602    private static readonly pb::MessageParser<TestMutualRecursionB> _parser = new pb::MessageParser<TestMutualRecursionB>(() => new TestMutualRecursionB());
2603    public static pb::MessageParser<TestMutualRecursionB> Parser { get { return _parser; } }
2604
2605    public static pbr::MessageDescriptor Descriptor {
2606      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[9]; }
2607    }
2608
2609    pbr::MessageDescriptor pb::IMessage.Descriptor {
2610      get { return Descriptor; }
2611    }
2612
2613    public TestMutualRecursionB() {
2614      OnConstruction();
2615    }
2616
2617    partial void OnConstruction();
2618
2619    public TestMutualRecursionB(TestMutualRecursionB other) : this() {
2620      A = other.a_ != null ? other.A.Clone() : null;
2621      optionalInt32_ = other.optionalInt32_;
2622    }
2623
2624    public TestMutualRecursionB Clone() {
2625      return new TestMutualRecursionB(this);
2626    }
2627
2628    /// <summary>Field number for the "a" field.</summary>
2629    public const int AFieldNumber = 1;
2630    private global::Google.Protobuf.TestProtos.TestMutualRecursionA a_;
2631    public global::Google.Protobuf.TestProtos.TestMutualRecursionA A {
2632      get { return a_; }
2633      set {
2634        a_ = value;
2635      }
2636    }
2637
2638    /// <summary>Field number for the "optional_int32" field.</summary>
2639    public const int OptionalInt32FieldNumber = 2;
2640    private int optionalInt32_;
2641    public int OptionalInt32 {
2642      get { return optionalInt32_; }
2643      set {
2644        optionalInt32_ = value;
2645      }
2646    }
2647
2648    public override bool Equals(object other) {
2649      return Equals(other as TestMutualRecursionB);
2650    }
2651
2652    public bool Equals(TestMutualRecursionB other) {
2653      if (ReferenceEquals(other, null)) {
2654        return false;
2655      }
2656      if (ReferenceEquals(other, this)) {
2657        return true;
2658      }
2659      if (!object.Equals(A, other.A)) return false;
2660      if (OptionalInt32 != other.OptionalInt32) return false;
2661      return true;
2662    }
2663
2664    public override int GetHashCode() {
2665      int hash = 1;
2666      if (a_ != null) hash ^= A.GetHashCode();
2667      if (OptionalInt32 != 0) hash ^= OptionalInt32.GetHashCode();
2668      return hash;
2669    }
2670
2671    public override string ToString() {
2672      return pb::JsonFormatter.ToDiagnosticString(this);
2673    }
2674
2675    public void WriteTo(pb::CodedOutputStream output) {
2676      if (a_ != null) {
2677        output.WriteRawTag(10);
2678        output.WriteMessage(A);
2679      }
2680      if (OptionalInt32 != 0) {
2681        output.WriteRawTag(16);
2682        output.WriteInt32(OptionalInt32);
2683      }
2684    }
2685
2686    public int CalculateSize() {
2687      int size = 0;
2688      if (a_ != null) {
2689        size += 1 + pb::CodedOutputStream.ComputeMessageSize(A);
2690      }
2691      if (OptionalInt32 != 0) {
2692        size += 1 + pb::CodedOutputStream.ComputeInt32Size(OptionalInt32);
2693      }
2694      return size;
2695    }
2696
2697    public void MergeFrom(TestMutualRecursionB other) {
2698      if (other == null) {
2699        return;
2700      }
2701      if (other.a_ != null) {
2702        if (a_ == null) {
2703          a_ = new global::Google.Protobuf.TestProtos.TestMutualRecursionA();
2704        }
2705        A.MergeFrom(other.A);
2706      }
2707      if (other.OptionalInt32 != 0) {
2708        OptionalInt32 = other.OptionalInt32;
2709      }
2710    }
2711
2712    public void MergeFrom(pb::CodedInputStream input) {
2713      uint tag;
2714      while ((tag = input.ReadTag()) != 0) {
2715        switch(tag) {
2716          default:
2717            input.SkipLastField();
2718            break;
2719          case 10: {
2720            if (a_ == null) {
2721              a_ = new global::Google.Protobuf.TestProtos.TestMutualRecursionA();
2722            }
2723            input.ReadMessage(a_);
2724            break;
2725          }
2726          case 16: {
2727            OptionalInt32 = input.ReadInt32();
2728            break;
2729          }
2730        }
2731      }
2732    }
2733
2734  }
2735
2736  /// <summary>
2737  ///  Test message with CamelCase field names.  This violates Protocol Buffer
2738  ///  standard style.
2739  /// </summary>
2740  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
2741  public sealed partial class TestCamelCaseFieldNames : pb::IMessage<TestCamelCaseFieldNames> {
2742    private static readonly pb::MessageParser<TestCamelCaseFieldNames> _parser = new pb::MessageParser<TestCamelCaseFieldNames>(() => new TestCamelCaseFieldNames());
2743    public static pb::MessageParser<TestCamelCaseFieldNames> Parser { get { return _parser; } }
2744
2745    public static pbr::MessageDescriptor Descriptor {
2746      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[10]; }
2747    }
2748
2749    pbr::MessageDescriptor pb::IMessage.Descriptor {
2750      get { return Descriptor; }
2751    }
2752
2753    public TestCamelCaseFieldNames() {
2754      OnConstruction();
2755    }
2756
2757    partial void OnConstruction();
2758
2759    public TestCamelCaseFieldNames(TestCamelCaseFieldNames other) : this() {
2760      primitiveField_ = other.primitiveField_;
2761      stringField_ = other.stringField_;
2762      enumField_ = other.enumField_;
2763      MessageField = other.messageField_ != null ? other.MessageField.Clone() : null;
2764      repeatedPrimitiveField_ = other.repeatedPrimitiveField_.Clone();
2765      repeatedStringField_ = other.repeatedStringField_.Clone();
2766      repeatedEnumField_ = other.repeatedEnumField_.Clone();
2767      repeatedMessageField_ = other.repeatedMessageField_.Clone();
2768    }
2769
2770    public TestCamelCaseFieldNames Clone() {
2771      return new TestCamelCaseFieldNames(this);
2772    }
2773
2774    /// <summary>Field number for the "PrimitiveField" field.</summary>
2775    public const int PrimitiveFieldFieldNumber = 1;
2776    private int primitiveField_;
2777    public int PrimitiveField {
2778      get { return primitiveField_; }
2779      set {
2780        primitiveField_ = value;
2781      }
2782    }
2783
2784    /// <summary>Field number for the "StringField" field.</summary>
2785    public const int StringFieldFieldNumber = 2;
2786    private string stringField_ = "";
2787    public string StringField {
2788      get { return stringField_; }
2789      set {
2790        stringField_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
2791      }
2792    }
2793
2794    /// <summary>Field number for the "EnumField" field.</summary>
2795    public const int EnumFieldFieldNumber = 3;
2796    private global::Google.Protobuf.TestProtos.ForeignEnum enumField_ = 0;
2797    public global::Google.Protobuf.TestProtos.ForeignEnum EnumField {
2798      get { return enumField_; }
2799      set {
2800        enumField_ = value;
2801      }
2802    }
2803
2804    /// <summary>Field number for the "MessageField" field.</summary>
2805    public const int MessageFieldFieldNumber = 4;
2806    private global::Google.Protobuf.TestProtos.ForeignMessage messageField_;
2807    public global::Google.Protobuf.TestProtos.ForeignMessage MessageField {
2808      get { return messageField_; }
2809      set {
2810        messageField_ = value;
2811      }
2812    }
2813
2814    /// <summary>Field number for the "RepeatedPrimitiveField" field.</summary>
2815    public const int RepeatedPrimitiveFieldFieldNumber = 7;
2816    private static readonly pb::FieldCodec<int> _repeated_repeatedPrimitiveField_codec
2817        = pb::FieldCodec.ForInt32(58);
2818    private readonly pbc::RepeatedField<int> repeatedPrimitiveField_ = new pbc::RepeatedField<int>();
2819    public pbc::RepeatedField<int> RepeatedPrimitiveField {
2820      get { return repeatedPrimitiveField_; }
2821    }
2822
2823    /// <summary>Field number for the "RepeatedStringField" field.</summary>
2824    public const int RepeatedStringFieldFieldNumber = 8;
2825    private static readonly pb::FieldCodec<string> _repeated_repeatedStringField_codec
2826        = pb::FieldCodec.ForString(66);
2827    private readonly pbc::RepeatedField<string> repeatedStringField_ = new pbc::RepeatedField<string>();
2828    public pbc::RepeatedField<string> RepeatedStringField {
2829      get { return repeatedStringField_; }
2830    }
2831
2832    /// <summary>Field number for the "RepeatedEnumField" field.</summary>
2833    public const int RepeatedEnumFieldFieldNumber = 9;
2834    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.ForeignEnum> _repeated_repeatedEnumField_codec
2835        = pb::FieldCodec.ForEnum(74, x => (int) x, x => (global::Google.Protobuf.TestProtos.ForeignEnum) x);
2836    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum> repeatedEnumField_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum>();
2837    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum> RepeatedEnumField {
2838      get { return repeatedEnumField_; }
2839    }
2840
2841    /// <summary>Field number for the "RepeatedMessageField" field.</summary>
2842    public const int RepeatedMessageFieldFieldNumber = 10;
2843    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.ForeignMessage> _repeated_repeatedMessageField_codec
2844        = pb::FieldCodec.ForMessage(82, global::Google.Protobuf.TestProtos.ForeignMessage.Parser);
2845    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignMessage> repeatedMessageField_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignMessage>();
2846    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignMessage> RepeatedMessageField {
2847      get { return repeatedMessageField_; }
2848    }
2849
2850    public override bool Equals(object other) {
2851      return Equals(other as TestCamelCaseFieldNames);
2852    }
2853
2854    public bool Equals(TestCamelCaseFieldNames other) {
2855      if (ReferenceEquals(other, null)) {
2856        return false;
2857      }
2858      if (ReferenceEquals(other, this)) {
2859        return true;
2860      }
2861      if (PrimitiveField != other.PrimitiveField) return false;
2862      if (StringField != other.StringField) return false;
2863      if (EnumField != other.EnumField) return false;
2864      if (!object.Equals(MessageField, other.MessageField)) return false;
2865      if(!repeatedPrimitiveField_.Equals(other.repeatedPrimitiveField_)) return false;
2866      if(!repeatedStringField_.Equals(other.repeatedStringField_)) return false;
2867      if(!repeatedEnumField_.Equals(other.repeatedEnumField_)) return false;
2868      if(!repeatedMessageField_.Equals(other.repeatedMessageField_)) return false;
2869      return true;
2870    }
2871
2872    public override int GetHashCode() {
2873      int hash = 1;
2874      if (PrimitiveField != 0) hash ^= PrimitiveField.GetHashCode();
2875      if (StringField.Length != 0) hash ^= StringField.GetHashCode();
2876      if (EnumField != 0) hash ^= EnumField.GetHashCode();
2877      if (messageField_ != null) hash ^= MessageField.GetHashCode();
2878      hash ^= repeatedPrimitiveField_.GetHashCode();
2879      hash ^= repeatedStringField_.GetHashCode();
2880      hash ^= repeatedEnumField_.GetHashCode();
2881      hash ^= repeatedMessageField_.GetHashCode();
2882      return hash;
2883    }
2884
2885    public override string ToString() {
2886      return pb::JsonFormatter.ToDiagnosticString(this);
2887    }
2888
2889    public void WriteTo(pb::CodedOutputStream output) {
2890      if (PrimitiveField != 0) {
2891        output.WriteRawTag(8);
2892        output.WriteInt32(PrimitiveField);
2893      }
2894      if (StringField.Length != 0) {
2895        output.WriteRawTag(18);
2896        output.WriteString(StringField);
2897      }
2898      if (EnumField != 0) {
2899        output.WriteRawTag(24);
2900        output.WriteEnum((int) EnumField);
2901      }
2902      if (messageField_ != null) {
2903        output.WriteRawTag(34);
2904        output.WriteMessage(MessageField);
2905      }
2906      repeatedPrimitiveField_.WriteTo(output, _repeated_repeatedPrimitiveField_codec);
2907      repeatedStringField_.WriteTo(output, _repeated_repeatedStringField_codec);
2908      repeatedEnumField_.WriteTo(output, _repeated_repeatedEnumField_codec);
2909      repeatedMessageField_.WriteTo(output, _repeated_repeatedMessageField_codec);
2910    }
2911
2912    public int CalculateSize() {
2913      int size = 0;
2914      if (PrimitiveField != 0) {
2915        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PrimitiveField);
2916      }
2917      if (StringField.Length != 0) {
2918        size += 1 + pb::CodedOutputStream.ComputeStringSize(StringField);
2919      }
2920      if (EnumField != 0) {
2921        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumField);
2922      }
2923      if (messageField_ != null) {
2924        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MessageField);
2925      }
2926      size += repeatedPrimitiveField_.CalculateSize(_repeated_repeatedPrimitiveField_codec);
2927      size += repeatedStringField_.CalculateSize(_repeated_repeatedStringField_codec);
2928      size += repeatedEnumField_.CalculateSize(_repeated_repeatedEnumField_codec);
2929      size += repeatedMessageField_.CalculateSize(_repeated_repeatedMessageField_codec);
2930      return size;
2931    }
2932
2933    public void MergeFrom(TestCamelCaseFieldNames other) {
2934      if (other == null) {
2935        return;
2936      }
2937      if (other.PrimitiveField != 0) {
2938        PrimitiveField = other.PrimitiveField;
2939      }
2940      if (other.StringField.Length != 0) {
2941        StringField = other.StringField;
2942      }
2943      if (other.EnumField != 0) {
2944        EnumField = other.EnumField;
2945      }
2946      if (other.messageField_ != null) {
2947        if (messageField_ == null) {
2948          messageField_ = new global::Google.Protobuf.TestProtos.ForeignMessage();
2949        }
2950        MessageField.MergeFrom(other.MessageField);
2951      }
2952      repeatedPrimitiveField_.Add(other.repeatedPrimitiveField_);
2953      repeatedStringField_.Add(other.repeatedStringField_);
2954      repeatedEnumField_.Add(other.repeatedEnumField_);
2955      repeatedMessageField_.Add(other.repeatedMessageField_);
2956    }
2957
2958    public void MergeFrom(pb::CodedInputStream input) {
2959      uint tag;
2960      while ((tag = input.ReadTag()) != 0) {
2961        switch(tag) {
2962          default:
2963            input.SkipLastField();
2964            break;
2965          case 8: {
2966            PrimitiveField = input.ReadInt32();
2967            break;
2968          }
2969          case 18: {
2970            StringField = input.ReadString();
2971            break;
2972          }
2973          case 24: {
2974            enumField_ = (global::Google.Protobuf.TestProtos.ForeignEnum) input.ReadEnum();
2975            break;
2976          }
2977          case 34: {
2978            if (messageField_ == null) {
2979              messageField_ = new global::Google.Protobuf.TestProtos.ForeignMessage();
2980            }
2981            input.ReadMessage(messageField_);
2982            break;
2983          }
2984          case 58:
2985          case 56: {
2986            repeatedPrimitiveField_.AddEntriesFrom(input, _repeated_repeatedPrimitiveField_codec);
2987            break;
2988          }
2989          case 66: {
2990            repeatedStringField_.AddEntriesFrom(input, _repeated_repeatedStringField_codec);
2991            break;
2992          }
2993          case 74:
2994          case 72: {
2995            repeatedEnumField_.AddEntriesFrom(input, _repeated_repeatedEnumField_codec);
2996            break;
2997          }
2998          case 82: {
2999            repeatedMessageField_.AddEntriesFrom(input, _repeated_repeatedMessageField_codec);
3000            break;
3001          }
3002        }
3003      }
3004    }
3005
3006  }
3007
3008  /// <summary>
3009  ///  We list fields out of order, to ensure that we're using field number and not
3010  ///  field index to determine serialization order.
3011  /// </summary>
3012  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
3013  public sealed partial class TestFieldOrderings : pb::IMessage<TestFieldOrderings> {
3014    private static readonly pb::MessageParser<TestFieldOrderings> _parser = new pb::MessageParser<TestFieldOrderings>(() => new TestFieldOrderings());
3015    public static pb::MessageParser<TestFieldOrderings> Parser { get { return _parser; } }
3016
3017    public static pbr::MessageDescriptor Descriptor {
3018      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[11]; }
3019    }
3020
3021    pbr::MessageDescriptor pb::IMessage.Descriptor {
3022      get { return Descriptor; }
3023    }
3024
3025    public TestFieldOrderings() {
3026      OnConstruction();
3027    }
3028
3029    partial void OnConstruction();
3030
3031    public TestFieldOrderings(TestFieldOrderings other) : this() {
3032      myString_ = other.myString_;
3033      myInt_ = other.myInt_;
3034      myFloat_ = other.myFloat_;
3035      SingleNestedMessage = other.singleNestedMessage_ != null ? other.SingleNestedMessage.Clone() : null;
3036    }
3037
3038    public TestFieldOrderings Clone() {
3039      return new TestFieldOrderings(this);
3040    }
3041
3042    /// <summary>Field number for the "my_string" field.</summary>
3043    public const int MyStringFieldNumber = 11;
3044    private string myString_ = "";
3045    public string MyString {
3046      get { return myString_; }
3047      set {
3048        myString_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
3049      }
3050    }
3051
3052    /// <summary>Field number for the "my_int" field.</summary>
3053    public const int MyIntFieldNumber = 1;
3054    private long myInt_;
3055    public long MyInt {
3056      get { return myInt_; }
3057      set {
3058        myInt_ = value;
3059      }
3060    }
3061
3062    /// <summary>Field number for the "my_float" field.</summary>
3063    public const int MyFloatFieldNumber = 101;
3064    private float myFloat_;
3065    public float MyFloat {
3066      get { return myFloat_; }
3067      set {
3068        myFloat_ = value;
3069      }
3070    }
3071
3072    /// <summary>Field number for the "single_nested_message" field.</summary>
3073    public const int SingleNestedMessageFieldNumber = 200;
3074    private global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage singleNestedMessage_;
3075    public global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage SingleNestedMessage {
3076      get { return singleNestedMessage_; }
3077      set {
3078        singleNestedMessage_ = value;
3079      }
3080    }
3081
3082    public override bool Equals(object other) {
3083      return Equals(other as TestFieldOrderings);
3084    }
3085
3086    public bool Equals(TestFieldOrderings other) {
3087      if (ReferenceEquals(other, null)) {
3088        return false;
3089      }
3090      if (ReferenceEquals(other, this)) {
3091        return true;
3092      }
3093      if (MyString != other.MyString) return false;
3094      if (MyInt != other.MyInt) return false;
3095      if (MyFloat != other.MyFloat) return false;
3096      if (!object.Equals(SingleNestedMessage, other.SingleNestedMessage)) return false;
3097      return true;
3098    }
3099
3100    public override int GetHashCode() {
3101      int hash = 1;
3102      if (MyString.Length != 0) hash ^= MyString.GetHashCode();
3103      if (MyInt != 0L) hash ^= MyInt.GetHashCode();
3104      if (MyFloat != 0F) hash ^= MyFloat.GetHashCode();
3105      if (singleNestedMessage_ != null) hash ^= SingleNestedMessage.GetHashCode();
3106      return hash;
3107    }
3108
3109    public override string ToString() {
3110      return pb::JsonFormatter.ToDiagnosticString(this);
3111    }
3112
3113    public void WriteTo(pb::CodedOutputStream output) {
3114      if (MyInt != 0L) {
3115        output.WriteRawTag(8);
3116        output.WriteInt64(MyInt);
3117      }
3118      if (MyString.Length != 0) {
3119        output.WriteRawTag(90);
3120        output.WriteString(MyString);
3121      }
3122      if (MyFloat != 0F) {
3123        output.WriteRawTag(173, 6);
3124        output.WriteFloat(MyFloat);
3125      }
3126      if (singleNestedMessage_ != null) {
3127        output.WriteRawTag(194, 12);
3128        output.WriteMessage(SingleNestedMessage);
3129      }
3130    }
3131
3132    public int CalculateSize() {
3133      int size = 0;
3134      if (MyString.Length != 0) {
3135        size += 1 + pb::CodedOutputStream.ComputeStringSize(MyString);
3136      }
3137      if (MyInt != 0L) {
3138        size += 1 + pb::CodedOutputStream.ComputeInt64Size(MyInt);
3139      }
3140      if (MyFloat != 0F) {
3141        size += 2 + 4;
3142      }
3143      if (singleNestedMessage_ != null) {
3144        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleNestedMessage);
3145      }
3146      return size;
3147    }
3148
3149    public void MergeFrom(TestFieldOrderings other) {
3150      if (other == null) {
3151        return;
3152      }
3153      if (other.MyString.Length != 0) {
3154        MyString = other.MyString;
3155      }
3156      if (other.MyInt != 0L) {
3157        MyInt = other.MyInt;
3158      }
3159      if (other.MyFloat != 0F) {
3160        MyFloat = other.MyFloat;
3161      }
3162      if (other.singleNestedMessage_ != null) {
3163        if (singleNestedMessage_ == null) {
3164          singleNestedMessage_ = new global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage();
3165        }
3166        SingleNestedMessage.MergeFrom(other.SingleNestedMessage);
3167      }
3168    }
3169
3170    public void MergeFrom(pb::CodedInputStream input) {
3171      uint tag;
3172      while ((tag = input.ReadTag()) != 0) {
3173        switch(tag) {
3174          default:
3175            input.SkipLastField();
3176            break;
3177          case 8: {
3178            MyInt = input.ReadInt64();
3179            break;
3180          }
3181          case 90: {
3182            MyString = input.ReadString();
3183            break;
3184          }
3185          case 813: {
3186            MyFloat = input.ReadFloat();
3187            break;
3188          }
3189          case 1602: {
3190            if (singleNestedMessage_ == null) {
3191              singleNestedMessage_ = new global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage();
3192            }
3193            input.ReadMessage(singleNestedMessage_);
3194            break;
3195          }
3196        }
3197      }
3198    }
3199
3200    #region Nested types
3201    /// <summary>Container for nested types declared in the TestFieldOrderings message type.</summary>
3202    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
3203    public static partial class Types {
3204      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
3205      public sealed partial class NestedMessage : pb::IMessage<NestedMessage> {
3206        private static readonly pb::MessageParser<NestedMessage> _parser = new pb::MessageParser<NestedMessage>(() => new NestedMessage());
3207        public static pb::MessageParser<NestedMessage> Parser { get { return _parser; } }
3208
3209        public static pbr::MessageDescriptor Descriptor {
3210          get { return global::Google.Protobuf.TestProtos.TestFieldOrderings.Descriptor.NestedTypes[0]; }
3211        }
3212
3213        pbr::MessageDescriptor pb::IMessage.Descriptor {
3214          get { return Descriptor; }
3215        }
3216
3217        public NestedMessage() {
3218          OnConstruction();
3219        }
3220
3221        partial void OnConstruction();
3222
3223        public NestedMessage(NestedMessage other) : this() {
3224          oo_ = other.oo_;
3225          bb_ = other.bb_;
3226        }
3227
3228        public NestedMessage Clone() {
3229          return new NestedMessage(this);
3230        }
3231
3232        /// <summary>Field number for the "oo" field.</summary>
3233        public const int OoFieldNumber = 2;
3234        private long oo_;
3235        public long Oo {
3236          get { return oo_; }
3237          set {
3238            oo_ = value;
3239          }
3240        }
3241
3242        /// <summary>Field number for the "bb" field.</summary>
3243        public const int BbFieldNumber = 1;
3244        private int bb_;
3245        /// <summary>
3246        ///  The field name "b" fails to compile in proto1 because it conflicts with
3247        ///  a local variable named "b" in one of the generated methods.  Doh.
3248        ///  This file needs to compile in proto1 to test backwards-compatibility.
3249        /// </summary>
3250        public int Bb {
3251          get { return bb_; }
3252          set {
3253            bb_ = value;
3254          }
3255        }
3256
3257        public override bool Equals(object other) {
3258          return Equals(other as NestedMessage);
3259        }
3260
3261        public bool Equals(NestedMessage other) {
3262          if (ReferenceEquals(other, null)) {
3263            return false;
3264          }
3265          if (ReferenceEquals(other, this)) {
3266            return true;
3267          }
3268          if (Oo != other.Oo) return false;
3269          if (Bb != other.Bb) return false;
3270          return true;
3271        }
3272
3273        public override int GetHashCode() {
3274          int hash = 1;
3275          if (Oo != 0L) hash ^= Oo.GetHashCode();
3276          if (Bb != 0) hash ^= Bb.GetHashCode();
3277          return hash;
3278        }
3279
3280        public override string ToString() {
3281          return pb::JsonFormatter.ToDiagnosticString(this);
3282        }
3283
3284        public void WriteTo(pb::CodedOutputStream output) {
3285          if (Bb != 0) {
3286            output.WriteRawTag(8);
3287            output.WriteInt32(Bb);
3288          }
3289          if (Oo != 0L) {
3290            output.WriteRawTag(16);
3291            output.WriteInt64(Oo);
3292          }
3293        }
3294
3295        public int CalculateSize() {
3296          int size = 0;
3297          if (Oo != 0L) {
3298            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Oo);
3299          }
3300          if (Bb != 0) {
3301            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Bb);
3302          }
3303          return size;
3304        }
3305
3306        public void MergeFrom(NestedMessage other) {
3307          if (other == null) {
3308            return;
3309          }
3310          if (other.Oo != 0L) {
3311            Oo = other.Oo;
3312          }
3313          if (other.Bb != 0) {
3314            Bb = other.Bb;
3315          }
3316        }
3317
3318        public void MergeFrom(pb::CodedInputStream input) {
3319          uint tag;
3320          while ((tag = input.ReadTag()) != 0) {
3321            switch(tag) {
3322              default:
3323                input.SkipLastField();
3324                break;
3325              case 8: {
3326                Bb = input.ReadInt32();
3327                break;
3328              }
3329              case 16: {
3330                Oo = input.ReadInt64();
3331                break;
3332              }
3333            }
3334          }
3335        }
3336
3337      }
3338
3339    }
3340    #endregion
3341
3342  }
3343
3344  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
3345  public sealed partial class SparseEnumMessage : pb::IMessage<SparseEnumMessage> {
3346    private static readonly pb::MessageParser<SparseEnumMessage> _parser = new pb::MessageParser<SparseEnumMessage>(() => new SparseEnumMessage());
3347    public static pb::MessageParser<SparseEnumMessage> Parser { get { return _parser; } }
3348
3349    public static pbr::MessageDescriptor Descriptor {
3350      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[12]; }
3351    }
3352
3353    pbr::MessageDescriptor pb::IMessage.Descriptor {
3354      get { return Descriptor; }
3355    }
3356
3357    public SparseEnumMessage() {
3358      OnConstruction();
3359    }
3360
3361    partial void OnConstruction();
3362
3363    public SparseEnumMessage(SparseEnumMessage other) : this() {
3364      sparseEnum_ = other.sparseEnum_;
3365    }
3366
3367    public SparseEnumMessage Clone() {
3368      return new SparseEnumMessage(this);
3369    }
3370
3371    /// <summary>Field number for the "sparse_enum" field.</summary>
3372    public const int SparseEnumFieldNumber = 1;
3373    private global::Google.Protobuf.TestProtos.TestSparseEnum sparseEnum_ = 0;
3374    public global::Google.Protobuf.TestProtos.TestSparseEnum SparseEnum {
3375      get { return sparseEnum_; }
3376      set {
3377        sparseEnum_ = value;
3378      }
3379    }
3380
3381    public override bool Equals(object other) {
3382      return Equals(other as SparseEnumMessage);
3383    }
3384
3385    public bool Equals(SparseEnumMessage other) {
3386      if (ReferenceEquals(other, null)) {
3387        return false;
3388      }
3389      if (ReferenceEquals(other, this)) {
3390        return true;
3391      }
3392      if (SparseEnum != other.SparseEnum) return false;
3393      return true;
3394    }
3395
3396    public override int GetHashCode() {
3397      int hash = 1;
3398      if (SparseEnum != 0) hash ^= SparseEnum.GetHashCode();
3399      return hash;
3400    }
3401
3402    public override string ToString() {
3403      return pb::JsonFormatter.ToDiagnosticString(this);
3404    }
3405
3406    public void WriteTo(pb::CodedOutputStream output) {
3407      if (SparseEnum != 0) {
3408        output.WriteRawTag(8);
3409        output.WriteEnum((int) SparseEnum);
3410      }
3411    }
3412
3413    public int CalculateSize() {
3414      int size = 0;
3415      if (SparseEnum != 0) {
3416        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) SparseEnum);
3417      }
3418      return size;
3419    }
3420
3421    public void MergeFrom(SparseEnumMessage other) {
3422      if (other == null) {
3423        return;
3424      }
3425      if (other.SparseEnum != 0) {
3426        SparseEnum = other.SparseEnum;
3427      }
3428    }
3429
3430    public void MergeFrom(pb::CodedInputStream input) {
3431      uint tag;
3432      while ((tag = input.ReadTag()) != 0) {
3433        switch(tag) {
3434          default:
3435            input.SkipLastField();
3436            break;
3437          case 8: {
3438            sparseEnum_ = (global::Google.Protobuf.TestProtos.TestSparseEnum) input.ReadEnum();
3439            break;
3440          }
3441        }
3442      }
3443    }
3444
3445  }
3446
3447  /// <summary>
3448  ///  Test String and Bytes: string is for valid UTF-8 strings
3449  /// </summary>
3450  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
3451  public sealed partial class OneString : pb::IMessage<OneString> {
3452    private static readonly pb::MessageParser<OneString> _parser = new pb::MessageParser<OneString>(() => new OneString());
3453    public static pb::MessageParser<OneString> Parser { get { return _parser; } }
3454
3455    public static pbr::MessageDescriptor Descriptor {
3456      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[13]; }
3457    }
3458
3459    pbr::MessageDescriptor pb::IMessage.Descriptor {
3460      get { return Descriptor; }
3461    }
3462
3463    public OneString() {
3464      OnConstruction();
3465    }
3466
3467    partial void OnConstruction();
3468
3469    public OneString(OneString other) : this() {
3470      data_ = other.data_;
3471    }
3472
3473    public OneString Clone() {
3474      return new OneString(this);
3475    }
3476
3477    /// <summary>Field number for the "data" field.</summary>
3478    public const int DataFieldNumber = 1;
3479    private string data_ = "";
3480    public string Data {
3481      get { return data_; }
3482      set {
3483        data_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
3484      }
3485    }
3486
3487    public override bool Equals(object other) {
3488      return Equals(other as OneString);
3489    }
3490
3491    public bool Equals(OneString other) {
3492      if (ReferenceEquals(other, null)) {
3493        return false;
3494      }
3495      if (ReferenceEquals(other, this)) {
3496        return true;
3497      }
3498      if (Data != other.Data) return false;
3499      return true;
3500    }
3501
3502    public override int GetHashCode() {
3503      int hash = 1;
3504      if (Data.Length != 0) hash ^= Data.GetHashCode();
3505      return hash;
3506    }
3507
3508    public override string ToString() {
3509      return pb::JsonFormatter.ToDiagnosticString(this);
3510    }
3511
3512    public void WriteTo(pb::CodedOutputStream output) {
3513      if (Data.Length != 0) {
3514        output.WriteRawTag(10);
3515        output.WriteString(Data);
3516      }
3517    }
3518
3519    public int CalculateSize() {
3520      int size = 0;
3521      if (Data.Length != 0) {
3522        size += 1 + pb::CodedOutputStream.ComputeStringSize(Data);
3523      }
3524      return size;
3525    }
3526
3527    public void MergeFrom(OneString other) {
3528      if (other == null) {
3529        return;
3530      }
3531      if (other.Data.Length != 0) {
3532        Data = other.Data;
3533      }
3534    }
3535
3536    public void MergeFrom(pb::CodedInputStream input) {
3537      uint tag;
3538      while ((tag = input.ReadTag()) != 0) {
3539        switch(tag) {
3540          default:
3541            input.SkipLastField();
3542            break;
3543          case 10: {
3544            Data = input.ReadString();
3545            break;
3546          }
3547        }
3548      }
3549    }
3550
3551  }
3552
3553  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
3554  public sealed partial class MoreString : pb::IMessage<MoreString> {
3555    private static readonly pb::MessageParser<MoreString> _parser = new pb::MessageParser<MoreString>(() => new MoreString());
3556    public static pb::MessageParser<MoreString> Parser { get { return _parser; } }
3557
3558    public static pbr::MessageDescriptor Descriptor {
3559      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[14]; }
3560    }
3561
3562    pbr::MessageDescriptor pb::IMessage.Descriptor {
3563      get { return Descriptor; }
3564    }
3565
3566    public MoreString() {
3567      OnConstruction();
3568    }
3569
3570    partial void OnConstruction();
3571
3572    public MoreString(MoreString other) : this() {
3573      data_ = other.data_.Clone();
3574    }
3575
3576    public MoreString Clone() {
3577      return new MoreString(this);
3578    }
3579
3580    /// <summary>Field number for the "data" field.</summary>
3581    public const int DataFieldNumber = 1;
3582    private static readonly pb::FieldCodec<string> _repeated_data_codec
3583        = pb::FieldCodec.ForString(10);
3584    private readonly pbc::RepeatedField<string> data_ = new pbc::RepeatedField<string>();
3585    public pbc::RepeatedField<string> Data {
3586      get { return data_; }
3587    }
3588
3589    public override bool Equals(object other) {
3590      return Equals(other as MoreString);
3591    }
3592
3593    public bool Equals(MoreString other) {
3594      if (ReferenceEquals(other, null)) {
3595        return false;
3596      }
3597      if (ReferenceEquals(other, this)) {
3598        return true;
3599      }
3600      if(!data_.Equals(other.data_)) return false;
3601      return true;
3602    }
3603
3604    public override int GetHashCode() {
3605      int hash = 1;
3606      hash ^= data_.GetHashCode();
3607      return hash;
3608    }
3609
3610    public override string ToString() {
3611      return pb::JsonFormatter.ToDiagnosticString(this);
3612    }
3613
3614    public void WriteTo(pb::CodedOutputStream output) {
3615      data_.WriteTo(output, _repeated_data_codec);
3616    }
3617
3618    public int CalculateSize() {
3619      int size = 0;
3620      size += data_.CalculateSize(_repeated_data_codec);
3621      return size;
3622    }
3623
3624    public void MergeFrom(MoreString other) {
3625      if (other == null) {
3626        return;
3627      }
3628      data_.Add(other.data_);
3629    }
3630
3631    public void MergeFrom(pb::CodedInputStream input) {
3632      uint tag;
3633      while ((tag = input.ReadTag()) != 0) {
3634        switch(tag) {
3635          default:
3636            input.SkipLastField();
3637            break;
3638          case 10: {
3639            data_.AddEntriesFrom(input, _repeated_data_codec);
3640            break;
3641          }
3642        }
3643      }
3644    }
3645
3646  }
3647
3648  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
3649  public sealed partial class OneBytes : pb::IMessage<OneBytes> {
3650    private static readonly pb::MessageParser<OneBytes> _parser = new pb::MessageParser<OneBytes>(() => new OneBytes());
3651    public static pb::MessageParser<OneBytes> Parser { get { return _parser; } }
3652
3653    public static pbr::MessageDescriptor Descriptor {
3654      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[15]; }
3655    }
3656
3657    pbr::MessageDescriptor pb::IMessage.Descriptor {
3658      get { return Descriptor; }
3659    }
3660
3661    public OneBytes() {
3662      OnConstruction();
3663    }
3664
3665    partial void OnConstruction();
3666
3667    public OneBytes(OneBytes other) : this() {
3668      data_ = other.data_;
3669    }
3670
3671    public OneBytes Clone() {
3672      return new OneBytes(this);
3673    }
3674
3675    /// <summary>Field number for the "data" field.</summary>
3676    public const int DataFieldNumber = 1;
3677    private pb::ByteString data_ = pb::ByteString.Empty;
3678    public pb::ByteString Data {
3679      get { return data_; }
3680      set {
3681        data_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
3682      }
3683    }
3684
3685    public override bool Equals(object other) {
3686      return Equals(other as OneBytes);
3687    }
3688
3689    public bool Equals(OneBytes other) {
3690      if (ReferenceEquals(other, null)) {
3691        return false;
3692      }
3693      if (ReferenceEquals(other, this)) {
3694        return true;
3695      }
3696      if (Data != other.Data) return false;
3697      return true;
3698    }
3699
3700    public override int GetHashCode() {
3701      int hash = 1;
3702      if (Data.Length != 0) hash ^= Data.GetHashCode();
3703      return hash;
3704    }
3705
3706    public override string ToString() {
3707      return pb::JsonFormatter.ToDiagnosticString(this);
3708    }
3709
3710    public void WriteTo(pb::CodedOutputStream output) {
3711      if (Data.Length != 0) {
3712        output.WriteRawTag(10);
3713        output.WriteBytes(Data);
3714      }
3715    }
3716
3717    public int CalculateSize() {
3718      int size = 0;
3719      if (Data.Length != 0) {
3720        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Data);
3721      }
3722      return size;
3723    }
3724
3725    public void MergeFrom(OneBytes other) {
3726      if (other == null) {
3727        return;
3728      }
3729      if (other.Data.Length != 0) {
3730        Data = other.Data;
3731      }
3732    }
3733
3734    public void MergeFrom(pb::CodedInputStream input) {
3735      uint tag;
3736      while ((tag = input.ReadTag()) != 0) {
3737        switch(tag) {
3738          default:
3739            input.SkipLastField();
3740            break;
3741          case 10: {
3742            Data = input.ReadBytes();
3743            break;
3744          }
3745        }
3746      }
3747    }
3748
3749  }
3750
3751  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
3752  public sealed partial class MoreBytes : pb::IMessage<MoreBytes> {
3753    private static readonly pb::MessageParser<MoreBytes> _parser = new pb::MessageParser<MoreBytes>(() => new MoreBytes());
3754    public static pb::MessageParser<MoreBytes> Parser { get { return _parser; } }
3755
3756    public static pbr::MessageDescriptor Descriptor {
3757      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[16]; }
3758    }
3759
3760    pbr::MessageDescriptor pb::IMessage.Descriptor {
3761      get { return Descriptor; }
3762    }
3763
3764    public MoreBytes() {
3765      OnConstruction();
3766    }
3767
3768    partial void OnConstruction();
3769
3770    public MoreBytes(MoreBytes other) : this() {
3771      data_ = other.data_;
3772    }
3773
3774    public MoreBytes Clone() {
3775      return new MoreBytes(this);
3776    }
3777
3778    /// <summary>Field number for the "data" field.</summary>
3779    public const int DataFieldNumber = 1;
3780    private pb::ByteString data_ = pb::ByteString.Empty;
3781    public pb::ByteString Data {
3782      get { return data_; }
3783      set {
3784        data_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
3785      }
3786    }
3787
3788    public override bool Equals(object other) {
3789      return Equals(other as MoreBytes);
3790    }
3791
3792    public bool Equals(MoreBytes other) {
3793      if (ReferenceEquals(other, null)) {
3794        return false;
3795      }
3796      if (ReferenceEquals(other, this)) {
3797        return true;
3798      }
3799      if (Data != other.Data) return false;
3800      return true;
3801    }
3802
3803    public override int GetHashCode() {
3804      int hash = 1;
3805      if (Data.Length != 0) hash ^= Data.GetHashCode();
3806      return hash;
3807    }
3808
3809    public override string ToString() {
3810      return pb::JsonFormatter.ToDiagnosticString(this);
3811    }
3812
3813    public void WriteTo(pb::CodedOutputStream output) {
3814      if (Data.Length != 0) {
3815        output.WriteRawTag(10);
3816        output.WriteBytes(Data);
3817      }
3818    }
3819
3820    public int CalculateSize() {
3821      int size = 0;
3822      if (Data.Length != 0) {
3823        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Data);
3824      }
3825      return size;
3826    }
3827
3828    public void MergeFrom(MoreBytes other) {
3829      if (other == null) {
3830        return;
3831      }
3832      if (other.Data.Length != 0) {
3833        Data = other.Data;
3834      }
3835    }
3836
3837    public void MergeFrom(pb::CodedInputStream input) {
3838      uint tag;
3839      while ((tag = input.ReadTag()) != 0) {
3840        switch(tag) {
3841          default:
3842            input.SkipLastField();
3843            break;
3844          case 10: {
3845            Data = input.ReadBytes();
3846            break;
3847          }
3848        }
3849      }
3850    }
3851
3852  }
3853
3854  /// <summary>
3855  ///  Test int32, uint32, int64, uint64, and bool are all compatible
3856  /// </summary>
3857  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
3858  public sealed partial class Int32Message : pb::IMessage<Int32Message> {
3859    private static readonly pb::MessageParser<Int32Message> _parser = new pb::MessageParser<Int32Message>(() => new Int32Message());
3860    public static pb::MessageParser<Int32Message> Parser { get { return _parser; } }
3861
3862    public static pbr::MessageDescriptor Descriptor {
3863      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[17]; }
3864    }
3865
3866    pbr::MessageDescriptor pb::IMessage.Descriptor {
3867      get { return Descriptor; }
3868    }
3869
3870    public Int32Message() {
3871      OnConstruction();
3872    }
3873
3874    partial void OnConstruction();
3875
3876    public Int32Message(Int32Message other) : this() {
3877      data_ = other.data_;
3878    }
3879
3880    public Int32Message Clone() {
3881      return new Int32Message(this);
3882    }
3883
3884    /// <summary>Field number for the "data" field.</summary>
3885    public const int DataFieldNumber = 1;
3886    private int data_;
3887    public int Data {
3888      get { return data_; }
3889      set {
3890        data_ = value;
3891      }
3892    }
3893
3894    public override bool Equals(object other) {
3895      return Equals(other as Int32Message);
3896    }
3897
3898    public bool Equals(Int32Message other) {
3899      if (ReferenceEquals(other, null)) {
3900        return false;
3901      }
3902      if (ReferenceEquals(other, this)) {
3903        return true;
3904      }
3905      if (Data != other.Data) return false;
3906      return true;
3907    }
3908
3909    public override int GetHashCode() {
3910      int hash = 1;
3911      if (Data != 0) hash ^= Data.GetHashCode();
3912      return hash;
3913    }
3914
3915    public override string ToString() {
3916      return pb::JsonFormatter.ToDiagnosticString(this);
3917    }
3918
3919    public void WriteTo(pb::CodedOutputStream output) {
3920      if (Data != 0) {
3921        output.WriteRawTag(8);
3922        output.WriteInt32(Data);
3923      }
3924    }
3925
3926    public int CalculateSize() {
3927      int size = 0;
3928      if (Data != 0) {
3929        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Data);
3930      }
3931      return size;
3932    }
3933
3934    public void MergeFrom(Int32Message other) {
3935      if (other == null) {
3936        return;
3937      }
3938      if (other.Data != 0) {
3939        Data = other.Data;
3940      }
3941    }
3942
3943    public void MergeFrom(pb::CodedInputStream input) {
3944      uint tag;
3945      while ((tag = input.ReadTag()) != 0) {
3946        switch(tag) {
3947          default:
3948            input.SkipLastField();
3949            break;
3950          case 8: {
3951            Data = input.ReadInt32();
3952            break;
3953          }
3954        }
3955      }
3956    }
3957
3958  }
3959
3960  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
3961  public sealed partial class Uint32Message : pb::IMessage<Uint32Message> {
3962    private static readonly pb::MessageParser<Uint32Message> _parser = new pb::MessageParser<Uint32Message>(() => new Uint32Message());
3963    public static pb::MessageParser<Uint32Message> Parser { get { return _parser; } }
3964
3965    public static pbr::MessageDescriptor Descriptor {
3966      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[18]; }
3967    }
3968
3969    pbr::MessageDescriptor pb::IMessage.Descriptor {
3970      get { return Descriptor; }
3971    }
3972
3973    public Uint32Message() {
3974      OnConstruction();
3975    }
3976
3977    partial void OnConstruction();
3978
3979    public Uint32Message(Uint32Message other) : this() {
3980      data_ = other.data_;
3981    }
3982
3983    public Uint32Message Clone() {
3984      return new Uint32Message(this);
3985    }
3986
3987    /// <summary>Field number for the "data" field.</summary>
3988    public const int DataFieldNumber = 1;
3989    private uint data_;
3990    public uint Data {
3991      get { return data_; }
3992      set {
3993        data_ = value;
3994      }
3995    }
3996
3997    public override bool Equals(object other) {
3998      return Equals(other as Uint32Message);
3999    }
4000
4001    public bool Equals(Uint32Message other) {
4002      if (ReferenceEquals(other, null)) {
4003        return false;
4004      }
4005      if (ReferenceEquals(other, this)) {
4006        return true;
4007      }
4008      if (Data != other.Data) return false;
4009      return true;
4010    }
4011
4012    public override int GetHashCode() {
4013      int hash = 1;
4014      if (Data != 0) hash ^= Data.GetHashCode();
4015      return hash;
4016    }
4017
4018    public override string ToString() {
4019      return pb::JsonFormatter.ToDiagnosticString(this);
4020    }
4021
4022    public void WriteTo(pb::CodedOutputStream output) {
4023      if (Data != 0) {
4024        output.WriteRawTag(8);
4025        output.WriteUInt32(Data);
4026      }
4027    }
4028
4029    public int CalculateSize() {
4030      int size = 0;
4031      if (Data != 0) {
4032        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Data);
4033      }
4034      return size;
4035    }
4036
4037    public void MergeFrom(Uint32Message other) {
4038      if (other == null) {
4039        return;
4040      }
4041      if (other.Data != 0) {
4042        Data = other.Data;
4043      }
4044    }
4045
4046    public void MergeFrom(pb::CodedInputStream input) {
4047      uint tag;
4048      while ((tag = input.ReadTag()) != 0) {
4049        switch(tag) {
4050          default:
4051            input.SkipLastField();
4052            break;
4053          case 8: {
4054            Data = input.ReadUInt32();
4055            break;
4056          }
4057        }
4058      }
4059    }
4060
4061  }
4062
4063  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
4064  public sealed partial class Int64Message : pb::IMessage<Int64Message> {
4065    private static readonly pb::MessageParser<Int64Message> _parser = new pb::MessageParser<Int64Message>(() => new Int64Message());
4066    public static pb::MessageParser<Int64Message> Parser { get { return _parser; } }
4067
4068    public static pbr::MessageDescriptor Descriptor {
4069      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[19]; }
4070    }
4071
4072    pbr::MessageDescriptor pb::IMessage.Descriptor {
4073      get { return Descriptor; }
4074    }
4075
4076    public Int64Message() {
4077      OnConstruction();
4078    }
4079
4080    partial void OnConstruction();
4081
4082    public Int64Message(Int64Message other) : this() {
4083      data_ = other.data_;
4084    }
4085
4086    public Int64Message Clone() {
4087      return new Int64Message(this);
4088    }
4089
4090    /// <summary>Field number for the "data" field.</summary>
4091    public const int DataFieldNumber = 1;
4092    private long data_;
4093    public long Data {
4094      get { return data_; }
4095      set {
4096        data_ = value;
4097      }
4098    }
4099
4100    public override bool Equals(object other) {
4101      return Equals(other as Int64Message);
4102    }
4103
4104    public bool Equals(Int64Message other) {
4105      if (ReferenceEquals(other, null)) {
4106        return false;
4107      }
4108      if (ReferenceEquals(other, this)) {
4109        return true;
4110      }
4111      if (Data != other.Data) return false;
4112      return true;
4113    }
4114
4115    public override int GetHashCode() {
4116      int hash = 1;
4117      if (Data != 0L) hash ^= Data.GetHashCode();
4118      return hash;
4119    }
4120
4121    public override string ToString() {
4122      return pb::JsonFormatter.ToDiagnosticString(this);
4123    }
4124
4125    public void WriteTo(pb::CodedOutputStream output) {
4126      if (Data != 0L) {
4127        output.WriteRawTag(8);
4128        output.WriteInt64(Data);
4129      }
4130    }
4131
4132    public int CalculateSize() {
4133      int size = 0;
4134      if (Data != 0L) {
4135        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Data);
4136      }
4137      return size;
4138    }
4139
4140    public void MergeFrom(Int64Message other) {
4141      if (other == null) {
4142        return;
4143      }
4144      if (other.Data != 0L) {
4145        Data = other.Data;
4146      }
4147    }
4148
4149    public void MergeFrom(pb::CodedInputStream input) {
4150      uint tag;
4151      while ((tag = input.ReadTag()) != 0) {
4152        switch(tag) {
4153          default:
4154            input.SkipLastField();
4155            break;
4156          case 8: {
4157            Data = input.ReadInt64();
4158            break;
4159          }
4160        }
4161      }
4162    }
4163
4164  }
4165
4166  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
4167  public sealed partial class Uint64Message : pb::IMessage<Uint64Message> {
4168    private static readonly pb::MessageParser<Uint64Message> _parser = new pb::MessageParser<Uint64Message>(() => new Uint64Message());
4169    public static pb::MessageParser<Uint64Message> Parser { get { return _parser; } }
4170
4171    public static pbr::MessageDescriptor Descriptor {
4172      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[20]; }
4173    }
4174
4175    pbr::MessageDescriptor pb::IMessage.Descriptor {
4176      get { return Descriptor; }
4177    }
4178
4179    public Uint64Message() {
4180      OnConstruction();
4181    }
4182
4183    partial void OnConstruction();
4184
4185    public Uint64Message(Uint64Message other) : this() {
4186      data_ = other.data_;
4187    }
4188
4189    public Uint64Message Clone() {
4190      return new Uint64Message(this);
4191    }
4192
4193    /// <summary>Field number for the "data" field.</summary>
4194    public const int DataFieldNumber = 1;
4195    private ulong data_;
4196    public ulong Data {
4197      get { return data_; }
4198      set {
4199        data_ = value;
4200      }
4201    }
4202
4203    public override bool Equals(object other) {
4204      return Equals(other as Uint64Message);
4205    }
4206
4207    public bool Equals(Uint64Message other) {
4208      if (ReferenceEquals(other, null)) {
4209        return false;
4210      }
4211      if (ReferenceEquals(other, this)) {
4212        return true;
4213      }
4214      if (Data != other.Data) return false;
4215      return true;
4216    }
4217
4218    public override int GetHashCode() {
4219      int hash = 1;
4220      if (Data != 0UL) hash ^= Data.GetHashCode();
4221      return hash;
4222    }
4223
4224    public override string ToString() {
4225      return pb::JsonFormatter.ToDiagnosticString(this);
4226    }
4227
4228    public void WriteTo(pb::CodedOutputStream output) {
4229      if (Data != 0UL) {
4230        output.WriteRawTag(8);
4231        output.WriteUInt64(Data);
4232      }
4233    }
4234
4235    public int CalculateSize() {
4236      int size = 0;
4237      if (Data != 0UL) {
4238        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Data);
4239      }
4240      return size;
4241    }
4242
4243    public void MergeFrom(Uint64Message other) {
4244      if (other == null) {
4245        return;
4246      }
4247      if (other.Data != 0UL) {
4248        Data = other.Data;
4249      }
4250    }
4251
4252    public void MergeFrom(pb::CodedInputStream input) {
4253      uint tag;
4254      while ((tag = input.ReadTag()) != 0) {
4255        switch(tag) {
4256          default:
4257            input.SkipLastField();
4258            break;
4259          case 8: {
4260            Data = input.ReadUInt64();
4261            break;
4262          }
4263        }
4264      }
4265    }
4266
4267  }
4268
4269  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
4270  public sealed partial class BoolMessage : pb::IMessage<BoolMessage> {
4271    private static readonly pb::MessageParser<BoolMessage> _parser = new pb::MessageParser<BoolMessage>(() => new BoolMessage());
4272    public static pb::MessageParser<BoolMessage> Parser { get { return _parser; } }
4273
4274    public static pbr::MessageDescriptor Descriptor {
4275      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[21]; }
4276    }
4277
4278    pbr::MessageDescriptor pb::IMessage.Descriptor {
4279      get { return Descriptor; }
4280    }
4281
4282    public BoolMessage() {
4283      OnConstruction();
4284    }
4285
4286    partial void OnConstruction();
4287
4288    public BoolMessage(BoolMessage other) : this() {
4289      data_ = other.data_;
4290    }
4291
4292    public BoolMessage Clone() {
4293      return new BoolMessage(this);
4294    }
4295
4296    /// <summary>Field number for the "data" field.</summary>
4297    public const int DataFieldNumber = 1;
4298    private bool data_;
4299    public bool Data {
4300      get { return data_; }
4301      set {
4302        data_ = value;
4303      }
4304    }
4305
4306    public override bool Equals(object other) {
4307      return Equals(other as BoolMessage);
4308    }
4309
4310    public bool Equals(BoolMessage other) {
4311      if (ReferenceEquals(other, null)) {
4312        return false;
4313      }
4314      if (ReferenceEquals(other, this)) {
4315        return true;
4316      }
4317      if (Data != other.Data) return false;
4318      return true;
4319    }
4320
4321    public override int GetHashCode() {
4322      int hash = 1;
4323      if (Data != false) hash ^= Data.GetHashCode();
4324      return hash;
4325    }
4326
4327    public override string ToString() {
4328      return pb::JsonFormatter.ToDiagnosticString(this);
4329    }
4330
4331    public void WriteTo(pb::CodedOutputStream output) {
4332      if (Data != false) {
4333        output.WriteRawTag(8);
4334        output.WriteBool(Data);
4335      }
4336    }
4337
4338    public int CalculateSize() {
4339      int size = 0;
4340      if (Data != false) {
4341        size += 1 + 1;
4342      }
4343      return size;
4344    }
4345
4346    public void MergeFrom(BoolMessage other) {
4347      if (other == null) {
4348        return;
4349      }
4350      if (other.Data != false) {
4351        Data = other.Data;
4352      }
4353    }
4354
4355    public void MergeFrom(pb::CodedInputStream input) {
4356      uint tag;
4357      while ((tag = input.ReadTag()) != 0) {
4358        switch(tag) {
4359          default:
4360            input.SkipLastField();
4361            break;
4362          case 8: {
4363            Data = input.ReadBool();
4364            break;
4365          }
4366        }
4367      }
4368    }
4369
4370  }
4371
4372  /// <summary>
4373  ///  Test oneofs.
4374  /// </summary>
4375  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
4376  public sealed partial class TestOneof : pb::IMessage<TestOneof> {
4377    private static readonly pb::MessageParser<TestOneof> _parser = new pb::MessageParser<TestOneof>(() => new TestOneof());
4378    public static pb::MessageParser<TestOneof> Parser { get { return _parser; } }
4379
4380    public static pbr::MessageDescriptor Descriptor {
4381      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[22]; }
4382    }
4383
4384    pbr::MessageDescriptor pb::IMessage.Descriptor {
4385      get { return Descriptor; }
4386    }
4387
4388    public TestOneof() {
4389      OnConstruction();
4390    }
4391
4392    partial void OnConstruction();
4393
4394    public TestOneof(TestOneof other) : this() {
4395      switch (other.FooCase) {
4396        case FooOneofCase.FooInt:
4397          FooInt = other.FooInt;
4398          break;
4399        case FooOneofCase.FooString:
4400          FooString = other.FooString;
4401          break;
4402        case FooOneofCase.FooMessage:
4403          FooMessage = other.FooMessage.Clone();
4404          break;
4405      }
4406
4407    }
4408
4409    public TestOneof Clone() {
4410      return new TestOneof(this);
4411    }
4412
4413    /// <summary>Field number for the "foo_int" field.</summary>
4414    public const int FooIntFieldNumber = 1;
4415    public int FooInt {
4416      get { return fooCase_ == FooOneofCase.FooInt ? (int) foo_ : 0; }
4417      set {
4418        foo_ = value;
4419        fooCase_ = FooOneofCase.FooInt;
4420      }
4421    }
4422
4423    /// <summary>Field number for the "foo_string" field.</summary>
4424    public const int FooStringFieldNumber = 2;
4425    public string FooString {
4426      get { return fooCase_ == FooOneofCase.FooString ? (string) foo_ : ""; }
4427      set {
4428        foo_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
4429        fooCase_ = FooOneofCase.FooString;
4430      }
4431    }
4432
4433    /// <summary>Field number for the "foo_message" field.</summary>
4434    public const int FooMessageFieldNumber = 3;
4435    public global::Google.Protobuf.TestProtos.TestAllTypes FooMessage {
4436      get { return fooCase_ == FooOneofCase.FooMessage ? (global::Google.Protobuf.TestProtos.TestAllTypes) foo_ : null; }
4437      set {
4438        foo_ = value;
4439        fooCase_ = value == null ? FooOneofCase.None : FooOneofCase.FooMessage;
4440      }
4441    }
4442
4443    private object foo_;
4444    /// <summary>Enum of possible cases for the "foo" oneof.</summary>
4445    public enum FooOneofCase {
4446      None = 0,
4447      FooInt = 1,
4448      FooString = 2,
4449      FooMessage = 3,
4450    }
4451    private FooOneofCase fooCase_ = FooOneofCase.None;
4452    public FooOneofCase FooCase {
4453      get { return fooCase_; }
4454    }
4455
4456    public void ClearFoo() {
4457      fooCase_ = FooOneofCase.None;
4458      foo_ = null;
4459    }
4460
4461    public override bool Equals(object other) {
4462      return Equals(other as TestOneof);
4463    }
4464
4465    public bool Equals(TestOneof other) {
4466      if (ReferenceEquals(other, null)) {
4467        return false;
4468      }
4469      if (ReferenceEquals(other, this)) {
4470        return true;
4471      }
4472      if (FooInt != other.FooInt) return false;
4473      if (FooString != other.FooString) return false;
4474      if (!object.Equals(FooMessage, other.FooMessage)) return false;
4475      if (FooCase != other.FooCase) return false;
4476      return true;
4477    }
4478
4479    public override int GetHashCode() {
4480      int hash = 1;
4481      if (fooCase_ == FooOneofCase.FooInt) hash ^= FooInt.GetHashCode();
4482      if (fooCase_ == FooOneofCase.FooString) hash ^= FooString.GetHashCode();
4483      if (fooCase_ == FooOneofCase.FooMessage) hash ^= FooMessage.GetHashCode();
4484      hash ^= (int) fooCase_;
4485      return hash;
4486    }
4487
4488    public override string ToString() {
4489      return pb::JsonFormatter.ToDiagnosticString(this);
4490    }
4491
4492    public void WriteTo(pb::CodedOutputStream output) {
4493      if (fooCase_ == FooOneofCase.FooInt) {
4494        output.WriteRawTag(8);
4495        output.WriteInt32(FooInt);
4496      }
4497      if (fooCase_ == FooOneofCase.FooString) {
4498        output.WriteRawTag(18);
4499        output.WriteString(FooString);
4500      }
4501      if (fooCase_ == FooOneofCase.FooMessage) {
4502        output.WriteRawTag(26);
4503        output.WriteMessage(FooMessage);
4504      }
4505    }
4506
4507    public int CalculateSize() {
4508      int size = 0;
4509      if (fooCase_ == FooOneofCase.FooInt) {
4510        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FooInt);
4511      }
4512      if (fooCase_ == FooOneofCase.FooString) {
4513        size += 1 + pb::CodedOutputStream.ComputeStringSize(FooString);
4514      }
4515      if (fooCase_ == FooOneofCase.FooMessage) {
4516        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FooMessage);
4517      }
4518      return size;
4519    }
4520
4521    public void MergeFrom(TestOneof other) {
4522      if (other == null) {
4523        return;
4524      }
4525      switch (other.FooCase) {
4526        case FooOneofCase.FooInt:
4527          FooInt = other.FooInt;
4528          break;
4529        case FooOneofCase.FooString:
4530          FooString = other.FooString;
4531          break;
4532        case FooOneofCase.FooMessage:
4533          FooMessage = other.FooMessage;
4534          break;
4535      }
4536
4537    }
4538
4539    public void MergeFrom(pb::CodedInputStream input) {
4540      uint tag;
4541      while ((tag = input.ReadTag()) != 0) {
4542        switch(tag) {
4543          default:
4544            input.SkipLastField();
4545            break;
4546          case 8: {
4547            FooInt = input.ReadInt32();
4548            break;
4549          }
4550          case 18: {
4551            FooString = input.ReadString();
4552            break;
4553          }
4554          case 26: {
4555            global::Google.Protobuf.TestProtos.TestAllTypes subBuilder = new global::Google.Protobuf.TestProtos.TestAllTypes();
4556            if (fooCase_ == FooOneofCase.FooMessage) {
4557              subBuilder.MergeFrom(FooMessage);
4558            }
4559            input.ReadMessage(subBuilder);
4560            FooMessage = subBuilder;
4561            break;
4562          }
4563        }
4564      }
4565    }
4566
4567  }
4568
4569  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
4570  public sealed partial class TestPackedTypes : pb::IMessage<TestPackedTypes> {
4571    private static readonly pb::MessageParser<TestPackedTypes> _parser = new pb::MessageParser<TestPackedTypes>(() => new TestPackedTypes());
4572    public static pb::MessageParser<TestPackedTypes> Parser { get { return _parser; } }
4573
4574    public static pbr::MessageDescriptor Descriptor {
4575      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[23]; }
4576    }
4577
4578    pbr::MessageDescriptor pb::IMessage.Descriptor {
4579      get { return Descriptor; }
4580    }
4581
4582    public TestPackedTypes() {
4583      OnConstruction();
4584    }
4585
4586    partial void OnConstruction();
4587
4588    public TestPackedTypes(TestPackedTypes other) : this() {
4589      packedInt32_ = other.packedInt32_.Clone();
4590      packedInt64_ = other.packedInt64_.Clone();
4591      packedUint32_ = other.packedUint32_.Clone();
4592      packedUint64_ = other.packedUint64_.Clone();
4593      packedSint32_ = other.packedSint32_.Clone();
4594      packedSint64_ = other.packedSint64_.Clone();
4595      packedFixed32_ = other.packedFixed32_.Clone();
4596      packedFixed64_ = other.packedFixed64_.Clone();
4597      packedSfixed32_ = other.packedSfixed32_.Clone();
4598      packedSfixed64_ = other.packedSfixed64_.Clone();
4599      packedFloat_ = other.packedFloat_.Clone();
4600      packedDouble_ = other.packedDouble_.Clone();
4601      packedBool_ = other.packedBool_.Clone();
4602      packedEnum_ = other.packedEnum_.Clone();
4603    }
4604
4605    public TestPackedTypes Clone() {
4606      return new TestPackedTypes(this);
4607    }
4608
4609    /// <summary>Field number for the "packed_int32" field.</summary>
4610    public const int PackedInt32FieldNumber = 90;
4611    private static readonly pb::FieldCodec<int> _repeated_packedInt32_codec
4612        = pb::FieldCodec.ForInt32(722);
4613    private readonly pbc::RepeatedField<int> packedInt32_ = new pbc::RepeatedField<int>();
4614    public pbc::RepeatedField<int> PackedInt32 {
4615      get { return packedInt32_; }
4616    }
4617
4618    /// <summary>Field number for the "packed_int64" field.</summary>
4619    public const int PackedInt64FieldNumber = 91;
4620    private static readonly pb::FieldCodec<long> _repeated_packedInt64_codec
4621        = pb::FieldCodec.ForInt64(730);
4622    private readonly pbc::RepeatedField<long> packedInt64_ = new pbc::RepeatedField<long>();
4623    public pbc::RepeatedField<long> PackedInt64 {
4624      get { return packedInt64_; }
4625    }
4626
4627    /// <summary>Field number for the "packed_uint32" field.</summary>
4628    public const int PackedUint32FieldNumber = 92;
4629    private static readonly pb::FieldCodec<uint> _repeated_packedUint32_codec
4630        = pb::FieldCodec.ForUInt32(738);
4631    private readonly pbc::RepeatedField<uint> packedUint32_ = new pbc::RepeatedField<uint>();
4632    public pbc::RepeatedField<uint> PackedUint32 {
4633      get { return packedUint32_; }
4634    }
4635
4636    /// <summary>Field number for the "packed_uint64" field.</summary>
4637    public const int PackedUint64FieldNumber = 93;
4638    private static readonly pb::FieldCodec<ulong> _repeated_packedUint64_codec
4639        = pb::FieldCodec.ForUInt64(746);
4640    private readonly pbc::RepeatedField<ulong> packedUint64_ = new pbc::RepeatedField<ulong>();
4641    public pbc::RepeatedField<ulong> PackedUint64 {
4642      get { return packedUint64_; }
4643    }
4644
4645    /// <summary>Field number for the "packed_sint32" field.</summary>
4646    public const int PackedSint32FieldNumber = 94;
4647    private static readonly pb::FieldCodec<int> _repeated_packedSint32_codec
4648        = pb::FieldCodec.ForSInt32(754);
4649    private readonly pbc::RepeatedField<int> packedSint32_ = new pbc::RepeatedField<int>();
4650    public pbc::RepeatedField<int> PackedSint32 {
4651      get { return packedSint32_; }
4652    }
4653
4654    /// <summary>Field number for the "packed_sint64" field.</summary>
4655    public const int PackedSint64FieldNumber = 95;
4656    private static readonly pb::FieldCodec<long> _repeated_packedSint64_codec
4657        = pb::FieldCodec.ForSInt64(762);
4658    private readonly pbc::RepeatedField<long> packedSint64_ = new pbc::RepeatedField<long>();
4659    public pbc::RepeatedField<long> PackedSint64 {
4660      get { return packedSint64_; }
4661    }
4662
4663    /// <summary>Field number for the "packed_fixed32" field.</summary>
4664    public const int PackedFixed32FieldNumber = 96;
4665    private static readonly pb::FieldCodec<uint> _repeated_packedFixed32_codec
4666        = pb::FieldCodec.ForFixed32(770);
4667    private readonly pbc::RepeatedField<uint> packedFixed32_ = new pbc::RepeatedField<uint>();
4668    public pbc::RepeatedField<uint> PackedFixed32 {
4669      get { return packedFixed32_; }
4670    }
4671
4672    /// <summary>Field number for the "packed_fixed64" field.</summary>
4673    public const int PackedFixed64FieldNumber = 97;
4674    private static readonly pb::FieldCodec<ulong> _repeated_packedFixed64_codec
4675        = pb::FieldCodec.ForFixed64(778);
4676    private readonly pbc::RepeatedField<ulong> packedFixed64_ = new pbc::RepeatedField<ulong>();
4677    public pbc::RepeatedField<ulong> PackedFixed64 {
4678      get { return packedFixed64_; }
4679    }
4680
4681    /// <summary>Field number for the "packed_sfixed32" field.</summary>
4682    public const int PackedSfixed32FieldNumber = 98;
4683    private static readonly pb::FieldCodec<int> _repeated_packedSfixed32_codec
4684        = pb::FieldCodec.ForSFixed32(786);
4685    private readonly pbc::RepeatedField<int> packedSfixed32_ = new pbc::RepeatedField<int>();
4686    public pbc::RepeatedField<int> PackedSfixed32 {
4687      get { return packedSfixed32_; }
4688    }
4689
4690    /// <summary>Field number for the "packed_sfixed64" field.</summary>
4691    public const int PackedSfixed64FieldNumber = 99;
4692    private static readonly pb::FieldCodec<long> _repeated_packedSfixed64_codec
4693        = pb::FieldCodec.ForSFixed64(794);
4694    private readonly pbc::RepeatedField<long> packedSfixed64_ = new pbc::RepeatedField<long>();
4695    public pbc::RepeatedField<long> PackedSfixed64 {
4696      get { return packedSfixed64_; }
4697    }
4698
4699    /// <summary>Field number for the "packed_float" field.</summary>
4700    public const int PackedFloatFieldNumber = 100;
4701    private static readonly pb::FieldCodec<float> _repeated_packedFloat_codec
4702        = pb::FieldCodec.ForFloat(802);
4703    private readonly pbc::RepeatedField<float> packedFloat_ = new pbc::RepeatedField<float>();
4704    public pbc::RepeatedField<float> PackedFloat {
4705      get { return packedFloat_; }
4706    }
4707
4708    /// <summary>Field number for the "packed_double" field.</summary>
4709    public const int PackedDoubleFieldNumber = 101;
4710    private static readonly pb::FieldCodec<double> _repeated_packedDouble_codec
4711        = pb::FieldCodec.ForDouble(810);
4712    private readonly pbc::RepeatedField<double> packedDouble_ = new pbc::RepeatedField<double>();
4713    public pbc::RepeatedField<double> PackedDouble {
4714      get { return packedDouble_; }
4715    }
4716
4717    /// <summary>Field number for the "packed_bool" field.</summary>
4718    public const int PackedBoolFieldNumber = 102;
4719    private static readonly pb::FieldCodec<bool> _repeated_packedBool_codec
4720        = pb::FieldCodec.ForBool(818);
4721    private readonly pbc::RepeatedField<bool> packedBool_ = new pbc::RepeatedField<bool>();
4722    public pbc::RepeatedField<bool> PackedBool {
4723      get { return packedBool_; }
4724    }
4725
4726    /// <summary>Field number for the "packed_enum" field.</summary>
4727    public const int PackedEnumFieldNumber = 103;
4728    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.ForeignEnum> _repeated_packedEnum_codec
4729        = pb::FieldCodec.ForEnum(826, x => (int) x, x => (global::Google.Protobuf.TestProtos.ForeignEnum) x);
4730    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum> packedEnum_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum>();
4731    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum> PackedEnum {
4732      get { return packedEnum_; }
4733    }
4734
4735    public override bool Equals(object other) {
4736      return Equals(other as TestPackedTypes);
4737    }
4738
4739    public bool Equals(TestPackedTypes other) {
4740      if (ReferenceEquals(other, null)) {
4741        return false;
4742      }
4743      if (ReferenceEquals(other, this)) {
4744        return true;
4745      }
4746      if(!packedInt32_.Equals(other.packedInt32_)) return false;
4747      if(!packedInt64_.Equals(other.packedInt64_)) return false;
4748      if(!packedUint32_.Equals(other.packedUint32_)) return false;
4749      if(!packedUint64_.Equals(other.packedUint64_)) return false;
4750      if(!packedSint32_.Equals(other.packedSint32_)) return false;
4751      if(!packedSint64_.Equals(other.packedSint64_)) return false;
4752      if(!packedFixed32_.Equals(other.packedFixed32_)) return false;
4753      if(!packedFixed64_.Equals(other.packedFixed64_)) return false;
4754      if(!packedSfixed32_.Equals(other.packedSfixed32_)) return false;
4755      if(!packedSfixed64_.Equals(other.packedSfixed64_)) return false;
4756      if(!packedFloat_.Equals(other.packedFloat_)) return false;
4757      if(!packedDouble_.Equals(other.packedDouble_)) return false;
4758      if(!packedBool_.Equals(other.packedBool_)) return false;
4759      if(!packedEnum_.Equals(other.packedEnum_)) return false;
4760      return true;
4761    }
4762
4763    public override int GetHashCode() {
4764      int hash = 1;
4765      hash ^= packedInt32_.GetHashCode();
4766      hash ^= packedInt64_.GetHashCode();
4767      hash ^= packedUint32_.GetHashCode();
4768      hash ^= packedUint64_.GetHashCode();
4769      hash ^= packedSint32_.GetHashCode();
4770      hash ^= packedSint64_.GetHashCode();
4771      hash ^= packedFixed32_.GetHashCode();
4772      hash ^= packedFixed64_.GetHashCode();
4773      hash ^= packedSfixed32_.GetHashCode();
4774      hash ^= packedSfixed64_.GetHashCode();
4775      hash ^= packedFloat_.GetHashCode();
4776      hash ^= packedDouble_.GetHashCode();
4777      hash ^= packedBool_.GetHashCode();
4778      hash ^= packedEnum_.GetHashCode();
4779      return hash;
4780    }
4781
4782    public override string ToString() {
4783      return pb::JsonFormatter.ToDiagnosticString(this);
4784    }
4785
4786    public void WriteTo(pb::CodedOutputStream output) {
4787      packedInt32_.WriteTo(output, _repeated_packedInt32_codec);
4788      packedInt64_.WriteTo(output, _repeated_packedInt64_codec);
4789      packedUint32_.WriteTo(output, _repeated_packedUint32_codec);
4790      packedUint64_.WriteTo(output, _repeated_packedUint64_codec);
4791      packedSint32_.WriteTo(output, _repeated_packedSint32_codec);
4792      packedSint64_.WriteTo(output, _repeated_packedSint64_codec);
4793      packedFixed32_.WriteTo(output, _repeated_packedFixed32_codec);
4794      packedFixed64_.WriteTo(output, _repeated_packedFixed64_codec);
4795      packedSfixed32_.WriteTo(output, _repeated_packedSfixed32_codec);
4796      packedSfixed64_.WriteTo(output, _repeated_packedSfixed64_codec);
4797      packedFloat_.WriteTo(output, _repeated_packedFloat_codec);
4798      packedDouble_.WriteTo(output, _repeated_packedDouble_codec);
4799      packedBool_.WriteTo(output, _repeated_packedBool_codec);
4800      packedEnum_.WriteTo(output, _repeated_packedEnum_codec);
4801    }
4802
4803    public int CalculateSize() {
4804      int size = 0;
4805      size += packedInt32_.CalculateSize(_repeated_packedInt32_codec);
4806      size += packedInt64_.CalculateSize(_repeated_packedInt64_codec);
4807      size += packedUint32_.CalculateSize(_repeated_packedUint32_codec);
4808      size += packedUint64_.CalculateSize(_repeated_packedUint64_codec);
4809      size += packedSint32_.CalculateSize(_repeated_packedSint32_codec);
4810      size += packedSint64_.CalculateSize(_repeated_packedSint64_codec);
4811      size += packedFixed32_.CalculateSize(_repeated_packedFixed32_codec);
4812      size += packedFixed64_.CalculateSize(_repeated_packedFixed64_codec);
4813      size += packedSfixed32_.CalculateSize(_repeated_packedSfixed32_codec);
4814      size += packedSfixed64_.CalculateSize(_repeated_packedSfixed64_codec);
4815      size += packedFloat_.CalculateSize(_repeated_packedFloat_codec);
4816      size += packedDouble_.CalculateSize(_repeated_packedDouble_codec);
4817      size += packedBool_.CalculateSize(_repeated_packedBool_codec);
4818      size += packedEnum_.CalculateSize(_repeated_packedEnum_codec);
4819      return size;
4820    }
4821
4822    public void MergeFrom(TestPackedTypes other) {
4823      if (other == null) {
4824        return;
4825      }
4826      packedInt32_.Add(other.packedInt32_);
4827      packedInt64_.Add(other.packedInt64_);
4828      packedUint32_.Add(other.packedUint32_);
4829      packedUint64_.Add(other.packedUint64_);
4830      packedSint32_.Add(other.packedSint32_);
4831      packedSint64_.Add(other.packedSint64_);
4832      packedFixed32_.Add(other.packedFixed32_);
4833      packedFixed64_.Add(other.packedFixed64_);
4834      packedSfixed32_.Add(other.packedSfixed32_);
4835      packedSfixed64_.Add(other.packedSfixed64_);
4836      packedFloat_.Add(other.packedFloat_);
4837      packedDouble_.Add(other.packedDouble_);
4838      packedBool_.Add(other.packedBool_);
4839      packedEnum_.Add(other.packedEnum_);
4840    }
4841
4842    public void MergeFrom(pb::CodedInputStream input) {
4843      uint tag;
4844      while ((tag = input.ReadTag()) != 0) {
4845        switch(tag) {
4846          default:
4847            input.SkipLastField();
4848            break;
4849          case 722:
4850          case 720: {
4851            packedInt32_.AddEntriesFrom(input, _repeated_packedInt32_codec);
4852            break;
4853          }
4854          case 730:
4855          case 728: {
4856            packedInt64_.AddEntriesFrom(input, _repeated_packedInt64_codec);
4857            break;
4858          }
4859          case 738:
4860          case 736: {
4861            packedUint32_.AddEntriesFrom(input, _repeated_packedUint32_codec);
4862            break;
4863          }
4864          case 746:
4865          case 744: {
4866            packedUint64_.AddEntriesFrom(input, _repeated_packedUint64_codec);
4867            break;
4868          }
4869          case 754:
4870          case 752: {
4871            packedSint32_.AddEntriesFrom(input, _repeated_packedSint32_codec);
4872            break;
4873          }
4874          case 762:
4875          case 760: {
4876            packedSint64_.AddEntriesFrom(input, _repeated_packedSint64_codec);
4877            break;
4878          }
4879          case 770:
4880          case 773: {
4881            packedFixed32_.AddEntriesFrom(input, _repeated_packedFixed32_codec);
4882            break;
4883          }
4884          case 778:
4885          case 777: {
4886            packedFixed64_.AddEntriesFrom(input, _repeated_packedFixed64_codec);
4887            break;
4888          }
4889          case 786:
4890          case 789: {
4891            packedSfixed32_.AddEntriesFrom(input, _repeated_packedSfixed32_codec);
4892            break;
4893          }
4894          case 794:
4895          case 793: {
4896            packedSfixed64_.AddEntriesFrom(input, _repeated_packedSfixed64_codec);
4897            break;
4898          }
4899          case 802:
4900          case 805: {
4901            packedFloat_.AddEntriesFrom(input, _repeated_packedFloat_codec);
4902            break;
4903          }
4904          case 810:
4905          case 809: {
4906            packedDouble_.AddEntriesFrom(input, _repeated_packedDouble_codec);
4907            break;
4908          }
4909          case 818:
4910          case 816: {
4911            packedBool_.AddEntriesFrom(input, _repeated_packedBool_codec);
4912            break;
4913          }
4914          case 826:
4915          case 824: {
4916            packedEnum_.AddEntriesFrom(input, _repeated_packedEnum_codec);
4917            break;
4918          }
4919        }
4920      }
4921    }
4922
4923  }
4924
4925  /// <summary>
4926  ///  A message with the same fields as TestPackedTypes, but without packing. Used
4927  ///  to test packed &lt;-> unpacked wire compatibility.
4928  /// </summary>
4929  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
4930  public sealed partial class TestUnpackedTypes : pb::IMessage<TestUnpackedTypes> {
4931    private static readonly pb::MessageParser<TestUnpackedTypes> _parser = new pb::MessageParser<TestUnpackedTypes>(() => new TestUnpackedTypes());
4932    public static pb::MessageParser<TestUnpackedTypes> Parser { get { return _parser; } }
4933
4934    public static pbr::MessageDescriptor Descriptor {
4935      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[24]; }
4936    }
4937
4938    pbr::MessageDescriptor pb::IMessage.Descriptor {
4939      get { return Descriptor; }
4940    }
4941
4942    public TestUnpackedTypes() {
4943      OnConstruction();
4944    }
4945
4946    partial void OnConstruction();
4947
4948    public TestUnpackedTypes(TestUnpackedTypes other) : this() {
4949      unpackedInt32_ = other.unpackedInt32_.Clone();
4950      unpackedInt64_ = other.unpackedInt64_.Clone();
4951      unpackedUint32_ = other.unpackedUint32_.Clone();
4952      unpackedUint64_ = other.unpackedUint64_.Clone();
4953      unpackedSint32_ = other.unpackedSint32_.Clone();
4954      unpackedSint64_ = other.unpackedSint64_.Clone();
4955      unpackedFixed32_ = other.unpackedFixed32_.Clone();
4956      unpackedFixed64_ = other.unpackedFixed64_.Clone();
4957      unpackedSfixed32_ = other.unpackedSfixed32_.Clone();
4958      unpackedSfixed64_ = other.unpackedSfixed64_.Clone();
4959      unpackedFloat_ = other.unpackedFloat_.Clone();
4960      unpackedDouble_ = other.unpackedDouble_.Clone();
4961      unpackedBool_ = other.unpackedBool_.Clone();
4962      unpackedEnum_ = other.unpackedEnum_.Clone();
4963    }
4964
4965    public TestUnpackedTypes Clone() {
4966      return new TestUnpackedTypes(this);
4967    }
4968
4969    /// <summary>Field number for the "unpacked_int32" field.</summary>
4970    public const int UnpackedInt32FieldNumber = 90;
4971    private static readonly pb::FieldCodec<int> _repeated_unpackedInt32_codec
4972        = pb::FieldCodec.ForInt32(720);
4973    private readonly pbc::RepeatedField<int> unpackedInt32_ = new pbc::RepeatedField<int>();
4974    public pbc::RepeatedField<int> UnpackedInt32 {
4975      get { return unpackedInt32_; }
4976    }
4977
4978    /// <summary>Field number for the "unpacked_int64" field.</summary>
4979    public const int UnpackedInt64FieldNumber = 91;
4980    private static readonly pb::FieldCodec<long> _repeated_unpackedInt64_codec
4981        = pb::FieldCodec.ForInt64(728);
4982    private readonly pbc::RepeatedField<long> unpackedInt64_ = new pbc::RepeatedField<long>();
4983    public pbc::RepeatedField<long> UnpackedInt64 {
4984      get { return unpackedInt64_; }
4985    }
4986
4987    /// <summary>Field number for the "unpacked_uint32" field.</summary>
4988    public const int UnpackedUint32FieldNumber = 92;
4989    private static readonly pb::FieldCodec<uint> _repeated_unpackedUint32_codec
4990        = pb::FieldCodec.ForUInt32(736);
4991    private readonly pbc::RepeatedField<uint> unpackedUint32_ = new pbc::RepeatedField<uint>();
4992    public pbc::RepeatedField<uint> UnpackedUint32 {
4993      get { return unpackedUint32_; }
4994    }
4995
4996    /// <summary>Field number for the "unpacked_uint64" field.</summary>
4997    public const int UnpackedUint64FieldNumber = 93;
4998    private static readonly pb::FieldCodec<ulong> _repeated_unpackedUint64_codec
4999        = pb::FieldCodec.ForUInt64(744);
5000    private readonly pbc::RepeatedField<ulong> unpackedUint64_ = new pbc::RepeatedField<ulong>();
5001    public pbc::RepeatedField<ulong> UnpackedUint64 {
5002      get { return unpackedUint64_; }
5003    }
5004
5005    /// <summary>Field number for the "unpacked_sint32" field.</summary>
5006    public const int UnpackedSint32FieldNumber = 94;
5007    private static readonly pb::FieldCodec<int> _repeated_unpackedSint32_codec
5008        = pb::FieldCodec.ForSInt32(752);
5009    private readonly pbc::RepeatedField<int> unpackedSint32_ = new pbc::RepeatedField<int>();
5010    public pbc::RepeatedField<int> UnpackedSint32 {
5011      get { return unpackedSint32_; }
5012    }
5013
5014    /// <summary>Field number for the "unpacked_sint64" field.</summary>
5015    public const int UnpackedSint64FieldNumber = 95;
5016    private static readonly pb::FieldCodec<long> _repeated_unpackedSint64_codec
5017        = pb::FieldCodec.ForSInt64(760);
5018    private readonly pbc::RepeatedField<long> unpackedSint64_ = new pbc::RepeatedField<long>();
5019    public pbc::RepeatedField<long> UnpackedSint64 {
5020      get { return unpackedSint64_; }
5021    }
5022
5023    /// <summary>Field number for the "unpacked_fixed32" field.</summary>
5024    public const int UnpackedFixed32FieldNumber = 96;
5025    private static readonly pb::FieldCodec<uint> _repeated_unpackedFixed32_codec
5026        = pb::FieldCodec.ForFixed32(773);
5027    private readonly pbc::RepeatedField<uint> unpackedFixed32_ = new pbc::RepeatedField<uint>();
5028    public pbc::RepeatedField<uint> UnpackedFixed32 {
5029      get { return unpackedFixed32_; }
5030    }
5031
5032    /// <summary>Field number for the "unpacked_fixed64" field.</summary>
5033    public const int UnpackedFixed64FieldNumber = 97;
5034    private static readonly pb::FieldCodec<ulong> _repeated_unpackedFixed64_codec
5035        = pb::FieldCodec.ForFixed64(777);
5036    private readonly pbc::RepeatedField<ulong> unpackedFixed64_ = new pbc::RepeatedField<ulong>();
5037    public pbc::RepeatedField<ulong> UnpackedFixed64 {
5038      get { return unpackedFixed64_; }
5039    }
5040
5041    /// <summary>Field number for the "unpacked_sfixed32" field.</summary>
5042    public const int UnpackedSfixed32FieldNumber = 98;
5043    private static readonly pb::FieldCodec<int> _repeated_unpackedSfixed32_codec
5044        = pb::FieldCodec.ForSFixed32(789);
5045    private readonly pbc::RepeatedField<int> unpackedSfixed32_ = new pbc::RepeatedField<int>();
5046    public pbc::RepeatedField<int> UnpackedSfixed32 {
5047      get { return unpackedSfixed32_; }
5048    }
5049
5050    /// <summary>Field number for the "unpacked_sfixed64" field.</summary>
5051    public const int UnpackedSfixed64FieldNumber = 99;
5052    private static readonly pb::FieldCodec<long> _repeated_unpackedSfixed64_codec
5053        = pb::FieldCodec.ForSFixed64(793);
5054    private readonly pbc::RepeatedField<long> unpackedSfixed64_ = new pbc::RepeatedField<long>();
5055    public pbc::RepeatedField<long> UnpackedSfixed64 {
5056      get { return unpackedSfixed64_; }
5057    }
5058
5059    /// <summary>Field number for the "unpacked_float" field.</summary>
5060    public const int UnpackedFloatFieldNumber = 100;
5061    private static readonly pb::FieldCodec<float> _repeated_unpackedFloat_codec
5062        = pb::FieldCodec.ForFloat(805);
5063    private readonly pbc::RepeatedField<float> unpackedFloat_ = new pbc::RepeatedField<float>();
5064    public pbc::RepeatedField<float> UnpackedFloat {
5065      get { return unpackedFloat_; }
5066    }
5067
5068    /// <summary>Field number for the "unpacked_double" field.</summary>
5069    public const int UnpackedDoubleFieldNumber = 101;
5070    private static readonly pb::FieldCodec<double> _repeated_unpackedDouble_codec
5071        = pb::FieldCodec.ForDouble(809);
5072    private readonly pbc::RepeatedField<double> unpackedDouble_ = new pbc::RepeatedField<double>();
5073    public pbc::RepeatedField<double> UnpackedDouble {
5074      get { return unpackedDouble_; }
5075    }
5076
5077    /// <summary>Field number for the "unpacked_bool" field.</summary>
5078    public const int UnpackedBoolFieldNumber = 102;
5079    private static readonly pb::FieldCodec<bool> _repeated_unpackedBool_codec
5080        = pb::FieldCodec.ForBool(816);
5081    private readonly pbc::RepeatedField<bool> unpackedBool_ = new pbc::RepeatedField<bool>();
5082    public pbc::RepeatedField<bool> UnpackedBool {
5083      get { return unpackedBool_; }
5084    }
5085
5086    /// <summary>Field number for the "unpacked_enum" field.</summary>
5087    public const int UnpackedEnumFieldNumber = 103;
5088    private static readonly pb::FieldCodec<global::Google.Protobuf.TestProtos.ForeignEnum> _repeated_unpackedEnum_codec
5089        = pb::FieldCodec.ForEnum(824, x => (int) x, x => (global::Google.Protobuf.TestProtos.ForeignEnum) x);
5090    private readonly pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum> unpackedEnum_ = new pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum>();
5091    public pbc::RepeatedField<global::Google.Protobuf.TestProtos.ForeignEnum> UnpackedEnum {
5092      get { return unpackedEnum_; }
5093    }
5094
5095    public override bool Equals(object other) {
5096      return Equals(other as TestUnpackedTypes);
5097    }
5098
5099    public bool Equals(TestUnpackedTypes other) {
5100      if (ReferenceEquals(other, null)) {
5101        return false;
5102      }
5103      if (ReferenceEquals(other, this)) {
5104        return true;
5105      }
5106      if(!unpackedInt32_.Equals(other.unpackedInt32_)) return false;
5107      if(!unpackedInt64_.Equals(other.unpackedInt64_)) return false;
5108      if(!unpackedUint32_.Equals(other.unpackedUint32_)) return false;
5109      if(!unpackedUint64_.Equals(other.unpackedUint64_)) return false;
5110      if(!unpackedSint32_.Equals(other.unpackedSint32_)) return false;
5111      if(!unpackedSint64_.Equals(other.unpackedSint64_)) return false;
5112      if(!unpackedFixed32_.Equals(other.unpackedFixed32_)) return false;
5113      if(!unpackedFixed64_.Equals(other.unpackedFixed64_)) return false;
5114      if(!unpackedSfixed32_.Equals(other.unpackedSfixed32_)) return false;
5115      if(!unpackedSfixed64_.Equals(other.unpackedSfixed64_)) return false;
5116      if(!unpackedFloat_.Equals(other.unpackedFloat_)) return false;
5117      if(!unpackedDouble_.Equals(other.unpackedDouble_)) return false;
5118      if(!unpackedBool_.Equals(other.unpackedBool_)) return false;
5119      if(!unpackedEnum_.Equals(other.unpackedEnum_)) return false;
5120      return true;
5121    }
5122
5123    public override int GetHashCode() {
5124      int hash = 1;
5125      hash ^= unpackedInt32_.GetHashCode();
5126      hash ^= unpackedInt64_.GetHashCode();
5127      hash ^= unpackedUint32_.GetHashCode();
5128      hash ^= unpackedUint64_.GetHashCode();
5129      hash ^= unpackedSint32_.GetHashCode();
5130      hash ^= unpackedSint64_.GetHashCode();
5131      hash ^= unpackedFixed32_.GetHashCode();
5132      hash ^= unpackedFixed64_.GetHashCode();
5133      hash ^= unpackedSfixed32_.GetHashCode();
5134      hash ^= unpackedSfixed64_.GetHashCode();
5135      hash ^= unpackedFloat_.GetHashCode();
5136      hash ^= unpackedDouble_.GetHashCode();
5137      hash ^= unpackedBool_.GetHashCode();
5138      hash ^= unpackedEnum_.GetHashCode();
5139      return hash;
5140    }
5141
5142    public override string ToString() {
5143      return pb::JsonFormatter.ToDiagnosticString(this);
5144    }
5145
5146    public void WriteTo(pb::CodedOutputStream output) {
5147      unpackedInt32_.WriteTo(output, _repeated_unpackedInt32_codec);
5148      unpackedInt64_.WriteTo(output, _repeated_unpackedInt64_codec);
5149      unpackedUint32_.WriteTo(output, _repeated_unpackedUint32_codec);
5150      unpackedUint64_.WriteTo(output, _repeated_unpackedUint64_codec);
5151      unpackedSint32_.WriteTo(output, _repeated_unpackedSint32_codec);
5152      unpackedSint64_.WriteTo(output, _repeated_unpackedSint64_codec);
5153      unpackedFixed32_.WriteTo(output, _repeated_unpackedFixed32_codec);
5154      unpackedFixed64_.WriteTo(output, _repeated_unpackedFixed64_codec);
5155      unpackedSfixed32_.WriteTo(output, _repeated_unpackedSfixed32_codec);
5156      unpackedSfixed64_.WriteTo(output, _repeated_unpackedSfixed64_codec);
5157      unpackedFloat_.WriteTo(output, _repeated_unpackedFloat_codec);
5158      unpackedDouble_.WriteTo(output, _repeated_unpackedDouble_codec);
5159      unpackedBool_.WriteTo(output, _repeated_unpackedBool_codec);
5160      unpackedEnum_.WriteTo(output, _repeated_unpackedEnum_codec);
5161    }
5162
5163    public int CalculateSize() {
5164      int size = 0;
5165      size += unpackedInt32_.CalculateSize(_repeated_unpackedInt32_codec);
5166      size += unpackedInt64_.CalculateSize(_repeated_unpackedInt64_codec);
5167      size += unpackedUint32_.CalculateSize(_repeated_unpackedUint32_codec);
5168      size += unpackedUint64_.CalculateSize(_repeated_unpackedUint64_codec);
5169      size += unpackedSint32_.CalculateSize(_repeated_unpackedSint32_codec);
5170      size += unpackedSint64_.CalculateSize(_repeated_unpackedSint64_codec);
5171      size += unpackedFixed32_.CalculateSize(_repeated_unpackedFixed32_codec);
5172      size += unpackedFixed64_.CalculateSize(_repeated_unpackedFixed64_codec);
5173      size += unpackedSfixed32_.CalculateSize(_repeated_unpackedSfixed32_codec);
5174      size += unpackedSfixed64_.CalculateSize(_repeated_unpackedSfixed64_codec);
5175      size += unpackedFloat_.CalculateSize(_repeated_unpackedFloat_codec);
5176      size += unpackedDouble_.CalculateSize(_repeated_unpackedDouble_codec);
5177      size += unpackedBool_.CalculateSize(_repeated_unpackedBool_codec);
5178      size += unpackedEnum_.CalculateSize(_repeated_unpackedEnum_codec);
5179      return size;
5180    }
5181
5182    public void MergeFrom(TestUnpackedTypes other) {
5183      if (other == null) {
5184        return;
5185      }
5186      unpackedInt32_.Add(other.unpackedInt32_);
5187      unpackedInt64_.Add(other.unpackedInt64_);
5188      unpackedUint32_.Add(other.unpackedUint32_);
5189      unpackedUint64_.Add(other.unpackedUint64_);
5190      unpackedSint32_.Add(other.unpackedSint32_);
5191      unpackedSint64_.Add(other.unpackedSint64_);
5192      unpackedFixed32_.Add(other.unpackedFixed32_);
5193      unpackedFixed64_.Add(other.unpackedFixed64_);
5194      unpackedSfixed32_.Add(other.unpackedSfixed32_);
5195      unpackedSfixed64_.Add(other.unpackedSfixed64_);
5196      unpackedFloat_.Add(other.unpackedFloat_);
5197      unpackedDouble_.Add(other.unpackedDouble_);
5198      unpackedBool_.Add(other.unpackedBool_);
5199      unpackedEnum_.Add(other.unpackedEnum_);
5200    }
5201
5202    public void MergeFrom(pb::CodedInputStream input) {
5203      uint tag;
5204      while ((tag = input.ReadTag()) != 0) {
5205        switch(tag) {
5206          default:
5207            input.SkipLastField();
5208            break;
5209          case 722:
5210          case 720: {
5211            unpackedInt32_.AddEntriesFrom(input, _repeated_unpackedInt32_codec);
5212            break;
5213          }
5214          case 730:
5215          case 728: {
5216            unpackedInt64_.AddEntriesFrom(input, _repeated_unpackedInt64_codec);
5217            break;
5218          }
5219          case 738:
5220          case 736: {
5221            unpackedUint32_.AddEntriesFrom(input, _repeated_unpackedUint32_codec);
5222            break;
5223          }
5224          case 746:
5225          case 744: {
5226            unpackedUint64_.AddEntriesFrom(input, _repeated_unpackedUint64_codec);
5227            break;
5228          }
5229          case 754:
5230          case 752: {
5231            unpackedSint32_.AddEntriesFrom(input, _repeated_unpackedSint32_codec);
5232            break;
5233          }
5234          case 762:
5235          case 760: {
5236            unpackedSint64_.AddEntriesFrom(input, _repeated_unpackedSint64_codec);
5237            break;
5238          }
5239          case 770:
5240          case 773: {
5241            unpackedFixed32_.AddEntriesFrom(input, _repeated_unpackedFixed32_codec);
5242            break;
5243          }
5244          case 778:
5245          case 777: {
5246            unpackedFixed64_.AddEntriesFrom(input, _repeated_unpackedFixed64_codec);
5247            break;
5248          }
5249          case 786:
5250          case 789: {
5251            unpackedSfixed32_.AddEntriesFrom(input, _repeated_unpackedSfixed32_codec);
5252            break;
5253          }
5254          case 794:
5255          case 793: {
5256            unpackedSfixed64_.AddEntriesFrom(input, _repeated_unpackedSfixed64_codec);
5257            break;
5258          }
5259          case 802:
5260          case 805: {
5261            unpackedFloat_.AddEntriesFrom(input, _repeated_unpackedFloat_codec);
5262            break;
5263          }
5264          case 810:
5265          case 809: {
5266            unpackedDouble_.AddEntriesFrom(input, _repeated_unpackedDouble_codec);
5267            break;
5268          }
5269          case 818:
5270          case 816: {
5271            unpackedBool_.AddEntriesFrom(input, _repeated_unpackedBool_codec);
5272            break;
5273          }
5274          case 826:
5275          case 824: {
5276            unpackedEnum_.AddEntriesFrom(input, _repeated_unpackedEnum_codec);
5277            break;
5278          }
5279        }
5280      }
5281    }
5282
5283  }
5284
5285  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
5286  public sealed partial class TestRepeatedScalarDifferentTagSizes : pb::IMessage<TestRepeatedScalarDifferentTagSizes> {
5287    private static readonly pb::MessageParser<TestRepeatedScalarDifferentTagSizes> _parser = new pb::MessageParser<TestRepeatedScalarDifferentTagSizes>(() => new TestRepeatedScalarDifferentTagSizes());
5288    public static pb::MessageParser<TestRepeatedScalarDifferentTagSizes> Parser { get { return _parser; } }
5289
5290    public static pbr::MessageDescriptor Descriptor {
5291      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[25]; }
5292    }
5293
5294    pbr::MessageDescriptor pb::IMessage.Descriptor {
5295      get { return Descriptor; }
5296    }
5297
5298    public TestRepeatedScalarDifferentTagSizes() {
5299      OnConstruction();
5300    }
5301
5302    partial void OnConstruction();
5303
5304    public TestRepeatedScalarDifferentTagSizes(TestRepeatedScalarDifferentTagSizes other) : this() {
5305      repeatedFixed32_ = other.repeatedFixed32_.Clone();
5306      repeatedInt32_ = other.repeatedInt32_.Clone();
5307      repeatedFixed64_ = other.repeatedFixed64_.Clone();
5308      repeatedInt64_ = other.repeatedInt64_.Clone();
5309      repeatedFloat_ = other.repeatedFloat_.Clone();
5310      repeatedUint64_ = other.repeatedUint64_.Clone();
5311    }
5312
5313    public TestRepeatedScalarDifferentTagSizes Clone() {
5314      return new TestRepeatedScalarDifferentTagSizes(this);
5315    }
5316
5317    /// <summary>Field number for the "repeated_fixed32" field.</summary>
5318    public const int RepeatedFixed32FieldNumber = 12;
5319    private static readonly pb::FieldCodec<uint> _repeated_repeatedFixed32_codec
5320        = pb::FieldCodec.ForFixed32(98);
5321    private readonly pbc::RepeatedField<uint> repeatedFixed32_ = new pbc::RepeatedField<uint>();
5322    /// <summary>
5323    ///  Parsing repeated fixed size values used to fail. This message needs to be
5324    ///  used in order to get a tag of the right size; all of the repeated fields
5325    ///  in TestAllTypes didn't trigger the check.
5326    /// </summary>
5327    public pbc::RepeatedField<uint> RepeatedFixed32 {
5328      get { return repeatedFixed32_; }
5329    }
5330
5331    /// <summary>Field number for the "repeated_int32" field.</summary>
5332    public const int RepeatedInt32FieldNumber = 13;
5333    private static readonly pb::FieldCodec<int> _repeated_repeatedInt32_codec
5334        = pb::FieldCodec.ForInt32(106);
5335    private readonly pbc::RepeatedField<int> repeatedInt32_ = new pbc::RepeatedField<int>();
5336    /// <summary>
5337    ///  Check for a varint type, just for good measure.
5338    /// </summary>
5339    public pbc::RepeatedField<int> RepeatedInt32 {
5340      get { return repeatedInt32_; }
5341    }
5342
5343    /// <summary>Field number for the "repeated_fixed64" field.</summary>
5344    public const int RepeatedFixed64FieldNumber = 2046;
5345    private static readonly pb::FieldCodec<ulong> _repeated_repeatedFixed64_codec
5346        = pb::FieldCodec.ForFixed64(16370);
5347    private readonly pbc::RepeatedField<ulong> repeatedFixed64_ = new pbc::RepeatedField<ulong>();
5348    /// <summary>
5349    ///  These have two-byte tags.
5350    /// </summary>
5351    public pbc::RepeatedField<ulong> RepeatedFixed64 {
5352      get { return repeatedFixed64_; }
5353    }
5354
5355    /// <summary>Field number for the "repeated_int64" field.</summary>
5356    public const int RepeatedInt64FieldNumber = 2047;
5357    private static readonly pb::FieldCodec<long> _repeated_repeatedInt64_codec
5358        = pb::FieldCodec.ForInt64(16378);
5359    private readonly pbc::RepeatedField<long> repeatedInt64_ = new pbc::RepeatedField<long>();
5360    public pbc::RepeatedField<long> RepeatedInt64 {
5361      get { return repeatedInt64_; }
5362    }
5363
5364    /// <summary>Field number for the "repeated_float" field.</summary>
5365    public const int RepeatedFloatFieldNumber = 262142;
5366    private static readonly pb::FieldCodec<float> _repeated_repeatedFloat_codec
5367        = pb::FieldCodec.ForFloat(2097138);
5368    private readonly pbc::RepeatedField<float> repeatedFloat_ = new pbc::RepeatedField<float>();
5369    /// <summary>
5370    ///  Three byte tags.
5371    /// </summary>
5372    public pbc::RepeatedField<float> RepeatedFloat {
5373      get { return repeatedFloat_; }
5374    }
5375
5376    /// <summary>Field number for the "repeated_uint64" field.</summary>
5377    public const int RepeatedUint64FieldNumber = 262143;
5378    private static readonly pb::FieldCodec<ulong> _repeated_repeatedUint64_codec
5379        = pb::FieldCodec.ForUInt64(2097146);
5380    private readonly pbc::RepeatedField<ulong> repeatedUint64_ = new pbc::RepeatedField<ulong>();
5381    public pbc::RepeatedField<ulong> RepeatedUint64 {
5382      get { return repeatedUint64_; }
5383    }
5384
5385    public override bool Equals(object other) {
5386      return Equals(other as TestRepeatedScalarDifferentTagSizes);
5387    }
5388
5389    public bool Equals(TestRepeatedScalarDifferentTagSizes other) {
5390      if (ReferenceEquals(other, null)) {
5391        return false;
5392      }
5393      if (ReferenceEquals(other, this)) {
5394        return true;
5395      }
5396      if(!repeatedFixed32_.Equals(other.repeatedFixed32_)) return false;
5397      if(!repeatedInt32_.Equals(other.repeatedInt32_)) return false;
5398      if(!repeatedFixed64_.Equals(other.repeatedFixed64_)) return false;
5399      if(!repeatedInt64_.Equals(other.repeatedInt64_)) return false;
5400      if(!repeatedFloat_.Equals(other.repeatedFloat_)) return false;
5401      if(!repeatedUint64_.Equals(other.repeatedUint64_)) return false;
5402      return true;
5403    }
5404
5405    public override int GetHashCode() {
5406      int hash = 1;
5407      hash ^= repeatedFixed32_.GetHashCode();
5408      hash ^= repeatedInt32_.GetHashCode();
5409      hash ^= repeatedFixed64_.GetHashCode();
5410      hash ^= repeatedInt64_.GetHashCode();
5411      hash ^= repeatedFloat_.GetHashCode();
5412      hash ^= repeatedUint64_.GetHashCode();
5413      return hash;
5414    }
5415
5416    public override string ToString() {
5417      return pb::JsonFormatter.ToDiagnosticString(this);
5418    }
5419
5420    public void WriteTo(pb::CodedOutputStream output) {
5421      repeatedFixed32_.WriteTo(output, _repeated_repeatedFixed32_codec);
5422      repeatedInt32_.WriteTo(output, _repeated_repeatedInt32_codec);
5423      repeatedFixed64_.WriteTo(output, _repeated_repeatedFixed64_codec);
5424      repeatedInt64_.WriteTo(output, _repeated_repeatedInt64_codec);
5425      repeatedFloat_.WriteTo(output, _repeated_repeatedFloat_codec);
5426      repeatedUint64_.WriteTo(output, _repeated_repeatedUint64_codec);
5427    }
5428
5429    public int CalculateSize() {
5430      int size = 0;
5431      size += repeatedFixed32_.CalculateSize(_repeated_repeatedFixed32_codec);
5432      size += repeatedInt32_.CalculateSize(_repeated_repeatedInt32_codec);
5433      size += repeatedFixed64_.CalculateSize(_repeated_repeatedFixed64_codec);
5434      size += repeatedInt64_.CalculateSize(_repeated_repeatedInt64_codec);
5435      size += repeatedFloat_.CalculateSize(_repeated_repeatedFloat_codec);
5436      size += repeatedUint64_.CalculateSize(_repeated_repeatedUint64_codec);
5437      return size;
5438    }
5439
5440    public void MergeFrom(TestRepeatedScalarDifferentTagSizes other) {
5441      if (other == null) {
5442        return;
5443      }
5444      repeatedFixed32_.Add(other.repeatedFixed32_);
5445      repeatedInt32_.Add(other.repeatedInt32_);
5446      repeatedFixed64_.Add(other.repeatedFixed64_);
5447      repeatedInt64_.Add(other.repeatedInt64_);
5448      repeatedFloat_.Add(other.repeatedFloat_);
5449      repeatedUint64_.Add(other.repeatedUint64_);
5450    }
5451
5452    public void MergeFrom(pb::CodedInputStream input) {
5453      uint tag;
5454      while ((tag = input.ReadTag()) != 0) {
5455        switch(tag) {
5456          default:
5457            input.SkipLastField();
5458            break;
5459          case 98:
5460          case 101: {
5461            repeatedFixed32_.AddEntriesFrom(input, _repeated_repeatedFixed32_codec);
5462            break;
5463          }
5464          case 106:
5465          case 104: {
5466            repeatedInt32_.AddEntriesFrom(input, _repeated_repeatedInt32_codec);
5467            break;
5468          }
5469          case 16370:
5470          case 16369: {
5471            repeatedFixed64_.AddEntriesFrom(input, _repeated_repeatedFixed64_codec);
5472            break;
5473          }
5474          case 16378:
5475          case 16376: {
5476            repeatedInt64_.AddEntriesFrom(input, _repeated_repeatedInt64_codec);
5477            break;
5478          }
5479          case 2097138:
5480          case 2097141: {
5481            repeatedFloat_.AddEntriesFrom(input, _repeated_repeatedFloat_codec);
5482            break;
5483          }
5484          case 2097146:
5485          case 2097144: {
5486            repeatedUint64_.AddEntriesFrom(input, _repeated_repeatedUint64_codec);
5487            break;
5488          }
5489        }
5490      }
5491    }
5492
5493  }
5494
5495  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
5496  public sealed partial class TestCommentInjectionMessage : pb::IMessage<TestCommentInjectionMessage> {
5497    private static readonly pb::MessageParser<TestCommentInjectionMessage> _parser = new pb::MessageParser<TestCommentInjectionMessage>(() => new TestCommentInjectionMessage());
5498    public static pb::MessageParser<TestCommentInjectionMessage> Parser { get { return _parser; } }
5499
5500    public static pbr::MessageDescriptor Descriptor {
5501      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[26]; }
5502    }
5503
5504    pbr::MessageDescriptor pb::IMessage.Descriptor {
5505      get { return Descriptor; }
5506    }
5507
5508    public TestCommentInjectionMessage() {
5509      OnConstruction();
5510    }
5511
5512    partial void OnConstruction();
5513
5514    public TestCommentInjectionMessage(TestCommentInjectionMessage other) : this() {
5515      a_ = other.a_;
5516    }
5517
5518    public TestCommentInjectionMessage Clone() {
5519      return new TestCommentInjectionMessage(this);
5520    }
5521
5522    /// <summary>Field number for the "a" field.</summary>
5523    public const int AFieldNumber = 1;
5524    private string a_ = "";
5525    /// <summary>
5526    ///  */ &lt;- This should not close the generated doc comment
5527    /// </summary>
5528    public string A {
5529      get { return a_; }
5530      set {
5531        a_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
5532      }
5533    }
5534
5535    public override bool Equals(object other) {
5536      return Equals(other as TestCommentInjectionMessage);
5537    }
5538
5539    public bool Equals(TestCommentInjectionMessage other) {
5540      if (ReferenceEquals(other, null)) {
5541        return false;
5542      }
5543      if (ReferenceEquals(other, this)) {
5544        return true;
5545      }
5546      if (A != other.A) return false;
5547      return true;
5548    }
5549
5550    public override int GetHashCode() {
5551      int hash = 1;
5552      if (A.Length != 0) hash ^= A.GetHashCode();
5553      return hash;
5554    }
5555
5556    public override string ToString() {
5557      return pb::JsonFormatter.ToDiagnosticString(this);
5558    }
5559
5560    public void WriteTo(pb::CodedOutputStream output) {
5561      if (A.Length != 0) {
5562        output.WriteRawTag(10);
5563        output.WriteString(A);
5564      }
5565    }
5566
5567    public int CalculateSize() {
5568      int size = 0;
5569      if (A.Length != 0) {
5570        size += 1 + pb::CodedOutputStream.ComputeStringSize(A);
5571      }
5572      return size;
5573    }
5574
5575    public void MergeFrom(TestCommentInjectionMessage other) {
5576      if (other == null) {
5577        return;
5578      }
5579      if (other.A.Length != 0) {
5580        A = other.A;
5581      }
5582    }
5583
5584    public void MergeFrom(pb::CodedInputStream input) {
5585      uint tag;
5586      while ((tag = input.ReadTag()) != 0) {
5587        switch(tag) {
5588          default:
5589            input.SkipLastField();
5590            break;
5591          case 10: {
5592            A = input.ReadString();
5593            break;
5594          }
5595        }
5596      }
5597    }
5598
5599  }
5600
5601  /// <summary>
5602  ///  Test that RPC services work.
5603  /// </summary>
5604  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
5605  public sealed partial class FooRequest : pb::IMessage<FooRequest> {
5606    private static readonly pb::MessageParser<FooRequest> _parser = new pb::MessageParser<FooRequest>(() => new FooRequest());
5607    public static pb::MessageParser<FooRequest> Parser { get { return _parser; } }
5608
5609    public static pbr::MessageDescriptor Descriptor {
5610      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[27]; }
5611    }
5612
5613    pbr::MessageDescriptor pb::IMessage.Descriptor {
5614      get { return Descriptor; }
5615    }
5616
5617    public FooRequest() {
5618      OnConstruction();
5619    }
5620
5621    partial void OnConstruction();
5622
5623    public FooRequest(FooRequest other) : this() {
5624    }
5625
5626    public FooRequest Clone() {
5627      return new FooRequest(this);
5628    }
5629
5630    public override bool Equals(object other) {
5631      return Equals(other as FooRequest);
5632    }
5633
5634    public bool Equals(FooRequest other) {
5635      if (ReferenceEquals(other, null)) {
5636        return false;
5637      }
5638      if (ReferenceEquals(other, this)) {
5639        return true;
5640      }
5641      return true;
5642    }
5643
5644    public override int GetHashCode() {
5645      int hash = 1;
5646      return hash;
5647    }
5648
5649    public override string ToString() {
5650      return pb::JsonFormatter.ToDiagnosticString(this);
5651    }
5652
5653    public void WriteTo(pb::CodedOutputStream output) {
5654    }
5655
5656    public int CalculateSize() {
5657      int size = 0;
5658      return size;
5659    }
5660
5661    public void MergeFrom(FooRequest other) {
5662      if (other == null) {
5663        return;
5664      }
5665    }
5666
5667    public void MergeFrom(pb::CodedInputStream input) {
5668      uint tag;
5669      while ((tag = input.ReadTag()) != 0) {
5670        switch(tag) {
5671          default:
5672            input.SkipLastField();
5673            break;
5674        }
5675      }
5676    }
5677
5678  }
5679
5680  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
5681  public sealed partial class FooResponse : pb::IMessage<FooResponse> {
5682    private static readonly pb::MessageParser<FooResponse> _parser = new pb::MessageParser<FooResponse>(() => new FooResponse());
5683    public static pb::MessageParser<FooResponse> Parser { get { return _parser; } }
5684
5685    public static pbr::MessageDescriptor Descriptor {
5686      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[28]; }
5687    }
5688
5689    pbr::MessageDescriptor pb::IMessage.Descriptor {
5690      get { return Descriptor; }
5691    }
5692
5693    public FooResponse() {
5694      OnConstruction();
5695    }
5696
5697    partial void OnConstruction();
5698
5699    public FooResponse(FooResponse other) : this() {
5700    }
5701
5702    public FooResponse Clone() {
5703      return new FooResponse(this);
5704    }
5705
5706    public override bool Equals(object other) {
5707      return Equals(other as FooResponse);
5708    }
5709
5710    public bool Equals(FooResponse other) {
5711      if (ReferenceEquals(other, null)) {
5712        return false;
5713      }
5714      if (ReferenceEquals(other, this)) {
5715        return true;
5716      }
5717      return true;
5718    }
5719
5720    public override int GetHashCode() {
5721      int hash = 1;
5722      return hash;
5723    }
5724
5725    public override string ToString() {
5726      return pb::JsonFormatter.ToDiagnosticString(this);
5727    }
5728
5729    public void WriteTo(pb::CodedOutputStream output) {
5730    }
5731
5732    public int CalculateSize() {
5733      int size = 0;
5734      return size;
5735    }
5736
5737    public void MergeFrom(FooResponse other) {
5738      if (other == null) {
5739        return;
5740      }
5741    }
5742
5743    public void MergeFrom(pb::CodedInputStream input) {
5744      uint tag;
5745      while ((tag = input.ReadTag()) != 0) {
5746        switch(tag) {
5747          default:
5748            input.SkipLastField();
5749            break;
5750        }
5751      }
5752    }
5753
5754  }
5755
5756  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
5757  public sealed partial class FooClientMessage : pb::IMessage<FooClientMessage> {
5758    private static readonly pb::MessageParser<FooClientMessage> _parser = new pb::MessageParser<FooClientMessage>(() => new FooClientMessage());
5759    public static pb::MessageParser<FooClientMessage> Parser { get { return _parser; } }
5760
5761    public static pbr::MessageDescriptor Descriptor {
5762      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[29]; }
5763    }
5764
5765    pbr::MessageDescriptor pb::IMessage.Descriptor {
5766      get { return Descriptor; }
5767    }
5768
5769    public FooClientMessage() {
5770      OnConstruction();
5771    }
5772
5773    partial void OnConstruction();
5774
5775    public FooClientMessage(FooClientMessage other) : this() {
5776    }
5777
5778    public FooClientMessage Clone() {
5779      return new FooClientMessage(this);
5780    }
5781
5782    public override bool Equals(object other) {
5783      return Equals(other as FooClientMessage);
5784    }
5785
5786    public bool Equals(FooClientMessage other) {
5787      if (ReferenceEquals(other, null)) {
5788        return false;
5789      }
5790      if (ReferenceEquals(other, this)) {
5791        return true;
5792      }
5793      return true;
5794    }
5795
5796    public override int GetHashCode() {
5797      int hash = 1;
5798      return hash;
5799    }
5800
5801    public override string ToString() {
5802      return pb::JsonFormatter.ToDiagnosticString(this);
5803    }
5804
5805    public void WriteTo(pb::CodedOutputStream output) {
5806    }
5807
5808    public int CalculateSize() {
5809      int size = 0;
5810      return size;
5811    }
5812
5813    public void MergeFrom(FooClientMessage other) {
5814      if (other == null) {
5815        return;
5816      }
5817    }
5818
5819    public void MergeFrom(pb::CodedInputStream input) {
5820      uint tag;
5821      while ((tag = input.ReadTag()) != 0) {
5822        switch(tag) {
5823          default:
5824            input.SkipLastField();
5825            break;
5826        }
5827      }
5828    }
5829
5830  }
5831
5832  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
5833  public sealed partial class FooServerMessage : pb::IMessage<FooServerMessage> {
5834    private static readonly pb::MessageParser<FooServerMessage> _parser = new pb::MessageParser<FooServerMessage>(() => new FooServerMessage());
5835    public static pb::MessageParser<FooServerMessage> Parser { get { return _parser; } }
5836
5837    public static pbr::MessageDescriptor Descriptor {
5838      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[30]; }
5839    }
5840
5841    pbr::MessageDescriptor pb::IMessage.Descriptor {
5842      get { return Descriptor; }
5843    }
5844
5845    public FooServerMessage() {
5846      OnConstruction();
5847    }
5848
5849    partial void OnConstruction();
5850
5851    public FooServerMessage(FooServerMessage other) : this() {
5852    }
5853
5854    public FooServerMessage Clone() {
5855      return new FooServerMessage(this);
5856    }
5857
5858    public override bool Equals(object other) {
5859      return Equals(other as FooServerMessage);
5860    }
5861
5862    public bool Equals(FooServerMessage other) {
5863      if (ReferenceEquals(other, null)) {
5864        return false;
5865      }
5866      if (ReferenceEquals(other, this)) {
5867        return true;
5868      }
5869      return true;
5870    }
5871
5872    public override int GetHashCode() {
5873      int hash = 1;
5874      return hash;
5875    }
5876
5877    public override string ToString() {
5878      return pb::JsonFormatter.ToDiagnosticString(this);
5879    }
5880
5881    public void WriteTo(pb::CodedOutputStream output) {
5882    }
5883
5884    public int CalculateSize() {
5885      int size = 0;
5886      return size;
5887    }
5888
5889    public void MergeFrom(FooServerMessage other) {
5890      if (other == null) {
5891        return;
5892      }
5893    }
5894
5895    public void MergeFrom(pb::CodedInputStream input) {
5896      uint tag;
5897      while ((tag = input.ReadTag()) != 0) {
5898        switch(tag) {
5899          default:
5900            input.SkipLastField();
5901            break;
5902        }
5903      }
5904    }
5905
5906  }
5907
5908  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
5909  public sealed partial class BarRequest : pb::IMessage<BarRequest> {
5910    private static readonly pb::MessageParser<BarRequest> _parser = new pb::MessageParser<BarRequest>(() => new BarRequest());
5911    public static pb::MessageParser<BarRequest> Parser { get { return _parser; } }
5912
5913    public static pbr::MessageDescriptor Descriptor {
5914      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[31]; }
5915    }
5916
5917    pbr::MessageDescriptor pb::IMessage.Descriptor {
5918      get { return Descriptor; }
5919    }
5920
5921    public BarRequest() {
5922      OnConstruction();
5923    }
5924
5925    partial void OnConstruction();
5926
5927    public BarRequest(BarRequest other) : this() {
5928    }
5929
5930    public BarRequest Clone() {
5931      return new BarRequest(this);
5932    }
5933
5934    public override bool Equals(object other) {
5935      return Equals(other as BarRequest);
5936    }
5937
5938    public bool Equals(BarRequest other) {
5939      if (ReferenceEquals(other, null)) {
5940        return false;
5941      }
5942      if (ReferenceEquals(other, this)) {
5943        return true;
5944      }
5945      return true;
5946    }
5947
5948    public override int GetHashCode() {
5949      int hash = 1;
5950      return hash;
5951    }
5952
5953    public override string ToString() {
5954      return pb::JsonFormatter.ToDiagnosticString(this);
5955    }
5956
5957    public void WriteTo(pb::CodedOutputStream output) {
5958    }
5959
5960    public int CalculateSize() {
5961      int size = 0;
5962      return size;
5963    }
5964
5965    public void MergeFrom(BarRequest other) {
5966      if (other == null) {
5967        return;
5968      }
5969    }
5970
5971    public void MergeFrom(pb::CodedInputStream input) {
5972      uint tag;
5973      while ((tag = input.ReadTag()) != 0) {
5974        switch(tag) {
5975          default:
5976            input.SkipLastField();
5977            break;
5978        }
5979      }
5980    }
5981
5982  }
5983
5984  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
5985  public sealed partial class BarResponse : pb::IMessage<BarResponse> {
5986    private static readonly pb::MessageParser<BarResponse> _parser = new pb::MessageParser<BarResponse>(() => new BarResponse());
5987    public static pb::MessageParser<BarResponse> Parser { get { return _parser; } }
5988
5989    public static pbr::MessageDescriptor Descriptor {
5990      get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[32]; }
5991    }
5992
5993    pbr::MessageDescriptor pb::IMessage.Descriptor {
5994      get { return Descriptor; }
5995    }
5996
5997    public BarResponse() {
5998      OnConstruction();
5999    }
6000
6001    partial void OnConstruction();
6002
6003    public BarResponse(BarResponse other) : this() {
6004    }
6005
6006    public BarResponse Clone() {
6007      return new BarResponse(this);
6008    }
6009
6010    public override bool Equals(object other) {
6011      return Equals(other as BarResponse);
6012    }
6013
6014    public bool Equals(BarResponse other) {
6015      if (ReferenceEquals(other, null)) {
6016        return false;
6017      }
6018      if (ReferenceEquals(other, this)) {
6019        return true;
6020      }
6021      return true;
6022    }
6023
6024    public override int GetHashCode() {
6025      int hash = 1;
6026      return hash;
6027    }
6028
6029    public override string ToString() {
6030      return pb::JsonFormatter.ToDiagnosticString(this);
6031    }
6032
6033    public void WriteTo(pb::CodedOutputStream output) {
6034    }
6035
6036    public int CalculateSize() {
6037      int size = 0;
6038      return size;
6039    }
6040
6041    public void MergeFrom(BarResponse other) {
6042      if (other == null) {
6043        return;
6044      }
6045    }
6046
6047    public void MergeFrom(pb::CodedInputStream input) {
6048      uint tag;
6049      while ((tag = input.ReadTag()) != 0) {
6050        switch(tag) {
6051          default:
6052            input.SkipLastField();
6053            break;
6054        }
6055      }
6056    }
6057
6058  }
6059
6060  #endregion
6061
6062}
6063
6064#endregion Designer generated code
6065