Home | History | Annotate | Download | only in Reflection
      1 // Generated by the protocol buffer compiler.  DO NOT EDIT!
      2 // source: google/protobuf/descriptor.proto
      3 #pragma warning disable 1591, 0612, 3021
      4 #region Designer generated code
      5 
      6 using pb = global::Google.Protobuf;
      7 using pbc = global::Google.Protobuf.Collections;
      8 using pbr = global::Google.Protobuf.Reflection;
      9 using scg = global::System.Collections.Generic;
     10 namespace Google.Protobuf.Reflection {
     11 
     12   /// <summary>Holder for reflection information generated from google/protobuf/descriptor.proto</summary>
     13   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     14   internal static partial class DescriptorReflection {
     15 
     16     #region Descriptor
     17     /// <summary>File descriptor for google/protobuf/descriptor.proto</summary>
     18     public static pbr::FileDescriptor Descriptor {
     19       get { return descriptor; }
     20     }
     21     private static pbr::FileDescriptor descriptor;
     22 
     23     static DescriptorReflection() {
     24       byte[] descriptorData = global::System.Convert.FromBase64String(
     25           string.Concat(
     26             "CiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnBy",
     27             "b3RvYnVmIkcKEUZpbGVEZXNjcmlwdG9yU2V0EjIKBGZpbGUYASADKAsyJC5n",
     28             "b29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90byLbAwoTRmlsZURl",
     29             "c2NyaXB0b3JQcm90bxIMCgRuYW1lGAEgASgJEg8KB3BhY2thZ2UYAiABKAkS",
     30             "EgoKZGVwZW5kZW5jeRgDIAMoCRIZChFwdWJsaWNfZGVwZW5kZW5jeRgKIAMo",
     31             "BRIXCg93ZWFrX2RlcGVuZGVuY3kYCyADKAUSNgoMbWVzc2FnZV90eXBlGAQg",
     32             "AygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90bxI3CgllbnVt",
     33             "X3R5cGUYBSADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQ",
     34             "cm90bxI4CgdzZXJ2aWNlGAYgAygLMicuZ29vZ2xlLnByb3RvYnVmLlNlcnZp",
     35             "Y2VEZXNjcmlwdG9yUHJvdG8SOAoJZXh0ZW5zaW9uGAcgAygLMiUuZ29vZ2xl",
     36             "LnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvEi0KB29wdGlvbnMYCCAB",
     37             "KAsyHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMSOQoQc291cmNlX2Nv",
     38             "ZGVfaW5mbxgJIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5m",
     39             "bxIOCgZzeW50YXgYDCABKAki8AQKD0Rlc2NyaXB0b3JQcm90bxIMCgRuYW1l",
     40             "GAEgASgJEjQKBWZpZWxkGAIgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxk",
     41             "RGVzY3JpcHRvclByb3RvEjgKCWV4dGVuc2lvbhgGIAMoCzIlLmdvb2dsZS5w",
     42             "cm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90bxI1CgtuZXN0ZWRfdHlwZRgD",
     43             "IAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8SNwoJZW51",
     44             "bV90eXBlGAQgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9y",
     45             "UHJvdG8SSAoPZXh0ZW5zaW9uX3JhbmdlGAUgAygLMi8uZ29vZ2xlLnByb3Rv",
     46             "YnVmLkRlc2NyaXB0b3JQcm90by5FeHRlbnNpb25SYW5nZRI5CgpvbmVvZl9k",
     47             "ZWNsGAggAygLMiUuZ29vZ2xlLnByb3RvYnVmLk9uZW9mRGVzY3JpcHRvclBy",
     48             "b3RvEjAKB29wdGlvbnMYByABKAsyHy5nb29nbGUucHJvdG9idWYuTWVzc2Fn",
     49             "ZU9wdGlvbnMSRgoOcmVzZXJ2ZWRfcmFuZ2UYCSADKAsyLi5nb29nbGUucHJv",
     50             "dG9idWYuRGVzY3JpcHRvclByb3RvLlJlc2VydmVkUmFuZ2USFQoNcmVzZXJ2",
     51             "ZWRfbmFtZRgKIAMoCRosCg5FeHRlbnNpb25SYW5nZRINCgVzdGFydBgBIAEo",
     52             "BRILCgNlbmQYAiABKAUaKwoNUmVzZXJ2ZWRSYW5nZRINCgVzdGFydBgBIAEo",
     53             "BRILCgNlbmQYAiABKAUivAUKFEZpZWxkRGVzY3JpcHRvclByb3RvEgwKBG5h",
     54             "bWUYASABKAkSDgoGbnVtYmVyGAMgASgFEjoKBWxhYmVsGAQgASgOMisuZ29v",
     55             "Z2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLkxhYmVsEjgKBHR5",
     56             "cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJv",
     57             "dG8uVHlwZRIRCgl0eXBlX25hbWUYBiABKAkSEAoIZXh0ZW5kZWUYAiABKAkS",
     58             "FQoNZGVmYXVsdF92YWx1ZRgHIAEoCRITCgtvbmVvZl9pbmRleBgJIAEoBRIR",
     59             "Cglqc29uX25hbWUYCiABKAkSLgoHb3B0aW9ucxgIIAEoCzIdLmdvb2dsZS5w",
     60             "cm90b2J1Zi5GaWVsZE9wdGlvbnMitgIKBFR5cGUSDwoLVFlQRV9ET1VCTEUQ",
     61             "ARIOCgpUWVBFX0ZMT0FUEAISDgoKVFlQRV9JTlQ2NBADEg8KC1RZUEVfVUlO",
     62             "VDY0EAQSDgoKVFlQRV9JTlQzMhAFEhAKDFRZUEVfRklYRUQ2NBAGEhAKDFRZ",
     63             "UEVfRklYRUQzMhAHEg0KCVRZUEVfQk9PTBAIEg8KC1RZUEVfU1RSSU5HEAkS",
     64             "DgoKVFlQRV9HUk9VUBAKEhAKDFRZUEVfTUVTU0FHRRALEg4KClRZUEVfQllU",
     65             "RVMQDBIPCgtUWVBFX1VJTlQzMhANEg0KCVRZUEVfRU5VTRAOEhEKDVRZUEVf",
     66             "U0ZJWEVEMzIQDxIRCg1UWVBFX1NGSVhFRDY0EBASDwoLVFlQRV9TSU5UMzIQ",
     67             "ERIPCgtUWVBFX1NJTlQ2NBASIkMKBUxhYmVsEhIKDkxBQkVMX09QVElPTkFM",
     68             "EAESEgoOTEFCRUxfUkVRVUlSRUQQAhISCg5MQUJFTF9SRVBFQVRFRBADIiQK",
     69             "FE9uZW9mRGVzY3JpcHRvclByb3RvEgwKBG5hbWUYASABKAkijAEKE0VudW1E",
     70             "ZXNjcmlwdG9yUHJvdG8SDAoEbmFtZRgBIAEoCRI4CgV2YWx1ZRgCIAMoCzIp",
     71             "Lmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVEZXNjcmlwdG9yUHJvdG8SLQoH",
     72             "b3B0aW9ucxgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5FbnVtT3B0aW9ucyJs",
     73             "ChhFbnVtVmFsdWVEZXNjcmlwdG9yUHJvdG8SDAoEbmFtZRgBIAEoCRIOCgZu",
     74             "dW1iZXIYAiABKAUSMgoHb3B0aW9ucxgDIAEoCzIhLmdvb2dsZS5wcm90b2J1",
     75             "Zi5FbnVtVmFsdWVPcHRpb25zIpABChZTZXJ2aWNlRGVzY3JpcHRvclByb3Rv",
     76             "EgwKBG5hbWUYASABKAkSNgoGbWV0aG9kGAIgAygLMiYuZ29vZ2xlLnByb3Rv",
     77             "YnVmLk1ldGhvZERlc2NyaXB0b3JQcm90bxIwCgdvcHRpb25zGAMgASgLMh8u",
     78             "Z29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zIsEBChVNZXRob2REZXNj",
     79             "cmlwdG9yUHJvdG8SDAoEbmFtZRgBIAEoCRISCgppbnB1dF90eXBlGAIgASgJ",
     80             "EhMKC291dHB1dF90eXBlGAMgASgJEi8KB29wdGlvbnMYBCABKAsyHi5nb29n",
     81             "bGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxIfChBjbGllbnRfc3RyZWFtaW5n",
     82             "GAUgASgIOgVmYWxzZRIfChBzZXJ2ZXJfc3RyZWFtaW5nGAYgASgIOgVmYWxz",
     83             "ZSKHBQoLRmlsZU9wdGlvbnMSFAoMamF2YV9wYWNrYWdlGAEgASgJEhwKFGph",
     84             "dmFfb3V0ZXJfY2xhc3NuYW1lGAggASgJEiIKE2phdmFfbXVsdGlwbGVfZmls",
     85             "ZXMYCiABKAg6BWZhbHNlEiwKHWphdmFfZ2VuZXJhdGVfZXF1YWxzX2FuZF9o",
     86             "YXNoGBQgASgIOgVmYWxzZRIlChZqYXZhX3N0cmluZ19jaGVja191dGY4GBsg",
     87             "ASgIOgVmYWxzZRJGCgxvcHRpbWl6ZV9mb3IYCSABKA4yKS5nb29nbGUucHJv",
     88             "dG9idWYuRmlsZU9wdGlvbnMuT3B0aW1pemVNb2RlOgVTUEVFRBISCgpnb19w",
     89             "YWNrYWdlGAsgASgJEiIKE2NjX2dlbmVyaWNfc2VydmljZXMYECABKAg6BWZh",
     90             "bHNlEiQKFWphdmFfZ2VuZXJpY19zZXJ2aWNlcxgRIAEoCDoFZmFsc2USIgoT",
     91             "cHlfZ2VuZXJpY19zZXJ2aWNlcxgSIAEoCDoFZmFsc2USGQoKZGVwcmVjYXRl",
     92             "ZBgXIAEoCDoFZmFsc2USHwoQY2NfZW5hYmxlX2FyZW5hcxgfIAEoCDoFZmFs",
     93             "c2USGQoRb2JqY19jbGFzc19wcmVmaXgYJCABKAkSGAoQY3NoYXJwX25hbWVz",
     94             "cGFjZRglIAEoCRJDChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5n",
     95             "b29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbiI6CgxPcHRpbWl6",
     96             "ZU1vZGUSCQoFU1BFRUQQARINCglDT0RFX1NJWkUQAhIQCgxMSVRFX1JVTlRJ",
     97             "TUUQAyoJCOgHEICAgIACSgQIJhAnIuYBCg5NZXNzYWdlT3B0aW9ucxImChdt",
     98             "ZXNzYWdlX3NldF93aXJlX2Zvcm1hdBgBIAEoCDoFZmFsc2USLgofbm9fc3Rh",
     99             "bmRhcmRfZGVzY3JpcHRvcl9hY2Nlc3NvchgCIAEoCDoFZmFsc2USGQoKZGVw",
    100             "cmVjYXRlZBgDIAEoCDoFZmFsc2USEQoJbWFwX2VudHJ5GAcgASgIEkMKFHVu",
    101             "aW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5V",
    102             "bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIimAMKDEZpZWxkT3B0aW9u",
    103             "cxI6CgVjdHlwZRgBIAEoDjIjLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlv",
    104             "bnMuQ1R5cGU6BlNUUklORxIOCgZwYWNrZWQYAiABKAgSPwoGanN0eXBlGAYg",
    105             "ASgOMiQuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5KU1R5cGU6CUpT",
    106             "X05PUk1BTBITCgRsYXp5GAUgASgIOgVmYWxzZRIZCgpkZXByZWNhdGVkGAMg",
    107             "ASgIOgVmYWxzZRITCgR3ZWFrGAogASgIOgVmYWxzZRJDChR1bmludGVycHJl",
    108             "dGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnBy",
    109             "ZXRlZE9wdGlvbiIvCgVDVHlwZRIKCgZTVFJJTkcQABIICgRDT1JEEAESEAoM",
    110             "U1RSSU5HX1BJRUNFEAIiNQoGSlNUeXBlEg0KCUpTX05PUk1BTBAAEg0KCUpT",
    111             "X1NUUklORxABEg0KCUpTX05VTUJFUhACKgkI6AcQgICAgAIijQEKC0VudW1P",
    112             "cHRpb25zEhMKC2FsbG93X2FsaWFzGAIgASgIEhkKCmRlcHJlY2F0ZWQYAyAB",
    113             "KAg6BWZhbHNlEkMKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdv",
    114             "b2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIi",
    115             "fQoQRW51bVZhbHVlT3B0aW9ucxIZCgpkZXByZWNhdGVkGAEgASgIOgVmYWxz",
    116             "ZRJDChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJv",
    117             "dG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACInsKDlNlcnZp",
    118             "Y2VPcHRpb25zEhkKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlEkMKFHVuaW50",
    119             "ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5Vbmlu",
    120             "dGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIiegoNTWV0aG9kT3B0aW9ucxIZ",
    121             "CgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZRJDChR1bmludGVycHJldGVkX29w",
    122             "dGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9w",
    123             "dGlvbioJCOgHEICAgIACIp4CChNVbmludGVycHJldGVkT3B0aW9uEjsKBG5h",
    124             "bWUYAiADKAsyLS5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlv",
    125             "bi5OYW1lUGFydBIYChBpZGVudGlmaWVyX3ZhbHVlGAMgASgJEhoKEnBvc2l0",
    126             "aXZlX2ludF92YWx1ZRgEIAEoBBIaChJuZWdhdGl2ZV9pbnRfdmFsdWUYBSAB",
    127             "KAMSFAoMZG91YmxlX3ZhbHVlGAYgASgBEhQKDHN0cmluZ192YWx1ZRgHIAEo",
    128             "DBIXCg9hZ2dyZWdhdGVfdmFsdWUYCCABKAkaMwoITmFtZVBhcnQSEQoJbmFt",
    129             "ZV9wYXJ0GAEgAigJEhQKDGlzX2V4dGVuc2lvbhgCIAIoCCLVAQoOU291cmNl",
    130             "Q29kZUluZm8SOgoIbG9jYXRpb24YASADKAsyKC5nb29nbGUucHJvdG9idWYu",
    131             "U291cmNlQ29kZUluZm8uTG9jYXRpb24ahgEKCExvY2F0aW9uEhAKBHBhdGgY",
    132             "ASADKAVCAhABEhAKBHNwYW4YAiADKAVCAhABEhgKEGxlYWRpbmdfY29tbWVu",
    133             "dHMYAyABKAkSGQoRdHJhaWxpbmdfY29tbWVudHMYBCABKAkSIQoZbGVhZGlu",
    134             "Z19kZXRhY2hlZF9jb21tZW50cxgGIAMoCSKnAQoRR2VuZXJhdGVkQ29kZUlu",
    135             "Zm8SQQoKYW5ub3RhdGlvbhgBIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5HZW5l",
    136             "cmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uGk8KCkFubm90YXRpb24SEAoEcGF0",
    137             "aBgBIAMoBUICEAESEwoLc291cmNlX2ZpbGUYAiABKAkSDQoFYmVnaW4YAyAB",
    138             "KAUSCwoDZW5kGAQgASgFQlgKE2NvbS5nb29nbGUucHJvdG9idWZCEERlc2Ny",
    139             "aXB0b3JQcm90b3NIAVoKZGVzY3JpcHRvcqICA0dQQqoCGkdvb2dsZS5Qcm90",
    140             "b2J1Zi5SZWZsZWN0aW9u"));
    141       descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
    142           new pbr::FileDescriptor[] { },
    143           new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
    144             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.FileDescriptorSet), global::Google.Protobuf.Reflection.FileDescriptorSet.Parser, new[]{ "File" }, null, null, null),
    145             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.FileDescriptorProto), global::Google.Protobuf.Reflection.FileDescriptorProto.Parser, new[]{ "Name", "Package", "Dependency", "PublicDependency", "WeakDependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", "Syntax" }, null, null, null),
    146             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.DescriptorProto), global::Google.Protobuf.Reflection.DescriptorProto.Parser, new[]{ "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "OneofDecl", "Options", "ReservedRange", "ReservedName" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange), global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.Parser, new[]{ "Start", "End" }, null, null, null),
    147             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange), global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.Parser, new[]{ "Start", "End" }, null, null, null)}),
    148             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.FieldDescriptorProto), global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser, new[]{ "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "OneofIndex", "JsonName", "Options" }, null, new[]{ typeof(global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type), typeof(global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label) }, null),
    149             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.OneofDescriptorProto), global::Google.Protobuf.Reflection.OneofDescriptorProto.Parser, new[]{ "Name" }, null, null, null),
    150             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.EnumDescriptorProto), global::Google.Protobuf.Reflection.EnumDescriptorProto.Parser, new[]{ "Name", "Value", "Options" }, null, null, null),
    151             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.EnumValueDescriptorProto), global::Google.Protobuf.Reflection.EnumValueDescriptorProto.Parser, new[]{ "Name", "Number", "Options" }, null, null, null),
    152             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.ServiceDescriptorProto), global::Google.Protobuf.Reflection.ServiceDescriptorProto.Parser, new[]{ "Name", "Method", "Options" }, null, null, null),
    153             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.MethodDescriptorProto), global::Google.Protobuf.Reflection.MethodDescriptorProto.Parser, new[]{ "Name", "InputType", "OutputType", "Options", "ClientStreaming", "ServerStreaming" }, null, null, null),
    154             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.FileOptions), global::Google.Protobuf.Reflection.FileOptions.Parser, new[]{ "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "JavaStringCheckUtf8", "OptimizeFor", "GoPackage", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "Deprecated", "CcEnableArenas", "ObjcClassPrefix", "CsharpNamespace", "UninterpretedOption" }, null, new[]{ typeof(global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode) }, null),
    155             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.MessageOptions), global::Google.Protobuf.Reflection.MessageOptions.Parser, new[]{ "MessageSetWireFormat", "NoStandardDescriptorAccessor", "Deprecated", "MapEntry", "UninterpretedOption" }, null, null, null),
    156             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.FieldOptions), global::Google.Protobuf.Reflection.FieldOptions.Parser, new[]{ "Ctype", "Packed", "Jstype", "Lazy", "Deprecated", "Weak", "UninterpretedOption" }, null, new[]{ typeof(global::Google.Protobuf.Reflection.FieldOptions.Types.CType), typeof(global::Google.Protobuf.Reflection.FieldOptions.Types.JSType) }, null),
    157             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.EnumOptions), global::Google.Protobuf.Reflection.EnumOptions.Parser, new[]{ "AllowAlias", "Deprecated", "UninterpretedOption" }, null, null, null),
    158             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.EnumValueOptions), global::Google.Protobuf.Reflection.EnumValueOptions.Parser, new[]{ "Deprecated", "UninterpretedOption" }, null, null, null),
    159             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.ServiceOptions), global::Google.Protobuf.Reflection.ServiceOptions.Parser, new[]{ "Deprecated", "UninterpretedOption" }, null, null, null),
    160             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.MethodOptions), global::Google.Protobuf.Reflection.MethodOptions.Parser, new[]{ "Deprecated", "UninterpretedOption" }, null, null, null),
    161             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.UninterpretedOption), global::Google.Protobuf.Reflection.UninterpretedOption.Parser, new[]{ "Name", "IdentifierValue", "PositiveIntValue", "NegativeIntValue", "DoubleValue", "StringValue", "AggregateValue" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart), global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart.Parser, new[]{ "NamePart_", "IsExtension" }, null, null, null)}),
    162             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.SourceCodeInfo), global::Google.Protobuf.Reflection.SourceCodeInfo.Parser, new[]{ "Location" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location), global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.Parser, new[]{ "Path", "Span", "LeadingComments", "TrailingComments", "LeadingDetachedComments" }, null, null, null)}),
    163             new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.GeneratedCodeInfo), global::Google.Protobuf.Reflection.GeneratedCodeInfo.Parser, new[]{ "Annotation" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation), global::Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.Parser, new[]{ "Path", "SourceFile", "Begin", "End" }, null, null, null)})
    164           }));
    165     }
    166     #endregion
    167 
    168   }
    169   #region Messages
    170   /// <summary>
    171   ///  The protocol compiler can output a FileDescriptorSet containing the .proto
    172   ///  files it parses.
    173   /// </summary>
    174   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    175   internal sealed partial class FileDescriptorSet : pb::IMessage<FileDescriptorSet> {
    176     private static readonly pb::MessageParser<FileDescriptorSet> _parser = new pb::MessageParser<FileDescriptorSet>(() => new FileDescriptorSet());
    177     public static pb::MessageParser<FileDescriptorSet> Parser { get { return _parser; } }
    178 
    179     public static pbr::MessageDescriptor Descriptor {
    180       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[0]; }
    181     }
    182 
    183     pbr::MessageDescriptor pb::IMessage.Descriptor {
    184       get { return Descriptor; }
    185     }
    186 
    187     public FileDescriptorSet() {
    188       OnConstruction();
    189     }
    190 
    191     partial void OnConstruction();
    192 
    193     public FileDescriptorSet(FileDescriptorSet other) : this() {
    194       file_ = other.file_.Clone();
    195     }
    196 
    197     public FileDescriptorSet Clone() {
    198       return new FileDescriptorSet(this);
    199     }
    200 
    201     /// <summary>Field number for the "file" field.</summary>
    202     public const int FileFieldNumber = 1;
    203     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FileDescriptorProto> _repeated_file_codec
    204         = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.Reflection.FileDescriptorProto.Parser);
    205     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FileDescriptorProto> file_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FileDescriptorProto>();
    206     public pbc::RepeatedField<global::Google.Protobuf.Reflection.FileDescriptorProto> File {
    207       get { return file_; }
    208     }
    209 
    210     public override bool Equals(object other) {
    211       return Equals(other as FileDescriptorSet);
    212     }
    213 
    214     public bool Equals(FileDescriptorSet other) {
    215       if (ReferenceEquals(other, null)) {
    216         return false;
    217       }
    218       if (ReferenceEquals(other, this)) {
    219         return true;
    220       }
    221       if(!file_.Equals(other.file_)) return false;
    222       return true;
    223     }
    224 
    225     public override int GetHashCode() {
    226       int hash = 1;
    227       hash ^= file_.GetHashCode();
    228       return hash;
    229     }
    230 
    231     public override string ToString() {
    232       return pb::JsonFormatter.ToDiagnosticString(this);
    233     }
    234 
    235     public void WriteTo(pb::CodedOutputStream output) {
    236       file_.WriteTo(output, _repeated_file_codec);
    237     }
    238 
    239     public int CalculateSize() {
    240       int size = 0;
    241       size += file_.CalculateSize(_repeated_file_codec);
    242       return size;
    243     }
    244 
    245     public void MergeFrom(FileDescriptorSet other) {
    246       if (other == null) {
    247         return;
    248       }
    249       file_.Add(other.file_);
    250     }
    251 
    252     public void MergeFrom(pb::CodedInputStream input) {
    253       uint tag;
    254       while ((tag = input.ReadTag()) != 0) {
    255         switch(tag) {
    256           default:
    257             input.SkipLastField();
    258             break;
    259           case 10: {
    260             file_.AddEntriesFrom(input, _repeated_file_codec);
    261             break;
    262           }
    263         }
    264       }
    265     }
    266 
    267   }
    268 
    269   /// <summary>
    270   ///  Describes a complete .proto file.
    271   /// </summary>
    272   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    273   internal sealed partial class FileDescriptorProto : pb::IMessage<FileDescriptorProto> {
    274     private static readonly pb::MessageParser<FileDescriptorProto> _parser = new pb::MessageParser<FileDescriptorProto>(() => new FileDescriptorProto());
    275     public static pb::MessageParser<FileDescriptorProto> Parser { get { return _parser; } }
    276 
    277     public static pbr::MessageDescriptor Descriptor {
    278       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[1]; }
    279     }
    280 
    281     pbr::MessageDescriptor pb::IMessage.Descriptor {
    282       get { return Descriptor; }
    283     }
    284 
    285     public FileDescriptorProto() {
    286       OnConstruction();
    287     }
    288 
    289     partial void OnConstruction();
    290 
    291     public FileDescriptorProto(FileDescriptorProto other) : this() {
    292       name_ = other.name_;
    293       package_ = other.package_;
    294       dependency_ = other.dependency_.Clone();
    295       publicDependency_ = other.publicDependency_.Clone();
    296       weakDependency_ = other.weakDependency_.Clone();
    297       messageType_ = other.messageType_.Clone();
    298       enumType_ = other.enumType_.Clone();
    299       service_ = other.service_.Clone();
    300       extension_ = other.extension_.Clone();
    301       Options = other.options_ != null ? other.Options.Clone() : null;
    302       SourceCodeInfo = other.sourceCodeInfo_ != null ? other.SourceCodeInfo.Clone() : null;
    303       syntax_ = other.syntax_;
    304     }
    305 
    306     public FileDescriptorProto Clone() {
    307       return new FileDescriptorProto(this);
    308     }
    309 
    310     /// <summary>Field number for the "name" field.</summary>
    311     public const int NameFieldNumber = 1;
    312     private string name_ = "";
    313     /// <summary>
    314     ///  file name, relative to root of source tree
    315     /// </summary>
    316     public string Name {
    317       get { return name_; }
    318       set {
    319         name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
    320       }
    321     }
    322 
    323     /// <summary>Field number for the "package" field.</summary>
    324     public const int PackageFieldNumber = 2;
    325     private string package_ = "";
    326     /// <summary>
    327     ///  e.g. "foo", "foo.bar", etc.
    328     /// </summary>
    329     public string Package {
    330       get { return package_; }
    331       set {
    332         package_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
    333       }
    334     }
    335 
    336     /// <summary>Field number for the "dependency" field.</summary>
    337     public const int DependencyFieldNumber = 3;
    338     private static readonly pb::FieldCodec<string> _repeated_dependency_codec
    339         = pb::FieldCodec.ForString(26);
    340     private readonly pbc::RepeatedField<string> dependency_ = new pbc::RepeatedField<string>();
    341     /// <summary>
    342     ///  Names of files imported by this file.
    343     /// </summary>
    344     public pbc::RepeatedField<string> Dependency {
    345       get { return dependency_; }
    346     }
    347 
    348     /// <summary>Field number for the "public_dependency" field.</summary>
    349     public const int PublicDependencyFieldNumber = 10;
    350     private static readonly pb::FieldCodec<int> _repeated_publicDependency_codec
    351         = pb::FieldCodec.ForInt32(80);
    352     private readonly pbc::RepeatedField<int> publicDependency_ = new pbc::RepeatedField<int>();
    353     /// <summary>
    354     ///  Indexes of the public imported files in the dependency list above.
    355     /// </summary>
    356     public pbc::RepeatedField<int> PublicDependency {
    357       get { return publicDependency_; }
    358     }
    359 
    360     /// <summary>Field number for the "weak_dependency" field.</summary>
    361     public const int WeakDependencyFieldNumber = 11;
    362     private static readonly pb::FieldCodec<int> _repeated_weakDependency_codec
    363         = pb::FieldCodec.ForInt32(88);
    364     private readonly pbc::RepeatedField<int> weakDependency_ = new pbc::RepeatedField<int>();
    365     /// <summary>
    366     ///  Indexes of the weak imported files in the dependency list.
    367     ///  For Google-internal migration only. Do not use.
    368     /// </summary>
    369     public pbc::RepeatedField<int> WeakDependency {
    370       get { return weakDependency_; }
    371     }
    372 
    373     /// <summary>Field number for the "message_type" field.</summary>
    374     public const int MessageTypeFieldNumber = 4;
    375     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto> _repeated_messageType_codec
    376         = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.Reflection.DescriptorProto.Parser);
    377     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> messageType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto>();
    378     /// <summary>
    379     ///  All top-level definitions in this file.
    380     /// </summary>
    381     public pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> MessageType {
    382       get { return messageType_; }
    383     }
    384 
    385     /// <summary>Field number for the "enum_type" field.</summary>
    386     public const int EnumTypeFieldNumber = 5;
    387     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.EnumDescriptorProto> _repeated_enumType_codec
    388         = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.Reflection.EnumDescriptorProto.Parser);
    389     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> enumType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto>();
    390     public pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> EnumType {
    391       get { return enumType_; }
    392     }
    393 
    394     /// <summary>Field number for the "service" field.</summary>
    395     public const int ServiceFieldNumber = 6;
    396     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.ServiceDescriptorProto> _repeated_service_codec
    397         = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.Reflection.ServiceDescriptorProto.Parser);
    398     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.ServiceDescriptorProto> service_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.ServiceDescriptorProto>();
    399     public pbc::RepeatedField<global::Google.Protobuf.Reflection.ServiceDescriptorProto> Service {
    400       get { return service_; }
    401     }
    402 
    403     /// <summary>Field number for the "extension" field.</summary>
    404     public const int ExtensionFieldNumber = 7;
    405     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FieldDescriptorProto> _repeated_extension_codec
    406         = pb::FieldCodec.ForMessage(58, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser);
    407     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> extension_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto>();
    408     public pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> Extension {
    409       get { return extension_; }
    410     }
    411 
    412     /// <summary>Field number for the "options" field.</summary>
    413     public const int OptionsFieldNumber = 8;
    414     private global::Google.Protobuf.Reflection.FileOptions options_;
    415     public global::Google.Protobuf.Reflection.FileOptions Options {
    416       get { return options_; }
    417       set {
    418         options_ = value;
    419       }
    420     }
    421 
    422     /// <summary>Field number for the "source_code_info" field.</summary>
    423     public const int SourceCodeInfoFieldNumber = 9;
    424     private global::Google.Protobuf.Reflection.SourceCodeInfo sourceCodeInfo_;
    425     /// <summary>
    426     ///  This field contains optional information about the original source code.
    427     ///  You may safely remove this entire field without harming runtime
    428     ///  functionality of the descriptors -- the information is needed only by
    429     ///  development tools.
    430     /// </summary>
    431     public global::Google.Protobuf.Reflection.SourceCodeInfo SourceCodeInfo {
    432       get { return sourceCodeInfo_; }
    433       set {
    434         sourceCodeInfo_ = value;
    435       }
    436     }
    437 
    438     /// <summary>Field number for the "syntax" field.</summary>
    439     public const int SyntaxFieldNumber = 12;
    440     private string syntax_ = "";
    441     /// <summary>
    442     ///  The syntax of the proto file.
    443     ///  The supported values are "proto2" and "proto3".
    444     /// </summary>
    445     public string Syntax {
    446       get { return syntax_; }
    447       set {
    448         syntax_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
    449       }
    450     }
    451 
    452     public override bool Equals(object other) {
    453       return Equals(other as FileDescriptorProto);
    454     }
    455 
    456     public bool Equals(FileDescriptorProto other) {
    457       if (ReferenceEquals(other, null)) {
    458         return false;
    459       }
    460       if (ReferenceEquals(other, this)) {
    461         return true;
    462       }
    463       if (Name != other.Name) return false;
    464       if (Package != other.Package) return false;
    465       if(!dependency_.Equals(other.dependency_)) return false;
    466       if(!publicDependency_.Equals(other.publicDependency_)) return false;
    467       if(!weakDependency_.Equals(other.weakDependency_)) return false;
    468       if(!messageType_.Equals(other.messageType_)) return false;
    469       if(!enumType_.Equals(other.enumType_)) return false;
    470       if(!service_.Equals(other.service_)) return false;
    471       if(!extension_.Equals(other.extension_)) return false;
    472       if (!object.Equals(Options, other.Options)) return false;
    473       if (!object.Equals(SourceCodeInfo, other.SourceCodeInfo)) return false;
    474       if (Syntax != other.Syntax) return false;
    475       return true;
    476     }
    477 
    478     public override int GetHashCode() {
    479       int hash = 1;
    480       if (Name.Length != 0) hash ^= Name.GetHashCode();
    481       if (Package.Length != 0) hash ^= Package.GetHashCode();
    482       hash ^= dependency_.GetHashCode();
    483       hash ^= publicDependency_.GetHashCode();
    484       hash ^= weakDependency_.GetHashCode();
    485       hash ^= messageType_.GetHashCode();
    486       hash ^= enumType_.GetHashCode();
    487       hash ^= service_.GetHashCode();
    488       hash ^= extension_.GetHashCode();
    489       if (options_ != null) hash ^= Options.GetHashCode();
    490       if (sourceCodeInfo_ != null) hash ^= SourceCodeInfo.GetHashCode();
    491       if (Syntax.Length != 0) hash ^= Syntax.GetHashCode();
    492       return hash;
    493     }
    494 
    495     public override string ToString() {
    496       return pb::JsonFormatter.ToDiagnosticString(this);
    497     }
    498 
    499     public void WriteTo(pb::CodedOutputStream output) {
    500       if (Name.Length != 0) {
    501         output.WriteRawTag(10);
    502         output.WriteString(Name);
    503       }
    504       if (Package.Length != 0) {
    505         output.WriteRawTag(18);
    506         output.WriteString(Package);
    507       }
    508       dependency_.WriteTo(output, _repeated_dependency_codec);
    509       messageType_.WriteTo(output, _repeated_messageType_codec);
    510       enumType_.WriteTo(output, _repeated_enumType_codec);
    511       service_.WriteTo(output, _repeated_service_codec);
    512       extension_.WriteTo(output, _repeated_extension_codec);
    513       if (options_ != null) {
    514         output.WriteRawTag(66);
    515         output.WriteMessage(Options);
    516       }
    517       if (sourceCodeInfo_ != null) {
    518         output.WriteRawTag(74);
    519         output.WriteMessage(SourceCodeInfo);
    520       }
    521       publicDependency_.WriteTo(output, _repeated_publicDependency_codec);
    522       weakDependency_.WriteTo(output, _repeated_weakDependency_codec);
    523       if (Syntax.Length != 0) {
    524         output.WriteRawTag(98);
    525         output.WriteString(Syntax);
    526       }
    527     }
    528 
    529     public int CalculateSize() {
    530       int size = 0;
    531       if (Name.Length != 0) {
    532         size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
    533       }
    534       if (Package.Length != 0) {
    535         size += 1 + pb::CodedOutputStream.ComputeStringSize(Package);
    536       }
    537       size += dependency_.CalculateSize(_repeated_dependency_codec);
    538       size += publicDependency_.CalculateSize(_repeated_publicDependency_codec);
    539       size += weakDependency_.CalculateSize(_repeated_weakDependency_codec);
    540       size += messageType_.CalculateSize(_repeated_messageType_codec);
    541       size += enumType_.CalculateSize(_repeated_enumType_codec);
    542       size += service_.CalculateSize(_repeated_service_codec);
    543       size += extension_.CalculateSize(_repeated_extension_codec);
    544       if (options_ != null) {
    545         size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
    546       }
    547       if (sourceCodeInfo_ != null) {
    548         size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceCodeInfo);
    549       }
    550       if (Syntax.Length != 0) {
    551         size += 1 + pb::CodedOutputStream.ComputeStringSize(Syntax);
    552       }
    553       return size;
    554     }
    555 
    556     public void MergeFrom(FileDescriptorProto other) {
    557       if (other == null) {
    558         return;
    559       }
    560       if (other.Name.Length != 0) {
    561         Name = other.Name;
    562       }
    563       if (other.Package.Length != 0) {
    564         Package = other.Package;
    565       }
    566       dependency_.Add(other.dependency_);
    567       publicDependency_.Add(other.publicDependency_);
    568       weakDependency_.Add(other.weakDependency_);
    569       messageType_.Add(other.messageType_);
    570       enumType_.Add(other.enumType_);
    571       service_.Add(other.service_);
    572       extension_.Add(other.extension_);
    573       if (other.options_ != null) {
    574         if (options_ == null) {
    575           options_ = new global::Google.Protobuf.Reflection.FileOptions();
    576         }
    577         Options.MergeFrom(other.Options);
    578       }
    579       if (other.sourceCodeInfo_ != null) {
    580         if (sourceCodeInfo_ == null) {
    581           sourceCodeInfo_ = new global::Google.Protobuf.Reflection.SourceCodeInfo();
    582         }
    583         SourceCodeInfo.MergeFrom(other.SourceCodeInfo);
    584       }
    585       if (other.Syntax.Length != 0) {
    586         Syntax = other.Syntax;
    587       }
    588     }
    589 
    590     public void MergeFrom(pb::CodedInputStream input) {
    591       uint tag;
    592       while ((tag = input.ReadTag()) != 0) {
    593         switch(tag) {
    594           default:
    595             input.SkipLastField();
    596             break;
    597           case 10: {
    598             Name = input.ReadString();
    599             break;
    600           }
    601           case 18: {
    602             Package = input.ReadString();
    603             break;
    604           }
    605           case 26: {
    606             dependency_.AddEntriesFrom(input, _repeated_dependency_codec);
    607             break;
    608           }
    609           case 34: {
    610             messageType_.AddEntriesFrom(input, _repeated_messageType_codec);
    611             break;
    612           }
    613           case 42: {
    614             enumType_.AddEntriesFrom(input, _repeated_enumType_codec);
    615             break;
    616           }
    617           case 50: {
    618             service_.AddEntriesFrom(input, _repeated_service_codec);
    619             break;
    620           }
    621           case 58: {
    622             extension_.AddEntriesFrom(input, _repeated_extension_codec);
    623             break;
    624           }
    625           case 66: {
    626             if (options_ == null) {
    627               options_ = new global::Google.Protobuf.Reflection.FileOptions();
    628             }
    629             input.ReadMessage(options_);
    630             break;
    631           }
    632           case 74: {
    633             if (sourceCodeInfo_ == null) {
    634               sourceCodeInfo_ = new global::Google.Protobuf.Reflection.SourceCodeInfo();
    635             }
    636             input.ReadMessage(sourceCodeInfo_);
    637             break;
    638           }
    639           case 82:
    640           case 80: {
    641             publicDependency_.AddEntriesFrom(input, _repeated_publicDependency_codec);
    642             break;
    643           }
    644           case 90:
    645           case 88: {
    646             weakDependency_.AddEntriesFrom(input, _repeated_weakDependency_codec);
    647             break;
    648           }
    649           case 98: {
    650             Syntax = input.ReadString();
    651             break;
    652           }
    653         }
    654       }
    655     }
    656 
    657   }
    658 
    659   /// <summary>
    660   ///  Describes a message type.
    661   /// </summary>
    662   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    663   internal sealed partial class DescriptorProto : pb::IMessage<DescriptorProto> {
    664     private static readonly pb::MessageParser<DescriptorProto> _parser = new pb::MessageParser<DescriptorProto>(() => new DescriptorProto());
    665     public static pb::MessageParser<DescriptorProto> Parser { get { return _parser; } }
    666 
    667     public static pbr::MessageDescriptor Descriptor {
    668       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[2]; }
    669     }
    670 
    671     pbr::MessageDescriptor pb::IMessage.Descriptor {
    672       get { return Descriptor; }
    673     }
    674 
    675     public DescriptorProto() {
    676       OnConstruction();
    677     }
    678 
    679     partial void OnConstruction();
    680 
    681     public DescriptorProto(DescriptorProto other) : this() {
    682       name_ = other.name_;
    683       field_ = other.field_.Clone();
    684       extension_ = other.extension_.Clone();
    685       nestedType_ = other.nestedType_.Clone();
    686       enumType_ = other.enumType_.Clone();
    687       extensionRange_ = other.extensionRange_.Clone();
    688       oneofDecl_ = other.oneofDecl_.Clone();
    689       Options = other.options_ != null ? other.Options.Clone() : null;
    690       reservedRange_ = other.reservedRange_.Clone();
    691       reservedName_ = other.reservedName_.Clone();
    692     }
    693 
    694     public DescriptorProto Clone() {
    695       return new DescriptorProto(this);
    696     }
    697 
    698     /// <summary>Field number for the "name" field.</summary>
    699     public const int NameFieldNumber = 1;
    700     private string name_ = "";
    701     public string Name {
    702       get { return name_; }
    703       set {
    704         name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
    705       }
    706     }
    707 
    708     /// <summary>Field number for the "field" field.</summary>
    709     public const int FieldFieldNumber = 2;
    710     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FieldDescriptorProto> _repeated_field_codec
    711         = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser);
    712     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> field_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto>();
    713     public pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> Field {
    714       get { return field_; }
    715     }
    716 
    717     /// <summary>Field number for the "extension" field.</summary>
    718     public const int ExtensionFieldNumber = 6;
    719     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FieldDescriptorProto> _repeated_extension_codec
    720         = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser);
    721     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> extension_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto>();
    722     public pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> Extension {
    723       get { return extension_; }
    724     }
    725 
    726     /// <summary>Field number for the "nested_type" field.</summary>
    727     public const int NestedTypeFieldNumber = 3;
    728     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto> _repeated_nestedType_codec
    729         = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.Reflection.DescriptorProto.Parser);
    730     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> nestedType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto>();
    731     public pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> NestedType {
    732       get { return nestedType_; }
    733     }
    734 
    735     /// <summary>Field number for the "enum_type" field.</summary>
    736     public const int EnumTypeFieldNumber = 4;
    737     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.EnumDescriptorProto> _repeated_enumType_codec
    738         = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.Reflection.EnumDescriptorProto.Parser);
    739     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> enumType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto>();
    740     public pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> EnumType {
    741       get { return enumType_; }
    742     }
    743 
    744     /// <summary>Field number for the "extension_range" field.</summary>
    745     public const int ExtensionRangeFieldNumber = 5;
    746     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange> _repeated_extensionRange_codec
    747         = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.Parser);
    748     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange> extensionRange_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange>();
    749     public pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange> ExtensionRange {
    750       get { return extensionRange_; }
    751     }
    752 
    753     /// <summary>Field number for the "oneof_decl" field.</summary>
    754     public const int OneofDeclFieldNumber = 8;
    755     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.OneofDescriptorProto> _repeated_oneofDecl_codec
    756         = pb::FieldCodec.ForMessage(66, global::Google.Protobuf.Reflection.OneofDescriptorProto.Parser);
    757     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.OneofDescriptorProto> oneofDecl_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.OneofDescriptorProto>();
    758     public pbc::RepeatedField<global::Google.Protobuf.Reflection.OneofDescriptorProto> OneofDecl {
    759       get { return oneofDecl_; }
    760     }
    761 
    762     /// <summary>Field number for the "options" field.</summary>
    763     public const int OptionsFieldNumber = 7;
    764     private global::Google.Protobuf.Reflection.MessageOptions options_;
    765     public global::Google.Protobuf.Reflection.MessageOptions Options {
    766       get { return options_; }
    767       set {
    768         options_ = value;
    769       }
    770     }
    771 
    772     /// <summary>Field number for the "reserved_range" field.</summary>
    773     public const int ReservedRangeFieldNumber = 9;
    774     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange> _repeated_reservedRange_codec
    775         = pb::FieldCodec.ForMessage(74, global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.Parser);
    776     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange> reservedRange_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange>();
    777     public pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange> ReservedRange {
    778       get { return reservedRange_; }
    779     }
    780 
    781     /// <summary>Field number for the "reserved_name" field.</summary>
    782     public const int ReservedNameFieldNumber = 10;
    783     private static readonly pb::FieldCodec<string> _repeated_reservedName_codec
    784         = pb::FieldCodec.ForString(82);
    785     private readonly pbc::RepeatedField<string> reservedName_ = new pbc::RepeatedField<string>();
    786     /// <summary>
    787     ///  Reserved field names, which may not be used by fields in the same message.
    788     ///  A given name may only be reserved once.
    789     /// </summary>
    790     public pbc::RepeatedField<string> ReservedName {
    791       get { return reservedName_; }
    792     }
    793 
    794     public override bool Equals(object other) {
    795       return Equals(other as DescriptorProto);
    796     }
    797 
    798     public bool Equals(DescriptorProto other) {
    799       if (ReferenceEquals(other, null)) {
    800         return false;
    801       }
    802       if (ReferenceEquals(other, this)) {
    803         return true;
    804       }
    805       if (Name != other.Name) return false;
    806       if(!field_.Equals(other.field_)) return false;
    807       if(!extension_.Equals(other.extension_)) return false;
    808       if(!nestedType_.Equals(other.nestedType_)) return false;
    809       if(!enumType_.Equals(other.enumType_)) return false;
    810       if(!extensionRange_.Equals(other.extensionRange_)) return false;
    811       if(!oneofDecl_.Equals(other.oneofDecl_)) return false;
    812       if (!object.Equals(Options, other.Options)) return false;
    813       if(!reservedRange_.Equals(other.reservedRange_)) return false;
    814       if(!reservedName_.Equals(other.reservedName_)) return false;
    815       return true;
    816     }
    817 
    818     public override int GetHashCode() {
    819       int hash = 1;
    820       if (Name.Length != 0) hash ^= Name.GetHashCode();
    821       hash ^= field_.GetHashCode();
    822       hash ^= extension_.GetHashCode();
    823       hash ^= nestedType_.GetHashCode();
    824       hash ^= enumType_.GetHashCode();
    825       hash ^= extensionRange_.GetHashCode();
    826       hash ^= oneofDecl_.GetHashCode();
    827       if (options_ != null) hash ^= Options.GetHashCode();
    828       hash ^= reservedRange_.GetHashCode();
    829       hash ^= reservedName_.GetHashCode();
    830       return hash;
    831     }
    832 
    833     public override string ToString() {
    834       return pb::JsonFormatter.ToDiagnosticString(this);
    835     }
    836 
    837     public void WriteTo(pb::CodedOutputStream output) {
    838       if (Name.Length != 0) {
    839         output.WriteRawTag(10);
    840         output.WriteString(Name);
    841       }
    842       field_.WriteTo(output, _repeated_field_codec);
    843       nestedType_.WriteTo(output, _repeated_nestedType_codec);
    844       enumType_.WriteTo(output, _repeated_enumType_codec);
    845       extensionRange_.WriteTo(output, _repeated_extensionRange_codec);
    846       extension_.WriteTo(output, _repeated_extension_codec);
    847       if (options_ != null) {
    848         output.WriteRawTag(58);
    849         output.WriteMessage(Options);
    850       }
    851       oneofDecl_.WriteTo(output, _repeated_oneofDecl_codec);
    852       reservedRange_.WriteTo(output, _repeated_reservedRange_codec);
    853       reservedName_.WriteTo(output, _repeated_reservedName_codec);
    854     }
    855 
    856     public int CalculateSize() {
    857       int size = 0;
    858       if (Name.Length != 0) {
    859         size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
    860       }
    861       size += field_.CalculateSize(_repeated_field_codec);
    862       size += extension_.CalculateSize(_repeated_extension_codec);
    863       size += nestedType_.CalculateSize(_repeated_nestedType_codec);
    864       size += enumType_.CalculateSize(_repeated_enumType_codec);
    865       size += extensionRange_.CalculateSize(_repeated_extensionRange_codec);
    866       size += oneofDecl_.CalculateSize(_repeated_oneofDecl_codec);
    867       if (options_ != null) {
    868         size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
    869       }
    870       size += reservedRange_.CalculateSize(_repeated_reservedRange_codec);
    871       size += reservedName_.CalculateSize(_repeated_reservedName_codec);
    872       return size;
    873     }
    874 
    875     public void MergeFrom(DescriptorProto other) {
    876       if (other == null) {
    877         return;
    878       }
    879       if (other.Name.Length != 0) {
    880         Name = other.Name;
    881       }
    882       field_.Add(other.field_);
    883       extension_.Add(other.extension_);
    884       nestedType_.Add(other.nestedType_);
    885       enumType_.Add(other.enumType_);
    886       extensionRange_.Add(other.extensionRange_);
    887       oneofDecl_.Add(other.oneofDecl_);
    888       if (other.options_ != null) {
    889         if (options_ == null) {
    890           options_ = new global::Google.Protobuf.Reflection.MessageOptions();
    891         }
    892         Options.MergeFrom(other.Options);
    893       }
    894       reservedRange_.Add(other.reservedRange_);
    895       reservedName_.Add(other.reservedName_);
    896     }
    897 
    898     public void MergeFrom(pb::CodedInputStream input) {
    899       uint tag;
    900       while ((tag = input.ReadTag()) != 0) {
    901         switch(tag) {
    902           default:
    903             input.SkipLastField();
    904             break;
    905           case 10: {
    906             Name = input.ReadString();
    907             break;
    908           }
    909           case 18: {
    910             field_.AddEntriesFrom(input, _repeated_field_codec);
    911             break;
    912           }
    913           case 26: {
    914             nestedType_.AddEntriesFrom(input, _repeated_nestedType_codec);
    915             break;
    916           }
    917           case 34: {
    918             enumType_.AddEntriesFrom(input, _repeated_enumType_codec);
    919             break;
    920           }
    921           case 42: {
    922             extensionRange_.AddEntriesFrom(input, _repeated_extensionRange_codec);
    923             break;
    924           }
    925           case 50: {
    926             extension_.AddEntriesFrom(input, _repeated_extension_codec);
    927             break;
    928           }
    929           case 58: {
    930             if (options_ == null) {
    931               options_ = new global::Google.Protobuf.Reflection.MessageOptions();
    932             }
    933             input.ReadMessage(options_);
    934             break;
    935           }
    936           case 66: {
    937             oneofDecl_.AddEntriesFrom(input, _repeated_oneofDecl_codec);
    938             break;
    939           }
    940           case 74: {
    941             reservedRange_.AddEntriesFrom(input, _repeated_reservedRange_codec);
    942             break;
    943           }
    944           case 82: {
    945             reservedName_.AddEntriesFrom(input, _repeated_reservedName_codec);
    946             break;
    947           }
    948         }
    949       }
    950     }
    951 
    952     #region Nested types
    953     /// <summary>Container for nested types declared in the DescriptorProto message type.</summary>
    954     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    955     public static partial class Types {
    956       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    957       internal sealed partial class ExtensionRange : pb::IMessage<ExtensionRange> {
    958         private static readonly pb::MessageParser<ExtensionRange> _parser = new pb::MessageParser<ExtensionRange>(() => new ExtensionRange());
    959         public static pb::MessageParser<ExtensionRange> Parser { get { return _parser; } }
    960 
    961         public static pbr::MessageDescriptor Descriptor {
    962           get { return global::Google.Protobuf.Reflection.DescriptorProto.Descriptor.NestedTypes[0]; }
    963         }
    964 
    965         pbr::MessageDescriptor pb::IMessage.Descriptor {
    966           get { return Descriptor; }
    967         }
    968 
    969         public ExtensionRange() {
    970           OnConstruction();
    971         }
    972 
    973         partial void OnConstruction();
    974 
    975         public ExtensionRange(ExtensionRange other) : this() {
    976           start_ = other.start_;
    977           end_ = other.end_;
    978         }
    979 
    980         public ExtensionRange Clone() {
    981           return new ExtensionRange(this);
    982         }
    983 
    984         /// <summary>Field number for the "start" field.</summary>
    985         public const int StartFieldNumber = 1;
    986         private int start_;
    987         public int Start {
    988           get { return start_; }
    989           set {
    990             start_ = value;
    991           }
    992         }
    993 
    994         /// <summary>Field number for the "end" field.</summary>
    995         public const int EndFieldNumber = 2;
    996         private int end_;
    997         public int End {
    998           get { return end_; }
    999           set {
   1000             end_ = value;
   1001           }
   1002         }
   1003 
   1004         public override bool Equals(object other) {
   1005           return Equals(other as ExtensionRange);
   1006         }
   1007 
   1008         public bool Equals(ExtensionRange other) {
   1009           if (ReferenceEquals(other, null)) {
   1010             return false;
   1011           }
   1012           if (ReferenceEquals(other, this)) {
   1013             return true;
   1014           }
   1015           if (Start != other.Start) return false;
   1016           if (End != other.End) return false;
   1017           return true;
   1018         }
   1019 
   1020         public override int GetHashCode() {
   1021           int hash = 1;
   1022           if (Start != 0) hash ^= Start.GetHashCode();
   1023           if (End != 0) hash ^= End.GetHashCode();
   1024           return hash;
   1025         }
   1026 
   1027         public override string ToString() {
   1028           return pb::JsonFormatter.ToDiagnosticString(this);
   1029         }
   1030 
   1031         public void WriteTo(pb::CodedOutputStream output) {
   1032           if (Start != 0) {
   1033             output.WriteRawTag(8);
   1034             output.WriteInt32(Start);
   1035           }
   1036           if (End != 0) {
   1037             output.WriteRawTag(16);
   1038             output.WriteInt32(End);
   1039           }
   1040         }
   1041 
   1042         public int CalculateSize() {
   1043           int size = 0;
   1044           if (Start != 0) {
   1045             size += 1 + pb::CodedOutputStream.ComputeInt32Size(Start);
   1046           }
   1047           if (End != 0) {
   1048             size += 1 + pb::CodedOutputStream.ComputeInt32Size(End);
   1049           }
   1050           return size;
   1051         }
   1052 
   1053         public void MergeFrom(ExtensionRange other) {
   1054           if (other == null) {
   1055             return;
   1056           }
   1057           if (other.Start != 0) {
   1058             Start = other.Start;
   1059           }
   1060           if (other.End != 0) {
   1061             End = other.End;
   1062           }
   1063         }
   1064 
   1065         public void MergeFrom(pb::CodedInputStream input) {
   1066           uint tag;
   1067           while ((tag = input.ReadTag()) != 0) {
   1068             switch(tag) {
   1069               default:
   1070                 input.SkipLastField();
   1071                 break;
   1072               case 8: {
   1073                 Start = input.ReadInt32();
   1074                 break;
   1075               }
   1076               case 16: {
   1077                 End = input.ReadInt32();
   1078                 break;
   1079               }
   1080             }
   1081           }
   1082         }
   1083 
   1084       }
   1085 
   1086       /// <summary>
   1087       ///  Range of reserved tag numbers. Reserved tag numbers may not be used by
   1088       ///  fields or extension ranges in the same message. Reserved ranges may
   1089       ///  not overlap.
   1090       /// </summary>
   1091       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   1092       internal sealed partial class ReservedRange : pb::IMessage<ReservedRange> {
   1093         private static readonly pb::MessageParser<ReservedRange> _parser = new pb::MessageParser<ReservedRange>(() => new ReservedRange());
   1094         public static pb::MessageParser<ReservedRange> Parser { get { return _parser; } }
   1095 
   1096         public static pbr::MessageDescriptor Descriptor {
   1097           get { return global::Google.Protobuf.Reflection.DescriptorProto.Descriptor.NestedTypes[1]; }
   1098         }
   1099 
   1100         pbr::MessageDescriptor pb::IMessage.Descriptor {
   1101           get { return Descriptor; }
   1102         }
   1103 
   1104         public ReservedRange() {
   1105           OnConstruction();
   1106         }
   1107 
   1108         partial void OnConstruction();
   1109 
   1110         public ReservedRange(ReservedRange other) : this() {
   1111           start_ = other.start_;
   1112           end_ = other.end_;
   1113         }
   1114 
   1115         public ReservedRange Clone() {
   1116           return new ReservedRange(this);
   1117         }
   1118 
   1119         /// <summary>Field number for the "start" field.</summary>
   1120         public const int StartFieldNumber = 1;
   1121         private int start_;
   1122         /// <summary>
   1123         ///  Inclusive.
   1124         /// </summary>
   1125         public int Start {
   1126           get { return start_; }
   1127           set {
   1128             start_ = value;
   1129           }
   1130         }
   1131 
   1132         /// <summary>Field number for the "end" field.</summary>
   1133         public const int EndFieldNumber = 2;
   1134         private int end_;
   1135         /// <summary>
   1136         ///  Exclusive.
   1137         /// </summary>
   1138         public int End {
   1139           get { return end_; }
   1140           set {
   1141             end_ = value;
   1142           }
   1143         }
   1144 
   1145         public override bool Equals(object other) {
   1146           return Equals(other as ReservedRange);
   1147         }
   1148 
   1149         public bool Equals(ReservedRange other) {
   1150           if (ReferenceEquals(other, null)) {
   1151             return false;
   1152           }
   1153           if (ReferenceEquals(other, this)) {
   1154             return true;
   1155           }
   1156           if (Start != other.Start) return false;
   1157           if (End != other.End) return false;
   1158           return true;
   1159         }
   1160 
   1161         public override int GetHashCode() {
   1162           int hash = 1;
   1163           if (Start != 0) hash ^= Start.GetHashCode();
   1164           if (End != 0) hash ^= End.GetHashCode();
   1165           return hash;
   1166         }
   1167 
   1168         public override string ToString() {
   1169           return pb::JsonFormatter.ToDiagnosticString(this);
   1170         }
   1171 
   1172         public void WriteTo(pb::CodedOutputStream output) {
   1173           if (Start != 0) {
   1174             output.WriteRawTag(8);
   1175             output.WriteInt32(Start);
   1176           }
   1177           if (End != 0) {
   1178             output.WriteRawTag(16);
   1179             output.WriteInt32(End);
   1180           }
   1181         }
   1182 
   1183         public int CalculateSize() {
   1184           int size = 0;
   1185           if (Start != 0) {
   1186             size += 1 + pb::CodedOutputStream.ComputeInt32Size(Start);
   1187           }
   1188           if (End != 0) {
   1189             size += 1 + pb::CodedOutputStream.ComputeInt32Size(End);
   1190           }
   1191           return size;
   1192         }
   1193 
   1194         public void MergeFrom(ReservedRange other) {
   1195           if (other == null) {
   1196             return;
   1197           }
   1198           if (other.Start != 0) {
   1199             Start = other.Start;
   1200           }
   1201           if (other.End != 0) {
   1202             End = other.End;
   1203           }
   1204         }
   1205 
   1206         public void MergeFrom(pb::CodedInputStream input) {
   1207           uint tag;
   1208           while ((tag = input.ReadTag()) != 0) {
   1209             switch(tag) {
   1210               default:
   1211                 input.SkipLastField();
   1212                 break;
   1213               case 8: {
   1214                 Start = input.ReadInt32();
   1215                 break;
   1216               }
   1217               case 16: {
   1218                 End = input.ReadInt32();
   1219                 break;
   1220               }
   1221             }
   1222           }
   1223         }
   1224 
   1225       }
   1226 
   1227     }
   1228     #endregion
   1229 
   1230   }
   1231 
   1232   /// <summary>
   1233   ///  Describes a field within a message.
   1234   /// </summary>
   1235   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   1236   internal sealed partial class FieldDescriptorProto : pb::IMessage<FieldDescriptorProto> {
   1237     private static readonly pb::MessageParser<FieldDescriptorProto> _parser = new pb::MessageParser<FieldDescriptorProto>(() => new FieldDescriptorProto());
   1238     public static pb::MessageParser<FieldDescriptorProto> Parser { get { return _parser; } }
   1239 
   1240     public static pbr::MessageDescriptor Descriptor {
   1241       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[3]; }
   1242     }
   1243 
   1244     pbr::MessageDescriptor pb::IMessage.Descriptor {
   1245       get { return Descriptor; }
   1246     }
   1247 
   1248     public FieldDescriptorProto() {
   1249       OnConstruction();
   1250     }
   1251 
   1252     partial void OnConstruction();
   1253 
   1254     public FieldDescriptorProto(FieldDescriptorProto other) : this() {
   1255       name_ = other.name_;
   1256       number_ = other.number_;
   1257       label_ = other.label_;
   1258       type_ = other.type_;
   1259       typeName_ = other.typeName_;
   1260       extendee_ = other.extendee_;
   1261       defaultValue_ = other.defaultValue_;
   1262       oneofIndex_ = other.oneofIndex_;
   1263       jsonName_ = other.jsonName_;
   1264       Options = other.options_ != null ? other.Options.Clone() : null;
   1265     }
   1266 
   1267     public FieldDescriptorProto Clone() {
   1268       return new FieldDescriptorProto(this);
   1269     }
   1270 
   1271     /// <summary>Field number for the "name" field.</summary>
   1272     public const int NameFieldNumber = 1;
   1273     private string name_ = "";
   1274     public string Name {
   1275       get { return name_; }
   1276       set {
   1277         name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   1278       }
   1279     }
   1280 
   1281     /// <summary>Field number for the "number" field.</summary>
   1282     public const int NumberFieldNumber = 3;
   1283     private int number_;
   1284     public int Number {
   1285       get { return number_; }
   1286       set {
   1287         number_ = value;
   1288       }
   1289     }
   1290 
   1291     /// <summary>Field number for the "label" field.</summary>
   1292     public const int LabelFieldNumber = 4;
   1293     private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label label_ = 0;
   1294     public global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label Label {
   1295       get { return label_; }
   1296       set {
   1297         label_ = value;
   1298       }
   1299     }
   1300 
   1301     /// <summary>Field number for the "type" field.</summary>
   1302     public const int TypeFieldNumber = 5;
   1303     private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type type_ = 0;
   1304     /// <summary>
   1305     ///  If type_name is set, this need not be set.  If both this and type_name
   1306     ///  are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
   1307     /// </summary>
   1308     public global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type Type {
   1309       get { return type_; }
   1310       set {
   1311         type_ = value;
   1312       }
   1313     }
   1314 
   1315     /// <summary>Field number for the "type_name" field.</summary>
   1316     public const int TypeNameFieldNumber = 6;
   1317     private string typeName_ = "";
   1318     /// <summary>
   1319     ///  For message and enum types, this is the name of the type.  If the name
   1320     ///  starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
   1321     ///  rules are used to find the type (i.e. first the nested types within this
   1322     ///  message are searched, then within the parent, on up to the root
   1323     ///  namespace).
   1324     /// </summary>
   1325     public string TypeName {
   1326       get { return typeName_; }
   1327       set {
   1328         typeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   1329       }
   1330     }
   1331 
   1332     /// <summary>Field number for the "extendee" field.</summary>
   1333     public const int ExtendeeFieldNumber = 2;
   1334     private string extendee_ = "";
   1335     /// <summary>
   1336     ///  For extensions, this is the name of the type being extended.  It is
   1337     ///  resolved in the same manner as type_name.
   1338     /// </summary>
   1339     public string Extendee {
   1340       get { return extendee_; }
   1341       set {
   1342         extendee_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   1343       }
   1344     }
   1345 
   1346     /// <summary>Field number for the "default_value" field.</summary>
   1347     public const int DefaultValueFieldNumber = 7;
   1348     private string defaultValue_ = "";
   1349     /// <summary>
   1350     ///  For numeric types, contains the original text representation of the value.
   1351     ///  For booleans, "true" or "false".
   1352     ///  For strings, contains the default text contents (not escaped in any way).
   1353     ///  For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
   1354     ///  TODO(kenton):  Base-64 encode?
   1355     /// </summary>
   1356     public string DefaultValue {
   1357       get { return defaultValue_; }
   1358       set {
   1359         defaultValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   1360       }
   1361     }
   1362 
   1363     /// <summary>Field number for the "oneof_index" field.</summary>
   1364     public const int OneofIndexFieldNumber = 9;
   1365     private int oneofIndex_;
   1366     /// <summary>
   1367     ///  If set, gives the index of a oneof in the containing type's oneof_decl
   1368     ///  list.  This field is a member of that oneof.
   1369     /// </summary>
   1370     public int OneofIndex {
   1371       get { return oneofIndex_; }
   1372       set {
   1373         oneofIndex_ = value;
   1374       }
   1375     }
   1376 
   1377     /// <summary>Field number for the "json_name" field.</summary>
   1378     public const int JsonNameFieldNumber = 10;
   1379     private string jsonName_ = "";
   1380     /// <summary>
   1381     ///  JSON name of this field. The value is set by protocol compiler. If the
   1382     ///  user has set a "json_name" option on this field, that option's value
   1383     ///  will be used. Otherwise, it's deduced from the field's name by converting
   1384     ///  it to camelCase.
   1385     /// </summary>
   1386     public string JsonName {
   1387       get { return jsonName_; }
   1388       set {
   1389         jsonName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   1390       }
   1391     }
   1392 
   1393     /// <summary>Field number for the "options" field.</summary>
   1394     public const int OptionsFieldNumber = 8;
   1395     private global::Google.Protobuf.Reflection.FieldOptions options_;
   1396     public global::Google.Protobuf.Reflection.FieldOptions Options {
   1397       get { return options_; }
   1398       set {
   1399         options_ = value;
   1400       }
   1401     }
   1402 
   1403     public override bool Equals(object other) {
   1404       return Equals(other as FieldDescriptorProto);
   1405     }
   1406 
   1407     public bool Equals(FieldDescriptorProto other) {
   1408       if (ReferenceEquals(other, null)) {
   1409         return false;
   1410       }
   1411       if (ReferenceEquals(other, this)) {
   1412         return true;
   1413       }
   1414       if (Name != other.Name) return false;
   1415       if (Number != other.Number) return false;
   1416       if (Label != other.Label) return false;
   1417       if (Type != other.Type) return false;
   1418       if (TypeName != other.TypeName) return false;
   1419       if (Extendee != other.Extendee) return false;
   1420       if (DefaultValue != other.DefaultValue) return false;
   1421       if (OneofIndex != other.OneofIndex) return false;
   1422       if (JsonName != other.JsonName) return false;
   1423       if (!object.Equals(Options, other.Options)) return false;
   1424       return true;
   1425     }
   1426 
   1427     public override int GetHashCode() {
   1428       int hash = 1;
   1429       if (Name.Length != 0) hash ^= Name.GetHashCode();
   1430       if (Number != 0) hash ^= Number.GetHashCode();
   1431       if (Label != 0) hash ^= Label.GetHashCode();
   1432       if (Type != 0) hash ^= Type.GetHashCode();
   1433       if (TypeName.Length != 0) hash ^= TypeName.GetHashCode();
   1434       if (Extendee.Length != 0) hash ^= Extendee.GetHashCode();
   1435       if (DefaultValue.Length != 0) hash ^= DefaultValue.GetHashCode();
   1436       if (OneofIndex != 0) hash ^= OneofIndex.GetHashCode();
   1437       if (JsonName.Length != 0) hash ^= JsonName.GetHashCode();
   1438       if (options_ != null) hash ^= Options.GetHashCode();
   1439       return hash;
   1440     }
   1441 
   1442     public override string ToString() {
   1443       return pb::JsonFormatter.ToDiagnosticString(this);
   1444     }
   1445 
   1446     public void WriteTo(pb::CodedOutputStream output) {
   1447       if (Name.Length != 0) {
   1448         output.WriteRawTag(10);
   1449         output.WriteString(Name);
   1450       }
   1451       if (Extendee.Length != 0) {
   1452         output.WriteRawTag(18);
   1453         output.WriteString(Extendee);
   1454       }
   1455       if (Number != 0) {
   1456         output.WriteRawTag(24);
   1457         output.WriteInt32(Number);
   1458       }
   1459       if (Label != 0) {
   1460         output.WriteRawTag(32);
   1461         output.WriteEnum((int) Label);
   1462       }
   1463       if (Type != 0) {
   1464         output.WriteRawTag(40);
   1465         output.WriteEnum((int) Type);
   1466       }
   1467       if (TypeName.Length != 0) {
   1468         output.WriteRawTag(50);
   1469         output.WriteString(TypeName);
   1470       }
   1471       if (DefaultValue.Length != 0) {
   1472         output.WriteRawTag(58);
   1473         output.WriteString(DefaultValue);
   1474       }
   1475       if (options_ != null) {
   1476         output.WriteRawTag(66);
   1477         output.WriteMessage(Options);
   1478       }
   1479       if (OneofIndex != 0) {
   1480         output.WriteRawTag(72);
   1481         output.WriteInt32(OneofIndex);
   1482       }
   1483       if (JsonName.Length != 0) {
   1484         output.WriteRawTag(82);
   1485         output.WriteString(JsonName);
   1486       }
   1487     }
   1488 
   1489     public int CalculateSize() {
   1490       int size = 0;
   1491       if (Name.Length != 0) {
   1492         size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
   1493       }
   1494       if (Number != 0) {
   1495         size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number);
   1496       }
   1497       if (Label != 0) {
   1498         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Label);
   1499       }
   1500       if (Type != 0) {
   1501         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
   1502       }
   1503       if (TypeName.Length != 0) {
   1504         size += 1 + pb::CodedOutputStream.ComputeStringSize(TypeName);
   1505       }
   1506       if (Extendee.Length != 0) {
   1507         size += 1 + pb::CodedOutputStream.ComputeStringSize(Extendee);
   1508       }
   1509       if (DefaultValue.Length != 0) {
   1510         size += 1 + pb::CodedOutputStream.ComputeStringSize(DefaultValue);
   1511       }
   1512       if (OneofIndex != 0) {
   1513         size += 1 + pb::CodedOutputStream.ComputeInt32Size(OneofIndex);
   1514       }
   1515       if (JsonName.Length != 0) {
   1516         size += 1 + pb::CodedOutputStream.ComputeStringSize(JsonName);
   1517       }
   1518       if (options_ != null) {
   1519         size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
   1520       }
   1521       return size;
   1522     }
   1523 
   1524     public void MergeFrom(FieldDescriptorProto other) {
   1525       if (other == null) {
   1526         return;
   1527       }
   1528       if (other.Name.Length != 0) {
   1529         Name = other.Name;
   1530       }
   1531       if (other.Number != 0) {
   1532         Number = other.Number;
   1533       }
   1534       if (other.Label != 0) {
   1535         Label = other.Label;
   1536       }
   1537       if (other.Type != 0) {
   1538         Type = other.Type;
   1539       }
   1540       if (other.TypeName.Length != 0) {
   1541         TypeName = other.TypeName;
   1542       }
   1543       if (other.Extendee.Length != 0) {
   1544         Extendee = other.Extendee;
   1545       }
   1546       if (other.DefaultValue.Length != 0) {
   1547         DefaultValue = other.DefaultValue;
   1548       }
   1549       if (other.OneofIndex != 0) {
   1550         OneofIndex = other.OneofIndex;
   1551       }
   1552       if (other.JsonName.Length != 0) {
   1553         JsonName = other.JsonName;
   1554       }
   1555       if (other.options_ != null) {
   1556         if (options_ == null) {
   1557           options_ = new global::Google.Protobuf.Reflection.FieldOptions();
   1558         }
   1559         Options.MergeFrom(other.Options);
   1560       }
   1561     }
   1562 
   1563     public void MergeFrom(pb::CodedInputStream input) {
   1564       uint tag;
   1565       while ((tag = input.ReadTag()) != 0) {
   1566         switch(tag) {
   1567           default:
   1568             input.SkipLastField();
   1569             break;
   1570           case 10: {
   1571             Name = input.ReadString();
   1572             break;
   1573           }
   1574           case 18: {
   1575             Extendee = input.ReadString();
   1576             break;
   1577           }
   1578           case 24: {
   1579             Number = input.ReadInt32();
   1580             break;
   1581           }
   1582           case 32: {
   1583             label_ = (global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label) input.ReadEnum();
   1584             break;
   1585           }
   1586           case 40: {
   1587             type_ = (global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type) input.ReadEnum();
   1588             break;
   1589           }
   1590           case 50: {
   1591             TypeName = input.ReadString();
   1592             break;
   1593           }
   1594           case 58: {
   1595             DefaultValue = input.ReadString();
   1596             break;
   1597           }
   1598           case 66: {
   1599             if (options_ == null) {
   1600               options_ = new global::Google.Protobuf.Reflection.FieldOptions();
   1601             }
   1602             input.ReadMessage(options_);
   1603             break;
   1604           }
   1605           case 72: {
   1606             OneofIndex = input.ReadInt32();
   1607             break;
   1608           }
   1609           case 82: {
   1610             JsonName = input.ReadString();
   1611             break;
   1612           }
   1613         }
   1614       }
   1615     }
   1616 
   1617     #region Nested types
   1618     /// <summary>Container for nested types declared in the FieldDescriptorProto message type.</summary>
   1619     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   1620     public static partial class Types {
   1621       internal enum Type {
   1622         /// <summary>
   1623         ///  0 is reserved for errors.
   1624         ///  Order is weird for historical reasons.
   1625         /// </summary>
   1626         [pbr::OriginalName("TYPE_DOUBLE")] Double = 1,
   1627         [pbr::OriginalName("TYPE_FLOAT")] Float = 2,
   1628         /// <summary>
   1629         ///  Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
   1630         ///  negative values are likely.
   1631         /// </summary>
   1632         [pbr::OriginalName("TYPE_INT64")] Int64 = 3,
   1633         [pbr::OriginalName("TYPE_UINT64")] Uint64 = 4,
   1634         /// <summary>
   1635         ///  Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
   1636         ///  negative values are likely.
   1637         /// </summary>
   1638         [pbr::OriginalName("TYPE_INT32")] Int32 = 5,
   1639         [pbr::OriginalName("TYPE_FIXED64")] Fixed64 = 6,
   1640         [pbr::OriginalName("TYPE_FIXED32")] Fixed32 = 7,
   1641         [pbr::OriginalName("TYPE_BOOL")] Bool = 8,
   1642         [pbr::OriginalName("TYPE_STRING")] String = 9,
   1643         /// <summary>
   1644         ///  Tag-delimited aggregate.
   1645         /// </summary>
   1646         [pbr::OriginalName("TYPE_GROUP")] Group = 10,
   1647         /// <summary>
   1648         ///  Length-delimited aggregate.
   1649         /// </summary>
   1650         [pbr::OriginalName("TYPE_MESSAGE")] Message = 11,
   1651         /// <summary>
   1652         ///  New in version 2.
   1653         /// </summary>
   1654         [pbr::OriginalName("TYPE_BYTES")] Bytes = 12,
   1655         [pbr::OriginalName("TYPE_UINT32")] Uint32 = 13,
   1656         [pbr::OriginalName("TYPE_ENUM")] Enum = 14,
   1657         [pbr::OriginalName("TYPE_SFIXED32")] Sfixed32 = 15,
   1658         [pbr::OriginalName("TYPE_SFIXED64")] Sfixed64 = 16,
   1659         /// <summary>
   1660         ///  Uses ZigZag encoding.
   1661         /// </summary>
   1662         [pbr::OriginalName("TYPE_SINT32")] Sint32 = 17,
   1663         /// <summary>
   1664         ///  Uses ZigZag encoding.
   1665         /// </summary>
   1666         [pbr::OriginalName("TYPE_SINT64")] Sint64 = 18,
   1667       }
   1668 
   1669       internal enum Label {
   1670         /// <summary>
   1671         ///  0 is reserved for errors
   1672         /// </summary>
   1673         [pbr::OriginalName("LABEL_OPTIONAL")] Optional = 1,
   1674         [pbr::OriginalName("LABEL_REQUIRED")] Required = 2,
   1675         /// <summary>
   1676         ///  TODO(sanjay): Should we add LABEL_MAP?
   1677         /// </summary>
   1678         [pbr::OriginalName("LABEL_REPEATED")] Repeated = 3,
   1679       }
   1680 
   1681     }
   1682     #endregion
   1683 
   1684   }
   1685 
   1686   /// <summary>
   1687   ///  Describes a oneof.
   1688   /// </summary>
   1689   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   1690   internal sealed partial class OneofDescriptorProto : pb::IMessage<OneofDescriptorProto> {
   1691     private static readonly pb::MessageParser<OneofDescriptorProto> _parser = new pb::MessageParser<OneofDescriptorProto>(() => new OneofDescriptorProto());
   1692     public static pb::MessageParser<OneofDescriptorProto> Parser { get { return _parser; } }
   1693 
   1694     public static pbr::MessageDescriptor Descriptor {
   1695       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[4]; }
   1696     }
   1697 
   1698     pbr::MessageDescriptor pb::IMessage.Descriptor {
   1699       get { return Descriptor; }
   1700     }
   1701 
   1702     public OneofDescriptorProto() {
   1703       OnConstruction();
   1704     }
   1705 
   1706     partial void OnConstruction();
   1707 
   1708     public OneofDescriptorProto(OneofDescriptorProto other) : this() {
   1709       name_ = other.name_;
   1710     }
   1711 
   1712     public OneofDescriptorProto Clone() {
   1713       return new OneofDescriptorProto(this);
   1714     }
   1715 
   1716     /// <summary>Field number for the "name" field.</summary>
   1717     public const int NameFieldNumber = 1;
   1718     private string name_ = "";
   1719     public string Name {
   1720       get { return name_; }
   1721       set {
   1722         name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   1723       }
   1724     }
   1725 
   1726     public override bool Equals(object other) {
   1727       return Equals(other as OneofDescriptorProto);
   1728     }
   1729 
   1730     public bool Equals(OneofDescriptorProto other) {
   1731       if (ReferenceEquals(other, null)) {
   1732         return false;
   1733       }
   1734       if (ReferenceEquals(other, this)) {
   1735         return true;
   1736       }
   1737       if (Name != other.Name) return false;
   1738       return true;
   1739     }
   1740 
   1741     public override int GetHashCode() {
   1742       int hash = 1;
   1743       if (Name.Length != 0) hash ^= Name.GetHashCode();
   1744       return hash;
   1745     }
   1746 
   1747     public override string ToString() {
   1748       return pb::JsonFormatter.ToDiagnosticString(this);
   1749     }
   1750 
   1751     public void WriteTo(pb::CodedOutputStream output) {
   1752       if (Name.Length != 0) {
   1753         output.WriteRawTag(10);
   1754         output.WriteString(Name);
   1755       }
   1756     }
   1757 
   1758     public int CalculateSize() {
   1759       int size = 0;
   1760       if (Name.Length != 0) {
   1761         size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
   1762       }
   1763       return size;
   1764     }
   1765 
   1766     public void MergeFrom(OneofDescriptorProto other) {
   1767       if (other == null) {
   1768         return;
   1769       }
   1770       if (other.Name.Length != 0) {
   1771         Name = other.Name;
   1772       }
   1773     }
   1774 
   1775     public void MergeFrom(pb::CodedInputStream input) {
   1776       uint tag;
   1777       while ((tag = input.ReadTag()) != 0) {
   1778         switch(tag) {
   1779           default:
   1780             input.SkipLastField();
   1781             break;
   1782           case 10: {
   1783             Name = input.ReadString();
   1784             break;
   1785           }
   1786         }
   1787       }
   1788     }
   1789 
   1790   }
   1791 
   1792   /// <summary>
   1793   ///  Describes an enum type.
   1794   /// </summary>
   1795   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   1796   internal sealed partial class EnumDescriptorProto : pb::IMessage<EnumDescriptorProto> {
   1797     private static readonly pb::MessageParser<EnumDescriptorProto> _parser = new pb::MessageParser<EnumDescriptorProto>(() => new EnumDescriptorProto());
   1798     public static pb::MessageParser<EnumDescriptorProto> Parser { get { return _parser; } }
   1799 
   1800     public static pbr::MessageDescriptor Descriptor {
   1801       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[5]; }
   1802     }
   1803 
   1804     pbr::MessageDescriptor pb::IMessage.Descriptor {
   1805       get { return Descriptor; }
   1806     }
   1807 
   1808     public EnumDescriptorProto() {
   1809       OnConstruction();
   1810     }
   1811 
   1812     partial void OnConstruction();
   1813 
   1814     public EnumDescriptorProto(EnumDescriptorProto other) : this() {
   1815       name_ = other.name_;
   1816       value_ = other.value_.Clone();
   1817       Options = other.options_ != null ? other.Options.Clone() : null;
   1818     }
   1819 
   1820     public EnumDescriptorProto Clone() {
   1821       return new EnumDescriptorProto(this);
   1822     }
   1823 
   1824     /// <summary>Field number for the "name" field.</summary>
   1825     public const int NameFieldNumber = 1;
   1826     private string name_ = "";
   1827     public string Name {
   1828       get { return name_; }
   1829       set {
   1830         name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   1831       }
   1832     }
   1833 
   1834     /// <summary>Field number for the "value" field.</summary>
   1835     public const int ValueFieldNumber = 2;
   1836     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.EnumValueDescriptorProto> _repeated_value_codec
   1837         = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.EnumValueDescriptorProto.Parser);
   1838     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumValueDescriptorProto> value_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumValueDescriptorProto>();
   1839     public pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumValueDescriptorProto> Value {
   1840       get { return value_; }
   1841     }
   1842 
   1843     /// <summary>Field number for the "options" field.</summary>
   1844     public const int OptionsFieldNumber = 3;
   1845     private global::Google.Protobuf.Reflection.EnumOptions options_;
   1846     public global::Google.Protobuf.Reflection.EnumOptions Options {
   1847       get { return options_; }
   1848       set {
   1849         options_ = value;
   1850       }
   1851     }
   1852 
   1853     public override bool Equals(object other) {
   1854       return Equals(other as EnumDescriptorProto);
   1855     }
   1856 
   1857     public bool Equals(EnumDescriptorProto other) {
   1858       if (ReferenceEquals(other, null)) {
   1859         return false;
   1860       }
   1861       if (ReferenceEquals(other, this)) {
   1862         return true;
   1863       }
   1864       if (Name != other.Name) return false;
   1865       if(!value_.Equals(other.value_)) return false;
   1866       if (!object.Equals(Options, other.Options)) return false;
   1867       return true;
   1868     }
   1869 
   1870     public override int GetHashCode() {
   1871       int hash = 1;
   1872       if (Name.Length != 0) hash ^= Name.GetHashCode();
   1873       hash ^= value_.GetHashCode();
   1874       if (options_ != null) hash ^= Options.GetHashCode();
   1875       return hash;
   1876     }
   1877 
   1878     public override string ToString() {
   1879       return pb::JsonFormatter.ToDiagnosticString(this);
   1880     }
   1881 
   1882     public void WriteTo(pb::CodedOutputStream output) {
   1883       if (Name.Length != 0) {
   1884         output.WriteRawTag(10);
   1885         output.WriteString(Name);
   1886       }
   1887       value_.WriteTo(output, _repeated_value_codec);
   1888       if (options_ != null) {
   1889         output.WriteRawTag(26);
   1890         output.WriteMessage(Options);
   1891       }
   1892     }
   1893 
   1894     public int CalculateSize() {
   1895       int size = 0;
   1896       if (Name.Length != 0) {
   1897         size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
   1898       }
   1899       size += value_.CalculateSize(_repeated_value_codec);
   1900       if (options_ != null) {
   1901         size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
   1902       }
   1903       return size;
   1904     }
   1905 
   1906     public void MergeFrom(EnumDescriptorProto other) {
   1907       if (other == null) {
   1908         return;
   1909       }
   1910       if (other.Name.Length != 0) {
   1911         Name = other.Name;
   1912       }
   1913       value_.Add(other.value_);
   1914       if (other.options_ != null) {
   1915         if (options_ == null) {
   1916           options_ = new global::Google.Protobuf.Reflection.EnumOptions();
   1917         }
   1918         Options.MergeFrom(other.Options);
   1919       }
   1920     }
   1921 
   1922     public void MergeFrom(pb::CodedInputStream input) {
   1923       uint tag;
   1924       while ((tag = input.ReadTag()) != 0) {
   1925         switch(tag) {
   1926           default:
   1927             input.SkipLastField();
   1928             break;
   1929           case 10: {
   1930             Name = input.ReadString();
   1931             break;
   1932           }
   1933           case 18: {
   1934             value_.AddEntriesFrom(input, _repeated_value_codec);
   1935             break;
   1936           }
   1937           case 26: {
   1938             if (options_ == null) {
   1939               options_ = new global::Google.Protobuf.Reflection.EnumOptions();
   1940             }
   1941             input.ReadMessage(options_);
   1942             break;
   1943           }
   1944         }
   1945       }
   1946     }
   1947 
   1948   }
   1949 
   1950   /// <summary>
   1951   ///  Describes a value within an enum.
   1952   /// </summary>
   1953   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   1954   internal sealed partial class EnumValueDescriptorProto : pb::IMessage<EnumValueDescriptorProto> {
   1955     private static readonly pb::MessageParser<EnumValueDescriptorProto> _parser = new pb::MessageParser<EnumValueDescriptorProto>(() => new EnumValueDescriptorProto());
   1956     public static pb::MessageParser<EnumValueDescriptorProto> Parser { get { return _parser; } }
   1957 
   1958     public static pbr::MessageDescriptor Descriptor {
   1959       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[6]; }
   1960     }
   1961 
   1962     pbr::MessageDescriptor pb::IMessage.Descriptor {
   1963       get { return Descriptor; }
   1964     }
   1965 
   1966     public EnumValueDescriptorProto() {
   1967       OnConstruction();
   1968     }
   1969 
   1970     partial void OnConstruction();
   1971 
   1972     public EnumValueDescriptorProto(EnumValueDescriptorProto other) : this() {
   1973       name_ = other.name_;
   1974       number_ = other.number_;
   1975       Options = other.options_ != null ? other.Options.Clone() : null;
   1976     }
   1977 
   1978     public EnumValueDescriptorProto Clone() {
   1979       return new EnumValueDescriptorProto(this);
   1980     }
   1981 
   1982     /// <summary>Field number for the "name" field.</summary>
   1983     public const int NameFieldNumber = 1;
   1984     private string name_ = "";
   1985     public string Name {
   1986       get { return name_; }
   1987       set {
   1988         name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   1989       }
   1990     }
   1991 
   1992     /// <summary>Field number for the "number" field.</summary>
   1993     public const int NumberFieldNumber = 2;
   1994     private int number_;
   1995     public int Number {
   1996       get { return number_; }
   1997       set {
   1998         number_ = value;
   1999       }
   2000     }
   2001 
   2002     /// <summary>Field number for the "options" field.</summary>
   2003     public const int OptionsFieldNumber = 3;
   2004     private global::Google.Protobuf.Reflection.EnumValueOptions options_;
   2005     public global::Google.Protobuf.Reflection.EnumValueOptions Options {
   2006       get { return options_; }
   2007       set {
   2008         options_ = value;
   2009       }
   2010     }
   2011 
   2012     public override bool Equals(object other) {
   2013       return Equals(other as EnumValueDescriptorProto);
   2014     }
   2015 
   2016     public bool Equals(EnumValueDescriptorProto other) {
   2017       if (ReferenceEquals(other, null)) {
   2018         return false;
   2019       }
   2020       if (ReferenceEquals(other, this)) {
   2021         return true;
   2022       }
   2023       if (Name != other.Name) return false;
   2024       if (Number != other.Number) return false;
   2025       if (!object.Equals(Options, other.Options)) return false;
   2026       return true;
   2027     }
   2028 
   2029     public override int GetHashCode() {
   2030       int hash = 1;
   2031       if (Name.Length != 0) hash ^= Name.GetHashCode();
   2032       if (Number != 0) hash ^= Number.GetHashCode();
   2033       if (options_ != null) hash ^= Options.GetHashCode();
   2034       return hash;
   2035     }
   2036 
   2037     public override string ToString() {
   2038       return pb::JsonFormatter.ToDiagnosticString(this);
   2039     }
   2040 
   2041     public void WriteTo(pb::CodedOutputStream output) {
   2042       if (Name.Length != 0) {
   2043         output.WriteRawTag(10);
   2044         output.WriteString(Name);
   2045       }
   2046       if (Number != 0) {
   2047         output.WriteRawTag(16);
   2048         output.WriteInt32(Number);
   2049       }
   2050       if (options_ != null) {
   2051         output.WriteRawTag(26);
   2052         output.WriteMessage(Options);
   2053       }
   2054     }
   2055 
   2056     public int CalculateSize() {
   2057       int size = 0;
   2058       if (Name.Length != 0) {
   2059         size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
   2060       }
   2061       if (Number != 0) {
   2062         size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number);
   2063       }
   2064       if (options_ != null) {
   2065         size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
   2066       }
   2067       return size;
   2068     }
   2069 
   2070     public void MergeFrom(EnumValueDescriptorProto other) {
   2071       if (other == null) {
   2072         return;
   2073       }
   2074       if (other.Name.Length != 0) {
   2075         Name = other.Name;
   2076       }
   2077       if (other.Number != 0) {
   2078         Number = other.Number;
   2079       }
   2080       if (other.options_ != null) {
   2081         if (options_ == null) {
   2082           options_ = new global::Google.Protobuf.Reflection.EnumValueOptions();
   2083         }
   2084         Options.MergeFrom(other.Options);
   2085       }
   2086     }
   2087 
   2088     public void MergeFrom(pb::CodedInputStream input) {
   2089       uint tag;
   2090       while ((tag = input.ReadTag()) != 0) {
   2091         switch(tag) {
   2092           default:
   2093             input.SkipLastField();
   2094             break;
   2095           case 10: {
   2096             Name = input.ReadString();
   2097             break;
   2098           }
   2099           case 16: {
   2100             Number = input.ReadInt32();
   2101             break;
   2102           }
   2103           case 26: {
   2104             if (options_ == null) {
   2105               options_ = new global::Google.Protobuf.Reflection.EnumValueOptions();
   2106             }
   2107             input.ReadMessage(options_);
   2108             break;
   2109           }
   2110         }
   2111       }
   2112     }
   2113 
   2114   }
   2115 
   2116   /// <summary>
   2117   ///  Describes a service.
   2118   /// </summary>
   2119   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   2120   internal sealed partial class ServiceDescriptorProto : pb::IMessage<ServiceDescriptorProto> {
   2121     private static readonly pb::MessageParser<ServiceDescriptorProto> _parser = new pb::MessageParser<ServiceDescriptorProto>(() => new ServiceDescriptorProto());
   2122     public static pb::MessageParser<ServiceDescriptorProto> Parser { get { return _parser; } }
   2123 
   2124     public static pbr::MessageDescriptor Descriptor {
   2125       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[7]; }
   2126     }
   2127 
   2128     pbr::MessageDescriptor pb::IMessage.Descriptor {
   2129       get { return Descriptor; }
   2130     }
   2131 
   2132     public ServiceDescriptorProto() {
   2133       OnConstruction();
   2134     }
   2135 
   2136     partial void OnConstruction();
   2137 
   2138     public ServiceDescriptorProto(ServiceDescriptorProto other) : this() {
   2139       name_ = other.name_;
   2140       method_ = other.method_.Clone();
   2141       Options = other.options_ != null ? other.Options.Clone() : null;
   2142     }
   2143 
   2144     public ServiceDescriptorProto Clone() {
   2145       return new ServiceDescriptorProto(this);
   2146     }
   2147 
   2148     /// <summary>Field number for the "name" field.</summary>
   2149     public const int NameFieldNumber = 1;
   2150     private string name_ = "";
   2151     public string Name {
   2152       get { return name_; }
   2153       set {
   2154         name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   2155       }
   2156     }
   2157 
   2158     /// <summary>Field number for the "method" field.</summary>
   2159     public const int MethodFieldNumber = 2;
   2160     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.MethodDescriptorProto> _repeated_method_codec
   2161         = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.MethodDescriptorProto.Parser);
   2162     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.MethodDescriptorProto> method_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.MethodDescriptorProto>();
   2163     public pbc::RepeatedField<global::Google.Protobuf.Reflection.MethodDescriptorProto> Method {
   2164       get { return method_; }
   2165     }
   2166 
   2167     /// <summary>Field number for the "options" field.</summary>
   2168     public const int OptionsFieldNumber = 3;
   2169     private global::Google.Protobuf.Reflection.ServiceOptions options_;
   2170     public global::Google.Protobuf.Reflection.ServiceOptions Options {
   2171       get { return options_; }
   2172       set {
   2173         options_ = value;
   2174       }
   2175     }
   2176 
   2177     public override bool Equals(object other) {
   2178       return Equals(other as ServiceDescriptorProto);
   2179     }
   2180 
   2181     public bool Equals(ServiceDescriptorProto other) {
   2182       if (ReferenceEquals(other, null)) {
   2183         return false;
   2184       }
   2185       if (ReferenceEquals(other, this)) {
   2186         return true;
   2187       }
   2188       if (Name != other.Name) return false;
   2189       if(!method_.Equals(other.method_)) return false;
   2190       if (!object.Equals(Options, other.Options)) return false;
   2191       return true;
   2192     }
   2193 
   2194     public override int GetHashCode() {
   2195       int hash = 1;
   2196       if (Name.Length != 0) hash ^= Name.GetHashCode();
   2197       hash ^= method_.GetHashCode();
   2198       if (options_ != null) hash ^= Options.GetHashCode();
   2199       return hash;
   2200     }
   2201 
   2202     public override string ToString() {
   2203       return pb::JsonFormatter.ToDiagnosticString(this);
   2204     }
   2205 
   2206     public void WriteTo(pb::CodedOutputStream output) {
   2207       if (Name.Length != 0) {
   2208         output.WriteRawTag(10);
   2209         output.WriteString(Name);
   2210       }
   2211       method_.WriteTo(output, _repeated_method_codec);
   2212       if (options_ != null) {
   2213         output.WriteRawTag(26);
   2214         output.WriteMessage(Options);
   2215       }
   2216     }
   2217 
   2218     public int CalculateSize() {
   2219       int size = 0;
   2220       if (Name.Length != 0) {
   2221         size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
   2222       }
   2223       size += method_.CalculateSize(_repeated_method_codec);
   2224       if (options_ != null) {
   2225         size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
   2226       }
   2227       return size;
   2228     }
   2229 
   2230     public void MergeFrom(ServiceDescriptorProto other) {
   2231       if (other == null) {
   2232         return;
   2233       }
   2234       if (other.Name.Length != 0) {
   2235         Name = other.Name;
   2236       }
   2237       method_.Add(other.method_);
   2238       if (other.options_ != null) {
   2239         if (options_ == null) {
   2240           options_ = new global::Google.Protobuf.Reflection.ServiceOptions();
   2241         }
   2242         Options.MergeFrom(other.Options);
   2243       }
   2244     }
   2245 
   2246     public void MergeFrom(pb::CodedInputStream input) {
   2247       uint tag;
   2248       while ((tag = input.ReadTag()) != 0) {
   2249         switch(tag) {
   2250           default:
   2251             input.SkipLastField();
   2252             break;
   2253           case 10: {
   2254             Name = input.ReadString();
   2255             break;
   2256           }
   2257           case 18: {
   2258             method_.AddEntriesFrom(input, _repeated_method_codec);
   2259             break;
   2260           }
   2261           case 26: {
   2262             if (options_ == null) {
   2263               options_ = new global::Google.Protobuf.Reflection.ServiceOptions();
   2264             }
   2265             input.ReadMessage(options_);
   2266             break;
   2267           }
   2268         }
   2269       }
   2270     }
   2271 
   2272   }
   2273 
   2274   /// <summary>
   2275   ///  Describes a method of a service.
   2276   /// </summary>
   2277   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   2278   internal sealed partial class MethodDescriptorProto : pb::IMessage<MethodDescriptorProto> {
   2279     private static readonly pb::MessageParser<MethodDescriptorProto> _parser = new pb::MessageParser<MethodDescriptorProto>(() => new MethodDescriptorProto());
   2280     public static pb::MessageParser<MethodDescriptorProto> Parser { get { return _parser; } }
   2281 
   2282     public static pbr::MessageDescriptor Descriptor {
   2283       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[8]; }
   2284     }
   2285 
   2286     pbr::MessageDescriptor pb::IMessage.Descriptor {
   2287       get { return Descriptor; }
   2288     }
   2289 
   2290     public MethodDescriptorProto() {
   2291       OnConstruction();
   2292     }
   2293 
   2294     partial void OnConstruction();
   2295 
   2296     public MethodDescriptorProto(MethodDescriptorProto other) : this() {
   2297       name_ = other.name_;
   2298       inputType_ = other.inputType_;
   2299       outputType_ = other.outputType_;
   2300       Options = other.options_ != null ? other.Options.Clone() : null;
   2301       clientStreaming_ = other.clientStreaming_;
   2302       serverStreaming_ = other.serverStreaming_;
   2303     }
   2304 
   2305     public MethodDescriptorProto Clone() {
   2306       return new MethodDescriptorProto(this);
   2307     }
   2308 
   2309     /// <summary>Field number for the "name" field.</summary>
   2310     public const int NameFieldNumber = 1;
   2311     private string name_ = "";
   2312     public string Name {
   2313       get { return name_; }
   2314       set {
   2315         name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   2316       }
   2317     }
   2318 
   2319     /// <summary>Field number for the "input_type" field.</summary>
   2320     public const int InputTypeFieldNumber = 2;
   2321     private string inputType_ = "";
   2322     /// <summary>
   2323     ///  Input and output type names.  These are resolved in the same way as
   2324     ///  FieldDescriptorProto.type_name, but must refer to a message type.
   2325     /// </summary>
   2326     public string InputType {
   2327       get { return inputType_; }
   2328       set {
   2329         inputType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   2330       }
   2331     }
   2332 
   2333     /// <summary>Field number for the "output_type" field.</summary>
   2334     public const int OutputTypeFieldNumber = 3;
   2335     private string outputType_ = "";
   2336     public string OutputType {
   2337       get { return outputType_; }
   2338       set {
   2339         outputType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   2340       }
   2341     }
   2342 
   2343     /// <summary>Field number for the "options" field.</summary>
   2344     public const int OptionsFieldNumber = 4;
   2345     private global::Google.Protobuf.Reflection.MethodOptions options_;
   2346     public global::Google.Protobuf.Reflection.MethodOptions Options {
   2347       get { return options_; }
   2348       set {
   2349         options_ = value;
   2350       }
   2351     }
   2352 
   2353     /// <summary>Field number for the "client_streaming" field.</summary>
   2354     public const int ClientStreamingFieldNumber = 5;
   2355     private bool clientStreaming_;
   2356     /// <summary>
   2357     ///  Identifies if client streams multiple client messages
   2358     /// </summary>
   2359     public bool ClientStreaming {
   2360       get { return clientStreaming_; }
   2361       set {
   2362         clientStreaming_ = value;
   2363       }
   2364     }
   2365 
   2366     /// <summary>Field number for the "server_streaming" field.</summary>
   2367     public const int ServerStreamingFieldNumber = 6;
   2368     private bool serverStreaming_;
   2369     /// <summary>
   2370     ///  Identifies if server streams multiple server messages
   2371     /// </summary>
   2372     public bool ServerStreaming {
   2373       get { return serverStreaming_; }
   2374       set {
   2375         serverStreaming_ = value;
   2376       }
   2377     }
   2378 
   2379     public override bool Equals(object other) {
   2380       return Equals(other as MethodDescriptorProto);
   2381     }
   2382 
   2383     public bool Equals(MethodDescriptorProto other) {
   2384       if (ReferenceEquals(other, null)) {
   2385         return false;
   2386       }
   2387       if (ReferenceEquals(other, this)) {
   2388         return true;
   2389       }
   2390       if (Name != other.Name) return false;
   2391       if (InputType != other.InputType) return false;
   2392       if (OutputType != other.OutputType) return false;
   2393       if (!object.Equals(Options, other.Options)) return false;
   2394       if (ClientStreaming != other.ClientStreaming) return false;
   2395       if (ServerStreaming != other.ServerStreaming) return false;
   2396       return true;
   2397     }
   2398 
   2399     public override int GetHashCode() {
   2400       int hash = 1;
   2401       if (Name.Length != 0) hash ^= Name.GetHashCode();
   2402       if (InputType.Length != 0) hash ^= InputType.GetHashCode();
   2403       if (OutputType.Length != 0) hash ^= OutputType.GetHashCode();
   2404       if (options_ != null) hash ^= Options.GetHashCode();
   2405       if (ClientStreaming != false) hash ^= ClientStreaming.GetHashCode();
   2406       if (ServerStreaming != false) hash ^= ServerStreaming.GetHashCode();
   2407       return hash;
   2408     }
   2409 
   2410     public override string ToString() {
   2411       return pb::JsonFormatter.ToDiagnosticString(this);
   2412     }
   2413 
   2414     public void WriteTo(pb::CodedOutputStream output) {
   2415       if (Name.Length != 0) {
   2416         output.WriteRawTag(10);
   2417         output.WriteString(Name);
   2418       }
   2419       if (InputType.Length != 0) {
   2420         output.WriteRawTag(18);
   2421         output.WriteString(InputType);
   2422       }
   2423       if (OutputType.Length != 0) {
   2424         output.WriteRawTag(26);
   2425         output.WriteString(OutputType);
   2426       }
   2427       if (options_ != null) {
   2428         output.WriteRawTag(34);
   2429         output.WriteMessage(Options);
   2430       }
   2431       if (ClientStreaming != false) {
   2432         output.WriteRawTag(40);
   2433         output.WriteBool(ClientStreaming);
   2434       }
   2435       if (ServerStreaming != false) {
   2436         output.WriteRawTag(48);
   2437         output.WriteBool(ServerStreaming);
   2438       }
   2439     }
   2440 
   2441     public int CalculateSize() {
   2442       int size = 0;
   2443       if (Name.Length != 0) {
   2444         size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
   2445       }
   2446       if (InputType.Length != 0) {
   2447         size += 1 + pb::CodedOutputStream.ComputeStringSize(InputType);
   2448       }
   2449       if (OutputType.Length != 0) {
   2450         size += 1 + pb::CodedOutputStream.ComputeStringSize(OutputType);
   2451       }
   2452       if (options_ != null) {
   2453         size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
   2454       }
   2455       if (ClientStreaming != false) {
   2456         size += 1 + 1;
   2457       }
   2458       if (ServerStreaming != false) {
   2459         size += 1 + 1;
   2460       }
   2461       return size;
   2462     }
   2463 
   2464     public void MergeFrom(MethodDescriptorProto other) {
   2465       if (other == null) {
   2466         return;
   2467       }
   2468       if (other.Name.Length != 0) {
   2469         Name = other.Name;
   2470       }
   2471       if (other.InputType.Length != 0) {
   2472         InputType = other.InputType;
   2473       }
   2474       if (other.OutputType.Length != 0) {
   2475         OutputType = other.OutputType;
   2476       }
   2477       if (other.options_ != null) {
   2478         if (options_ == null) {
   2479           options_ = new global::Google.Protobuf.Reflection.MethodOptions();
   2480         }
   2481         Options.MergeFrom(other.Options);
   2482       }
   2483       if (other.ClientStreaming != false) {
   2484         ClientStreaming = other.ClientStreaming;
   2485       }
   2486       if (other.ServerStreaming != false) {
   2487         ServerStreaming = other.ServerStreaming;
   2488       }
   2489     }
   2490 
   2491     public void MergeFrom(pb::CodedInputStream input) {
   2492       uint tag;
   2493       while ((tag = input.ReadTag()) != 0) {
   2494         switch(tag) {
   2495           default:
   2496             input.SkipLastField();
   2497             break;
   2498           case 10: {
   2499             Name = input.ReadString();
   2500             break;
   2501           }
   2502           case 18: {
   2503             InputType = input.ReadString();
   2504             break;
   2505           }
   2506           case 26: {
   2507             OutputType = input.ReadString();
   2508             break;
   2509           }
   2510           case 34: {
   2511             if (options_ == null) {
   2512               options_ = new global::Google.Protobuf.Reflection.MethodOptions();
   2513             }
   2514             input.ReadMessage(options_);
   2515             break;
   2516           }
   2517           case 40: {
   2518             ClientStreaming = input.ReadBool();
   2519             break;
   2520           }
   2521           case 48: {
   2522             ServerStreaming = input.ReadBool();
   2523             break;
   2524           }
   2525         }
   2526       }
   2527     }
   2528 
   2529   }
   2530 
   2531   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   2532   internal sealed partial class FileOptions : pb::IMessage<FileOptions> {
   2533     private static readonly pb::MessageParser<FileOptions> _parser = new pb::MessageParser<FileOptions>(() => new FileOptions());
   2534     public static pb::MessageParser<FileOptions> Parser { get { return _parser; } }
   2535 
   2536     public static pbr::MessageDescriptor Descriptor {
   2537       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[9]; }
   2538     }
   2539 
   2540     pbr::MessageDescriptor pb::IMessage.Descriptor {
   2541       get { return Descriptor; }
   2542     }
   2543 
   2544     public FileOptions() {
   2545       OnConstruction();
   2546     }
   2547 
   2548     partial void OnConstruction();
   2549 
   2550     public FileOptions(FileOptions other) : this() {
   2551       javaPackage_ = other.javaPackage_;
   2552       javaOuterClassname_ = other.javaOuterClassname_;
   2553       javaMultipleFiles_ = other.javaMultipleFiles_;
   2554       javaGenerateEqualsAndHash_ = other.javaGenerateEqualsAndHash_;
   2555       javaStringCheckUtf8_ = other.javaStringCheckUtf8_;
   2556       optimizeFor_ = other.optimizeFor_;
   2557       goPackage_ = other.goPackage_;
   2558       ccGenericServices_ = other.ccGenericServices_;
   2559       javaGenericServices_ = other.javaGenericServices_;
   2560       pyGenericServices_ = other.pyGenericServices_;
   2561       deprecated_ = other.deprecated_;
   2562       ccEnableArenas_ = other.ccEnableArenas_;
   2563       objcClassPrefix_ = other.objcClassPrefix_;
   2564       csharpNamespace_ = other.csharpNamespace_;
   2565       uninterpretedOption_ = other.uninterpretedOption_.Clone();
   2566     }
   2567 
   2568     public FileOptions Clone() {
   2569       return new FileOptions(this);
   2570     }
   2571 
   2572     /// <summary>Field number for the "java_package" field.</summary>
   2573     public const int JavaPackageFieldNumber = 1;
   2574     private string javaPackage_ = "";
   2575     /// <summary>
   2576     ///  Sets the Java package where classes generated from this .proto will be
   2577     ///  placed.  By default, the proto package is used, but this is often
   2578     ///  inappropriate because proto packages do not normally start with backwards
   2579     ///  domain names.
   2580     /// </summary>
   2581     public string JavaPackage {
   2582       get { return javaPackage_; }
   2583       set {
   2584         javaPackage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   2585       }
   2586     }
   2587 
   2588     /// <summary>Field number for the "java_outer_classname" field.</summary>
   2589     public const int JavaOuterClassnameFieldNumber = 8;
   2590     private string javaOuterClassname_ = "";
   2591     /// <summary>
   2592     ///  If set, all the classes from the .proto file are wrapped in a single
   2593     ///  outer class with the given name.  This applies to both Proto1
   2594     ///  (equivalent to the old "--one_java_file" option) and Proto2 (where
   2595     ///  a .proto always translates to a single class, but you may want to
   2596     ///  explicitly choose the class name).
   2597     /// </summary>
   2598     public string JavaOuterClassname {
   2599       get { return javaOuterClassname_; }
   2600       set {
   2601         javaOuterClassname_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   2602       }
   2603     }
   2604 
   2605     /// <summary>Field number for the "java_multiple_files" field.</summary>
   2606     public const int JavaMultipleFilesFieldNumber = 10;
   2607     private bool javaMultipleFiles_;
   2608     /// <summary>
   2609     ///  If set true, then the Java code generator will generate a separate .java
   2610     ///  file for each top-level message, enum, and service defined in the .proto
   2611     ///  file.  Thus, these types will *not* be nested inside the outer class
   2612     ///  named by java_outer_classname.  However, the outer class will still be
   2613     ///  generated to contain the file's getDescriptor() method as well as any
   2614     ///  top-level extensions defined in the file.
   2615     /// </summary>
   2616     public bool JavaMultipleFiles {
   2617       get { return javaMultipleFiles_; }
   2618       set {
   2619         javaMultipleFiles_ = value;
   2620       }
   2621     }
   2622 
   2623     /// <summary>Field number for the "java_generate_equals_and_hash" field.</summary>
   2624     public const int JavaGenerateEqualsAndHashFieldNumber = 20;
   2625     private bool javaGenerateEqualsAndHash_;
   2626     /// <summary>
   2627     ///  If set true, then the Java code generator will generate equals() and
   2628     ///  hashCode() methods for all messages defined in the .proto file.
   2629     ///  This increases generated code size, potentially substantially for large
   2630     ///  protos, which may harm a memory-constrained application.
   2631     ///  - In the full runtime this is a speed optimization, as the
   2632     ///  AbstractMessage base class includes reflection-based implementations of
   2633     ///  these methods.
   2634     ///  - In the lite runtime, setting this option changes the semantics of
   2635     ///  equals() and hashCode() to more closely match those of the full runtime;
   2636     ///  the generated methods compute their results based on field values rather
   2637     ///  than object identity. (Implementations should not assume that hashcodes
   2638     ///  will be consistent across runtimes or versions of the protocol compiler.)
   2639     /// </summary>
   2640     public bool JavaGenerateEqualsAndHash {
   2641       get { return javaGenerateEqualsAndHash_; }
   2642       set {
   2643         javaGenerateEqualsAndHash_ = value;
   2644       }
   2645     }
   2646 
   2647     /// <summary>Field number for the "java_string_check_utf8" field.</summary>
   2648     public const int JavaStringCheckUtf8FieldNumber = 27;
   2649     private bool javaStringCheckUtf8_;
   2650     /// <summary>
   2651     ///  If set true, then the Java2 code generator will generate code that
   2652     ///  throws an exception whenever an attempt is made to assign a non-UTF-8
   2653     ///  byte sequence to a string field.
   2654     ///  Message reflection will do the same.
   2655     ///  However, an extension field still accepts non-UTF-8 byte sequences.
   2656     ///  This option has no effect on when used with the lite runtime.
   2657     /// </summary>
   2658     public bool JavaStringCheckUtf8 {
   2659       get { return javaStringCheckUtf8_; }
   2660       set {
   2661         javaStringCheckUtf8_ = value;
   2662       }
   2663     }
   2664 
   2665     /// <summary>Field number for the "optimize_for" field.</summary>
   2666     public const int OptimizeForFieldNumber = 9;
   2667     private global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode optimizeFor_ = 0;
   2668     public global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode OptimizeFor {
   2669       get { return optimizeFor_; }
   2670       set {
   2671         optimizeFor_ = value;
   2672       }
   2673     }
   2674 
   2675     /// <summary>Field number for the "go_package" field.</summary>
   2676     public const int GoPackageFieldNumber = 11;
   2677     private string goPackage_ = "";
   2678     /// <summary>
   2679     ///  Sets the Go package where structs generated from this .proto will be
   2680     ///  placed. If omitted, the Go package will be derived from the following:
   2681     ///    - The basename of the package import path, if provided.
   2682     ///    - Otherwise, the package statement in the .proto file, if present.
   2683     ///    - Otherwise, the basename of the .proto file, without extension.
   2684     /// </summary>
   2685     public string GoPackage {
   2686       get { return goPackage_; }
   2687       set {
   2688         goPackage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   2689       }
   2690     }
   2691 
   2692     /// <summary>Field number for the "cc_generic_services" field.</summary>
   2693     public const int CcGenericServicesFieldNumber = 16;
   2694     private bool ccGenericServices_;
   2695     /// <summary>
   2696     ///  Should generic services be generated in each language?  "Generic" services
   2697     ///  are not specific to any particular RPC system.  They are generated by the
   2698     ///  main code generators in each language (without additional plugins).
   2699     ///  Generic services were the only kind of service generation supported by
   2700     ///  early versions of google.protobuf.
   2701     ///
   2702     ///  Generic services are now considered deprecated in favor of using plugins
   2703     ///  that generate code specific to your particular RPC system.  Therefore,
   2704     ///  these default to false.  Old code which depends on generic services should
   2705     ///  explicitly set them to true.
   2706     /// </summary>
   2707     public bool CcGenericServices {
   2708       get { return ccGenericServices_; }
   2709       set {
   2710         ccGenericServices_ = value;
   2711       }
   2712     }
   2713 
   2714     /// <summary>Field number for the "java_generic_services" field.</summary>
   2715     public const int JavaGenericServicesFieldNumber = 17;
   2716     private bool javaGenericServices_;
   2717     public bool JavaGenericServices {
   2718       get { return javaGenericServices_; }
   2719       set {
   2720         javaGenericServices_ = value;
   2721       }
   2722     }
   2723 
   2724     /// <summary>Field number for the "py_generic_services" field.</summary>
   2725     public const int PyGenericServicesFieldNumber = 18;
   2726     private bool pyGenericServices_;
   2727     public bool PyGenericServices {
   2728       get { return pyGenericServices_; }
   2729       set {
   2730         pyGenericServices_ = value;
   2731       }
   2732     }
   2733 
   2734     /// <summary>Field number for the "deprecated" field.</summary>
   2735     public const int DeprecatedFieldNumber = 23;
   2736     private bool deprecated_;
   2737     /// <summary>
   2738     ///  Is this file deprecated?
   2739     ///  Depending on the target platform, this can emit Deprecated annotations
   2740     ///  for everything in the file, or it will be completely ignored; in the very
   2741     ///  least, this is a formalization for deprecating files.
   2742     /// </summary>
   2743     public bool Deprecated {
   2744       get { return deprecated_; }
   2745       set {
   2746         deprecated_ = value;
   2747       }
   2748     }
   2749 
   2750     /// <summary>Field number for the "cc_enable_arenas" field.</summary>
   2751     public const int CcEnableArenasFieldNumber = 31;
   2752     private bool ccEnableArenas_;
   2753     /// <summary>
   2754     ///  Enables the use of arenas for the proto messages in this file. This applies
   2755     ///  only to generated classes for C++.
   2756     /// </summary>
   2757     public bool CcEnableArenas {
   2758       get { return ccEnableArenas_; }
   2759       set {
   2760         ccEnableArenas_ = value;
   2761       }
   2762     }
   2763 
   2764     /// <summary>Field number for the "objc_class_prefix" field.</summary>
   2765     public const int ObjcClassPrefixFieldNumber = 36;
   2766     private string objcClassPrefix_ = "";
   2767     /// <summary>
   2768     ///  Sets the objective c class prefix which is prepended to all objective c
   2769     ///  generated classes from this .proto. There is no default.
   2770     /// </summary>
   2771     public string ObjcClassPrefix {
   2772       get { return objcClassPrefix_; }
   2773       set {
   2774         objcClassPrefix_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   2775       }
   2776     }
   2777 
   2778     /// <summary>Field number for the "csharp_namespace" field.</summary>
   2779     public const int CsharpNamespaceFieldNumber = 37;
   2780     private string csharpNamespace_ = "";
   2781     /// <summary>
   2782     ///  Namespace for generated classes; defaults to the package.
   2783     /// </summary>
   2784     public string CsharpNamespace {
   2785       get { return csharpNamespace_; }
   2786       set {
   2787         csharpNamespace_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   2788       }
   2789     }
   2790 
   2791     /// <summary>Field number for the "uninterpreted_option" field.</summary>
   2792     public const int UninterpretedOptionFieldNumber = 999;
   2793     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
   2794         = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
   2795     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
   2796     /// <summary>
   2797     ///  The parser stores options it doesn't recognize here. See above.
   2798     /// </summary>
   2799     public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
   2800       get { return uninterpretedOption_; }
   2801     }
   2802 
   2803     public override bool Equals(object other) {
   2804       return Equals(other as FileOptions);
   2805     }
   2806 
   2807     public bool Equals(FileOptions other) {
   2808       if (ReferenceEquals(other, null)) {
   2809         return false;
   2810       }
   2811       if (ReferenceEquals(other, this)) {
   2812         return true;
   2813       }
   2814       if (JavaPackage != other.JavaPackage) return false;
   2815       if (JavaOuterClassname != other.JavaOuterClassname) return false;
   2816       if (JavaMultipleFiles != other.JavaMultipleFiles) return false;
   2817       if (JavaGenerateEqualsAndHash != other.JavaGenerateEqualsAndHash) return false;
   2818       if (JavaStringCheckUtf8 != other.JavaStringCheckUtf8) return false;
   2819       if (OptimizeFor != other.OptimizeFor) return false;
   2820       if (GoPackage != other.GoPackage) return false;
   2821       if (CcGenericServices != other.CcGenericServices) return false;
   2822       if (JavaGenericServices != other.JavaGenericServices) return false;
   2823       if (PyGenericServices != other.PyGenericServices) return false;
   2824       if (Deprecated != other.Deprecated) return false;
   2825       if (CcEnableArenas != other.CcEnableArenas) return false;
   2826       if (ObjcClassPrefix != other.ObjcClassPrefix) return false;
   2827       if (CsharpNamespace != other.CsharpNamespace) return false;
   2828       if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
   2829       return true;
   2830     }
   2831 
   2832     public override int GetHashCode() {
   2833       int hash = 1;
   2834       if (JavaPackage.Length != 0) hash ^= JavaPackage.GetHashCode();
   2835       if (JavaOuterClassname.Length != 0) hash ^= JavaOuterClassname.GetHashCode();
   2836       if (JavaMultipleFiles != false) hash ^= JavaMultipleFiles.GetHashCode();
   2837       if (JavaGenerateEqualsAndHash != false) hash ^= JavaGenerateEqualsAndHash.GetHashCode();
   2838       if (JavaStringCheckUtf8 != false) hash ^= JavaStringCheckUtf8.GetHashCode();
   2839       if (OptimizeFor != 0) hash ^= OptimizeFor.GetHashCode();
   2840       if (GoPackage.Length != 0) hash ^= GoPackage.GetHashCode();
   2841       if (CcGenericServices != false) hash ^= CcGenericServices.GetHashCode();
   2842       if (JavaGenericServices != false) hash ^= JavaGenericServices.GetHashCode();
   2843       if (PyGenericServices != false) hash ^= PyGenericServices.GetHashCode();
   2844       if (Deprecated != false) hash ^= Deprecated.GetHashCode();
   2845       if (CcEnableArenas != false) hash ^= CcEnableArenas.GetHashCode();
   2846       if (ObjcClassPrefix.Length != 0) hash ^= ObjcClassPrefix.GetHashCode();
   2847       if (CsharpNamespace.Length != 0) hash ^= CsharpNamespace.GetHashCode();
   2848       hash ^= uninterpretedOption_.GetHashCode();
   2849       return hash;
   2850     }
   2851 
   2852     public override string ToString() {
   2853       return pb::JsonFormatter.ToDiagnosticString(this);
   2854     }
   2855 
   2856     public void WriteTo(pb::CodedOutputStream output) {
   2857       if (JavaPackage.Length != 0) {
   2858         output.WriteRawTag(10);
   2859         output.WriteString(JavaPackage);
   2860       }
   2861       if (JavaOuterClassname.Length != 0) {
   2862         output.WriteRawTag(66);
   2863         output.WriteString(JavaOuterClassname);
   2864       }
   2865       if (OptimizeFor != 0) {
   2866         output.WriteRawTag(72);
   2867         output.WriteEnum((int) OptimizeFor);
   2868       }
   2869       if (JavaMultipleFiles != false) {
   2870         output.WriteRawTag(80);
   2871         output.WriteBool(JavaMultipleFiles);
   2872       }
   2873       if (GoPackage.Length != 0) {
   2874         output.WriteRawTag(90);
   2875         output.WriteString(GoPackage);
   2876       }
   2877       if (CcGenericServices != false) {
   2878         output.WriteRawTag(128, 1);
   2879         output.WriteBool(CcGenericServices);
   2880       }
   2881       if (JavaGenericServices != false) {
   2882         output.WriteRawTag(136, 1);
   2883         output.WriteBool(JavaGenericServices);
   2884       }
   2885       if (PyGenericServices != false) {
   2886         output.WriteRawTag(144, 1);
   2887         output.WriteBool(PyGenericServices);
   2888       }
   2889       if (JavaGenerateEqualsAndHash != false) {
   2890         output.WriteRawTag(160, 1);
   2891         output.WriteBool(JavaGenerateEqualsAndHash);
   2892       }
   2893       if (Deprecated != false) {
   2894         output.WriteRawTag(184, 1);
   2895         output.WriteBool(Deprecated);
   2896       }
   2897       if (JavaStringCheckUtf8 != false) {
   2898         output.WriteRawTag(216, 1);
   2899         output.WriteBool(JavaStringCheckUtf8);
   2900       }
   2901       if (CcEnableArenas != false) {
   2902         output.WriteRawTag(248, 1);
   2903         output.WriteBool(CcEnableArenas);
   2904       }
   2905       if (ObjcClassPrefix.Length != 0) {
   2906         output.WriteRawTag(162, 2);
   2907         output.WriteString(ObjcClassPrefix);
   2908       }
   2909       if (CsharpNamespace.Length != 0) {
   2910         output.WriteRawTag(170, 2);
   2911         output.WriteString(CsharpNamespace);
   2912       }
   2913       uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
   2914     }
   2915 
   2916     public int CalculateSize() {
   2917       int size = 0;
   2918       if (JavaPackage.Length != 0) {
   2919         size += 1 + pb::CodedOutputStream.ComputeStringSize(JavaPackage);
   2920       }
   2921       if (JavaOuterClassname.Length != 0) {
   2922         size += 1 + pb::CodedOutputStream.ComputeStringSize(JavaOuterClassname);
   2923       }
   2924       if (JavaMultipleFiles != false) {
   2925         size += 1 + 1;
   2926       }
   2927       if (JavaGenerateEqualsAndHash != false) {
   2928         size += 2 + 1;
   2929       }
   2930       if (JavaStringCheckUtf8 != false) {
   2931         size += 2 + 1;
   2932       }
   2933       if (OptimizeFor != 0) {
   2934         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OptimizeFor);
   2935       }
   2936       if (GoPackage.Length != 0) {
   2937         size += 1 + pb::CodedOutputStream.ComputeStringSize(GoPackage);
   2938       }
   2939       if (CcGenericServices != false) {
   2940         size += 2 + 1;
   2941       }
   2942       if (JavaGenericServices != false) {
   2943         size += 2 + 1;
   2944       }
   2945       if (PyGenericServices != false) {
   2946         size += 2 + 1;
   2947       }
   2948       if (Deprecated != false) {
   2949         size += 2 + 1;
   2950       }
   2951       if (CcEnableArenas != false) {
   2952         size += 2 + 1;
   2953       }
   2954       if (ObjcClassPrefix.Length != 0) {
   2955         size += 2 + pb::CodedOutputStream.ComputeStringSize(ObjcClassPrefix);
   2956       }
   2957       if (CsharpNamespace.Length != 0) {
   2958         size += 2 + pb::CodedOutputStream.ComputeStringSize(CsharpNamespace);
   2959       }
   2960       size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
   2961       return size;
   2962     }
   2963 
   2964     public void MergeFrom(FileOptions other) {
   2965       if (other == null) {
   2966         return;
   2967       }
   2968       if (other.JavaPackage.Length != 0) {
   2969         JavaPackage = other.JavaPackage;
   2970       }
   2971       if (other.JavaOuterClassname.Length != 0) {
   2972         JavaOuterClassname = other.JavaOuterClassname;
   2973       }
   2974       if (other.JavaMultipleFiles != false) {
   2975         JavaMultipleFiles = other.JavaMultipleFiles;
   2976       }
   2977       if (other.JavaGenerateEqualsAndHash != false) {
   2978         JavaGenerateEqualsAndHash = other.JavaGenerateEqualsAndHash;
   2979       }
   2980       if (other.JavaStringCheckUtf8 != false) {
   2981         JavaStringCheckUtf8 = other.JavaStringCheckUtf8;
   2982       }
   2983       if (other.OptimizeFor != 0) {
   2984         OptimizeFor = other.OptimizeFor;
   2985       }
   2986       if (other.GoPackage.Length != 0) {
   2987         GoPackage = other.GoPackage;
   2988       }
   2989       if (other.CcGenericServices != false) {
   2990         CcGenericServices = other.CcGenericServices;
   2991       }
   2992       if (other.JavaGenericServices != false) {
   2993         JavaGenericServices = other.JavaGenericServices;
   2994       }
   2995       if (other.PyGenericServices != false) {
   2996         PyGenericServices = other.PyGenericServices;
   2997       }
   2998       if (other.Deprecated != false) {
   2999         Deprecated = other.Deprecated;
   3000       }
   3001       if (other.CcEnableArenas != false) {
   3002         CcEnableArenas = other.CcEnableArenas;
   3003       }
   3004       if (other.ObjcClassPrefix.Length != 0) {
   3005         ObjcClassPrefix = other.ObjcClassPrefix;
   3006       }
   3007       if (other.CsharpNamespace.Length != 0) {
   3008         CsharpNamespace = other.CsharpNamespace;
   3009       }
   3010       uninterpretedOption_.Add(other.uninterpretedOption_);
   3011     }
   3012 
   3013     public void MergeFrom(pb::CodedInputStream input) {
   3014       uint tag;
   3015       while ((tag = input.ReadTag()) != 0) {
   3016         switch(tag) {
   3017           default:
   3018             input.SkipLastField();
   3019             break;
   3020           case 10: {
   3021             JavaPackage = input.ReadString();
   3022             break;
   3023           }
   3024           case 66: {
   3025             JavaOuterClassname = input.ReadString();
   3026             break;
   3027           }
   3028           case 72: {
   3029             optimizeFor_ = (global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode) input.ReadEnum();
   3030             break;
   3031           }
   3032           case 80: {
   3033             JavaMultipleFiles = input.ReadBool();
   3034             break;
   3035           }
   3036           case 90: {
   3037             GoPackage = input.ReadString();
   3038             break;
   3039           }
   3040           case 128: {
   3041             CcGenericServices = input.ReadBool();
   3042             break;
   3043           }
   3044           case 136: {
   3045             JavaGenericServices = input.ReadBool();
   3046             break;
   3047           }
   3048           case 144: {
   3049             PyGenericServices = input.ReadBool();
   3050             break;
   3051           }
   3052           case 160: {
   3053             JavaGenerateEqualsAndHash = input.ReadBool();
   3054             break;
   3055           }
   3056           case 184: {
   3057             Deprecated = input.ReadBool();
   3058             break;
   3059           }
   3060           case 216: {
   3061             JavaStringCheckUtf8 = input.ReadBool();
   3062             break;
   3063           }
   3064           case 248: {
   3065             CcEnableArenas = input.ReadBool();
   3066             break;
   3067           }
   3068           case 290: {
   3069             ObjcClassPrefix = input.ReadString();
   3070             break;
   3071           }
   3072           case 298: {
   3073             CsharpNamespace = input.ReadString();
   3074             break;
   3075           }
   3076           case 7994: {
   3077             uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
   3078             break;
   3079           }
   3080         }
   3081       }
   3082     }
   3083 
   3084     #region Nested types
   3085     /// <summary>Container for nested types declared in the FileOptions message type.</summary>
   3086     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   3087     public static partial class Types {
   3088       /// <summary>
   3089       ///  Generated classes can be optimized for speed or code size.
   3090       /// </summary>
   3091       internal enum OptimizeMode {
   3092         /// <summary>
   3093         ///  Generate complete code for parsing, serialization,
   3094         /// </summary>
   3095         [pbr::OriginalName("SPEED")] Speed = 1,
   3096         /// <summary>
   3097         ///  etc.
   3098         /// </summary>
   3099         [pbr::OriginalName("CODE_SIZE")] CodeSize = 2,
   3100         /// <summary>
   3101         ///  Generate code using MessageLite and the lite runtime.
   3102         /// </summary>
   3103         [pbr::OriginalName("LITE_RUNTIME")] LiteRuntime = 3,
   3104       }
   3105 
   3106     }
   3107     #endregion
   3108 
   3109   }
   3110 
   3111   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   3112   internal sealed partial class MessageOptions : pb::IMessage<MessageOptions> {
   3113     private static readonly pb::MessageParser<MessageOptions> _parser = new pb::MessageParser<MessageOptions>(() => new MessageOptions());
   3114     public static pb::MessageParser<MessageOptions> Parser { get { return _parser; } }
   3115 
   3116     public static pbr::MessageDescriptor Descriptor {
   3117       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[10]; }
   3118     }
   3119 
   3120     pbr::MessageDescriptor pb::IMessage.Descriptor {
   3121       get { return Descriptor; }
   3122     }
   3123 
   3124     public MessageOptions() {
   3125       OnConstruction();
   3126     }
   3127 
   3128     partial void OnConstruction();
   3129 
   3130     public MessageOptions(MessageOptions other) : this() {
   3131       messageSetWireFormat_ = other.messageSetWireFormat_;
   3132       noStandardDescriptorAccessor_ = other.noStandardDescriptorAccessor_;
   3133       deprecated_ = other.deprecated_;
   3134       mapEntry_ = other.mapEntry_;
   3135       uninterpretedOption_ = other.uninterpretedOption_.Clone();
   3136     }
   3137 
   3138     public MessageOptions Clone() {
   3139       return new MessageOptions(this);
   3140     }
   3141 
   3142     /// <summary>Field number for the "message_set_wire_format" field.</summary>
   3143     public const int MessageSetWireFormatFieldNumber = 1;
   3144     private bool messageSetWireFormat_;
   3145     /// <summary>
   3146     ///  Set true to use the old proto1 MessageSet wire format for extensions.
   3147     ///  This is provided for backwards-compatibility with the MessageSet wire
   3148     ///  format.  You should not use this for any other reason:  It's less
   3149     ///  efficient, has fewer features, and is more complicated.
   3150     ///
   3151     ///  The message must be defined exactly as follows:
   3152     ///    message Foo {
   3153     ///      option message_set_wire_format = true;
   3154     ///      extensions 4 to max;
   3155     ///    }
   3156     ///  Note that the message cannot have any defined fields; MessageSets only
   3157     ///  have extensions.
   3158     ///
   3159     ///  All extensions of your type must be singular messages; e.g. they cannot
   3160     ///  be int32s, enums, or repeated messages.
   3161     ///
   3162     ///  Because this is an option, the above two restrictions are not enforced by
   3163     ///  the protocol compiler.
   3164     /// </summary>
   3165     public bool MessageSetWireFormat {
   3166       get { return messageSetWireFormat_; }
   3167       set {
   3168         messageSetWireFormat_ = value;
   3169       }
   3170     }
   3171 
   3172     /// <summary>Field number for the "no_standard_descriptor_accessor" field.</summary>
   3173     public const int NoStandardDescriptorAccessorFieldNumber = 2;
   3174     private bool noStandardDescriptorAccessor_;
   3175     /// <summary>
   3176     ///  Disables the generation of the standard "descriptor()" accessor, which can
   3177     ///  conflict with a field of the same name.  This is meant to make migration
   3178     ///  from proto1 easier; new code should avoid fields named "descriptor".
   3179     /// </summary>
   3180     public bool NoStandardDescriptorAccessor {
   3181       get { return noStandardDescriptorAccessor_; }
   3182       set {
   3183         noStandardDescriptorAccessor_ = value;
   3184       }
   3185     }
   3186 
   3187     /// <summary>Field number for the "deprecated" field.</summary>
   3188     public const int DeprecatedFieldNumber = 3;
   3189     private bool deprecated_;
   3190     /// <summary>
   3191     ///  Is this message deprecated?
   3192     ///  Depending on the target platform, this can emit Deprecated annotations
   3193     ///  for the message, or it will be completely ignored; in the very least,
   3194     ///  this is a formalization for deprecating messages.
   3195     /// </summary>
   3196     public bool Deprecated {
   3197       get { return deprecated_; }
   3198       set {
   3199         deprecated_ = value;
   3200       }
   3201     }
   3202 
   3203     /// <summary>Field number for the "map_entry" field.</summary>
   3204     public const int MapEntryFieldNumber = 7;
   3205     private bool mapEntry_;
   3206     /// <summary>
   3207     ///  Whether the message is an automatically generated map entry type for the
   3208     ///  maps field.
   3209     ///
   3210     ///  For maps fields:
   3211     ///      map&lt;KeyType, ValueType> map_field = 1;
   3212     ///  The parsed descriptor looks like:
   3213     ///      message MapFieldEntry {
   3214     ///          option map_entry = true;
   3215     ///          optional KeyType key = 1;
   3216     ///          optional ValueType value = 2;
   3217     ///      }
   3218     ///      repeated MapFieldEntry map_field = 1;
   3219     ///
   3220     ///  Implementations may choose not to generate the map_entry=true message, but
   3221     ///  use a native map in the target language to hold the keys and values.
   3222     ///  The reflection APIs in such implementions still need to work as
   3223     ///  if the field is a repeated message field.
   3224     ///
   3225     ///  NOTE: Do not set the option in .proto files. Always use the maps syntax
   3226     ///  instead. The option should only be implicitly set by the proto compiler
   3227     ///  parser.
   3228     /// </summary>
   3229     public bool MapEntry {
   3230       get { return mapEntry_; }
   3231       set {
   3232         mapEntry_ = value;
   3233       }
   3234     }
   3235 
   3236     /// <summary>Field number for the "uninterpreted_option" field.</summary>
   3237     public const int UninterpretedOptionFieldNumber = 999;
   3238     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
   3239         = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
   3240     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
   3241     /// <summary>
   3242     ///  The parser stores options it doesn't recognize here. See above.
   3243     /// </summary>
   3244     public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
   3245       get { return uninterpretedOption_; }
   3246     }
   3247 
   3248     public override bool Equals(object other) {
   3249       return Equals(other as MessageOptions);
   3250     }
   3251 
   3252     public bool Equals(MessageOptions other) {
   3253       if (ReferenceEquals(other, null)) {
   3254         return false;
   3255       }
   3256       if (ReferenceEquals(other, this)) {
   3257         return true;
   3258       }
   3259       if (MessageSetWireFormat != other.MessageSetWireFormat) return false;
   3260       if (NoStandardDescriptorAccessor != other.NoStandardDescriptorAccessor) return false;
   3261       if (Deprecated != other.Deprecated) return false;
   3262       if (MapEntry != other.MapEntry) return false;
   3263       if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
   3264       return true;
   3265     }
   3266 
   3267     public override int GetHashCode() {
   3268       int hash = 1;
   3269       if (MessageSetWireFormat != false) hash ^= MessageSetWireFormat.GetHashCode();
   3270       if (NoStandardDescriptorAccessor != false) hash ^= NoStandardDescriptorAccessor.GetHashCode();
   3271       if (Deprecated != false) hash ^= Deprecated.GetHashCode();
   3272       if (MapEntry != false) hash ^= MapEntry.GetHashCode();
   3273       hash ^= uninterpretedOption_.GetHashCode();
   3274       return hash;
   3275     }
   3276 
   3277     public override string ToString() {
   3278       return pb::JsonFormatter.ToDiagnosticString(this);
   3279     }
   3280 
   3281     public void WriteTo(pb::CodedOutputStream output) {
   3282       if (MessageSetWireFormat != false) {
   3283         output.WriteRawTag(8);
   3284         output.WriteBool(MessageSetWireFormat);
   3285       }
   3286       if (NoStandardDescriptorAccessor != false) {
   3287         output.WriteRawTag(16);
   3288         output.WriteBool(NoStandardDescriptorAccessor);
   3289       }
   3290       if (Deprecated != false) {
   3291         output.WriteRawTag(24);
   3292         output.WriteBool(Deprecated);
   3293       }
   3294       if (MapEntry != false) {
   3295         output.WriteRawTag(56);
   3296         output.WriteBool(MapEntry);
   3297       }
   3298       uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
   3299     }
   3300 
   3301     public int CalculateSize() {
   3302       int size = 0;
   3303       if (MessageSetWireFormat != false) {
   3304         size += 1 + 1;
   3305       }
   3306       if (NoStandardDescriptorAccessor != false) {
   3307         size += 1 + 1;
   3308       }
   3309       if (Deprecated != false) {
   3310         size += 1 + 1;
   3311       }
   3312       if (MapEntry != false) {
   3313         size += 1 + 1;
   3314       }
   3315       size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
   3316       return size;
   3317     }
   3318 
   3319     public void MergeFrom(MessageOptions other) {
   3320       if (other == null) {
   3321         return;
   3322       }
   3323       if (other.MessageSetWireFormat != false) {
   3324         MessageSetWireFormat = other.MessageSetWireFormat;
   3325       }
   3326       if (other.NoStandardDescriptorAccessor != false) {
   3327         NoStandardDescriptorAccessor = other.NoStandardDescriptorAccessor;
   3328       }
   3329       if (other.Deprecated != false) {
   3330         Deprecated = other.Deprecated;
   3331       }
   3332       if (other.MapEntry != false) {
   3333         MapEntry = other.MapEntry;
   3334       }
   3335       uninterpretedOption_.Add(other.uninterpretedOption_);
   3336     }
   3337 
   3338     public void MergeFrom(pb::CodedInputStream input) {
   3339       uint tag;
   3340       while ((tag = input.ReadTag()) != 0) {
   3341         switch(tag) {
   3342           default:
   3343             input.SkipLastField();
   3344             break;
   3345           case 8: {
   3346             MessageSetWireFormat = input.ReadBool();
   3347             break;
   3348           }
   3349           case 16: {
   3350             NoStandardDescriptorAccessor = input.ReadBool();
   3351             break;
   3352           }
   3353           case 24: {
   3354             Deprecated = input.ReadBool();
   3355             break;
   3356           }
   3357           case 56: {
   3358             MapEntry = input.ReadBool();
   3359             break;
   3360           }
   3361           case 7994: {
   3362             uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
   3363             break;
   3364           }
   3365         }
   3366       }
   3367     }
   3368 
   3369   }
   3370 
   3371   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   3372   internal sealed partial class FieldOptions : pb::IMessage<FieldOptions> {
   3373     private static readonly pb::MessageParser<FieldOptions> _parser = new pb::MessageParser<FieldOptions>(() => new FieldOptions());
   3374     public static pb::MessageParser<FieldOptions> Parser { get { return _parser; } }
   3375 
   3376     public static pbr::MessageDescriptor Descriptor {
   3377       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[11]; }
   3378     }
   3379 
   3380     pbr::MessageDescriptor pb::IMessage.Descriptor {
   3381       get { return Descriptor; }
   3382     }
   3383 
   3384     public FieldOptions() {
   3385       OnConstruction();
   3386     }
   3387 
   3388     partial void OnConstruction();
   3389 
   3390     public FieldOptions(FieldOptions other) : this() {
   3391       ctype_ = other.ctype_;
   3392       packed_ = other.packed_;
   3393       jstype_ = other.jstype_;
   3394       lazy_ = other.lazy_;
   3395       deprecated_ = other.deprecated_;
   3396       weak_ = other.weak_;
   3397       uninterpretedOption_ = other.uninterpretedOption_.Clone();
   3398     }
   3399 
   3400     public FieldOptions Clone() {
   3401       return new FieldOptions(this);
   3402     }
   3403 
   3404     /// <summary>Field number for the "ctype" field.</summary>
   3405     public const int CtypeFieldNumber = 1;
   3406     private global::Google.Protobuf.Reflection.FieldOptions.Types.CType ctype_ = 0;
   3407     /// <summary>
   3408     ///  The ctype option instructs the C++ code generator to use a different
   3409     ///  representation of the field than it normally would.  See the specific
   3410     ///  options below.  This option is not yet implemented in the open source
   3411     ///  release -- sorry, we'll try to include it in a future version!
   3412     /// </summary>
   3413     public global::Google.Protobuf.Reflection.FieldOptions.Types.CType Ctype {
   3414       get { return ctype_; }
   3415       set {
   3416         ctype_ = value;
   3417       }
   3418     }
   3419 
   3420     /// <summary>Field number for the "packed" field.</summary>
   3421     public const int PackedFieldNumber = 2;
   3422     private bool packed_;
   3423     /// <summary>
   3424     ///  The packed option can be enabled for repeated primitive fields to enable
   3425     ///  a more efficient representation on the wire. Rather than repeatedly
   3426     ///  writing the tag and type for each element, the entire array is encoded as
   3427     ///  a single length-delimited blob. In proto3, only explicit setting it to
   3428     ///  false will avoid using packed encoding.
   3429     /// </summary>
   3430     public bool Packed {
   3431       get { return packed_; }
   3432       set {
   3433         packed_ = value;
   3434       }
   3435     }
   3436 
   3437     /// <summary>Field number for the "jstype" field.</summary>
   3438     public const int JstypeFieldNumber = 6;
   3439     private global::Google.Protobuf.Reflection.FieldOptions.Types.JSType jstype_ = 0;
   3440     /// <summary>
   3441     ///  The jstype option determines the JavaScript type used for values of the
   3442     ///  field.  The option is permitted only for 64 bit integral and fixed types
   3443     ///  (int64, uint64, sint64, fixed64, sfixed64).  By default these types are
   3444     ///  represented as JavaScript strings.  This avoids loss of precision that can
   3445     ///  happen when a large value is converted to a floating point JavaScript
   3446     ///  numbers.  Specifying JS_NUMBER for the jstype causes the generated
   3447     ///  JavaScript code to use the JavaScript "number" type instead of strings.
   3448     ///  This option is an enum to permit additional types to be added,
   3449     ///  e.g. goog.math.Integer.
   3450     /// </summary>
   3451     public global::Google.Protobuf.Reflection.FieldOptions.Types.JSType Jstype {
   3452       get { return jstype_; }
   3453       set {
   3454         jstype_ = value;
   3455       }
   3456     }
   3457 
   3458     /// <summary>Field number for the "lazy" field.</summary>
   3459     public const int LazyFieldNumber = 5;
   3460     private bool lazy_;
   3461     /// <summary>
   3462     ///  Should this field be parsed lazily?  Lazy applies only to message-type
   3463     ///  fields.  It means that when the outer message is initially parsed, the
   3464     ///  inner message's contents will not be parsed but instead stored in encoded
   3465     ///  form.  The inner message will actually be parsed when it is first accessed.
   3466     ///
   3467     ///  This is only a hint.  Implementations are free to choose whether to use
   3468     ///  eager or lazy parsing regardless of the value of this option.  However,
   3469     ///  setting this option true suggests that the protocol author believes that
   3470     ///  using lazy parsing on this field is worth the additional bookkeeping
   3471     ///  overhead typically needed to implement it.
   3472     ///
   3473     ///  This option does not affect the public interface of any generated code;
   3474     ///  all method signatures remain the same.  Furthermore, thread-safety of the
   3475     ///  interface is not affected by this option; const methods remain safe to
   3476     ///  call from multiple threads concurrently, while non-const methods continue
   3477     ///  to require exclusive access.
   3478     ///
   3479     ///  Note that implementations may choose not to check required fields within
   3480     ///  a lazy sub-message.  That is, calling IsInitialized() on the outher message
   3481     ///  may return true even if the inner message has missing required fields.
   3482     ///  This is necessary because otherwise the inner message would have to be
   3483     ///  parsed in order to perform the check, defeating the purpose of lazy
   3484     ///  parsing.  An implementation which chooses not to check required fields
   3485     ///  must be consistent about it.  That is, for any particular sub-message, the
   3486     ///  implementation must either *always* check its required fields, or *never*
   3487     ///  check its required fields, regardless of whether or not the message has
   3488     ///  been parsed.
   3489     /// </summary>
   3490     public bool Lazy {
   3491       get { return lazy_; }
   3492       set {
   3493         lazy_ = value;
   3494       }
   3495     }
   3496 
   3497     /// <summary>Field number for the "deprecated" field.</summary>
   3498     public const int DeprecatedFieldNumber = 3;
   3499     private bool deprecated_;
   3500     /// <summary>
   3501     ///  Is this field deprecated?
   3502     ///  Depending on the target platform, this can emit Deprecated annotations
   3503     ///  for accessors, or it will be completely ignored; in the very least, this
   3504     ///  is a formalization for deprecating fields.
   3505     /// </summary>
   3506     public bool Deprecated {
   3507       get { return deprecated_; }
   3508       set {
   3509         deprecated_ = value;
   3510       }
   3511     }
   3512 
   3513     /// <summary>Field number for the "weak" field.</summary>
   3514     public const int WeakFieldNumber = 10;
   3515     private bool weak_;
   3516     /// <summary>
   3517     ///  For Google-internal migration only. Do not use.
   3518     /// </summary>
   3519     public bool Weak {
   3520       get { return weak_; }
   3521       set {
   3522         weak_ = value;
   3523       }
   3524     }
   3525 
   3526     /// <summary>Field number for the "uninterpreted_option" field.</summary>
   3527     public const int UninterpretedOptionFieldNumber = 999;
   3528     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
   3529         = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
   3530     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
   3531     /// <summary>
   3532     ///  The parser stores options it doesn't recognize here. See above.
   3533     /// </summary>
   3534     public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
   3535       get { return uninterpretedOption_; }
   3536     }
   3537 
   3538     public override bool Equals(object other) {
   3539       return Equals(other as FieldOptions);
   3540     }
   3541 
   3542     public bool Equals(FieldOptions other) {
   3543       if (ReferenceEquals(other, null)) {
   3544         return false;
   3545       }
   3546       if (ReferenceEquals(other, this)) {
   3547         return true;
   3548       }
   3549       if (Ctype != other.Ctype) return false;
   3550       if (Packed != other.Packed) return false;
   3551       if (Jstype != other.Jstype) return false;
   3552       if (Lazy != other.Lazy) return false;
   3553       if (Deprecated != other.Deprecated) return false;
   3554       if (Weak != other.Weak) return false;
   3555       if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
   3556       return true;
   3557     }
   3558 
   3559     public override int GetHashCode() {
   3560       int hash = 1;
   3561       if (Ctype != 0) hash ^= Ctype.GetHashCode();
   3562       if (Packed != false) hash ^= Packed.GetHashCode();
   3563       if (Jstype != 0) hash ^= Jstype.GetHashCode();
   3564       if (Lazy != false) hash ^= Lazy.GetHashCode();
   3565       if (Deprecated != false) hash ^= Deprecated.GetHashCode();
   3566       if (Weak != false) hash ^= Weak.GetHashCode();
   3567       hash ^= uninterpretedOption_.GetHashCode();
   3568       return hash;
   3569     }
   3570 
   3571     public override string ToString() {
   3572       return pb::JsonFormatter.ToDiagnosticString(this);
   3573     }
   3574 
   3575     public void WriteTo(pb::CodedOutputStream output) {
   3576       if (Ctype != 0) {
   3577         output.WriteRawTag(8);
   3578         output.WriteEnum((int) Ctype);
   3579       }
   3580       if (Packed != false) {
   3581         output.WriteRawTag(16);
   3582         output.WriteBool(Packed);
   3583       }
   3584       if (Deprecated != false) {
   3585         output.WriteRawTag(24);
   3586         output.WriteBool(Deprecated);
   3587       }
   3588       if (Lazy != false) {
   3589         output.WriteRawTag(40);
   3590         output.WriteBool(Lazy);
   3591       }
   3592       if (Jstype != 0) {
   3593         output.WriteRawTag(48);
   3594         output.WriteEnum((int) Jstype);
   3595       }
   3596       if (Weak != false) {
   3597         output.WriteRawTag(80);
   3598         output.WriteBool(Weak);
   3599       }
   3600       uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
   3601     }
   3602 
   3603     public int CalculateSize() {
   3604       int size = 0;
   3605       if (Ctype != 0) {
   3606         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Ctype);
   3607       }
   3608       if (Packed != false) {
   3609         size += 1 + 1;
   3610       }
   3611       if (Jstype != 0) {
   3612         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Jstype);
   3613       }
   3614       if (Lazy != false) {
   3615         size += 1 + 1;
   3616       }
   3617       if (Deprecated != false) {
   3618         size += 1 + 1;
   3619       }
   3620       if (Weak != false) {
   3621         size += 1 + 1;
   3622       }
   3623       size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
   3624       return size;
   3625     }
   3626 
   3627     public void MergeFrom(FieldOptions other) {
   3628       if (other == null) {
   3629         return;
   3630       }
   3631       if (other.Ctype != 0) {
   3632         Ctype = other.Ctype;
   3633       }
   3634       if (other.Packed != false) {
   3635         Packed = other.Packed;
   3636       }
   3637       if (other.Jstype != 0) {
   3638         Jstype = other.Jstype;
   3639       }
   3640       if (other.Lazy != false) {
   3641         Lazy = other.Lazy;
   3642       }
   3643       if (other.Deprecated != false) {
   3644         Deprecated = other.Deprecated;
   3645       }
   3646       if (other.Weak != false) {
   3647         Weak = other.Weak;
   3648       }
   3649       uninterpretedOption_.Add(other.uninterpretedOption_);
   3650     }
   3651 
   3652     public void MergeFrom(pb::CodedInputStream input) {
   3653       uint tag;
   3654       while ((tag = input.ReadTag()) != 0) {
   3655         switch(tag) {
   3656           default:
   3657             input.SkipLastField();
   3658             break;
   3659           case 8: {
   3660             ctype_ = (global::Google.Protobuf.Reflection.FieldOptions.Types.CType) input.ReadEnum();
   3661             break;
   3662           }
   3663           case 16: {
   3664             Packed = input.ReadBool();
   3665             break;
   3666           }
   3667           case 24: {
   3668             Deprecated = input.ReadBool();
   3669             break;
   3670           }
   3671           case 40: {
   3672             Lazy = input.ReadBool();
   3673             break;
   3674           }
   3675           case 48: {
   3676             jstype_ = (global::Google.Protobuf.Reflection.FieldOptions.Types.JSType) input.ReadEnum();
   3677             break;
   3678           }
   3679           case 80: {
   3680             Weak = input.ReadBool();
   3681             break;
   3682           }
   3683           case 7994: {
   3684             uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
   3685             break;
   3686           }
   3687         }
   3688       }
   3689     }
   3690 
   3691     #region Nested types
   3692     /// <summary>Container for nested types declared in the FieldOptions message type.</summary>
   3693     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   3694     public static partial class Types {
   3695       internal enum CType {
   3696         /// <summary>
   3697         ///  Default mode.
   3698         /// </summary>
   3699         [pbr::OriginalName("STRING")] String = 0,
   3700         [pbr::OriginalName("CORD")] Cord = 1,
   3701         [pbr::OriginalName("STRING_PIECE")] StringPiece = 2,
   3702       }
   3703 
   3704       internal enum JSType {
   3705         /// <summary>
   3706         ///  Use the default type.
   3707         /// </summary>
   3708         [pbr::OriginalName("JS_NORMAL")] JsNormal = 0,
   3709         /// <summary>
   3710         ///  Use JavaScript strings.
   3711         /// </summary>
   3712         [pbr::OriginalName("JS_STRING")] JsString = 1,
   3713         /// <summary>
   3714         ///  Use JavaScript numbers.
   3715         /// </summary>
   3716         [pbr::OriginalName("JS_NUMBER")] JsNumber = 2,
   3717       }
   3718 
   3719     }
   3720     #endregion
   3721 
   3722   }
   3723 
   3724   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   3725   internal sealed partial class EnumOptions : pb::IMessage<EnumOptions> {
   3726     private static readonly pb::MessageParser<EnumOptions> _parser = new pb::MessageParser<EnumOptions>(() => new EnumOptions());
   3727     public static pb::MessageParser<EnumOptions> Parser { get { return _parser; } }
   3728 
   3729     public static pbr::MessageDescriptor Descriptor {
   3730       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[12]; }
   3731     }
   3732 
   3733     pbr::MessageDescriptor pb::IMessage.Descriptor {
   3734       get { return Descriptor; }
   3735     }
   3736 
   3737     public EnumOptions() {
   3738       OnConstruction();
   3739     }
   3740 
   3741     partial void OnConstruction();
   3742 
   3743     public EnumOptions(EnumOptions other) : this() {
   3744       allowAlias_ = other.allowAlias_;
   3745       deprecated_ = other.deprecated_;
   3746       uninterpretedOption_ = other.uninterpretedOption_.Clone();
   3747     }
   3748 
   3749     public EnumOptions Clone() {
   3750       return new EnumOptions(this);
   3751     }
   3752 
   3753     /// <summary>Field number for the "allow_alias" field.</summary>
   3754     public const int AllowAliasFieldNumber = 2;
   3755     private bool allowAlias_;
   3756     /// <summary>
   3757     ///  Set this option to true to allow mapping different tag names to the same
   3758     ///  value.
   3759     /// </summary>
   3760     public bool AllowAlias {
   3761       get { return allowAlias_; }
   3762       set {
   3763         allowAlias_ = value;
   3764       }
   3765     }
   3766 
   3767     /// <summary>Field number for the "deprecated" field.</summary>
   3768     public const int DeprecatedFieldNumber = 3;
   3769     private bool deprecated_;
   3770     /// <summary>
   3771     ///  Is this enum deprecated?
   3772     ///  Depending on the target platform, this can emit Deprecated annotations
   3773     ///  for the enum, or it will be completely ignored; in the very least, this
   3774     ///  is a formalization for deprecating enums.
   3775     /// </summary>
   3776     public bool Deprecated {
   3777       get { return deprecated_; }
   3778       set {
   3779         deprecated_ = value;
   3780       }
   3781     }
   3782 
   3783     /// <summary>Field number for the "uninterpreted_option" field.</summary>
   3784     public const int UninterpretedOptionFieldNumber = 999;
   3785     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
   3786         = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
   3787     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
   3788     /// <summary>
   3789     ///  The parser stores options it doesn't recognize here. See above.
   3790     /// </summary>
   3791     public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
   3792       get { return uninterpretedOption_; }
   3793     }
   3794 
   3795     public override bool Equals(object other) {
   3796       return Equals(other as EnumOptions);
   3797     }
   3798 
   3799     public bool Equals(EnumOptions other) {
   3800       if (ReferenceEquals(other, null)) {
   3801         return false;
   3802       }
   3803       if (ReferenceEquals(other, this)) {
   3804         return true;
   3805       }
   3806       if (AllowAlias != other.AllowAlias) return false;
   3807       if (Deprecated != other.Deprecated) return false;
   3808       if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
   3809       return true;
   3810     }
   3811 
   3812     public override int GetHashCode() {
   3813       int hash = 1;
   3814       if (AllowAlias != false) hash ^= AllowAlias.GetHashCode();
   3815       if (Deprecated != false) hash ^= Deprecated.GetHashCode();
   3816       hash ^= uninterpretedOption_.GetHashCode();
   3817       return hash;
   3818     }
   3819 
   3820     public override string ToString() {
   3821       return pb::JsonFormatter.ToDiagnosticString(this);
   3822     }
   3823 
   3824     public void WriteTo(pb::CodedOutputStream output) {
   3825       if (AllowAlias != false) {
   3826         output.WriteRawTag(16);
   3827         output.WriteBool(AllowAlias);
   3828       }
   3829       if (Deprecated != false) {
   3830         output.WriteRawTag(24);
   3831         output.WriteBool(Deprecated);
   3832       }
   3833       uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
   3834     }
   3835 
   3836     public int CalculateSize() {
   3837       int size = 0;
   3838       if (AllowAlias != false) {
   3839         size += 1 + 1;
   3840       }
   3841       if (Deprecated != false) {
   3842         size += 1 + 1;
   3843       }
   3844       size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
   3845       return size;
   3846     }
   3847 
   3848     public void MergeFrom(EnumOptions other) {
   3849       if (other == null) {
   3850         return;
   3851       }
   3852       if (other.AllowAlias != false) {
   3853         AllowAlias = other.AllowAlias;
   3854       }
   3855       if (other.Deprecated != false) {
   3856         Deprecated = other.Deprecated;
   3857       }
   3858       uninterpretedOption_.Add(other.uninterpretedOption_);
   3859     }
   3860 
   3861     public void MergeFrom(pb::CodedInputStream input) {
   3862       uint tag;
   3863       while ((tag = input.ReadTag()) != 0) {
   3864         switch(tag) {
   3865           default:
   3866             input.SkipLastField();
   3867             break;
   3868           case 16: {
   3869             AllowAlias = input.ReadBool();
   3870             break;
   3871           }
   3872           case 24: {
   3873             Deprecated = input.ReadBool();
   3874             break;
   3875           }
   3876           case 7994: {
   3877             uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
   3878             break;
   3879           }
   3880         }
   3881       }
   3882     }
   3883 
   3884   }
   3885 
   3886   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   3887   internal sealed partial class EnumValueOptions : pb::IMessage<EnumValueOptions> {
   3888     private static readonly pb::MessageParser<EnumValueOptions> _parser = new pb::MessageParser<EnumValueOptions>(() => new EnumValueOptions());
   3889     public static pb::MessageParser<EnumValueOptions> Parser { get { return _parser; } }
   3890 
   3891     public static pbr::MessageDescriptor Descriptor {
   3892       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[13]; }
   3893     }
   3894 
   3895     pbr::MessageDescriptor pb::IMessage.Descriptor {
   3896       get { return Descriptor; }
   3897     }
   3898 
   3899     public EnumValueOptions() {
   3900       OnConstruction();
   3901     }
   3902 
   3903     partial void OnConstruction();
   3904 
   3905     public EnumValueOptions(EnumValueOptions other) : this() {
   3906       deprecated_ = other.deprecated_;
   3907       uninterpretedOption_ = other.uninterpretedOption_.Clone();
   3908     }
   3909 
   3910     public EnumValueOptions Clone() {
   3911       return new EnumValueOptions(this);
   3912     }
   3913 
   3914     /// <summary>Field number for the "deprecated" field.</summary>
   3915     public const int DeprecatedFieldNumber = 1;
   3916     private bool deprecated_;
   3917     /// <summary>
   3918     ///  Is this enum value deprecated?
   3919     ///  Depending on the target platform, this can emit Deprecated annotations
   3920     ///  for the enum value, or it will be completely ignored; in the very least,
   3921     ///  this is a formalization for deprecating enum values.
   3922     /// </summary>
   3923     public bool Deprecated {
   3924       get { return deprecated_; }
   3925       set {
   3926         deprecated_ = value;
   3927       }
   3928     }
   3929 
   3930     /// <summary>Field number for the "uninterpreted_option" field.</summary>
   3931     public const int UninterpretedOptionFieldNumber = 999;
   3932     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
   3933         = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
   3934     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
   3935     /// <summary>
   3936     ///  The parser stores options it doesn't recognize here. See above.
   3937     /// </summary>
   3938     public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
   3939       get { return uninterpretedOption_; }
   3940     }
   3941 
   3942     public override bool Equals(object other) {
   3943       return Equals(other as EnumValueOptions);
   3944     }
   3945 
   3946     public bool Equals(EnumValueOptions other) {
   3947       if (ReferenceEquals(other, null)) {
   3948         return false;
   3949       }
   3950       if (ReferenceEquals(other, this)) {
   3951         return true;
   3952       }
   3953       if (Deprecated != other.Deprecated) return false;
   3954       if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
   3955       return true;
   3956     }
   3957 
   3958     public override int GetHashCode() {
   3959       int hash = 1;
   3960       if (Deprecated != false) hash ^= Deprecated.GetHashCode();
   3961       hash ^= uninterpretedOption_.GetHashCode();
   3962       return hash;
   3963     }
   3964 
   3965     public override string ToString() {
   3966       return pb::JsonFormatter.ToDiagnosticString(this);
   3967     }
   3968 
   3969     public void WriteTo(pb::CodedOutputStream output) {
   3970       if (Deprecated != false) {
   3971         output.WriteRawTag(8);
   3972         output.WriteBool(Deprecated);
   3973       }
   3974       uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
   3975     }
   3976 
   3977     public int CalculateSize() {
   3978       int size = 0;
   3979       if (Deprecated != false) {
   3980         size += 1 + 1;
   3981       }
   3982       size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
   3983       return size;
   3984     }
   3985 
   3986     public void MergeFrom(EnumValueOptions other) {
   3987       if (other == null) {
   3988         return;
   3989       }
   3990       if (other.Deprecated != false) {
   3991         Deprecated = other.Deprecated;
   3992       }
   3993       uninterpretedOption_.Add(other.uninterpretedOption_);
   3994     }
   3995 
   3996     public void MergeFrom(pb::CodedInputStream input) {
   3997       uint tag;
   3998       while ((tag = input.ReadTag()) != 0) {
   3999         switch(tag) {
   4000           default:
   4001             input.SkipLastField();
   4002             break;
   4003           case 8: {
   4004             Deprecated = input.ReadBool();
   4005             break;
   4006           }
   4007           case 7994: {
   4008             uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
   4009             break;
   4010           }
   4011         }
   4012       }
   4013     }
   4014 
   4015   }
   4016 
   4017   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   4018   internal sealed partial class ServiceOptions : pb::IMessage<ServiceOptions> {
   4019     private static readonly pb::MessageParser<ServiceOptions> _parser = new pb::MessageParser<ServiceOptions>(() => new ServiceOptions());
   4020     public static pb::MessageParser<ServiceOptions> Parser { get { return _parser; } }
   4021 
   4022     public static pbr::MessageDescriptor Descriptor {
   4023       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[14]; }
   4024     }
   4025 
   4026     pbr::MessageDescriptor pb::IMessage.Descriptor {
   4027       get { return Descriptor; }
   4028     }
   4029 
   4030     public ServiceOptions() {
   4031       OnConstruction();
   4032     }
   4033 
   4034     partial void OnConstruction();
   4035 
   4036     public ServiceOptions(ServiceOptions other) : this() {
   4037       deprecated_ = other.deprecated_;
   4038       uninterpretedOption_ = other.uninterpretedOption_.Clone();
   4039     }
   4040 
   4041     public ServiceOptions Clone() {
   4042       return new ServiceOptions(this);
   4043     }
   4044 
   4045     /// <summary>Field number for the "deprecated" field.</summary>
   4046     public const int DeprecatedFieldNumber = 33;
   4047     private bool deprecated_;
   4048     /// <summary>
   4049     ///  Is this service deprecated?
   4050     ///  Depending on the target platform, this can emit Deprecated annotations
   4051     ///  for the service, or it will be completely ignored; in the very least,
   4052     ///  this is a formalization for deprecating services.
   4053     /// </summary>
   4054     public bool Deprecated {
   4055       get { return deprecated_; }
   4056       set {
   4057         deprecated_ = value;
   4058       }
   4059     }
   4060 
   4061     /// <summary>Field number for the "uninterpreted_option" field.</summary>
   4062     public const int UninterpretedOptionFieldNumber = 999;
   4063     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
   4064         = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
   4065     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
   4066     /// <summary>
   4067     ///  The parser stores options it doesn't recognize here. See above.
   4068     /// </summary>
   4069     public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
   4070       get { return uninterpretedOption_; }
   4071     }
   4072 
   4073     public override bool Equals(object other) {
   4074       return Equals(other as ServiceOptions);
   4075     }
   4076 
   4077     public bool Equals(ServiceOptions other) {
   4078       if (ReferenceEquals(other, null)) {
   4079         return false;
   4080       }
   4081       if (ReferenceEquals(other, this)) {
   4082         return true;
   4083       }
   4084       if (Deprecated != other.Deprecated) return false;
   4085       if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
   4086       return true;
   4087     }
   4088 
   4089     public override int GetHashCode() {
   4090       int hash = 1;
   4091       if (Deprecated != false) hash ^= Deprecated.GetHashCode();
   4092       hash ^= uninterpretedOption_.GetHashCode();
   4093       return hash;
   4094     }
   4095 
   4096     public override string ToString() {
   4097       return pb::JsonFormatter.ToDiagnosticString(this);
   4098     }
   4099 
   4100     public void WriteTo(pb::CodedOutputStream output) {
   4101       if (Deprecated != false) {
   4102         output.WriteRawTag(136, 2);
   4103         output.WriteBool(Deprecated);
   4104       }
   4105       uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
   4106     }
   4107 
   4108     public int CalculateSize() {
   4109       int size = 0;
   4110       if (Deprecated != false) {
   4111         size += 2 + 1;
   4112       }
   4113       size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
   4114       return size;
   4115     }
   4116 
   4117     public void MergeFrom(ServiceOptions other) {
   4118       if (other == null) {
   4119         return;
   4120       }
   4121       if (other.Deprecated != false) {
   4122         Deprecated = other.Deprecated;
   4123       }
   4124       uninterpretedOption_.Add(other.uninterpretedOption_);
   4125     }
   4126 
   4127     public void MergeFrom(pb::CodedInputStream input) {
   4128       uint tag;
   4129       while ((tag = input.ReadTag()) != 0) {
   4130         switch(tag) {
   4131           default:
   4132             input.SkipLastField();
   4133             break;
   4134           case 264: {
   4135             Deprecated = input.ReadBool();
   4136             break;
   4137           }
   4138           case 7994: {
   4139             uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
   4140             break;
   4141           }
   4142         }
   4143       }
   4144     }
   4145 
   4146   }
   4147 
   4148   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   4149   internal sealed partial class MethodOptions : pb::IMessage<MethodOptions> {
   4150     private static readonly pb::MessageParser<MethodOptions> _parser = new pb::MessageParser<MethodOptions>(() => new MethodOptions());
   4151     public static pb::MessageParser<MethodOptions> Parser { get { return _parser; } }
   4152 
   4153     public static pbr::MessageDescriptor Descriptor {
   4154       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[15]; }
   4155     }
   4156 
   4157     pbr::MessageDescriptor pb::IMessage.Descriptor {
   4158       get { return Descriptor; }
   4159     }
   4160 
   4161     public MethodOptions() {
   4162       OnConstruction();
   4163     }
   4164 
   4165     partial void OnConstruction();
   4166 
   4167     public MethodOptions(MethodOptions other) : this() {
   4168       deprecated_ = other.deprecated_;
   4169       uninterpretedOption_ = other.uninterpretedOption_.Clone();
   4170     }
   4171 
   4172     public MethodOptions Clone() {
   4173       return new MethodOptions(this);
   4174     }
   4175 
   4176     /// <summary>Field number for the "deprecated" field.</summary>
   4177     public const int DeprecatedFieldNumber = 33;
   4178     private bool deprecated_;
   4179     /// <summary>
   4180     ///  Is this method deprecated?
   4181     ///  Depending on the target platform, this can emit Deprecated annotations
   4182     ///  for the method, or it will be completely ignored; in the very least,
   4183     ///  this is a formalization for deprecating methods.
   4184     /// </summary>
   4185     public bool Deprecated {
   4186       get { return deprecated_; }
   4187       set {
   4188         deprecated_ = value;
   4189       }
   4190     }
   4191 
   4192     /// <summary>Field number for the "uninterpreted_option" field.</summary>
   4193     public const int UninterpretedOptionFieldNumber = 999;
   4194     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
   4195         = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
   4196     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
   4197     /// <summary>
   4198     ///  The parser stores options it doesn't recognize here. See above.
   4199     /// </summary>
   4200     public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
   4201       get { return uninterpretedOption_; }
   4202     }
   4203 
   4204     public override bool Equals(object other) {
   4205       return Equals(other as MethodOptions);
   4206     }
   4207 
   4208     public bool Equals(MethodOptions other) {
   4209       if (ReferenceEquals(other, null)) {
   4210         return false;
   4211       }
   4212       if (ReferenceEquals(other, this)) {
   4213         return true;
   4214       }
   4215       if (Deprecated != other.Deprecated) return false;
   4216       if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
   4217       return true;
   4218     }
   4219 
   4220     public override int GetHashCode() {
   4221       int hash = 1;
   4222       if (Deprecated != false) hash ^= Deprecated.GetHashCode();
   4223       hash ^= uninterpretedOption_.GetHashCode();
   4224       return hash;
   4225     }
   4226 
   4227     public override string ToString() {
   4228       return pb::JsonFormatter.ToDiagnosticString(this);
   4229     }
   4230 
   4231     public void WriteTo(pb::CodedOutputStream output) {
   4232       if (Deprecated != false) {
   4233         output.WriteRawTag(136, 2);
   4234         output.WriteBool(Deprecated);
   4235       }
   4236       uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
   4237     }
   4238 
   4239     public int CalculateSize() {
   4240       int size = 0;
   4241       if (Deprecated != false) {
   4242         size += 2 + 1;
   4243       }
   4244       size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
   4245       return size;
   4246     }
   4247 
   4248     public void MergeFrom(MethodOptions other) {
   4249       if (other == null) {
   4250         return;
   4251       }
   4252       if (other.Deprecated != false) {
   4253         Deprecated = other.Deprecated;
   4254       }
   4255       uninterpretedOption_.Add(other.uninterpretedOption_);
   4256     }
   4257 
   4258     public void MergeFrom(pb::CodedInputStream input) {
   4259       uint tag;
   4260       while ((tag = input.ReadTag()) != 0) {
   4261         switch(tag) {
   4262           default:
   4263             input.SkipLastField();
   4264             break;
   4265           case 264: {
   4266             Deprecated = input.ReadBool();
   4267             break;
   4268           }
   4269           case 7994: {
   4270             uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
   4271             break;
   4272           }
   4273         }
   4274       }
   4275     }
   4276 
   4277   }
   4278 
   4279   /// <summary>
   4280   ///  A message representing a option the parser does not recognize. This only
   4281   ///  appears in options protos created by the compiler::Parser class.
   4282   ///  DescriptorPool resolves these when building Descriptor objects. Therefore,
   4283   ///  options protos in descriptor objects (e.g. returned by Descriptor::options(),
   4284   ///  or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
   4285   ///  in them.
   4286   /// </summary>
   4287   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   4288   internal sealed partial class UninterpretedOption : pb::IMessage<UninterpretedOption> {
   4289     private static readonly pb::MessageParser<UninterpretedOption> _parser = new pb::MessageParser<UninterpretedOption>(() => new UninterpretedOption());
   4290     public static pb::MessageParser<UninterpretedOption> Parser { get { return _parser; } }
   4291 
   4292     public static pbr::MessageDescriptor Descriptor {
   4293       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[16]; }
   4294     }
   4295 
   4296     pbr::MessageDescriptor pb::IMessage.Descriptor {
   4297       get { return Descriptor; }
   4298     }
   4299 
   4300     public UninterpretedOption() {
   4301       OnConstruction();
   4302     }
   4303 
   4304     partial void OnConstruction();
   4305 
   4306     public UninterpretedOption(UninterpretedOption other) : this() {
   4307       name_ = other.name_.Clone();
   4308       identifierValue_ = other.identifierValue_;
   4309       positiveIntValue_ = other.positiveIntValue_;
   4310       negativeIntValue_ = other.negativeIntValue_;
   4311       doubleValue_ = other.doubleValue_;
   4312       stringValue_ = other.stringValue_;
   4313       aggregateValue_ = other.aggregateValue_;
   4314     }
   4315 
   4316     public UninterpretedOption Clone() {
   4317       return new UninterpretedOption(this);
   4318     }
   4319 
   4320     /// <summary>Field number for the "name" field.</summary>
   4321     public const int NameFieldNumber = 2;
   4322     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart> _repeated_name_codec
   4323         = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart.Parser);
   4324     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart> name_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart>();
   4325     public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart> Name {
   4326       get { return name_; }
   4327     }
   4328 
   4329     /// <summary>Field number for the "identifier_value" field.</summary>
   4330     public const int IdentifierValueFieldNumber = 3;
   4331     private string identifierValue_ = "";
   4332     /// <summary>
   4333     ///  The value of the uninterpreted option, in whatever type the tokenizer
   4334     ///  identified it as during parsing. Exactly one of these should be set.
   4335     /// </summary>
   4336     public string IdentifierValue {
   4337       get { return identifierValue_; }
   4338       set {
   4339         identifierValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   4340       }
   4341     }
   4342 
   4343     /// <summary>Field number for the "positive_int_value" field.</summary>
   4344     public const int PositiveIntValueFieldNumber = 4;
   4345     private ulong positiveIntValue_;
   4346     public ulong PositiveIntValue {
   4347       get { return positiveIntValue_; }
   4348       set {
   4349         positiveIntValue_ = value;
   4350       }
   4351     }
   4352 
   4353     /// <summary>Field number for the "negative_int_value" field.</summary>
   4354     public const int NegativeIntValueFieldNumber = 5;
   4355     private long negativeIntValue_;
   4356     public long NegativeIntValue {
   4357       get { return negativeIntValue_; }
   4358       set {
   4359         negativeIntValue_ = value;
   4360       }
   4361     }
   4362 
   4363     /// <summary>Field number for the "double_value" field.</summary>
   4364     public const int DoubleValueFieldNumber = 6;
   4365     private double doubleValue_;
   4366     public double DoubleValue {
   4367       get { return doubleValue_; }
   4368       set {
   4369         doubleValue_ = value;
   4370       }
   4371     }
   4372 
   4373     /// <summary>Field number for the "string_value" field.</summary>
   4374     public const int StringValueFieldNumber = 7;
   4375     private pb::ByteString stringValue_ = pb::ByteString.Empty;
   4376     public pb::ByteString StringValue {
   4377       get { return stringValue_; }
   4378       set {
   4379         stringValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   4380       }
   4381     }
   4382 
   4383     /// <summary>Field number for the "aggregate_value" field.</summary>
   4384     public const int AggregateValueFieldNumber = 8;
   4385     private string aggregateValue_ = "";
   4386     public string AggregateValue {
   4387       get { return aggregateValue_; }
   4388       set {
   4389         aggregateValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   4390       }
   4391     }
   4392 
   4393     public override bool Equals(object other) {
   4394       return Equals(other as UninterpretedOption);
   4395     }
   4396 
   4397     public bool Equals(UninterpretedOption other) {
   4398       if (ReferenceEquals(other, null)) {
   4399         return false;
   4400       }
   4401       if (ReferenceEquals(other, this)) {
   4402         return true;
   4403       }
   4404       if(!name_.Equals(other.name_)) return false;
   4405       if (IdentifierValue != other.IdentifierValue) return false;
   4406       if (PositiveIntValue != other.PositiveIntValue) return false;
   4407       if (NegativeIntValue != other.NegativeIntValue) return false;
   4408       if (DoubleValue != other.DoubleValue) return false;
   4409       if (StringValue != other.StringValue) return false;
   4410       if (AggregateValue != other.AggregateValue) return false;
   4411       return true;
   4412     }
   4413 
   4414     public override int GetHashCode() {
   4415       int hash = 1;
   4416       hash ^= name_.GetHashCode();
   4417       if (IdentifierValue.Length != 0) hash ^= IdentifierValue.GetHashCode();
   4418       if (PositiveIntValue != 0UL) hash ^= PositiveIntValue.GetHashCode();
   4419       if (NegativeIntValue != 0L) hash ^= NegativeIntValue.GetHashCode();
   4420       if (DoubleValue != 0D) hash ^= DoubleValue.GetHashCode();
   4421       if (StringValue.Length != 0) hash ^= StringValue.GetHashCode();
   4422       if (AggregateValue.Length != 0) hash ^= AggregateValue.GetHashCode();
   4423       return hash;
   4424     }
   4425 
   4426     public override string ToString() {
   4427       return pb::JsonFormatter.ToDiagnosticString(this);
   4428     }
   4429 
   4430     public void WriteTo(pb::CodedOutputStream output) {
   4431       name_.WriteTo(output, _repeated_name_codec);
   4432       if (IdentifierValue.Length != 0) {
   4433         output.WriteRawTag(26);
   4434         output.WriteString(IdentifierValue);
   4435       }
   4436       if (PositiveIntValue != 0UL) {
   4437         output.WriteRawTag(32);
   4438         output.WriteUInt64(PositiveIntValue);
   4439       }
   4440       if (NegativeIntValue != 0L) {
   4441         output.WriteRawTag(40);
   4442         output.WriteInt64(NegativeIntValue);
   4443       }
   4444       if (DoubleValue != 0D) {
   4445         output.WriteRawTag(49);
   4446         output.WriteDouble(DoubleValue);
   4447       }
   4448       if (StringValue.Length != 0) {
   4449         output.WriteRawTag(58);
   4450         output.WriteBytes(StringValue);
   4451       }
   4452       if (AggregateValue.Length != 0) {
   4453         output.WriteRawTag(66);
   4454         output.WriteString(AggregateValue);
   4455       }
   4456     }
   4457 
   4458     public int CalculateSize() {
   4459       int size = 0;
   4460       size += name_.CalculateSize(_repeated_name_codec);
   4461       if (IdentifierValue.Length != 0) {
   4462         size += 1 + pb::CodedOutputStream.ComputeStringSize(IdentifierValue);
   4463       }
   4464       if (PositiveIntValue != 0UL) {
   4465         size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PositiveIntValue);
   4466       }
   4467       if (NegativeIntValue != 0L) {
   4468         size += 1 + pb::CodedOutputStream.ComputeInt64Size(NegativeIntValue);
   4469       }
   4470       if (DoubleValue != 0D) {
   4471         size += 1 + 8;
   4472       }
   4473       if (StringValue.Length != 0) {
   4474         size += 1 + pb::CodedOutputStream.ComputeBytesSize(StringValue);
   4475       }
   4476       if (AggregateValue.Length != 0) {
   4477         size += 1 + pb::CodedOutputStream.ComputeStringSize(AggregateValue);
   4478       }
   4479       return size;
   4480     }
   4481 
   4482     public void MergeFrom(UninterpretedOption other) {
   4483       if (other == null) {
   4484         return;
   4485       }
   4486       name_.Add(other.name_);
   4487       if (other.IdentifierValue.Length != 0) {
   4488         IdentifierValue = other.IdentifierValue;
   4489       }
   4490       if (other.PositiveIntValue != 0UL) {
   4491         PositiveIntValue = other.PositiveIntValue;
   4492       }
   4493       if (other.NegativeIntValue != 0L) {
   4494         NegativeIntValue = other.NegativeIntValue;
   4495       }
   4496       if (other.DoubleValue != 0D) {
   4497         DoubleValue = other.DoubleValue;
   4498       }
   4499       if (other.StringValue.Length != 0) {
   4500         StringValue = other.StringValue;
   4501       }
   4502       if (other.AggregateValue.Length != 0) {
   4503         AggregateValue = other.AggregateValue;
   4504       }
   4505     }
   4506 
   4507     public void MergeFrom(pb::CodedInputStream input) {
   4508       uint tag;
   4509       while ((tag = input.ReadTag()) != 0) {
   4510         switch(tag) {
   4511           default:
   4512             input.SkipLastField();
   4513             break;
   4514           case 18: {
   4515             name_.AddEntriesFrom(input, _repeated_name_codec);
   4516             break;
   4517           }
   4518           case 26: {
   4519             IdentifierValue = input.ReadString();
   4520             break;
   4521           }
   4522           case 32: {
   4523             PositiveIntValue = input.ReadUInt64();
   4524             break;
   4525           }
   4526           case 40: {
   4527             NegativeIntValue = input.ReadInt64();
   4528             break;
   4529           }
   4530           case 49: {
   4531             DoubleValue = input.ReadDouble();
   4532             break;
   4533           }
   4534           case 58: {
   4535             StringValue = input.ReadBytes();
   4536             break;
   4537           }
   4538           case 66: {
   4539             AggregateValue = input.ReadString();
   4540             break;
   4541           }
   4542         }
   4543       }
   4544     }
   4545 
   4546     #region Nested types
   4547     /// <summary>Container for nested types declared in the UninterpretedOption message type.</summary>
   4548     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   4549     public static partial class Types {
   4550       /// <summary>
   4551       ///  The name of the uninterpreted option.  Each string represents a segment in
   4552       ///  a dot-separated name.  is_extension is true iff a segment represents an
   4553       ///  extension (denoted with parentheses in options specs in .proto files).
   4554       ///  E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
   4555       ///  "foo.(bar.baz).qux".
   4556       /// </summary>
   4557       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   4558       internal sealed partial class NamePart : pb::IMessage<NamePart> {
   4559         private static readonly pb::MessageParser<NamePart> _parser = new pb::MessageParser<NamePart>(() => new NamePart());
   4560         public static pb::MessageParser<NamePart> Parser { get { return _parser; } }
   4561 
   4562         public static pbr::MessageDescriptor Descriptor {
   4563           get { return global::Google.Protobuf.Reflection.UninterpretedOption.Descriptor.NestedTypes[0]; }
   4564         }
   4565 
   4566         pbr::MessageDescriptor pb::IMessage.Descriptor {
   4567           get { return Descriptor; }
   4568         }
   4569 
   4570         public NamePart() {
   4571           OnConstruction();
   4572         }
   4573 
   4574         partial void OnConstruction();
   4575 
   4576         public NamePart(NamePart other) : this() {
   4577           namePart_ = other.namePart_;
   4578           isExtension_ = other.isExtension_;
   4579         }
   4580 
   4581         public NamePart Clone() {
   4582           return new NamePart(this);
   4583         }
   4584 
   4585         /// <summary>Field number for the "name_part" field.</summary>
   4586         public const int NamePart_FieldNumber = 1;
   4587         private string namePart_ = "";
   4588         public string NamePart_ {
   4589           get { return namePart_; }
   4590           set {
   4591             namePart_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   4592           }
   4593         }
   4594 
   4595         /// <summary>Field number for the "is_extension" field.</summary>
   4596         public const int IsExtensionFieldNumber = 2;
   4597         private bool isExtension_;
   4598         public bool IsExtension {
   4599           get { return isExtension_; }
   4600           set {
   4601             isExtension_ = value;
   4602           }
   4603         }
   4604 
   4605         public override bool Equals(object other) {
   4606           return Equals(other as NamePart);
   4607         }
   4608 
   4609         public bool Equals(NamePart other) {
   4610           if (ReferenceEquals(other, null)) {
   4611             return false;
   4612           }
   4613           if (ReferenceEquals(other, this)) {
   4614             return true;
   4615           }
   4616           if (NamePart_ != other.NamePart_) return false;
   4617           if (IsExtension != other.IsExtension) return false;
   4618           return true;
   4619         }
   4620 
   4621         public override int GetHashCode() {
   4622           int hash = 1;
   4623           if (NamePart_.Length != 0) hash ^= NamePart_.GetHashCode();
   4624           if (IsExtension != false) hash ^= IsExtension.GetHashCode();
   4625           return hash;
   4626         }
   4627 
   4628         public override string ToString() {
   4629           return pb::JsonFormatter.ToDiagnosticString(this);
   4630         }
   4631 
   4632         public void WriteTo(pb::CodedOutputStream output) {
   4633           if (NamePart_.Length != 0) {
   4634             output.WriteRawTag(10);
   4635             output.WriteString(NamePart_);
   4636           }
   4637           if (IsExtension != false) {
   4638             output.WriteRawTag(16);
   4639             output.WriteBool(IsExtension);
   4640           }
   4641         }
   4642 
   4643         public int CalculateSize() {
   4644           int size = 0;
   4645           if (NamePart_.Length != 0) {
   4646             size += 1 + pb::CodedOutputStream.ComputeStringSize(NamePart_);
   4647           }
   4648           if (IsExtension != false) {
   4649             size += 1 + 1;
   4650           }
   4651           return size;
   4652         }
   4653 
   4654         public void MergeFrom(NamePart other) {
   4655           if (other == null) {
   4656             return;
   4657           }
   4658           if (other.NamePart_.Length != 0) {
   4659             NamePart_ = other.NamePart_;
   4660           }
   4661           if (other.IsExtension != false) {
   4662             IsExtension = other.IsExtension;
   4663           }
   4664         }
   4665 
   4666         public void MergeFrom(pb::CodedInputStream input) {
   4667           uint tag;
   4668           while ((tag = input.ReadTag()) != 0) {
   4669             switch(tag) {
   4670               default:
   4671                 input.SkipLastField();
   4672                 break;
   4673               case 10: {
   4674                 NamePart_ = input.ReadString();
   4675                 break;
   4676               }
   4677               case 16: {
   4678                 IsExtension = input.ReadBool();
   4679                 break;
   4680               }
   4681             }
   4682           }
   4683         }
   4684 
   4685       }
   4686 
   4687     }
   4688     #endregion
   4689 
   4690   }
   4691 
   4692   /// <summary>
   4693   ///  Encapsulates information about the original source file from which a
   4694   ///  FileDescriptorProto was generated.
   4695   /// </summary>
   4696   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   4697   internal sealed partial class SourceCodeInfo : pb::IMessage<SourceCodeInfo> {
   4698     private static readonly pb::MessageParser<SourceCodeInfo> _parser = new pb::MessageParser<SourceCodeInfo>(() => new SourceCodeInfo());
   4699     public static pb::MessageParser<SourceCodeInfo> Parser { get { return _parser; } }
   4700 
   4701     public static pbr::MessageDescriptor Descriptor {
   4702       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[17]; }
   4703     }
   4704 
   4705     pbr::MessageDescriptor pb::IMessage.Descriptor {
   4706       get { return Descriptor; }
   4707     }
   4708 
   4709     public SourceCodeInfo() {
   4710       OnConstruction();
   4711     }
   4712 
   4713     partial void OnConstruction();
   4714 
   4715     public SourceCodeInfo(SourceCodeInfo other) : this() {
   4716       location_ = other.location_.Clone();
   4717     }
   4718 
   4719     public SourceCodeInfo Clone() {
   4720       return new SourceCodeInfo(this);
   4721     }
   4722 
   4723     /// <summary>Field number for the "location" field.</summary>
   4724     public const int LocationFieldNumber = 1;
   4725     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location> _repeated_location_codec
   4726         = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.Parser);
   4727     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location> location_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location>();
   4728     /// <summary>
   4729     ///  A Location identifies a piece of source code in a .proto file which
   4730     ///  corresponds to a particular definition.  This information is intended
   4731     ///  to be useful to IDEs, code indexers, documentation generators, and similar
   4732     ///  tools.
   4733     ///
   4734     ///  For example, say we have a file like:
   4735     ///    message Foo {
   4736     ///      optional string foo = 1;
   4737     ///    }
   4738     ///  Let's look at just the field definition:
   4739     ///    optional string foo = 1;
   4740     ///    ^       ^^     ^^  ^  ^^^
   4741     ///    a       bc     de  f  ghi
   4742     ///  We have the following locations:
   4743     ///    span   path               represents
   4744     ///    [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.
   4745     ///    [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).
   4746     ///    [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).
   4747     ///    [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
   4748     ///    [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
   4749     ///
   4750     ///  Notes:
   4751     ///  - A location may refer to a repeated field itself (i.e. not to any
   4752     ///    particular index within it).  This is used whenever a set of elements are
   4753     ///    logically enclosed in a single code segment.  For example, an entire
   4754     ///    extend block (possibly containing multiple extension definitions) will
   4755     ///    have an outer location whose path refers to the "extensions" repeated
   4756     ///    field without an index.
   4757     ///  - Multiple locations may have the same path.  This happens when a single
   4758     ///    logical declaration is spread out across multiple places.  The most
   4759     ///    obvious example is the "extend" block again -- there may be multiple
   4760     ///    extend blocks in the same scope, each of which will have the same path.
   4761     ///  - A location's span is not always a subset of its parent's span.  For
   4762     ///    example, the "extendee" of an extension declaration appears at the
   4763     ///    beginning of the "extend" block and is shared by all extensions within
   4764     ///    the block.
   4765     ///  - Just because a location's span is a subset of some other location's span
   4766     ///    does not mean that it is a descendent.  For example, a "group" defines
   4767     ///    both a type and a field in a single declaration.  Thus, the locations
   4768     ///    corresponding to the type and field and their components will overlap.
   4769     ///  - Code which tries to interpret locations should probably be designed to
   4770     ///    ignore those that it doesn't understand, as more types of locations could
   4771     ///    be recorded in the future.
   4772     /// </summary>
   4773     public pbc::RepeatedField<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location> Location {
   4774       get { return location_; }
   4775     }
   4776 
   4777     public override bool Equals(object other) {
   4778       return Equals(other as SourceCodeInfo);
   4779     }
   4780 
   4781     public bool Equals(SourceCodeInfo other) {
   4782       if (ReferenceEquals(other, null)) {
   4783         return false;
   4784       }
   4785       if (ReferenceEquals(other, this)) {
   4786         return true;
   4787       }
   4788       if(!location_.Equals(other.location_)) return false;
   4789       return true;
   4790     }
   4791 
   4792     public override int GetHashCode() {
   4793       int hash = 1;
   4794       hash ^= location_.GetHashCode();
   4795       return hash;
   4796     }
   4797 
   4798     public override string ToString() {
   4799       return pb::JsonFormatter.ToDiagnosticString(this);
   4800     }
   4801 
   4802     public void WriteTo(pb::CodedOutputStream output) {
   4803       location_.WriteTo(output, _repeated_location_codec);
   4804     }
   4805 
   4806     public int CalculateSize() {
   4807       int size = 0;
   4808       size += location_.CalculateSize(_repeated_location_codec);
   4809       return size;
   4810     }
   4811 
   4812     public void MergeFrom(SourceCodeInfo other) {
   4813       if (other == null) {
   4814         return;
   4815       }
   4816       location_.Add(other.location_);
   4817     }
   4818 
   4819     public void MergeFrom(pb::CodedInputStream input) {
   4820       uint tag;
   4821       while ((tag = input.ReadTag()) != 0) {
   4822         switch(tag) {
   4823           default:
   4824             input.SkipLastField();
   4825             break;
   4826           case 10: {
   4827             location_.AddEntriesFrom(input, _repeated_location_codec);
   4828             break;
   4829           }
   4830         }
   4831       }
   4832     }
   4833 
   4834     #region Nested types
   4835     /// <summary>Container for nested types declared in the SourceCodeInfo message type.</summary>
   4836     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   4837     public static partial class Types {
   4838       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   4839       internal sealed partial class Location : pb::IMessage<Location> {
   4840         private static readonly pb::MessageParser<Location> _parser = new pb::MessageParser<Location>(() => new Location());
   4841         public static pb::MessageParser<Location> Parser { get { return _parser; } }
   4842 
   4843         public static pbr::MessageDescriptor Descriptor {
   4844           get { return global::Google.Protobuf.Reflection.SourceCodeInfo.Descriptor.NestedTypes[0]; }
   4845         }
   4846 
   4847         pbr::MessageDescriptor pb::IMessage.Descriptor {
   4848           get { return Descriptor; }
   4849         }
   4850 
   4851         public Location() {
   4852           OnConstruction();
   4853         }
   4854 
   4855         partial void OnConstruction();
   4856 
   4857         public Location(Location other) : this() {
   4858           path_ = other.path_.Clone();
   4859           span_ = other.span_.Clone();
   4860           leadingComments_ = other.leadingComments_;
   4861           trailingComments_ = other.trailingComments_;
   4862           leadingDetachedComments_ = other.leadingDetachedComments_.Clone();
   4863         }
   4864 
   4865         public Location Clone() {
   4866           return new Location(this);
   4867         }
   4868 
   4869         /// <summary>Field number for the "path" field.</summary>
   4870         public const int PathFieldNumber = 1;
   4871         private static readonly pb::FieldCodec<int> _repeated_path_codec
   4872             = pb::FieldCodec.ForInt32(10);
   4873         private readonly pbc::RepeatedField<int> path_ = new pbc::RepeatedField<int>();
   4874         /// <summary>
   4875         ///  Identifies which part of the FileDescriptorProto was defined at this
   4876         ///  location.
   4877         ///
   4878         ///  Each element is a field number or an index.  They form a path from
   4879         ///  the root FileDescriptorProto to the place where the definition.  For
   4880         ///  example, this path:
   4881         ///    [ 4, 3, 2, 7, 1 ]
   4882         ///  refers to:
   4883         ///    file.message_type(3)  // 4, 3
   4884         ///        .field(7)         // 2, 7
   4885         ///        .name()           // 1
   4886         ///  This is because FileDescriptorProto.message_type has field number 4:
   4887         ///    repeated DescriptorProto message_type = 4;
   4888         ///  and DescriptorProto.field has field number 2:
   4889         ///    repeated FieldDescriptorProto field = 2;
   4890         ///  and FieldDescriptorProto.name has field number 1:
   4891         ///    optional string name = 1;
   4892         ///
   4893         ///  Thus, the above path gives the location of a field name.  If we removed
   4894         ///  the last element:
   4895         ///    [ 4, 3, 2, 7 ]
   4896         ///  this path refers to the whole field declaration (from the beginning
   4897         ///  of the label to the terminating semicolon).
   4898         /// </summary>
   4899         public pbc::RepeatedField<int> Path {
   4900           get { return path_; }
   4901         }
   4902 
   4903         /// <summary>Field number for the "span" field.</summary>
   4904         public const int SpanFieldNumber = 2;
   4905         private static readonly pb::FieldCodec<int> _repeated_span_codec
   4906             = pb::FieldCodec.ForInt32(18);
   4907         private readonly pbc::RepeatedField<int> span_ = new pbc::RepeatedField<int>();
   4908         /// <summary>
   4909         ///  Always has exactly three or four elements: start line, start column,
   4910         ///  end line (optional, otherwise assumed same as start line), end column.
   4911         ///  These are packed into a single field for efficiency.  Note that line
   4912         ///  and column numbers are zero-based -- typically you will want to add
   4913         ///  1 to each before displaying to a user.
   4914         /// </summary>
   4915         public pbc::RepeatedField<int> Span {
   4916           get { return span_; }
   4917         }
   4918 
   4919         /// <summary>Field number for the "leading_comments" field.</summary>
   4920         public const int LeadingCommentsFieldNumber = 3;
   4921         private string leadingComments_ = "";
   4922         /// <summary>
   4923         ///  If this SourceCodeInfo represents a complete declaration, these are any
   4924         ///  comments appearing before and after the declaration which appear to be
   4925         ///  attached to the declaration.
   4926         ///
   4927         ///  A series of line comments appearing on consecutive lines, with no other
   4928         ///  tokens appearing on those lines, will be treated as a single comment.
   4929         ///
   4930         ///  leading_detached_comments will keep paragraphs of comments that appear
   4931         ///  before (but not connected to) the current element. Each paragraph,
   4932         ///  separated by empty lines, will be one comment element in the repeated
   4933         ///  field.
   4934         ///
   4935         ///  Only the comment content is provided; comment markers (e.g. //) are
   4936         ///  stripped out.  For block comments, leading whitespace and an asterisk
   4937         ///  will be stripped from the beginning of each line other than the first.
   4938         ///  Newlines are included in the output.
   4939         ///
   4940         ///  Examples:
   4941         ///
   4942         ///    optional int32 foo = 1;  // Comment attached to foo.
   4943         ///    // Comment attached to bar.
   4944         ///    optional int32 bar = 2;
   4945         ///
   4946         ///    optional string baz = 3;
   4947         ///    // Comment attached to baz.
   4948         ///    // Another line attached to baz.
   4949         ///
   4950         ///    // Comment attached to qux.
   4951         ///    //
   4952         ///    // Another line attached to qux.
   4953         ///    optional double qux = 4;
   4954         ///
   4955         ///    // Detached comment for corge. This is not leading or trailing comments
   4956         ///    // to qux or corge because there are blank lines separating it from
   4957         ///    // both.
   4958         ///
   4959         ///    // Detached comment for corge paragraph 2.
   4960         ///
   4961         ///    optional string corge = 5;
   4962         ///    /* Block comment attached
   4963         ///     * to corge.  Leading asterisks
   4964         ///     * will be removed. */
   4965         ///    /* Block comment attached to
   4966         ///     * grault. */
   4967         ///    optional int32 grault = 6;
   4968         ///
   4969         ///    // ignored detached comments.
   4970         /// </summary>
   4971         public string LeadingComments {
   4972           get { return leadingComments_; }
   4973           set {
   4974             leadingComments_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   4975           }
   4976         }
   4977 
   4978         /// <summary>Field number for the "trailing_comments" field.</summary>
   4979         public const int TrailingCommentsFieldNumber = 4;
   4980         private string trailingComments_ = "";
   4981         public string TrailingComments {
   4982           get { return trailingComments_; }
   4983           set {
   4984             trailingComments_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   4985           }
   4986         }
   4987 
   4988         /// <summary>Field number for the "leading_detached_comments" field.</summary>
   4989         public const int LeadingDetachedCommentsFieldNumber = 6;
   4990         private static readonly pb::FieldCodec<string> _repeated_leadingDetachedComments_codec
   4991             = pb::FieldCodec.ForString(50);
   4992         private readonly pbc::RepeatedField<string> leadingDetachedComments_ = new pbc::RepeatedField<string>();
   4993         public pbc::RepeatedField<string> LeadingDetachedComments {
   4994           get { return leadingDetachedComments_; }
   4995         }
   4996 
   4997         public override bool Equals(object other) {
   4998           return Equals(other as Location);
   4999         }
   5000 
   5001         public bool Equals(Location other) {
   5002           if (ReferenceEquals(other, null)) {
   5003             return false;
   5004           }
   5005           if (ReferenceEquals(other, this)) {
   5006             return true;
   5007           }
   5008           if(!path_.Equals(other.path_)) return false;
   5009           if(!span_.Equals(other.span_)) return false;
   5010           if (LeadingComments != other.LeadingComments) return false;
   5011           if (TrailingComments != other.TrailingComments) return false;
   5012           if(!leadingDetachedComments_.Equals(other.leadingDetachedComments_)) return false;
   5013           return true;
   5014         }
   5015 
   5016         public override int GetHashCode() {
   5017           int hash = 1;
   5018           hash ^= path_.GetHashCode();
   5019           hash ^= span_.GetHashCode();
   5020           if (LeadingComments.Length != 0) hash ^= LeadingComments.GetHashCode();
   5021           if (TrailingComments.Length != 0) hash ^= TrailingComments.GetHashCode();
   5022           hash ^= leadingDetachedComments_.GetHashCode();
   5023           return hash;
   5024         }
   5025 
   5026         public override string ToString() {
   5027           return pb::JsonFormatter.ToDiagnosticString(this);
   5028         }
   5029 
   5030         public void WriteTo(pb::CodedOutputStream output) {
   5031           path_.WriteTo(output, _repeated_path_codec);
   5032           span_.WriteTo(output, _repeated_span_codec);
   5033           if (LeadingComments.Length != 0) {
   5034             output.WriteRawTag(26);
   5035             output.WriteString(LeadingComments);
   5036           }
   5037           if (TrailingComments.Length != 0) {
   5038             output.WriteRawTag(34);
   5039             output.WriteString(TrailingComments);
   5040           }
   5041           leadingDetachedComments_.WriteTo(output, _repeated_leadingDetachedComments_codec);
   5042         }
   5043 
   5044         public int CalculateSize() {
   5045           int size = 0;
   5046           size += path_.CalculateSize(_repeated_path_codec);
   5047           size += span_.CalculateSize(_repeated_span_codec);
   5048           if (LeadingComments.Length != 0) {
   5049             size += 1 + pb::CodedOutputStream.ComputeStringSize(LeadingComments);
   5050           }
   5051           if (TrailingComments.Length != 0) {
   5052             size += 1 + pb::CodedOutputStream.ComputeStringSize(TrailingComments);
   5053           }
   5054           size += leadingDetachedComments_.CalculateSize(_repeated_leadingDetachedComments_codec);
   5055           return size;
   5056         }
   5057 
   5058         public void MergeFrom(Location other) {
   5059           if (other == null) {
   5060             return;
   5061           }
   5062           path_.Add(other.path_);
   5063           span_.Add(other.span_);
   5064           if (other.LeadingComments.Length != 0) {
   5065             LeadingComments = other.LeadingComments;
   5066           }
   5067           if (other.TrailingComments.Length != 0) {
   5068             TrailingComments = other.TrailingComments;
   5069           }
   5070           leadingDetachedComments_.Add(other.leadingDetachedComments_);
   5071         }
   5072 
   5073         public void MergeFrom(pb::CodedInputStream input) {
   5074           uint tag;
   5075           while ((tag = input.ReadTag()) != 0) {
   5076             switch(tag) {
   5077               default:
   5078                 input.SkipLastField();
   5079                 break;
   5080               case 10:
   5081               case 8: {
   5082                 path_.AddEntriesFrom(input, _repeated_path_codec);
   5083                 break;
   5084               }
   5085               case 18:
   5086               case 16: {
   5087                 span_.AddEntriesFrom(input, _repeated_span_codec);
   5088                 break;
   5089               }
   5090               case 26: {
   5091                 LeadingComments = input.ReadString();
   5092                 break;
   5093               }
   5094               case 34: {
   5095                 TrailingComments = input.ReadString();
   5096                 break;
   5097               }
   5098               case 50: {
   5099                 leadingDetachedComments_.AddEntriesFrom(input, _repeated_leadingDetachedComments_codec);
   5100                 break;
   5101               }
   5102             }
   5103           }
   5104         }
   5105 
   5106       }
   5107 
   5108     }
   5109     #endregion
   5110 
   5111   }
   5112 
   5113   /// <summary>
   5114   ///  Describes the relationship between generated code and its original source
   5115   ///  file. A GeneratedCodeInfo message is associated with only one generated
   5116   ///  source file, but may contain references to different source .proto files.
   5117   /// </summary>
   5118   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   5119   internal sealed partial class GeneratedCodeInfo : pb::IMessage<GeneratedCodeInfo> {
   5120     private static readonly pb::MessageParser<GeneratedCodeInfo> _parser = new pb::MessageParser<GeneratedCodeInfo>(() => new GeneratedCodeInfo());
   5121     public static pb::MessageParser<GeneratedCodeInfo> Parser { get { return _parser; } }
   5122 
   5123     public static pbr::MessageDescriptor Descriptor {
   5124       get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[18]; }
   5125     }
   5126 
   5127     pbr::MessageDescriptor pb::IMessage.Descriptor {
   5128       get { return Descriptor; }
   5129     }
   5130 
   5131     public GeneratedCodeInfo() {
   5132       OnConstruction();
   5133     }
   5134 
   5135     partial void OnConstruction();
   5136 
   5137     public GeneratedCodeInfo(GeneratedCodeInfo other) : this() {
   5138       annotation_ = other.annotation_.Clone();
   5139     }
   5140 
   5141     public GeneratedCodeInfo Clone() {
   5142       return new GeneratedCodeInfo(this);
   5143     }
   5144 
   5145     /// <summary>Field number for the "annotation" field.</summary>
   5146     public const int AnnotationFieldNumber = 1;
   5147     private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation> _repeated_annotation_codec
   5148         = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.Parser);
   5149     private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation> annotation_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation>();
   5150     /// <summary>
   5151     ///  An Annotation connects some span of text in generated code to an element
   5152     ///  of its generating .proto file.
   5153     /// </summary>
   5154     public pbc::RepeatedField<global::Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation> Annotation {
   5155       get { return annotation_; }
   5156     }
   5157 
   5158     public override bool Equals(object other) {
   5159       return Equals(other as GeneratedCodeInfo);
   5160     }
   5161 
   5162     public bool Equals(GeneratedCodeInfo other) {
   5163       if (ReferenceEquals(other, null)) {
   5164         return false;
   5165       }
   5166       if (ReferenceEquals(other, this)) {
   5167         return true;
   5168       }
   5169       if(!annotation_.Equals(other.annotation_)) return false;
   5170       return true;
   5171     }
   5172 
   5173     public override int GetHashCode() {
   5174       int hash = 1;
   5175       hash ^= annotation_.GetHashCode();
   5176       return hash;
   5177     }
   5178 
   5179     public override string ToString() {
   5180       return pb::JsonFormatter.ToDiagnosticString(this);
   5181     }
   5182 
   5183     public void WriteTo(pb::CodedOutputStream output) {
   5184       annotation_.WriteTo(output, _repeated_annotation_codec);
   5185     }
   5186 
   5187     public int CalculateSize() {
   5188       int size = 0;
   5189       size += annotation_.CalculateSize(_repeated_annotation_codec);
   5190       return size;
   5191     }
   5192 
   5193     public void MergeFrom(GeneratedCodeInfo other) {
   5194       if (other == null) {
   5195         return;
   5196       }
   5197       annotation_.Add(other.annotation_);
   5198     }
   5199 
   5200     public void MergeFrom(pb::CodedInputStream input) {
   5201       uint tag;
   5202       while ((tag = input.ReadTag()) != 0) {
   5203         switch(tag) {
   5204           default:
   5205             input.SkipLastField();
   5206             break;
   5207           case 10: {
   5208             annotation_.AddEntriesFrom(input, _repeated_annotation_codec);
   5209             break;
   5210           }
   5211         }
   5212       }
   5213     }
   5214 
   5215     #region Nested types
   5216     /// <summary>Container for nested types declared in the GeneratedCodeInfo message type.</summary>
   5217     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   5218     public static partial class Types {
   5219       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   5220       internal sealed partial class Annotation : pb::IMessage<Annotation> {
   5221         private static readonly pb::MessageParser<Annotation> _parser = new pb::MessageParser<Annotation>(() => new Annotation());
   5222         public static pb::MessageParser<Annotation> Parser { get { return _parser; } }
   5223 
   5224         public static pbr::MessageDescriptor Descriptor {
   5225           get { return global::Google.Protobuf.Reflection.GeneratedCodeInfo.Descriptor.NestedTypes[0]; }
   5226         }
   5227 
   5228         pbr::MessageDescriptor pb::IMessage.Descriptor {
   5229           get { return Descriptor; }
   5230         }
   5231 
   5232         public Annotation() {
   5233           OnConstruction();
   5234         }
   5235 
   5236         partial void OnConstruction();
   5237 
   5238         public Annotation(Annotation other) : this() {
   5239           path_ = other.path_.Clone();
   5240           sourceFile_ = other.sourceFile_;
   5241           begin_ = other.begin_;
   5242           end_ = other.end_;
   5243         }
   5244 
   5245         public Annotation Clone() {
   5246           return new Annotation(this);
   5247         }
   5248 
   5249         /// <summary>Field number for the "path" field.</summary>
   5250         public const int PathFieldNumber = 1;
   5251         private static readonly pb::FieldCodec<int> _repeated_path_codec
   5252             = pb::FieldCodec.ForInt32(10);
   5253         private readonly pbc::RepeatedField<int> path_ = new pbc::RepeatedField<int>();
   5254         /// <summary>
   5255         ///  Identifies the element in the original source .proto file. This field
   5256         ///  is formatted the same as SourceCodeInfo.Location.path.
   5257         /// </summary>
   5258         public pbc::RepeatedField<int> Path {
   5259           get { return path_; }
   5260         }
   5261 
   5262         /// <summary>Field number for the "source_file" field.</summary>
   5263         public const int SourceFileFieldNumber = 2;
   5264         private string sourceFile_ = "";
   5265         /// <summary>
   5266         ///  Identifies the filesystem path to the original source .proto.
   5267         /// </summary>
   5268         public string SourceFile {
   5269           get { return sourceFile_; }
   5270           set {
   5271             sourceFile_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
   5272           }
   5273         }
   5274 
   5275         /// <summary>Field number for the "begin" field.</summary>
   5276         public const int BeginFieldNumber = 3;
   5277         private int begin_;
   5278         /// <summary>
   5279         ///  Identifies the starting offset in bytes in the generated code
   5280         ///  that relates to the identified object.
   5281         /// </summary>
   5282         public int Begin {
   5283           get { return begin_; }
   5284           set {
   5285             begin_ = value;
   5286           }
   5287         }
   5288 
   5289         /// <summary>Field number for the "end" field.</summary>
   5290         public const int EndFieldNumber = 4;
   5291         private int end_;
   5292         /// <summary>
   5293         ///  Identifies the ending offset in bytes in the generated code that
   5294         ///  relates to the identified offset. The end offset should be one past
   5295         ///  the last relevant byte (so the length of the text = end - begin).
   5296         /// </summary>
   5297         public int End {
   5298           get { return end_; }
   5299           set {
   5300             end_ = value;
   5301           }
   5302         }
   5303 
   5304         public override bool Equals(object other) {
   5305           return Equals(other as Annotation);
   5306         }
   5307 
   5308         public bool Equals(Annotation other) {
   5309           if (ReferenceEquals(other, null)) {
   5310             return false;
   5311           }
   5312           if (ReferenceEquals(other, this)) {
   5313             return true;
   5314           }
   5315           if(!path_.Equals(other.path_)) return false;
   5316           if (SourceFile != other.SourceFile) return false;
   5317           if (Begin != other.Begin) return false;
   5318           if (End != other.End) return false;
   5319           return true;
   5320         }
   5321 
   5322         public override int GetHashCode() {
   5323           int hash = 1;
   5324           hash ^= path_.GetHashCode();
   5325           if (SourceFile.Length != 0) hash ^= SourceFile.GetHashCode();
   5326           if (Begin != 0) hash ^= Begin.GetHashCode();
   5327           if (End != 0) hash ^= End.GetHashCode();
   5328           return hash;
   5329         }
   5330 
   5331         public override string ToString() {
   5332           return pb::JsonFormatter.ToDiagnosticString(this);
   5333         }
   5334 
   5335         public void WriteTo(pb::CodedOutputStream output) {
   5336           path_.WriteTo(output, _repeated_path_codec);
   5337           if (SourceFile.Length != 0) {
   5338             output.WriteRawTag(18);
   5339             output.WriteString(SourceFile);
   5340           }
   5341           if (Begin != 0) {
   5342             output.WriteRawTag(24);
   5343             output.WriteInt32(Begin);
   5344           }
   5345           if (End != 0) {
   5346             output.WriteRawTag(32);
   5347             output.WriteInt32(End);
   5348           }
   5349         }
   5350 
   5351         public int CalculateSize() {
   5352           int size = 0;
   5353           size += path_.CalculateSize(_repeated_path_codec);
   5354           if (SourceFile.Length != 0) {
   5355             size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceFile);
   5356           }
   5357           if (Begin != 0) {
   5358             size += 1 + pb::CodedOutputStream.ComputeInt32Size(Begin);
   5359           }
   5360           if (End != 0) {
   5361             size += 1 + pb::CodedOutputStream.ComputeInt32Size(End);
   5362           }
   5363           return size;
   5364         }
   5365 
   5366         public void MergeFrom(Annotation other) {
   5367           if (other == null) {
   5368             return;
   5369           }
   5370           path_.Add(other.path_);
   5371           if (other.SourceFile.Length != 0) {
   5372             SourceFile = other.SourceFile;
   5373           }
   5374           if (other.Begin != 0) {
   5375             Begin = other.Begin;
   5376           }
   5377           if (other.End != 0) {
   5378             End = other.End;
   5379           }
   5380         }
   5381 
   5382         public void MergeFrom(pb::CodedInputStream input) {
   5383           uint tag;
   5384           while ((tag = input.ReadTag()) != 0) {
   5385             switch(tag) {
   5386               default:
   5387                 input.SkipLastField();
   5388                 break;
   5389               case 10:
   5390               case 8: {
   5391                 path_.AddEntriesFrom(input, _repeated_path_codec);
   5392                 break;
   5393               }
   5394               case 18: {
   5395                 SourceFile = input.ReadString();
   5396                 break;
   5397               }
   5398               case 24: {
   5399                 Begin = input.ReadInt32();
   5400                 break;
   5401               }
   5402               case 32: {
   5403                 End = input.ReadInt32();
   5404                 break;
   5405               }
   5406             }
   5407           }
   5408         }
   5409 
   5410       }
   5411 
   5412     }
   5413     #endregion
   5414 
   5415   }
   5416 
   5417   #endregion
   5418 
   5419 }
   5420 
   5421 #endregion Designer generated code
   5422