// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: google/protobuf/unittest_well_known_types.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021, 8981
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Google.Protobuf.TestProtos {

  /// <summary>Holder for reflection information generated from google/protobuf/unittest_well_known_types.proto</summary>
  public static partial class UnittestWellKnownTypesReflection {

    #region Descriptor
    /// <summary>File descriptor for google/protobuf/unittest_well_known_types.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static UnittestWellKnownTypesReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Ci9nb29nbGUvcHJvdG9idWYvdW5pdHRlc3Rfd2VsbF9rbm93bl90eXBlcy5w",
            "cm90bxIPcHJvdG8yX3VuaXR0ZXN0Ghlnb29nbGUvcHJvdG9idWYvYW55LnBy",
            "b3RvGhlnb29nbGUvcHJvdG9idWYvYXBpLnByb3RvGh5nb29nbGUvcHJvdG9i",
            "dWYvZHVyYXRpb24ucHJvdG8aG2dvb2dsZS9wcm90b2J1Zi9lbXB0eS5wcm90",
            "bxogZ29vZ2xlL3Byb3RvYnVmL2ZpZWxkX21hc2sucHJvdG8aJGdvb2dsZS9w",
            "cm90b2J1Zi9zb3VyY2VfY29udGV4dC5wcm90bxocZ29vZ2xlL3Byb3RvYnVm",
            "L3N0cnVjdC5wcm90bxofZ29vZ2xlL3Byb3RvYnVmL3RpbWVzdGFtcC5wcm90",
            "bxoaZ29vZ2xlL3Byb3RvYnVmL3R5cGUucHJvdG8aHmdvb2dsZS9wcm90b2J1",
            "Zi93cmFwcGVycy5wcm90byK+BwoSVGVzdFdlbGxLbm93blR5cGVzEicKCWFu",
            "eV9maWVsZBgBIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkSJwoJYXBpX2Zp",
            "ZWxkGAIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFwaRIxCg5kdXJhdGlvbl9m",
            "aWVsZBgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIrCgtlbXB0",
            "eV9maWVsZBgEIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRI0ChBmaWVs",
            "ZF9tYXNrX2ZpZWxkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFz",
            "axI8ChRzb3VyY2VfY29udGV4dF9maWVsZBgGIAEoCzIeLmdvb2dsZS5wcm90",
            "b2J1Zi5Tb3VyY2VDb250ZXh0Ei0KDHN0cnVjdF9maWVsZBgHIAEoCzIXLmdv",
            "b2dsZS5wcm90b2J1Zi5TdHJ1Y3QSMwoPdGltZXN0YW1wX2ZpZWxkGAggASgL",
            "MhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIpCgp0eXBlX2ZpZWxkGAkg",
            "ASgLMhUuZ29vZ2xlLnByb3RvYnVmLlR5cGUSMgoMZG91YmxlX2ZpZWxkGAog",
            "ASgLMhwuZ29vZ2xlLnByb3RvYnVmLkRvdWJsZVZhbHVlEjAKC2Zsb2F0X2Zp",
            "ZWxkGAsgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkZsb2F0VmFsdWUSMAoLaW50",
            "NjRfZmllbGQYDCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRIy",
            "Cgx1aW50NjRfZmllbGQYDSABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDY0",
            "VmFsdWUSMAoLaW50MzJfZmllbGQYDiABKAsyGy5nb29nbGUucHJvdG9idWYu",
            "SW50MzJWYWx1ZRIyCgx1aW50MzJfZmllbGQYDyABKAsyHC5nb29nbGUucHJv",
            "dG9idWYuVUludDMyVmFsdWUSLgoKYm9vbF9maWVsZBgQIAEoCzIaLmdvb2ds",
            "ZS5wcm90b2J1Zi5Cb29sVmFsdWUSMgoMc3RyaW5nX2ZpZWxkGBEgASgLMhwu",
            "Z29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjAKC2J5dGVzX2ZpZWxkGBIg",
            "ASgLMhsuZ29vZ2xlLnByb3RvYnVmLkJ5dGVzVmFsdWUSKwoLdmFsdWVfZmll",
            "bGQYEyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUilQcKFlJlcGVhdGVk",
            "V2VsbEtub3duVHlwZXMSJwoJYW55X2ZpZWxkGAEgAygLMhQuZ29vZ2xlLnBy",
            "b3RvYnVmLkFueRInCglhcGlfZmllbGQYAiADKAsyFC5nb29nbGUucHJvdG9i",
            "dWYuQXBpEjEKDmR1cmF0aW9uX2ZpZWxkGAMgAygLMhkuZ29vZ2xlLnByb3Rv",
            "YnVmLkR1cmF0aW9uEisKC2VtcHR5X2ZpZWxkGAQgAygLMhYuZ29vZ2xlLnBy",
            "b3RvYnVmLkVtcHR5EjQKEGZpZWxkX21hc2tfZmllbGQYBSADKAsyGi5nb29n",
            "bGUucHJvdG9idWYuRmllbGRNYXNrEjwKFHNvdXJjZV9jb250ZXh0X2ZpZWxk",
            "GAYgAygLMh4uZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvbnRleHQSLQoMc3Ry",
            "dWN0X2ZpZWxkGAcgAygLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIzCg90",
            "aW1lc3RhbXBfZmllbGQYCCADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0",
            "YW1wEikKCnR5cGVfZmllbGQYCSADKAsyFS5nb29nbGUucHJvdG9idWYuVHlw",
            "ZRIyCgxkb3VibGVfZmllbGQYCiADKAsyHC5nb29nbGUucHJvdG9idWYuRG91",
            "YmxlVmFsdWUSMAoLZmxvYXRfZmllbGQYCyADKAsyGy5nb29nbGUucHJvdG9i",
            "dWYuRmxvYXRWYWx1ZRIwCgtpbnQ2NF9maWVsZBgMIAMoCzIbLmdvb2dsZS5w",
            "cm90b2J1Zi5JbnQ2NFZhbHVlEjIKDHVpbnQ2NF9maWVsZBgNIAMoCzIcLmdv",
            "b2dsZS5wcm90b2J1Zi5VSW50NjRWYWx1ZRIwCgtpbnQzMl9maWVsZBgOIAMo",
            "CzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEjIKDHVpbnQzMl9maWVs",
            "ZBgPIAMoCzIcLmdvb2dsZS5wcm90b2J1Zi5VSW50MzJWYWx1ZRIuCgpib29s",
            "X2ZpZWxkGBAgAygLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZRIyCgxz",
            "dHJpbmdfZmllbGQYESADKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFs",
            "dWUSMAoLYnl0ZXNfZmllbGQYEiADKAsyGy5nb29nbGUucHJvdG9idWYuQnl0",
            "ZXNWYWx1ZSLFBwoTT25lb2ZXZWxsS25vd25UeXBlcxIpCglhbnlfZmllbGQY",
            "ASABKAsyFC5nb29nbGUucHJvdG9idWYuQW55SAASKQoJYXBpX2ZpZWxkGAIg",
            "ASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFwaUgAEjMKDmR1cmF0aW9uX2ZpZWxk",
            "GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uSAASLQoLZW1wdHlf",
            "ZmllbGQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI2ChBmaWVs",
            "ZF9tYXNrX2ZpZWxkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFz",
            "a0gAEj4KFHNvdXJjZV9jb250ZXh0X2ZpZWxkGAYgASgLMh4uZ29vZ2xlLnBy",
            "b3RvYnVmLlNvdXJjZUNvbnRleHRIABIvCgxzdHJ1Y3RfZmllbGQYByABKAsy",
            "Fy5nb29nbGUucHJvdG9idWYuU3RydWN0SAASNQoPdGltZXN0YW1wX2ZpZWxk",
            "GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAEisKCnR5cGVf",
            "ZmllbGQYCSABKAsyFS5nb29nbGUucHJvdG9idWYuVHlwZUgAEjQKDGRvdWJs",
            "ZV9maWVsZBgKIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5Eb3VibGVWYWx1ZUgA",
            "EjIKC2Zsb2F0X2ZpZWxkGAsgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkZsb2F0",
            "VmFsdWVIABIyCgtpbnQ2NF9maWVsZBgMIAEoCzIbLmdvb2dsZS5wcm90b2J1",
            "Zi5JbnQ2NFZhbHVlSAASNAoMdWludDY0X2ZpZWxkGA0gASgLMhwuZ29vZ2xl",
            "LnByb3RvYnVmLlVJbnQ2NFZhbHVlSAASMgoLaW50MzJfZmllbGQYDiABKAsy",
            "Gy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZUgAEjQKDHVpbnQzMl9maWVs",
            "ZBgPIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5VSW50MzJWYWx1ZUgAEjAKCmJv",
            "b2xfZmllbGQYECABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlSAAS",
            "NAoMc3RyaW5nX2ZpZWxkGBEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmlu",
            "Z1ZhbHVlSAASMgoLYnl0ZXNfZmllbGQYEiABKAsyGy5nb29nbGUucHJvdG9i",
            "dWYuQnl0ZXNWYWx1ZUgAQg0KC29uZW9mX2ZpZWxkIvIVChFNYXBXZWxsS25v",
            "d25UeXBlcxJDCglhbnlfZmllbGQYASADKAsyMC5wcm90bzJfdW5pdHRlc3Qu",
            "TWFwV2VsbEtub3duVHlwZXMuQW55RmllbGRFbnRyeRJDCglhcGlfZmllbGQY",
            "AiADKAsyMC5wcm90bzJfdW5pdHRlc3QuTWFwV2VsbEtub3duVHlwZXMuQXBp",
            "RmllbGRFbnRyeRJNCg5kdXJhdGlvbl9maWVsZBgDIAMoCzI1LnByb3RvMl91",
            "bml0dGVzdC5NYXBXZWxsS25vd25UeXBlcy5EdXJhdGlvbkZpZWxkRW50cnkS",
            "RwoLZW1wdHlfZmllbGQYBCADKAsyMi5wcm90bzJfdW5pdHRlc3QuTWFwV2Vs",
            "bEtub3duVHlwZXMuRW1wdHlGaWVsZEVudHJ5ElAKEGZpZWxkX21hc2tfZmll",
            "bGQYBSADKAsyNi5wcm90bzJfdW5pdHRlc3QuTWFwV2VsbEtub3duVHlwZXMu",
            "RmllbGRNYXNrRmllbGRFbnRyeRJYChRzb3VyY2VfY29udGV4dF9maWVsZBgG",
            "IAMoCzI6LnByb3RvMl91bml0dGVzdC5NYXBXZWxsS25vd25UeXBlcy5Tb3Vy",
            "Y2VDb250ZXh0RmllbGRFbnRyeRJJCgxzdHJ1Y3RfZmllbGQYByADKAsyMy5w",
            "cm90bzJfdW5pdHRlc3QuTWFwV2VsbEtub3duVHlwZXMuU3RydWN0RmllbGRF",
            "bnRyeRJPCg90aW1lc3RhbXBfZmllbGQYCCADKAsyNi5wcm90bzJfdW5pdHRl",
            "c3QuTWFwV2VsbEtub3duVHlwZXMuVGltZXN0YW1wRmllbGRFbnRyeRJFCgp0",
            "eXBlX2ZpZWxkGAkgAygLMjEucHJvdG8yX3VuaXR0ZXN0Lk1hcFdlbGxLbm93",
            "blR5cGVzLlR5cGVGaWVsZEVudHJ5EkkKDGRvdWJsZV9maWVsZBgKIAMoCzIz",
            "LnByb3RvMl91bml0dGVzdC5NYXBXZWxsS25vd25UeXBlcy5Eb3VibGVGaWVs",
            "ZEVudHJ5EkcKC2Zsb2F0X2ZpZWxkGAsgAygLMjIucHJvdG8yX3VuaXR0ZXN0",
            "Lk1hcFdlbGxLbm93blR5cGVzLkZsb2F0RmllbGRFbnRyeRJHCgtpbnQ2NF9m",
            "aWVsZBgMIAMoCzIyLnByb3RvMl91bml0dGVzdC5NYXBXZWxsS25vd25UeXBl",
            "cy5JbnQ2NEZpZWxkRW50cnkSSQoMdWludDY0X2ZpZWxkGA0gAygLMjMucHJv",
            "dG8yX3VuaXR0ZXN0Lk1hcFdlbGxLbm93blR5cGVzLlVpbnQ2NEZpZWxkRW50",
            "cnkSRwoLaW50MzJfZmllbGQYDiADKAsyMi5wcm90bzJfdW5pdHRlc3QuTWFw",
            "V2VsbEtub3duVHlwZXMuSW50MzJGaWVsZEVudHJ5EkkKDHVpbnQzMl9maWVs",
            "ZBgPIAMoCzIzLnByb3RvMl91bml0dGVzdC5NYXBXZWxsS25vd25UeXBlcy5V",
            "aW50MzJGaWVsZEVudHJ5EkUKCmJvb2xfZmllbGQYECADKAsyMS5wcm90bzJf",
            "dW5pdHRlc3QuTWFwV2VsbEtub3duVHlwZXMuQm9vbEZpZWxkRW50cnkSSQoM",
            "c3RyaW5nX2ZpZWxkGBEgAygLMjMucHJvdG8yX3VuaXR0ZXN0Lk1hcFdlbGxL",
            "bm93blR5cGVzLlN0cmluZ0ZpZWxkRW50cnkSRwoLYnl0ZXNfZmllbGQYEiAD",
            "KAsyMi5wcm90bzJfdW5pdHRlc3QuTWFwV2VsbEtub3duVHlwZXMuQnl0ZXNG",
            "aWVsZEVudHJ5GkUKDUFueUZpZWxkRW50cnkSCwoDa2V5GAEgASgFEiMKBXZh",
            "bHVlGAIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueToCOAEaRQoNQXBpRmll",
            "bGRFbnRyeRILCgNrZXkYASABKAUSIwoFdmFsdWUYAiABKAsyFC5nb29nbGUu",
            "cHJvdG9idWYuQXBpOgI4ARpPChJEdXJhdGlvbkZpZWxkRW50cnkSCwoDa2V5",
            "GAEgASgFEigKBXZhbHVlGAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0",
            "aW9uOgI4ARpJCg9FbXB0eUZpZWxkRW50cnkSCwoDa2V5GAEgASgFEiUKBXZh",
            "bHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5OgI4ARpRChNGaWVs",
            "ZE1hc2tGaWVsZEVudHJ5EgsKA2tleRgBIAEoBRIpCgV2YWx1ZRgCIAEoCzIa",
            "Lmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2s6AjgBGlkKF1NvdXJjZUNvbnRl",
            "eHRGaWVsZEVudHJ5EgsKA2tleRgBIAEoBRItCgV2YWx1ZRgCIAEoCzIeLmdv",
            "b2dsZS5wcm90b2J1Zi5Tb3VyY2VDb250ZXh0OgI4ARpLChBTdHJ1Y3RGaWVs",
            "ZEVudHJ5EgsKA2tleRgBIAEoBRImCgV2YWx1ZRgCIAEoCzIXLmdvb2dsZS5w",
            "cm90b2J1Zi5TdHJ1Y3Q6AjgBGlEKE1RpbWVzdGFtcEZpZWxkRW50cnkSCwoD",
            "a2V5GAEgASgFEikKBXZhbHVlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRp",
            "bWVzdGFtcDoCOAEaRwoOVHlwZUZpZWxkRW50cnkSCwoDa2V5GAEgASgFEiQK",
            "BXZhbHVlGAIgASgLMhUuZ29vZ2xlLnByb3RvYnVmLlR5cGU6AjgBGlAKEERv",
            "dWJsZUZpZWxkRW50cnkSCwoDa2V5GAEgASgFEisKBXZhbHVlGAIgASgLMhwu",
            "Z29vZ2xlLnByb3RvYnVmLkRvdWJsZVZhbHVlOgI4ARpOCg9GbG9hdEZpZWxk",
            "RW50cnkSCwoDa2V5GAEgASgFEioKBXZhbHVlGAIgASgLMhsuZ29vZ2xlLnBy",
            "b3RvYnVmLkZsb2F0VmFsdWU6AjgBGk4KD0ludDY0RmllbGRFbnRyeRILCgNr",
            "ZXkYASABKAUSKgoFdmFsdWUYAiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50",
            "NjRWYWx1ZToCOAEaUAoQVWludDY0RmllbGRFbnRyeRILCgNrZXkYASABKAUS",
            "KwoFdmFsdWUYAiABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDY0VmFsdWU6",
            "AjgBGk4KD0ludDMyRmllbGRFbnRyeRILCgNrZXkYASABKAUSKgoFdmFsdWUY",
            "AiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZToCOAEaUAoQVWlu",
            "dDMyRmllbGRFbnRyeRILCgNrZXkYASABKAUSKwoFdmFsdWUYAiABKAsyHC5n",
            "b29nbGUucHJvdG9idWYuVUludDMyVmFsdWU6AjgBGkwKDkJvb2xGaWVsZEVu",
            "dHJ5EgsKA2tleRgBIAEoBRIpCgV2YWx1ZRgCIAEoCzIaLmdvb2dsZS5wcm90",
            "b2J1Zi5Cb29sVmFsdWU6AjgBGlAKEFN0cmluZ0ZpZWxkRW50cnkSCwoDa2V5",
            "GAEgASgFEisKBXZhbHVlGAIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmlu",
            "Z1ZhbHVlOgI4ARpOCg9CeXRlc0ZpZWxkRW50cnkSCwoDa2V5GAEgASgFEioK",
            "BXZhbHVlGAIgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkJ5dGVzVmFsdWU6AjgB",
            "QjkKGGNvbS5nb29nbGUucHJvdG9idWYudGVzdFABqgIaR29vZ2xlLlByb3Rv",
            "YnVmLlRlc3RQcm90b3NiBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.AnyReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.ApiReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.FieldMaskReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.SourceContextReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TypeReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestWellKnownTypes), global::Google.Protobuf.TestProtos.TestWellKnownTypes.Parser, new[]{ "AnyField", "ApiField", "DurationField", "EmptyField", "FieldMaskField", "SourceContextField", "StructField", "TimestampField", "TypeField", "DoubleField", "FloatField", "Int64Field", "Uint64Field", "Int32Field", "Uint32Field", "BoolField", "StringField", "BytesField", "ValueField" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.RepeatedWellKnownTypes), global::Google.Protobuf.TestProtos.RepeatedWellKnownTypes.Parser, new[]{ "AnyField", "ApiField", "DurationField", "EmptyField", "FieldMaskField", "SourceContextField", "StructField", "TimestampField", "TypeField", "DoubleField", "FloatField", "Int64Field", "Uint64Field", "Int32Field", "Uint32Field", "BoolField", "StringField", "BytesField" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.OneofWellKnownTypes), global::Google.Protobuf.TestProtos.OneofWellKnownTypes.Parser, new[]{ "AnyField", "ApiField", "DurationField", "EmptyField", "FieldMaskField", "SourceContextField", "StructField", "TimestampField", "TypeField", "DoubleField", "FloatField", "Int64Field", "Uint64Field", "Int32Field", "Uint32Field", "BoolField", "StringField", "BytesField" }, new[]{ "OneofField" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.MapWellKnownTypes), global::Google.Protobuf.TestProtos.MapWellKnownTypes.Parser, new[]{ "AnyField", "ApiField", "DurationField", "EmptyField", "FieldMaskField", "SourceContextField", "StructField", "TimestampField", "TypeField", "DoubleField", "FloatField", "Int64Field", "Uint64Field", "Int32Field", "Uint32Field", "BoolField", "StringField", "BytesField" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, })
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  /// Test that we can include all well-known types.
  /// Each wrapper type is included separately, as languages
  /// map handle different wrappers in different ways.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class TestWellKnownTypes : pb::IMessage<TestWellKnownTypes>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TestWellKnownTypes> _parser = new pb::MessageParser<TestWellKnownTypes>(() => new TestWellKnownTypes());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TestWellKnownTypes> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.TestProtos.UnittestWellKnownTypesReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestWellKnownTypes() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestWellKnownTypes(TestWellKnownTypes other) : this() {
      anyField_ = other.anyField_ != null ? other.anyField_.Clone() : null;
      apiField_ = other.apiField_ != null ? other.apiField_.Clone() : null;
      durationField_ = other.durationField_ != null ? other.durationField_.Clone() : null;
      emptyField_ = other.emptyField_ != null ? other.emptyField_.Clone() : null;
      fieldMaskField_ = other.fieldMaskField_ != null ? other.fieldMaskField_.Clone() : null;
      sourceContextField_ = other.sourceContextField_ != null ? other.sourceContextField_.Clone() : null;
      structField_ = other.structField_ != null ? other.structField_.Clone() : null;
      timestampField_ = other.timestampField_ != null ? other.timestampField_.Clone() : null;
      typeField_ = other.typeField_ != null ? other.typeField_.Clone() : null;
      DoubleField = other.DoubleField;
      FloatField = other.FloatField;
      Int64Field = other.Int64Field;
      Uint64Field = other.Uint64Field;
      Int32Field = other.Int32Field;
      Uint32Field = other.Uint32Field;
      BoolField = other.BoolField;
      StringField = other.StringField;
      BytesField = other.BytesField;
      valueField_ = other.valueField_ != null ? other.valueField_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestWellKnownTypes Clone() {
      return new TestWellKnownTypes(this);
    }

    /// <summary>Field number for the "any_field" field.</summary>
    public const int AnyFieldFieldNumber = 1;
    private global::Google.Protobuf.WellKnownTypes.Any anyField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Any AnyField {
      get { return anyField_; }
      set {
        anyField_ = value;
      }
    }

    /// <summary>Field number for the "api_field" field.</summary>
    public const int ApiFieldFieldNumber = 2;
    private global::Google.Protobuf.WellKnownTypes.Api apiField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Api ApiField {
      get { return apiField_; }
      set {
        apiField_ = value;
      }
    }

    /// <summary>Field number for the "duration_field" field.</summary>
    public const int DurationFieldFieldNumber = 3;
    private global::Google.Protobuf.WellKnownTypes.Duration durationField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Duration DurationField {
      get { return durationField_; }
      set {
        durationField_ = value;
      }
    }

    /// <summary>Field number for the "empty_field" field.</summary>
    public const int EmptyFieldFieldNumber = 4;
    private global::Google.Protobuf.WellKnownTypes.Empty emptyField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Empty EmptyField {
      get { return emptyField_; }
      set {
        emptyField_ = value;
      }
    }

    /// <summary>Field number for the "field_mask_field" field.</summary>
    public const int FieldMaskFieldFieldNumber = 5;
    private global::Google.Protobuf.WellKnownTypes.FieldMask fieldMaskField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.FieldMask FieldMaskField {
      get { return fieldMaskField_; }
      set {
        fieldMaskField_ = value;
      }
    }

    /// <summary>Field number for the "source_context_field" field.</summary>
    public const int SourceContextFieldFieldNumber = 6;
    private global::Google.Protobuf.WellKnownTypes.SourceContext sourceContextField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.SourceContext SourceContextField {
      get { return sourceContextField_; }
      set {
        sourceContextField_ = value;
      }
    }

    /// <summary>Field number for the "struct_field" field.</summary>
    public const int StructFieldFieldNumber = 7;
    private global::Google.Protobuf.WellKnownTypes.Struct structField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Struct StructField {
      get { return structField_; }
      set {
        structField_ = value;
      }
    }

    /// <summary>Field number for the "timestamp_field" field.</summary>
    public const int TimestampFieldFieldNumber = 8;
    private global::Google.Protobuf.WellKnownTypes.Timestamp timestampField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp TimestampField {
      get { return timestampField_; }
      set {
        timestampField_ = value;
      }
    }

    /// <summary>Field number for the "type_field" field.</summary>
    public const int TypeFieldFieldNumber = 9;
    private global::Google.Protobuf.WellKnownTypes.Type typeField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Type TypeField {
      get { return typeField_; }
      set {
        typeField_ = value;
      }
    }

    /// <summary>Field number for the "double_field" field.</summary>
    public const int DoubleFieldFieldNumber = 10;
    private static readonly pb::FieldCodec<double?> _single_doubleField_codec = pb::FieldCodec.ForStructWrapper<double>(82);
    private double? doubleField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public double? DoubleField {
      get { return doubleField_; }
      set {
        doubleField_ = value;
      }
    }


    /// <summary>Field number for the "float_field" field.</summary>
    public const int FloatFieldFieldNumber = 11;
    private static readonly pb::FieldCodec<float?> _single_floatField_codec = pb::FieldCodec.ForStructWrapper<float>(90);
    private float? floatField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float? FloatField {
      get { return floatField_; }
      set {
        floatField_ = value;
      }
    }


    /// <summary>Field number for the "int64_field" field.</summary>
    public const int Int64FieldFieldNumber = 12;
    private static readonly pb::FieldCodec<long?> _single_int64Field_codec = pb::FieldCodec.ForStructWrapper<long>(98);
    private long? int64Field_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long? Int64Field {
      get { return int64Field_; }
      set {
        int64Field_ = value;
      }
    }


    /// <summary>Field number for the "uint64_field" field.</summary>
    public const int Uint64FieldFieldNumber = 13;
    private static readonly pb::FieldCodec<ulong?> _single_uint64Field_codec = pb::FieldCodec.ForStructWrapper<ulong>(106);
    private ulong? uint64Field_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong? Uint64Field {
      get { return uint64Field_; }
      set {
        uint64Field_ = value;
      }
    }


    /// <summary>Field number for the "int32_field" field.</summary>
    public const int Int32FieldFieldNumber = 14;
    private static readonly pb::FieldCodec<int?> _single_int32Field_codec = pb::FieldCodec.ForStructWrapper<int>(114);
    private int? int32Field_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int? Int32Field {
      get { return int32Field_; }
      set {
        int32Field_ = value;
      }
    }


    /// <summary>Field number for the "uint32_field" field.</summary>
    public const int Uint32FieldFieldNumber = 15;
    private static readonly pb::FieldCodec<uint?> _single_uint32Field_codec = pb::FieldCodec.ForStructWrapper<uint>(122);
    private uint? uint32Field_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint? Uint32Field {
      get { return uint32Field_; }
      set {
        uint32Field_ = value;
      }
    }


    /// <summary>Field number for the "bool_field" field.</summary>
    public const int BoolFieldFieldNumber = 16;
    private static readonly pb::FieldCodec<bool?> _single_boolField_codec = pb::FieldCodec.ForStructWrapper<bool>(130);
    private bool? boolField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool? BoolField {
      get { return boolField_; }
      set {
        boolField_ = value;
      }
    }


    /// <summary>Field number for the "string_field" field.</summary>
    public const int StringFieldFieldNumber = 17;
    private static readonly pb::FieldCodec<string> _single_stringField_codec = pb::FieldCodec.ForClassWrapper<string>(138);
    private string stringField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string StringField {
      get { return stringField_; }
      set {
        stringField_ = value;
      }
    }


    /// <summary>Field number for the "bytes_field" field.</summary>
    public const int BytesFieldFieldNumber = 18;
    private static readonly pb::FieldCodec<pb::ByteString> _single_bytesField_codec = pb::FieldCodec.ForClassWrapper<pb::ByteString>(146);
    private pb::ByteString bytesField_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString BytesField {
      get { return bytesField_; }
      set {
        bytesField_ = value;
      }
    }


    /// <summary>Field number for the "value_field" field.</summary>
    public const int ValueFieldFieldNumber = 19;
    private global::Google.Protobuf.WellKnownTypes.Value valueField_;
    /// <summary>
    /// Part of struct, but useful to be able to test separately
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Value ValueField {
      get { return valueField_; }
      set {
        valueField_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as TestWellKnownTypes);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestWellKnownTypes other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AnyField, other.AnyField)) return false;
      if (!object.Equals(ApiField, other.ApiField)) return false;
      if (!object.Equals(DurationField, other.DurationField)) return false;
      if (!object.Equals(EmptyField, other.EmptyField)) return false;
      if (!object.Equals(FieldMaskField, other.FieldMaskField)) return false;
      if (!object.Equals(SourceContextField, other.SourceContextField)) return false;
      if (!object.Equals(StructField, other.StructField)) return false;
      if (!object.Equals(TimestampField, other.TimestampField)) return false;
      if (!object.Equals(TypeField, other.TypeField)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.Equals(DoubleField, other.DoubleField)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.Equals(FloatField, other.FloatField)) return false;
      if (Int64Field != other.Int64Field) return false;
      if (Uint64Field != other.Uint64Field) return false;
      if (Int32Field != other.Int32Field) return false;
      if (Uint32Field != other.Uint32Field) return false;
      if (BoolField != other.BoolField) return false;
      if (StringField != other.StringField) return false;
      if (BytesField != other.BytesField) return false;
      if (!object.Equals(ValueField, other.ValueField)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (anyField_ != null) hash ^= AnyField.GetHashCode();
      if (apiField_ != null) hash ^= ApiField.GetHashCode();
      if (durationField_ != null) hash ^= DurationField.GetHashCode();
      if (emptyField_ != null) hash ^= EmptyField.GetHashCode();
      if (fieldMaskField_ != null) hash ^= FieldMaskField.GetHashCode();
      if (sourceContextField_ != null) hash ^= SourceContextField.GetHashCode();
      if (structField_ != null) hash ^= StructField.GetHashCode();
      if (timestampField_ != null) hash ^= TimestampField.GetHashCode();
      if (typeField_ != null) hash ^= TypeField.GetHashCode();
      if (doubleField_ != null) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.GetHashCode(DoubleField);
      if (floatField_ != null) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.GetHashCode(FloatField);
      if (int64Field_ != null) hash ^= Int64Field.GetHashCode();
      if (uint64Field_ != null) hash ^= Uint64Field.GetHashCode();
      if (int32Field_ != null) hash ^= Int32Field.GetHashCode();
      if (uint32Field_ != null) hash ^= Uint32Field.GetHashCode();
      if (boolField_ != null) hash ^= BoolField.GetHashCode();
      if (stringField_ != null) hash ^= StringField.GetHashCode();
      if (bytesField_ != null) hash ^= BytesField.GetHashCode();
      if (valueField_ != null) hash ^= ValueField.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (anyField_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AnyField);
      }
      if (apiField_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(ApiField);
      }
      if (durationField_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(DurationField);
      }
      if (emptyField_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(EmptyField);
      }
      if (fieldMaskField_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(FieldMaskField);
      }
      if (sourceContextField_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(SourceContextField);
      }
      if (structField_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(StructField);
      }
      if (timestampField_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(TimestampField);
      }
      if (typeField_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(TypeField);
      }
      if (doubleField_ != null) {
        _single_doubleField_codec.WriteTagAndValue(output, DoubleField);
      }
      if (floatField_ != null) {
        _single_floatField_codec.WriteTagAndValue(output, FloatField);
      }
      if (int64Field_ != null) {
        _single_int64Field_codec.WriteTagAndValue(output, Int64Field);
      }
      if (uint64Field_ != null) {
        _single_uint64Field_codec.WriteTagAndValue(output, Uint64Field);
      }
      if (int32Field_ != null) {
        _single_int32Field_codec.WriteTagAndValue(output, Int32Field);
      }
      if (uint32Field_ != null) {
        _single_uint32Field_codec.WriteTagAndValue(output, Uint32Field);
      }
      if (boolField_ != null) {
        _single_boolField_codec.WriteTagAndValue(output, BoolField);
      }
      if (stringField_ != null) {
        _single_stringField_codec.WriteTagAndValue(output, StringField);
      }
      if (bytesField_ != null) {
        _single_bytesField_codec.WriteTagAndValue(output, BytesField);
      }
      if (valueField_ != null) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(ValueField);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (anyField_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AnyField);
      }
      if (apiField_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(ApiField);
      }
      if (durationField_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(DurationField);
      }
      if (emptyField_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(EmptyField);
      }
      if (fieldMaskField_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(FieldMaskField);
      }
      if (sourceContextField_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(SourceContextField);
      }
      if (structField_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(StructField);
      }
      if (timestampField_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(TimestampField);
      }
      if (typeField_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(TypeField);
      }
      if (doubleField_ != null) {
        _single_doubleField_codec.WriteTagAndValue(ref output, DoubleField);
      }
      if (floatField_ != null) {
        _single_floatField_codec.WriteTagAndValue(ref output, FloatField);
      }
      if (int64Field_ != null) {
        _single_int64Field_codec.WriteTagAndValue(ref output, Int64Field);
      }
      if (uint64Field_ != null) {
        _single_uint64Field_codec.WriteTagAndValue(ref output, Uint64Field);
      }
      if (int32Field_ != null) {
        _single_int32Field_codec.WriteTagAndValue(ref output, Int32Field);
      }
      if (uint32Field_ != null) {
        _single_uint32Field_codec.WriteTagAndValue(ref output, Uint32Field);
      }
      if (boolField_ != null) {
        _single_boolField_codec.WriteTagAndValue(ref output, BoolField);
      }
      if (stringField_ != null) {
        _single_stringField_codec.WriteTagAndValue(ref output, StringField);
      }
      if (bytesField_ != null) {
        _single_bytesField_codec.WriteTagAndValue(ref output, BytesField);
      }
      if (valueField_ != null) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(ValueField);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (anyField_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AnyField);
      }
      if (apiField_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ApiField);
      }
      if (durationField_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DurationField);
      }
      if (emptyField_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EmptyField);
      }
      if (fieldMaskField_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FieldMaskField);
      }
      if (sourceContextField_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContextField);
      }
      if (structField_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(StructField);
      }
      if (timestampField_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimestampField);
      }
      if (typeField_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TypeField);
      }
      if (doubleField_ != null) {
        size += _single_doubleField_codec.CalculateSizeWithTag(DoubleField);
      }
      if (floatField_ != null) {
        size += _single_floatField_codec.CalculateSizeWithTag(FloatField);
      }
      if (int64Field_ != null) {
        size += _single_int64Field_codec.CalculateSizeWithTag(Int64Field);
      }
      if (uint64Field_ != null) {
        size += _single_uint64Field_codec.CalculateSizeWithTag(Uint64Field);
      }
      if (int32Field_ != null) {
        size += _single_int32Field_codec.CalculateSizeWithTag(Int32Field);
      }
      if (uint32Field_ != null) {
        size += _single_uint32Field_codec.CalculateSizeWithTag(Uint32Field);
      }
      if (boolField_ != null) {
        size += _single_boolField_codec.CalculateSizeWithTag(BoolField);
      }
      if (stringField_ != null) {
        size += _single_stringField_codec.CalculateSizeWithTag(StringField);
      }
      if (bytesField_ != null) {
        size += _single_bytesField_codec.CalculateSizeWithTag(BytesField);
      }
      if (valueField_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ValueField);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestWellKnownTypes other) {
      if (other == null) {
        return;
      }
      if (other.anyField_ != null) {
        if (anyField_ == null) {
          AnyField = new global::Google.Protobuf.WellKnownTypes.Any();
        }
        AnyField.MergeFrom(other.AnyField);
      }
      if (other.apiField_ != null) {
        if (apiField_ == null) {
          ApiField = new global::Google.Protobuf.WellKnownTypes.Api();
        }
        ApiField.MergeFrom(other.ApiField);
      }
      if (other.durationField_ != null) {
        if (durationField_ == null) {
          DurationField = new global::Google.Protobuf.WellKnownTypes.Duration();
        }
        DurationField.MergeFrom(other.DurationField);
      }
      if (other.emptyField_ != null) {
        if (emptyField_ == null) {
          EmptyField = new global::Google.Protobuf.WellKnownTypes.Empty();
        }
        EmptyField.MergeFrom(other.EmptyField);
      }
      if (other.fieldMaskField_ != null) {
        if (fieldMaskField_ == null) {
          FieldMaskField = new global::Google.Protobuf.WellKnownTypes.FieldMask();
        }
        FieldMaskField.MergeFrom(other.FieldMaskField);
      }
      if (other.sourceContextField_ != null) {
        if (sourceContextField_ == null) {
          SourceContextField = new global::Google.Protobuf.WellKnownTypes.SourceContext();
        }
        SourceContextField.MergeFrom(other.SourceContextField);
      }
      if (other.structField_ != null) {
        if (structField_ == null) {
          StructField = new global::Google.Protobuf.WellKnownTypes.Struct();
        }
        StructField.MergeFrom(other.StructField);
      }
      if (other.timestampField_ != null) {
        if (timestampField_ == null) {
          TimestampField = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        TimestampField.MergeFrom(other.TimestampField);
      }
      if (other.typeField_ != null) {
        if (typeField_ == null) {
          TypeField = new global::Google.Protobuf.WellKnownTypes.Type();
        }
        TypeField.MergeFrom(other.TypeField);
      }
      if (other.doubleField_ != null) {
        if (doubleField_ == null || other.DoubleField != 0D) {
          DoubleField = other.DoubleField;
        }
      }
      if (other.floatField_ != null) {
        if (floatField_ == null || other.FloatField != 0F) {
          FloatField = other.FloatField;
        }
      }
      if (other.int64Field_ != null) {
        if (int64Field_ == null || other.Int64Field != 0L) {
          Int64Field = other.Int64Field;
        }
      }
      if (other.uint64Field_ != null) {
        if (uint64Field_ == null || other.Uint64Field != 0UL) {
          Uint64Field = other.Uint64Field;
        }
      }
      if (other.int32Field_ != null) {
        if (int32Field_ == null || other.Int32Field != 0) {
          Int32Field = other.Int32Field;
        }
      }
      if (other.uint32Field_ != null) {
        if (uint32Field_ == null || other.Uint32Field != 0) {
          Uint32Field = other.Uint32Field;
        }
      }
      if (other.boolField_ != null) {
        if (boolField_ == null || other.BoolField != false) {
          BoolField = other.BoolField;
        }
      }
      if (other.stringField_ != null) {
        if (stringField_ == null || other.StringField != "") {
          StringField = other.StringField;
        }
      }
      if (other.bytesField_ != null) {
        if (bytesField_ == null || other.BytesField != pb::ByteString.Empty) {
          BytesField = other.BytesField;
        }
      }
      if (other.valueField_ != null) {
        if (valueField_ == null) {
          ValueField = new global::Google.Protobuf.WellKnownTypes.Value();
        }
        ValueField.MergeFrom(other.ValueField);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (anyField_ == null) {
              AnyField = new global::Google.Protobuf.WellKnownTypes.Any();
            }
            input.ReadMessage(AnyField);
            break;
          }
          case 18: {
            if (apiField_ == null) {
              ApiField = new global::Google.Protobuf.WellKnownTypes.Api();
            }
            input.ReadMessage(ApiField);
            break;
          }
          case 26: {
            if (durationField_ == null) {
              DurationField = new global::Google.Protobuf.WellKnownTypes.Duration();
            }
            input.ReadMessage(DurationField);
            break;
          }
          case 34: {
            if (emptyField_ == null) {
              EmptyField = new global::Google.Protobuf.WellKnownTypes.Empty();
            }
            input.ReadMessage(EmptyField);
            break;
          }
          case 42: {
            if (fieldMaskField_ == null) {
              FieldMaskField = new global::Google.Protobuf.WellKnownTypes.FieldMask();
            }
            input.ReadMessage(FieldMaskField);
            break;
          }
          case 50: {
            if (sourceContextField_ == null) {
              SourceContextField = new global::Google.Protobuf.WellKnownTypes.SourceContext();
            }
            input.ReadMessage(SourceContextField);
            break;
          }
          case 58: {
            if (structField_ == null) {
              StructField = new global::Google.Protobuf.WellKnownTypes.Struct();
            }
            input.ReadMessage(StructField);
            break;
          }
          case 66: {
            if (timestampField_ == null) {
              TimestampField = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(TimestampField);
            break;
          }
          case 74: {
            if (typeField_ == null) {
              TypeField = new global::Google.Protobuf.WellKnownTypes.Type();
            }
            input.ReadMessage(TypeField);
            break;
          }
          case 82: {
            double? value = _single_doubleField_codec.Read(input);
            if (doubleField_ == null || value != 0D) {
              DoubleField = value;
            }
            break;
          }
          case 90: {
            float? value = _single_floatField_codec.Read(input);
            if (floatField_ == null || value != 0F) {
              FloatField = value;
            }
            break;
          }
          case 98: {
            long? value = _single_int64Field_codec.Read(input);
            if (int64Field_ == null || value != 0L) {
              Int64Field = value;
            }
            break;
          }
          case 106: {
            ulong? value = _single_uint64Field_codec.Read(input);
            if (uint64Field_ == null || value != 0UL) {
              Uint64Field = value;
            }
            break;
          }
          case 114: {
            int? value = _single_int32Field_codec.Read(input);
            if (int32Field_ == null || value != 0) {
              Int32Field = value;
            }
            break;
          }
          case 122: {
            uint? value = _single_uint32Field_codec.Read(input);
            if (uint32Field_ == null || value != 0) {
              Uint32Field = value;
            }
            break;
          }
          case 130: {
            bool? value = _single_boolField_codec.Read(input);
            if (boolField_ == null || value != false) {
              BoolField = value;
            }
            break;
          }
          case 138: {
            string value = _single_stringField_codec.Read(input);
            if (stringField_ == null || value != "") {
              StringField = value;
            }
            break;
          }
          case 146: {
            pb::ByteString value = _single_bytesField_codec.Read(input);
            if (bytesField_ == null || value != pb::ByteString.Empty) {
              BytesField = value;
            }
            break;
          }
          case 154: {
            if (valueField_ == null) {
              ValueField = new global::Google.Protobuf.WellKnownTypes.Value();
            }
            input.ReadMessage(ValueField);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (anyField_ == null) {
              AnyField = new global::Google.Protobuf.WellKnownTypes.Any();
            }
            input.ReadMessage(AnyField);
            break;
          }
          case 18: {
            if (apiField_ == null) {
              ApiField = new global::Google.Protobuf.WellKnownTypes.Api();
            }
            input.ReadMessage(ApiField);
            break;
          }
          case 26: {
            if (durationField_ == null) {
              DurationField = new global::Google.Protobuf.WellKnownTypes.Duration();
            }
            input.ReadMessage(DurationField);
            break;
          }
          case 34: {
            if (emptyField_ == null) {
              EmptyField = new global::Google.Protobuf.WellKnownTypes.Empty();
            }
            input.ReadMessage(EmptyField);
            break;
          }
          case 42: {
            if (fieldMaskField_ == null) {
              FieldMaskField = new global::Google.Protobuf.WellKnownTypes.FieldMask();
            }
            input.ReadMessage(FieldMaskField);
            break;
          }
          case 50: {
            if (sourceContextField_ == null) {
              SourceContextField = new global::Google.Protobuf.WellKnownTypes.SourceContext();
            }
            input.ReadMessage(SourceContextField);
            break;
          }
          case 58: {
            if (structField_ == null) {
              StructField = new global::Google.Protobuf.WellKnownTypes.Struct();
            }
            input.ReadMessage(StructField);
            break;
          }
          case 66: {
            if (timestampField_ == null) {
              TimestampField = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(TimestampField);
            break;
          }
          case 74: {
            if (typeField_ == null) {
              TypeField = new global::Google.Protobuf.WellKnownTypes.Type();
            }
            input.ReadMessage(TypeField);
            break;
          }
          case 82: {
            double? value = _single_doubleField_codec.Read(ref input);
            if (doubleField_ == null || value != 0D) {
              DoubleField = value;
            }
            break;
          }
          case 90: {
            float? value = _single_floatField_codec.Read(ref input);
            if (floatField_ == null || value != 0F) {
              FloatField = value;
            }
            break;
          }
          case 98: {
            long? value = _single_int64Field_codec.Read(ref input);
            if (int64Field_ == null || value != 0L) {
              Int64Field = value;
            }
            break;
          }
          case 106: {
            ulong? value = _single_uint64Field_codec.Read(ref input);
            if (uint64Field_ == null || value != 0UL) {
              Uint64Field = value;
            }
            break;
          }
          case 114: {
            int? value = _single_int32Field_codec.Read(ref input);
            if (int32Field_ == null || value != 0) {
              Int32Field = value;
            }
            break;
          }
          case 122: {
            uint? value = _single_uint32Field_codec.Read(ref input);
            if (uint32Field_ == null || value != 0) {
              Uint32Field = value;
            }
            break;
          }
          case 130: {
            bool? value = _single_boolField_codec.Read(ref input);
            if (boolField_ == null || value != false) {
              BoolField = value;
            }
            break;
          }
          case 138: {
            string value = _single_stringField_codec.Read(ref input);
            if (stringField_ == null || value != "") {
              StringField = value;
            }
            break;
          }
          case 146: {
            pb::ByteString value = _single_bytesField_codec.Read(ref input);
            if (bytesField_ == null || value != pb::ByteString.Empty) {
              BytesField = value;
            }
            break;
          }
          case 154: {
            if (valueField_ == null) {
              ValueField = new global::Google.Protobuf.WellKnownTypes.Value();
            }
            input.ReadMessage(ValueField);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// A repeated field for each well-known type.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class RepeatedWellKnownTypes : pb::IMessage<RepeatedWellKnownTypes>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<RepeatedWellKnownTypes> _parser = new pb::MessageParser<RepeatedWellKnownTypes>(() => new RepeatedWellKnownTypes());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<RepeatedWellKnownTypes> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.TestProtos.UnittestWellKnownTypesReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RepeatedWellKnownTypes() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RepeatedWellKnownTypes(RepeatedWellKnownTypes other) : this() {
      anyField_ = other.anyField_.Clone();
      apiField_ = other.apiField_.Clone();
      durationField_ = other.durationField_.Clone();
      emptyField_ = other.emptyField_.Clone();
      fieldMaskField_ = other.fieldMaskField_.Clone();
      sourceContextField_ = other.sourceContextField_.Clone();
      structField_ = other.structField_.Clone();
      timestampField_ = other.timestampField_.Clone();
      typeField_ = other.typeField_.Clone();
      doubleField_ = other.doubleField_.Clone();
      floatField_ = other.floatField_.Clone();
      int64Field_ = other.int64Field_.Clone();
      uint64Field_ = other.uint64Field_.Clone();
      int32Field_ = other.int32Field_.Clone();
      uint32Field_ = other.uint32Field_.Clone();
      boolField_ = other.boolField_.Clone();
      stringField_ = other.stringField_.Clone();
      bytesField_ = other.bytesField_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RepeatedWellKnownTypes Clone() {
      return new RepeatedWellKnownTypes(this);
    }

    /// <summary>Field number for the "any_field" field.</summary>
    public const int AnyFieldFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Any> _repeated_anyField_codec
        = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.WellKnownTypes.Any.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Any> anyField_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Any>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Any> AnyField {
      get { return anyField_; }
    }

    /// <summary>Field number for the "api_field" field.</summary>
    public const int ApiFieldFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Api> _repeated_apiField_codec
        = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Api.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Api> apiField_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Api>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Api> ApiField {
      get { return apiField_; }
    }

    /// <summary>Field number for the "duration_field" field.</summary>
    public const int DurationFieldFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Duration> _repeated_durationField_codec
        = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.WellKnownTypes.Duration.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Duration> durationField_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Duration>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Duration> DurationField {
      get { return durationField_; }
    }

    /// <summary>Field number for the "empty_field" field.</summary>
    public const int EmptyFieldFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Empty> _repeated_emptyField_codec
        = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.WellKnownTypes.Empty.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Empty> emptyField_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Empty>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Empty> EmptyField {
      get { return emptyField_; }
    }

    /// <summary>Field number for the "field_mask_field" field.</summary>
    public const int FieldMaskFieldFieldNumber = 5;
    private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.FieldMask> _repeated_fieldMaskField_codec
        = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.WellKnownTypes.FieldMask.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.FieldMask> fieldMaskField_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.FieldMask>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.FieldMask> FieldMaskField {
      get { return fieldMaskField_; }
    }

    /// <summary>Field number for the "source_context_field" field.</summary>
    public const int SourceContextFieldFieldNumber = 6;
    private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.SourceContext> _repeated_sourceContextField_codec
        = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.WellKnownTypes.SourceContext.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.SourceContext> sourceContextField_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.SourceContext>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.SourceContext> SourceContextField {
      get { return sourceContextField_; }
    }

    /// <summary>Field number for the "struct_field" field.</summary>
    public const int StructFieldFieldNumber = 7;
    private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Struct> _repeated_structField_codec
        = pb::FieldCodec.ForMessage(58, global::Google.Protobuf.WellKnownTypes.Struct.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Struct> structField_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Struct>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Struct> StructField {
      get { return structField_; }
    }

    /// <summary>Field number for the "timestamp_field" field.</summary>
    public const int TimestampFieldFieldNumber = 8;
    private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Timestamp> _repeated_timestampField_codec
        = pb::FieldCodec.ForMessage(66, global::Google.Protobuf.WellKnownTypes.Timestamp.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Timestamp> timestampField_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Timestamp>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Timestamp> TimestampField {
      get { return timestampField_; }
    }

    /// <summary>Field number for the "type_field" field.</summary>
    public const int TypeFieldFieldNumber = 9;
    private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Type> _repeated_typeField_codec
        = pb::FieldCodec.ForMessage(74, global::Google.Protobuf.WellKnownTypes.Type.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Type> typeField_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Type>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Type> TypeField {
      get { return typeField_; }
    }

    /// <summary>Field number for the "double_field" field.</summary>
    public const int DoubleFieldFieldNumber = 10;
    private static readonly pb::FieldCodec<double?> _repeated_doubleField_codec
        = pb::FieldCodec.ForStructWrapper<double>(82);
    private readonly pbc::RepeatedField<double?> doubleField_ = new pbc::RepeatedField<double?>();
    /// <summary>
    /// These don't actually make a lot of sense, but they're not prohibited...
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<double?> DoubleField {
      get { return doubleField_; }
    }

    /// <summary>Field number for the "float_field" field.</summary>
    public const int FloatFieldFieldNumber = 11;
    private static readonly pb::FieldCodec<float?> _repeated_floatField_codec
        = pb::FieldCodec.ForStructWrapper<float>(90);
    private readonly pbc::RepeatedField<float?> floatField_ = new pbc::RepeatedField<float?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<float?> FloatField {
      get { return floatField_; }
    }

    /// <summary>Field number for the "int64_field" field.</summary>
    public const int Int64FieldFieldNumber = 12;
    private static readonly pb::FieldCodec<long?> _repeated_int64Field_codec
        = pb::FieldCodec.ForStructWrapper<long>(98);
    private readonly pbc::RepeatedField<long?> int64Field_ = new pbc::RepeatedField<long?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<long?> Int64Field {
      get { return int64Field_; }
    }

    /// <summary>Field number for the "uint64_field" field.</summary>
    public const int Uint64FieldFieldNumber = 13;
    private static readonly pb::FieldCodec<ulong?> _repeated_uint64Field_codec
        = pb::FieldCodec.ForStructWrapper<ulong>(106);
    private readonly pbc::RepeatedField<ulong?> uint64Field_ = new pbc::RepeatedField<ulong?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<ulong?> Uint64Field {
      get { return uint64Field_; }
    }

    /// <summary>Field number for the "int32_field" field.</summary>
    public const int Int32FieldFieldNumber = 14;
    private static readonly pb::FieldCodec<int?> _repeated_int32Field_codec
        = pb::FieldCodec.ForStructWrapper<int>(114);
    private readonly pbc::RepeatedField<int?> int32Field_ = new pbc::RepeatedField<int?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int?> Int32Field {
      get { return int32Field_; }
    }

    /// <summary>Field number for the "uint32_field" field.</summary>
    public const int Uint32FieldFieldNumber = 15;
    private static readonly pb::FieldCodec<uint?> _repeated_uint32Field_codec
        = pb::FieldCodec.ForStructWrapper<uint>(122);
    private readonly pbc::RepeatedField<uint?> uint32Field_ = new pbc::RepeatedField<uint?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<uint?> Uint32Field {
      get { return uint32Field_; }
    }

    /// <summary>Field number for the "bool_field" field.</summary>
    public const int BoolFieldFieldNumber = 16;
    private static readonly pb::FieldCodec<bool?> _repeated_boolField_codec
        = pb::FieldCodec.ForStructWrapper<bool>(130);
    private readonly pbc::RepeatedField<bool?> boolField_ = new pbc::RepeatedField<bool?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<bool?> BoolField {
      get { return boolField_; }
    }

    /// <summary>Field number for the "string_field" field.</summary>
    public const int StringFieldFieldNumber = 17;
    private static readonly pb::FieldCodec<string> _repeated_stringField_codec
        = pb::FieldCodec.ForClassWrapper<string>(138);
    private readonly pbc::RepeatedField<string> stringField_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> StringField {
      get { return stringField_; }
    }

    /// <summary>Field number for the "bytes_field" field.</summary>
    public const int BytesFieldFieldNumber = 18;
    private static readonly pb::FieldCodec<pb::ByteString> _repeated_bytesField_codec
        = pb::FieldCodec.ForClassWrapper<pb::ByteString>(146);
    private readonly pbc::RepeatedField<pb::ByteString> bytesField_ = new pbc::RepeatedField<pb::ByteString>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<pb::ByteString> BytesField {
      get { return bytesField_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as RepeatedWellKnownTypes);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RepeatedWellKnownTypes other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!anyField_.Equals(other.anyField_)) return false;
      if(!apiField_.Equals(other.apiField_)) return false;
      if(!durationField_.Equals(other.durationField_)) return false;
      if(!emptyField_.Equals(other.emptyField_)) return false;
      if(!fieldMaskField_.Equals(other.fieldMaskField_)) return false;
      if(!sourceContextField_.Equals(other.sourceContextField_)) return false;
      if(!structField_.Equals(other.structField_)) return false;
      if(!timestampField_.Equals(other.timestampField_)) return false;
      if(!typeField_.Equals(other.typeField_)) return false;
      if(!doubleField_.Equals(other.doubleField_)) return false;
      if(!floatField_.Equals(other.floatField_)) return false;
      if(!int64Field_.Equals(other.int64Field_)) return false;
      if(!uint64Field_.Equals(other.uint64Field_)) return false;
      if(!int32Field_.Equals(other.int32Field_)) return false;
      if(!uint32Field_.Equals(other.uint32Field_)) return false;
      if(!boolField_.Equals(other.boolField_)) return false;
      if(!stringField_.Equals(other.stringField_)) return false;
      if(!bytesField_.Equals(other.bytesField_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= anyField_.GetHashCode();
      hash ^= apiField_.GetHashCode();
      hash ^= durationField_.GetHashCode();
      hash ^= emptyField_.GetHashCode();
      hash ^= fieldMaskField_.GetHashCode();
      hash ^= sourceContextField_.GetHashCode();
      hash ^= structField_.GetHashCode();
      hash ^= timestampField_.GetHashCode();
      hash ^= typeField_.GetHashCode();
      hash ^= doubleField_.GetHashCode();
      hash ^= floatField_.GetHashCode();
      hash ^= int64Field_.GetHashCode();
      hash ^= uint64Field_.GetHashCode();
      hash ^= int32Field_.GetHashCode();
      hash ^= uint32Field_.GetHashCode();
      hash ^= boolField_.GetHashCode();
      hash ^= stringField_.GetHashCode();
      hash ^= bytesField_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      anyField_.WriteTo(output, _repeated_anyField_codec);
      apiField_.WriteTo(output, _repeated_apiField_codec);
      durationField_.WriteTo(output, _repeated_durationField_codec);
      emptyField_.WriteTo(output, _repeated_emptyField_codec);
      fieldMaskField_.WriteTo(output, _repeated_fieldMaskField_codec);
      sourceContextField_.WriteTo(output, _repeated_sourceContextField_codec);
      structField_.WriteTo(output, _repeated_structField_codec);
      timestampField_.WriteTo(output, _repeated_timestampField_codec);
      typeField_.WriteTo(output, _repeated_typeField_codec);
      doubleField_.WriteTo(output, _repeated_doubleField_codec);
      floatField_.WriteTo(output, _repeated_floatField_codec);
      int64Field_.WriteTo(output, _repeated_int64Field_codec);
      uint64Field_.WriteTo(output, _repeated_uint64Field_codec);
      int32Field_.WriteTo(output, _repeated_int32Field_codec);
      uint32Field_.WriteTo(output, _repeated_uint32Field_codec);
      boolField_.WriteTo(output, _repeated_boolField_codec);
      stringField_.WriteTo(output, _repeated_stringField_codec);
      bytesField_.WriteTo(output, _repeated_bytesField_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      anyField_.WriteTo(ref output, _repeated_anyField_codec);
      apiField_.WriteTo(ref output, _repeated_apiField_codec);
      durationField_.WriteTo(ref output, _repeated_durationField_codec);
      emptyField_.WriteTo(ref output, _repeated_emptyField_codec);
      fieldMaskField_.WriteTo(ref output, _repeated_fieldMaskField_codec);
      sourceContextField_.WriteTo(ref output, _repeated_sourceContextField_codec);
      structField_.WriteTo(ref output, _repeated_structField_codec);
      timestampField_.WriteTo(ref output, _repeated_timestampField_codec);
      typeField_.WriteTo(ref output, _repeated_typeField_codec);
      doubleField_.WriteTo(ref output, _repeated_doubleField_codec);
      floatField_.WriteTo(ref output, _repeated_floatField_codec);
      int64Field_.WriteTo(ref output, _repeated_int64Field_codec);
      uint64Field_.WriteTo(ref output, _repeated_uint64Field_codec);
      int32Field_.WriteTo(ref output, _repeated_int32Field_codec);
      uint32Field_.WriteTo(ref output, _repeated_uint32Field_codec);
      boolField_.WriteTo(ref output, _repeated_boolField_codec);
      stringField_.WriteTo(ref output, _repeated_stringField_codec);
      bytesField_.WriteTo(ref output, _repeated_bytesField_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += anyField_.CalculateSize(_repeated_anyField_codec);
      size += apiField_.CalculateSize(_repeated_apiField_codec);
      size += durationField_.CalculateSize(_repeated_durationField_codec);
      size += emptyField_.CalculateSize(_repeated_emptyField_codec);
      size += fieldMaskField_.CalculateSize(_repeated_fieldMaskField_codec);
      size += sourceContextField_.CalculateSize(_repeated_sourceContextField_codec);
      size += structField_.CalculateSize(_repeated_structField_codec);
      size += timestampField_.CalculateSize(_repeated_timestampField_codec);
      size += typeField_.CalculateSize(_repeated_typeField_codec);
      size += doubleField_.CalculateSize(_repeated_doubleField_codec);
      size += floatField_.CalculateSize(_repeated_floatField_codec);
      size += int64Field_.CalculateSize(_repeated_int64Field_codec);
      size += uint64Field_.CalculateSize(_repeated_uint64Field_codec);
      size += int32Field_.CalculateSize(_repeated_int32Field_codec);
      size += uint32Field_.CalculateSize(_repeated_uint32Field_codec);
      size += boolField_.CalculateSize(_repeated_boolField_codec);
      size += stringField_.CalculateSize(_repeated_stringField_codec);
      size += bytesField_.CalculateSize(_repeated_bytesField_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(RepeatedWellKnownTypes other) {
      if (other == null) {
        return;
      }
      anyField_.Add(other.anyField_);
      apiField_.Add(other.apiField_);
      durationField_.Add(other.durationField_);
      emptyField_.Add(other.emptyField_);
      fieldMaskField_.Add(other.fieldMaskField_);
      sourceContextField_.Add(other.sourceContextField_);
      structField_.Add(other.structField_);
      timestampField_.Add(other.timestampField_);
      typeField_.Add(other.typeField_);
      doubleField_.Add(other.doubleField_);
      floatField_.Add(other.floatField_);
      int64Field_.Add(other.int64Field_);
      uint64Field_.Add(other.uint64Field_);
      int32Field_.Add(other.int32Field_);
      uint32Field_.Add(other.uint32Field_);
      boolField_.Add(other.boolField_);
      stringField_.Add(other.stringField_);
      bytesField_.Add(other.bytesField_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            anyField_.AddEntriesFrom(input, _repeated_anyField_codec);
            break;
          }
          case 18: {
            apiField_.AddEntriesFrom(input, _repeated_apiField_codec);
            break;
          }
          case 26: {
            durationField_.AddEntriesFrom(input, _repeated_durationField_codec);
            break;
          }
          case 34: {
            emptyField_.AddEntriesFrom(input, _repeated_emptyField_codec);
            break;
          }
          case 42: {
            fieldMaskField_.AddEntriesFrom(input, _repeated_fieldMaskField_codec);
            break;
          }
          case 50: {
            sourceContextField_.AddEntriesFrom(input, _repeated_sourceContextField_codec);
            break;
          }
          case 58: {
            structField_.AddEntriesFrom(input, _repeated_structField_codec);
            break;
          }
          case 66: {
            timestampField_.AddEntriesFrom(input, _repeated_timestampField_codec);
            break;
          }
          case 74: {
            typeField_.AddEntriesFrom(input, _repeated_typeField_codec);
            break;
          }
          case 82: {
            doubleField_.AddEntriesFrom(input, _repeated_doubleField_codec);
            break;
          }
          case 90: {
            floatField_.AddEntriesFrom(input, _repeated_floatField_codec);
            break;
          }
          case 98: {
            int64Field_.AddEntriesFrom(input, _repeated_int64Field_codec);
            break;
          }
          case 106: {
            uint64Field_.AddEntriesFrom(input, _repeated_uint64Field_codec);
            break;
          }
          case 114: {
            int32Field_.AddEntriesFrom(input, _repeated_int32Field_codec);
            break;
          }
          case 122: {
            uint32Field_.AddEntriesFrom(input, _repeated_uint32Field_codec);
            break;
          }
          case 130: {
            boolField_.AddEntriesFrom(input, _repeated_boolField_codec);
            break;
          }
          case 138: {
            stringField_.AddEntriesFrom(input, _repeated_stringField_codec);
            break;
          }
          case 146: {
            bytesField_.AddEntriesFrom(input, _repeated_bytesField_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            anyField_.AddEntriesFrom(ref input, _repeated_anyField_codec);
            break;
          }
          case 18: {
            apiField_.AddEntriesFrom(ref input, _repeated_apiField_codec);
            break;
          }
          case 26: {
            durationField_.AddEntriesFrom(ref input, _repeated_durationField_codec);
            break;
          }
          case 34: {
            emptyField_.AddEntriesFrom(ref input, _repeated_emptyField_codec);
            break;
          }
          case 42: {
            fieldMaskField_.AddEntriesFrom(ref input, _repeated_fieldMaskField_codec);
            break;
          }
          case 50: {
            sourceContextField_.AddEntriesFrom(ref input, _repeated_sourceContextField_codec);
            break;
          }
          case 58: {
            structField_.AddEntriesFrom(ref input, _repeated_structField_codec);
            break;
          }
          case 66: {
            timestampField_.AddEntriesFrom(ref input, _repeated_timestampField_codec);
            break;
          }
          case 74: {
            typeField_.AddEntriesFrom(ref input, _repeated_typeField_codec);
            break;
          }
          case 82: {
            doubleField_.AddEntriesFrom(ref input, _repeated_doubleField_codec);
            break;
          }
          case 90: {
            floatField_.AddEntriesFrom(ref input, _repeated_floatField_codec);
            break;
          }
          case 98: {
            int64Field_.AddEntriesFrom(ref input, _repeated_int64Field_codec);
            break;
          }
          case 106: {
            uint64Field_.AddEntriesFrom(ref input, _repeated_uint64Field_codec);
            break;
          }
          case 114: {
            int32Field_.AddEntriesFrom(ref input, _repeated_int32Field_codec);
            break;
          }
          case 122: {
            uint32Field_.AddEntriesFrom(ref input, _repeated_uint32Field_codec);
            break;
          }
          case 130: {
            boolField_.AddEntriesFrom(ref input, _repeated_boolField_codec);
            break;
          }
          case 138: {
            stringField_.AddEntriesFrom(ref input, _repeated_stringField_codec);
            break;
          }
          case 146: {
            bytesField_.AddEntriesFrom(ref input, _repeated_bytesField_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class OneofWellKnownTypes : pb::IMessage<OneofWellKnownTypes>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OneofWellKnownTypes> _parser = new pb::MessageParser<OneofWellKnownTypes>(() => new OneofWellKnownTypes());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OneofWellKnownTypes> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.TestProtos.UnittestWellKnownTypesReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OneofWellKnownTypes() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OneofWellKnownTypes(OneofWellKnownTypes other) : this() {
      switch (other.OneofFieldCase) {
        case OneofFieldOneofCase.AnyField:
          AnyField = other.AnyField.Clone();
          break;
        case OneofFieldOneofCase.ApiField:
          ApiField = other.ApiField.Clone();
          break;
        case OneofFieldOneofCase.DurationField:
          DurationField = other.DurationField.Clone();
          break;
        case OneofFieldOneofCase.EmptyField:
          EmptyField = other.EmptyField.Clone();
          break;
        case OneofFieldOneofCase.FieldMaskField:
          FieldMaskField = other.FieldMaskField.Clone();
          break;
        case OneofFieldOneofCase.SourceContextField:
          SourceContextField = other.SourceContextField.Clone();
          break;
        case OneofFieldOneofCase.StructField:
          StructField = other.StructField.Clone();
          break;
        case OneofFieldOneofCase.TimestampField:
          TimestampField = other.TimestampField.Clone();
          break;
        case OneofFieldOneofCase.TypeField:
          TypeField = other.TypeField.Clone();
          break;
        case OneofFieldOneofCase.DoubleField:
          DoubleField = other.DoubleField;
          break;
        case OneofFieldOneofCase.FloatField:
          FloatField = other.FloatField;
          break;
        case OneofFieldOneofCase.Int64Field:
          Int64Field = other.Int64Field;
          break;
        case OneofFieldOneofCase.Uint64Field:
          Uint64Field = other.Uint64Field;
          break;
        case OneofFieldOneofCase.Int32Field:
          Int32Field = other.Int32Field;
          break;
        case OneofFieldOneofCase.Uint32Field:
          Uint32Field = other.Uint32Field;
          break;
        case OneofFieldOneofCase.BoolField:
          BoolField = other.BoolField;
          break;
        case OneofFieldOneofCase.StringField:
          StringField = other.StringField;
          break;
        case OneofFieldOneofCase.BytesField:
          BytesField = other.BytesField;
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OneofWellKnownTypes Clone() {
      return new OneofWellKnownTypes(this);
    }

    /// <summary>Field number for the "any_field" field.</summary>
    public const int AnyFieldFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Any AnyField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.AnyField ? (global::Google.Protobuf.WellKnownTypes.Any) oneofField_ : null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.AnyField;
      }
    }

    /// <summary>Field number for the "api_field" field.</summary>
    public const int ApiFieldFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Api ApiField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.ApiField ? (global::Google.Protobuf.WellKnownTypes.Api) oneofField_ : null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.ApiField;
      }
    }

    /// <summary>Field number for the "duration_field" field.</summary>
    public const int DurationFieldFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Duration DurationField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.DurationField ? (global::Google.Protobuf.WellKnownTypes.Duration) oneofField_ : null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.DurationField;
      }
    }

    /// <summary>Field number for the "empty_field" field.</summary>
    public const int EmptyFieldFieldNumber = 4;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Empty EmptyField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.EmptyField ? (global::Google.Protobuf.WellKnownTypes.Empty) oneofField_ : null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.EmptyField;
      }
    }

    /// <summary>Field number for the "field_mask_field" field.</summary>
    public const int FieldMaskFieldFieldNumber = 5;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.FieldMask FieldMaskField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField ? (global::Google.Protobuf.WellKnownTypes.FieldMask) oneofField_ : null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.FieldMaskField;
      }
    }

    /// <summary>Field number for the "source_context_field" field.</summary>
    public const int SourceContextFieldFieldNumber = 6;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.SourceContext SourceContextField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.SourceContextField ? (global::Google.Protobuf.WellKnownTypes.SourceContext) oneofField_ : null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.SourceContextField;
      }
    }

    /// <summary>Field number for the "struct_field" field.</summary>
    public const int StructFieldFieldNumber = 7;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Struct StructField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.StructField ? (global::Google.Protobuf.WellKnownTypes.Struct) oneofField_ : null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.StructField;
      }
    }

    /// <summary>Field number for the "timestamp_field" field.</summary>
    public const int TimestampFieldFieldNumber = 8;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp TimestampField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.TimestampField ? (global::Google.Protobuf.WellKnownTypes.Timestamp) oneofField_ : null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.TimestampField;
      }
    }

    /// <summary>Field number for the "type_field" field.</summary>
    public const int TypeFieldFieldNumber = 9;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Type TypeField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.TypeField ? (global::Google.Protobuf.WellKnownTypes.Type) oneofField_ : null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.TypeField;
      }
    }

    /// <summary>Field number for the "double_field" field.</summary>
    public const int DoubleFieldFieldNumber = 10;
    private static readonly pb::FieldCodec<double?> _oneof_doubleField_codec = pb::FieldCodec.ForStructWrapper<double>(82);
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public double? DoubleField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.DoubleField ? (double?) oneofField_ : (double?) null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.DoubleField;
      }
    }

    /// <summary>Field number for the "float_field" field.</summary>
    public const int FloatFieldFieldNumber = 11;
    private static readonly pb::FieldCodec<float?> _oneof_floatField_codec = pb::FieldCodec.ForStructWrapper<float>(90);
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float? FloatField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.FloatField ? (float?) oneofField_ : (float?) null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.FloatField;
      }
    }

    /// <summary>Field number for the "int64_field" field.</summary>
    public const int Int64FieldFieldNumber = 12;
    private static readonly pb::FieldCodec<long?> _oneof_int64Field_codec = pb::FieldCodec.ForStructWrapper<long>(98);
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long? Int64Field {
      get { return oneofFieldCase_ == OneofFieldOneofCase.Int64Field ? (long?) oneofField_ : (long?) null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.Int64Field;
      }
    }

    /// <summary>Field number for the "uint64_field" field.</summary>
    public const int Uint64FieldFieldNumber = 13;
    private static readonly pb::FieldCodec<ulong?> _oneof_uint64Field_codec = pb::FieldCodec.ForStructWrapper<ulong>(106);
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong? Uint64Field {
      get { return oneofFieldCase_ == OneofFieldOneofCase.Uint64Field ? (ulong?) oneofField_ : (ulong?) null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.Uint64Field;
      }
    }

    /// <summary>Field number for the "int32_field" field.</summary>
    public const int Int32FieldFieldNumber = 14;
    private static readonly pb::FieldCodec<int?> _oneof_int32Field_codec = pb::FieldCodec.ForStructWrapper<int>(114);
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int? Int32Field {
      get { return oneofFieldCase_ == OneofFieldOneofCase.Int32Field ? (int?) oneofField_ : (int?) null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.Int32Field;
      }
    }

    /// <summary>Field number for the "uint32_field" field.</summary>
    public const int Uint32FieldFieldNumber = 15;
    private static readonly pb::FieldCodec<uint?> _oneof_uint32Field_codec = pb::FieldCodec.ForStructWrapper<uint>(122);
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint? Uint32Field {
      get { return oneofFieldCase_ == OneofFieldOneofCase.Uint32Field ? (uint?) oneofField_ : (uint?) null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.Uint32Field;
      }
    }

    /// <summary>Field number for the "bool_field" field.</summary>
    public const int BoolFieldFieldNumber = 16;
    private static readonly pb::FieldCodec<bool?> _oneof_boolField_codec = pb::FieldCodec.ForStructWrapper<bool>(130);
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool? BoolField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.BoolField ? (bool?) oneofField_ : (bool?) null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.BoolField;
      }
    }

    /// <summary>Field number for the "string_field" field.</summary>
    public const int StringFieldFieldNumber = 17;
    private static readonly pb::FieldCodec<string> _oneof_stringField_codec = pb::FieldCodec.ForClassWrapper<string>(138);
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string StringField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.StringField ? (string) oneofField_ : (string) null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.StringField;
      }
    }

    /// <summary>Field number for the "bytes_field" field.</summary>
    public const int BytesFieldFieldNumber = 18;
    private static readonly pb::FieldCodec<pb::ByteString> _oneof_bytesField_codec = pb::FieldCodec.ForClassWrapper<pb::ByteString>(146);
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString BytesField {
      get { return oneofFieldCase_ == OneofFieldOneofCase.BytesField ? (pb::ByteString) oneofField_ : (pb::ByteString) null; }
      set {
        oneofField_ = value;
        oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.BytesField;
      }
    }

    private object oneofField_;
    /// <summary>Enum of possible cases for the "oneof_field" oneof.</summary>
    public enum OneofFieldOneofCase {
      None = 0,
      AnyField = 1,
      ApiField = 2,
      DurationField = 3,
      EmptyField = 4,
      FieldMaskField = 5,
      SourceContextField = 6,
      StructField = 7,
      TimestampField = 8,
      TypeField = 9,
      DoubleField = 10,
      FloatField = 11,
      Int64Field = 12,
      Uint64Field = 13,
      Int32Field = 14,
      Uint32Field = 15,
      BoolField = 16,
      StringField = 17,
      BytesField = 18,
    }
    private OneofFieldOneofCase oneofFieldCase_ = OneofFieldOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OneofFieldOneofCase OneofFieldCase {
      get { return oneofFieldCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearOneofField() {
      oneofFieldCase_ = OneofFieldOneofCase.None;
      oneofField_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OneofWellKnownTypes);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OneofWellKnownTypes other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AnyField, other.AnyField)) return false;
      if (!object.Equals(ApiField, other.ApiField)) return false;
      if (!object.Equals(DurationField, other.DurationField)) return false;
      if (!object.Equals(EmptyField, other.EmptyField)) return false;
      if (!object.Equals(FieldMaskField, other.FieldMaskField)) return false;
      if (!object.Equals(SourceContextField, other.SourceContextField)) return false;
      if (!object.Equals(StructField, other.StructField)) return false;
      if (!object.Equals(TimestampField, other.TimestampField)) return false;
      if (!object.Equals(TypeField, other.TypeField)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.Equals(DoubleField, other.DoubleField)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.Equals(FloatField, other.FloatField)) return false;
      if (Int64Field != other.Int64Field) return false;
      if (Uint64Field != other.Uint64Field) return false;
      if (Int32Field != other.Int32Field) return false;
      if (Uint32Field != other.Uint32Field) return false;
      if (BoolField != other.BoolField) return false;
      if (StringField != other.StringField) return false;
      if (BytesField != other.BytesField) return false;
      if (OneofFieldCase != other.OneofFieldCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (oneofFieldCase_ == OneofFieldOneofCase.AnyField) hash ^= AnyField.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.ApiField) hash ^= ApiField.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.DurationField) hash ^= DurationField.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.EmptyField) hash ^= EmptyField.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField) hash ^= FieldMaskField.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.SourceContextField) hash ^= SourceContextField.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.StructField) hash ^= StructField.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.TimestampField) hash ^= TimestampField.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.TypeField) hash ^= TypeField.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.DoubleField) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.GetHashCode(DoubleField);
      if (oneofFieldCase_ == OneofFieldOneofCase.FloatField) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.GetHashCode(FloatField);
      if (oneofFieldCase_ == OneofFieldOneofCase.Int64Field) hash ^= Int64Field.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.Uint64Field) hash ^= Uint64Field.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.Int32Field) hash ^= Int32Field.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.Uint32Field) hash ^= Uint32Field.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.BoolField) hash ^= BoolField.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.StringField) hash ^= StringField.GetHashCode();
      if (oneofFieldCase_ == OneofFieldOneofCase.BytesField) hash ^= BytesField.GetHashCode();
      hash ^= (int) oneofFieldCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (oneofFieldCase_ == OneofFieldOneofCase.AnyField) {
        output.WriteRawTag(10);
        output.WriteMessage(AnyField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.ApiField) {
        output.WriteRawTag(18);
        output.WriteMessage(ApiField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.DurationField) {
        output.WriteRawTag(26);
        output.WriteMessage(DurationField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.EmptyField) {
        output.WriteRawTag(34);
        output.WriteMessage(EmptyField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField) {
        output.WriteRawTag(42);
        output.WriteMessage(FieldMaskField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.SourceContextField) {
        output.WriteRawTag(50);
        output.WriteMessage(SourceContextField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.StructField) {
        output.WriteRawTag(58);
        output.WriteMessage(StructField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.TimestampField) {
        output.WriteRawTag(66);
        output.WriteMessage(TimestampField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.TypeField) {
        output.WriteRawTag(74);
        output.WriteMessage(TypeField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.DoubleField) {
        _oneof_doubleField_codec.WriteTagAndValue(output, (double?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.FloatField) {
        _oneof_floatField_codec.WriteTagAndValue(output, (float?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Int64Field) {
        _oneof_int64Field_codec.WriteTagAndValue(output, (long?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Uint64Field) {
        _oneof_uint64Field_codec.WriteTagAndValue(output, (ulong?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Int32Field) {
        _oneof_int32Field_codec.WriteTagAndValue(output, (int?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Uint32Field) {
        _oneof_uint32Field_codec.WriteTagAndValue(output, (uint?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.BoolField) {
        _oneof_boolField_codec.WriteTagAndValue(output, (bool?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.StringField) {
        _oneof_stringField_codec.WriteTagAndValue(output, (string) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.BytesField) {
        _oneof_bytesField_codec.WriteTagAndValue(output, (pb::ByteString) oneofField_);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (oneofFieldCase_ == OneofFieldOneofCase.AnyField) {
        output.WriteRawTag(10);
        output.WriteMessage(AnyField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.ApiField) {
        output.WriteRawTag(18);
        output.WriteMessage(ApiField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.DurationField) {
        output.WriteRawTag(26);
        output.WriteMessage(DurationField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.EmptyField) {
        output.WriteRawTag(34);
        output.WriteMessage(EmptyField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField) {
        output.WriteRawTag(42);
        output.WriteMessage(FieldMaskField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.SourceContextField) {
        output.WriteRawTag(50);
        output.WriteMessage(SourceContextField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.StructField) {
        output.WriteRawTag(58);
        output.WriteMessage(StructField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.TimestampField) {
        output.WriteRawTag(66);
        output.WriteMessage(TimestampField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.TypeField) {
        output.WriteRawTag(74);
        output.WriteMessage(TypeField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.DoubleField) {
        _oneof_doubleField_codec.WriteTagAndValue(ref output, (double?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.FloatField) {
        _oneof_floatField_codec.WriteTagAndValue(ref output, (float?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Int64Field) {
        _oneof_int64Field_codec.WriteTagAndValue(ref output, (long?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Uint64Field) {
        _oneof_uint64Field_codec.WriteTagAndValue(ref output, (ulong?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Int32Field) {
        _oneof_int32Field_codec.WriteTagAndValue(ref output, (int?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Uint32Field) {
        _oneof_uint32Field_codec.WriteTagAndValue(ref output, (uint?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.BoolField) {
        _oneof_boolField_codec.WriteTagAndValue(ref output, (bool?) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.StringField) {
        _oneof_stringField_codec.WriteTagAndValue(ref output, (string) oneofField_);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.BytesField) {
        _oneof_bytesField_codec.WriteTagAndValue(ref output, (pb::ByteString) oneofField_);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (oneofFieldCase_ == OneofFieldOneofCase.AnyField) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AnyField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.ApiField) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ApiField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.DurationField) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DurationField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.EmptyField) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EmptyField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FieldMaskField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.SourceContextField) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContextField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.StructField) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(StructField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.TimestampField) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimestampField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.TypeField) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TypeField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.DoubleField) {
        size += _oneof_doubleField_codec.CalculateSizeWithTag(DoubleField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.FloatField) {
        size += _oneof_floatField_codec.CalculateSizeWithTag(FloatField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Int64Field) {
        size += _oneof_int64Field_codec.CalculateSizeWithTag(Int64Field);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Uint64Field) {
        size += _oneof_uint64Field_codec.CalculateSizeWithTag(Uint64Field);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Int32Field) {
        size += _oneof_int32Field_codec.CalculateSizeWithTag(Int32Field);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.Uint32Field) {
        size += _oneof_uint32Field_codec.CalculateSizeWithTag(Uint32Field);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.BoolField) {
        size += _oneof_boolField_codec.CalculateSizeWithTag(BoolField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.StringField) {
        size += _oneof_stringField_codec.CalculateSizeWithTag(StringField);
      }
      if (oneofFieldCase_ == OneofFieldOneofCase.BytesField) {
        size += _oneof_bytesField_codec.CalculateSizeWithTag(BytesField);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OneofWellKnownTypes other) {
      if (other == null) {
        return;
      }
      switch (other.OneofFieldCase) {
        case OneofFieldOneofCase.AnyField:
          if (AnyField == null) {
            AnyField = new global::Google.Protobuf.WellKnownTypes.Any();
          }
          AnyField.MergeFrom(other.AnyField);
          break;
        case OneofFieldOneofCase.ApiField:
          if (ApiField == null) {
            ApiField = new global::Google.Protobuf.WellKnownTypes.Api();
          }
          ApiField.MergeFrom(other.ApiField);
          break;
        case OneofFieldOneofCase.DurationField:
          if (DurationField == null) {
            DurationField = new global::Google.Protobuf.WellKnownTypes.Duration();
          }
          DurationField.MergeFrom(other.DurationField);
          break;
        case OneofFieldOneofCase.EmptyField:
          if (EmptyField == null) {
            EmptyField = new global::Google.Protobuf.WellKnownTypes.Empty();
          }
          EmptyField.MergeFrom(other.EmptyField);
          break;
        case OneofFieldOneofCase.FieldMaskField:
          if (FieldMaskField == null) {
            FieldMaskField = new global::Google.Protobuf.WellKnownTypes.FieldMask();
          }
          FieldMaskField.MergeFrom(other.FieldMaskField);
          break;
        case OneofFieldOneofCase.SourceContextField:
          if (SourceContextField == null) {
            SourceContextField = new global::Google.Protobuf.WellKnownTypes.SourceContext();
          }
          SourceContextField.MergeFrom(other.SourceContextField);
          break;
        case OneofFieldOneofCase.StructField:
          if (StructField == null) {
            StructField = new global::Google.Protobuf.WellKnownTypes.Struct();
          }
          StructField.MergeFrom(other.StructField);
          break;
        case OneofFieldOneofCase.TimestampField:
          if (TimestampField == null) {
            TimestampField = new global::Google.Protobuf.WellKnownTypes.Timestamp();
          }
          TimestampField.MergeFrom(other.TimestampField);
          break;
        case OneofFieldOneofCase.TypeField:
          if (TypeField == null) {
            TypeField = new global::Google.Protobuf.WellKnownTypes.Type();
          }
          TypeField.MergeFrom(other.TypeField);
          break;
        case OneofFieldOneofCase.DoubleField:
          DoubleField = other.DoubleField;
          break;
        case OneofFieldOneofCase.FloatField:
          FloatField = other.FloatField;
          break;
        case OneofFieldOneofCase.Int64Field:
          Int64Field = other.Int64Field;
          break;
        case OneofFieldOneofCase.Uint64Field:
          Uint64Field = other.Uint64Field;
          break;
        case OneofFieldOneofCase.Int32Field:
          Int32Field = other.Int32Field;
          break;
        case OneofFieldOneofCase.Uint32Field:
          Uint32Field = other.Uint32Field;
          break;
        case OneofFieldOneofCase.BoolField:
          BoolField = other.BoolField;
          break;
        case OneofFieldOneofCase.StringField:
          StringField = other.StringField;
          break;
        case OneofFieldOneofCase.BytesField:
          BytesField = other.BytesField;
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Google.Protobuf.WellKnownTypes.Any subBuilder = new global::Google.Protobuf.WellKnownTypes.Any();
            if (oneofFieldCase_ == OneofFieldOneofCase.AnyField) {
              subBuilder.MergeFrom(AnyField);
            }
            input.ReadMessage(subBuilder);
            AnyField = subBuilder;
            break;
          }
          case 18: {
            global::Google.Protobuf.WellKnownTypes.Api subBuilder = new global::Google.Protobuf.WellKnownTypes.Api();
            if (oneofFieldCase_ == OneofFieldOneofCase.ApiField) {
              subBuilder.MergeFrom(ApiField);
            }
            input.ReadMessage(subBuilder);
            ApiField = subBuilder;
            break;
          }
          case 26: {
            global::Google.Protobuf.WellKnownTypes.Duration subBuilder = new global::Google.Protobuf.WellKnownTypes.Duration();
            if (oneofFieldCase_ == OneofFieldOneofCase.DurationField) {
              subBuilder.MergeFrom(DurationField);
            }
            input.ReadMessage(subBuilder);
            DurationField = subBuilder;
            break;
          }
          case 34: {
            global::Google.Protobuf.WellKnownTypes.Empty subBuilder = new global::Google.Protobuf.WellKnownTypes.Empty();
            if (oneofFieldCase_ == OneofFieldOneofCase.EmptyField) {
              subBuilder.MergeFrom(EmptyField);
            }
            input.ReadMessage(subBuilder);
            EmptyField = subBuilder;
            break;
          }
          case 42: {
            global::Google.Protobuf.WellKnownTypes.FieldMask subBuilder = new global::Google.Protobuf.WellKnownTypes.FieldMask();
            if (oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField) {
              subBuilder.MergeFrom(FieldMaskField);
            }
            input.ReadMessage(subBuilder);
            FieldMaskField = subBuilder;
            break;
          }
          case 50: {
            global::Google.Protobuf.WellKnownTypes.SourceContext subBuilder = new global::Google.Protobuf.WellKnownTypes.SourceContext();
            if (oneofFieldCase_ == OneofFieldOneofCase.SourceContextField) {
              subBuilder.MergeFrom(SourceContextField);
            }
            input.ReadMessage(subBuilder);
            SourceContextField = subBuilder;
            break;
          }
          case 58: {
            global::Google.Protobuf.WellKnownTypes.Struct subBuilder = new global::Google.Protobuf.WellKnownTypes.Struct();
            if (oneofFieldCase_ == OneofFieldOneofCase.StructField) {
              subBuilder.MergeFrom(StructField);
            }
            input.ReadMessage(subBuilder);
            StructField = subBuilder;
            break;
          }
          case 66: {
            global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            if (oneofFieldCase_ == OneofFieldOneofCase.TimestampField) {
              subBuilder.MergeFrom(TimestampField);
            }
            input.ReadMessage(subBuilder);
            TimestampField = subBuilder;
            break;
          }
          case 74: {
            global::Google.Protobuf.WellKnownTypes.Type subBuilder = new global::Google.Protobuf.WellKnownTypes.Type();
            if (oneofFieldCase_ == OneofFieldOneofCase.TypeField) {
              subBuilder.MergeFrom(TypeField);
            }
            input.ReadMessage(subBuilder);
            TypeField = subBuilder;
            break;
          }
          case 82: {
            DoubleField = _oneof_doubleField_codec.Read(input);
            break;
          }
          case 90: {
            FloatField = _oneof_floatField_codec.Read(input);
            break;
          }
          case 98: {
            Int64Field = _oneof_int64Field_codec.Read(input);
            break;
          }
          case 106: {
            Uint64Field = _oneof_uint64Field_codec.Read(input);
            break;
          }
          case 114: {
            Int32Field = _oneof_int32Field_codec.Read(input);
            break;
          }
          case 122: {
            Uint32Field = _oneof_uint32Field_codec.Read(input);
            break;
          }
          case 130: {
            BoolField = _oneof_boolField_codec.Read(input);
            break;
          }
          case 138: {
            StringField = _oneof_stringField_codec.Read(input);
            break;
          }
          case 146: {
            BytesField = _oneof_bytesField_codec.Read(input);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Google.Protobuf.WellKnownTypes.Any subBuilder = new global::Google.Protobuf.WellKnownTypes.Any();
            if (oneofFieldCase_ == OneofFieldOneofCase.AnyField) {
              subBuilder.MergeFrom(AnyField);
            }
            input.ReadMessage(subBuilder);
            AnyField = subBuilder;
            break;
          }
          case 18: {
            global::Google.Protobuf.WellKnownTypes.Api subBuilder = new global::Google.Protobuf.WellKnownTypes.Api();
            if (oneofFieldCase_ == OneofFieldOneofCase.ApiField) {
              subBuilder.MergeFrom(ApiField);
            }
            input.ReadMessage(subBuilder);
            ApiField = subBuilder;
            break;
          }
          case 26: {
            global::Google.Protobuf.WellKnownTypes.Duration subBuilder = new global::Google.Protobuf.WellKnownTypes.Duration();
            if (oneofFieldCase_ == OneofFieldOneofCase.DurationField) {
              subBuilder.MergeFrom(DurationField);
            }
            input.ReadMessage(subBuilder);
            DurationField = subBuilder;
            break;
          }
          case 34: {
            global::Google.Protobuf.WellKnownTypes.Empty subBuilder = new global::Google.Protobuf.WellKnownTypes.Empty();
            if (oneofFieldCase_ == OneofFieldOneofCase.EmptyField) {
              subBuilder.MergeFrom(EmptyField);
            }
            input.ReadMessage(subBuilder);
            EmptyField = subBuilder;
            break;
          }
          case 42: {
            global::Google.Protobuf.WellKnownTypes.FieldMask subBuilder = new global::Google.Protobuf.WellKnownTypes.FieldMask();
            if (oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField) {
              subBuilder.MergeFrom(FieldMaskField);
            }
            input.ReadMessage(subBuilder);
            FieldMaskField = subBuilder;
            break;
          }
          case 50: {
            global::Google.Protobuf.WellKnownTypes.SourceContext subBuilder = new global::Google.Protobuf.WellKnownTypes.SourceContext();
            if (oneofFieldCase_ == OneofFieldOneofCase.SourceContextField) {
              subBuilder.MergeFrom(SourceContextField);
            }
            input.ReadMessage(subBuilder);
            SourceContextField = subBuilder;
            break;
          }
          case 58: {
            global::Google.Protobuf.WellKnownTypes.Struct subBuilder = new global::Google.Protobuf.WellKnownTypes.Struct();
            if (oneofFieldCase_ == OneofFieldOneofCase.StructField) {
              subBuilder.MergeFrom(StructField);
            }
            input.ReadMessage(subBuilder);
            StructField = subBuilder;
            break;
          }
          case 66: {
            global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            if (oneofFieldCase_ == OneofFieldOneofCase.TimestampField) {
              subBuilder.MergeFrom(TimestampField);
            }
            input.ReadMessage(subBuilder);
            TimestampField = subBuilder;
            break;
          }
          case 74: {
            global::Google.Protobuf.WellKnownTypes.Type subBuilder = new global::Google.Protobuf.WellKnownTypes.Type();
            if (oneofFieldCase_ == OneofFieldOneofCase.TypeField) {
              subBuilder.MergeFrom(TypeField);
            }
            input.ReadMessage(subBuilder);
            TypeField = subBuilder;
            break;
          }
          case 82: {
            DoubleField = _oneof_doubleField_codec.Read(ref input);
            break;
          }
          case 90: {
            FloatField = _oneof_floatField_codec.Read(ref input);
            break;
          }
          case 98: {
            Int64Field = _oneof_int64Field_codec.Read(ref input);
            break;
          }
          case 106: {
            Uint64Field = _oneof_uint64Field_codec.Read(ref input);
            break;
          }
          case 114: {
            Int32Field = _oneof_int32Field_codec.Read(ref input);
            break;
          }
          case 122: {
            Uint32Field = _oneof_uint32Field_codec.Read(ref input);
            break;
          }
          case 130: {
            BoolField = _oneof_boolField_codec.Read(ref input);
            break;
          }
          case 138: {
            StringField = _oneof_stringField_codec.Read(ref input);
            break;
          }
          case 146: {
            BytesField = _oneof_bytesField_codec.Read(ref input);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// A map field for each well-known type. We only
  /// need to worry about the value part of the map being the
  /// well-known types, as messages can't be map keys.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class MapWellKnownTypes : pb::IMessage<MapWellKnownTypes>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MapWellKnownTypes> _parser = new pb::MessageParser<MapWellKnownTypes>(() => new MapWellKnownTypes());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MapWellKnownTypes> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.TestProtos.UnittestWellKnownTypesReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MapWellKnownTypes() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MapWellKnownTypes(MapWellKnownTypes other) : this() {
      anyField_ = other.anyField_.Clone();
      apiField_ = other.apiField_.Clone();
      durationField_ = other.durationField_.Clone();
      emptyField_ = other.emptyField_.Clone();
      fieldMaskField_ = other.fieldMaskField_.Clone();
      sourceContextField_ = other.sourceContextField_.Clone();
      structField_ = other.structField_.Clone();
      timestampField_ = other.timestampField_.Clone();
      typeField_ = other.typeField_.Clone();
      doubleField_ = other.doubleField_.Clone();
      floatField_ = other.floatField_.Clone();
      int64Field_ = other.int64Field_.Clone();
      uint64Field_ = other.uint64Field_.Clone();
      int32Field_ = other.int32Field_.Clone();
      uint32Field_ = other.uint32Field_.Clone();
      boolField_ = other.boolField_.Clone();
      stringField_ = other.stringField_.Clone();
      bytesField_ = other.bytesField_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MapWellKnownTypes Clone() {
      return new MapWellKnownTypes(this);
    }

    /// <summary>Field number for the "any_field" field.</summary>
    public const int AnyFieldFieldNumber = 1;
    private static readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Any>.Codec _map_anyField_codec
        = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Any>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Any.Parser), 10);
    private readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Any> anyField_ = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Any>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Any> AnyField {
      get { return anyField_; }
    }

    /// <summary>Field number for the "api_field" field.</summary>
    public const int ApiFieldFieldNumber = 2;
    private static readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Api>.Codec _map_apiField_codec
        = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Api>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Api.Parser), 18);
    private readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Api> apiField_ = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Api>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Api> ApiField {
      get { return apiField_; }
    }

    /// <summary>Field number for the "duration_field" field.</summary>
    public const int DurationFieldFieldNumber = 3;
    private static readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Duration>.Codec _map_durationField_codec
        = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Duration>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Duration.Parser), 26);
    private readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Duration> durationField_ = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Duration>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Duration> DurationField {
      get { return durationField_; }
    }

    /// <summary>Field number for the "empty_field" field.</summary>
    public const int EmptyFieldFieldNumber = 4;
    private static readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Empty>.Codec _map_emptyField_codec
        = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Empty>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Empty.Parser), 34);
    private readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Empty> emptyField_ = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Empty>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Empty> EmptyField {
      get { return emptyField_; }
    }

    /// <summary>Field number for the "field_mask_field" field.</summary>
    public const int FieldMaskFieldFieldNumber = 5;
    private static readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.FieldMask>.Codec _map_fieldMaskField_codec
        = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.FieldMask>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.FieldMask.Parser), 42);
    private readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.FieldMask> fieldMaskField_ = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.FieldMask>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.FieldMask> FieldMaskField {
      get { return fieldMaskField_; }
    }

    /// <summary>Field number for the "source_context_field" field.</summary>
    public const int SourceContextFieldFieldNumber = 6;
    private static readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.SourceContext>.Codec _map_sourceContextField_codec
        = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.SourceContext>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.SourceContext.Parser), 50);
    private readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.SourceContext> sourceContextField_ = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.SourceContext>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.SourceContext> SourceContextField {
      get { return sourceContextField_; }
    }

    /// <summary>Field number for the "struct_field" field.</summary>
    public const int StructFieldFieldNumber = 7;
    private static readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Struct>.Codec _map_structField_codec
        = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Struct>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Struct.Parser), 58);
    private readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Struct> structField_ = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Struct>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Struct> StructField {
      get { return structField_; }
    }

    /// <summary>Field number for the "timestamp_field" field.</summary>
    public const int TimestampFieldFieldNumber = 8;
    private static readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Timestamp>.Codec _map_timestampField_codec
        = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Timestamp>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Timestamp.Parser), 66);
    private readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Timestamp> timestampField_ = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Timestamp>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Timestamp> TimestampField {
      get { return timestampField_; }
    }

    /// <summary>Field number for the "type_field" field.</summary>
    public const int TypeFieldFieldNumber = 9;
    private static readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Type>.Codec _map_typeField_codec
        = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Type>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Type.Parser), 74);
    private readonly pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Type> typeField_ = new pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Type>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, global::Google.Protobuf.WellKnownTypes.Type> TypeField {
      get { return typeField_; }
    }

    /// <summary>Field number for the "double_field" field.</summary>
    public const int DoubleFieldFieldNumber = 10;
    private static readonly pbc::MapField<int, double?>.Codec _map_doubleField_codec
        = new pbc::MapField<int, double?>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper<double>(18), 82);
    private readonly pbc::MapField<int, double?> doubleField_ = new pbc::MapField<int, double?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, double?> DoubleField {
      get { return doubleField_; }
    }

    /// <summary>Field number for the "float_field" field.</summary>
    public const int FloatFieldFieldNumber = 11;
    private static readonly pbc::MapField<int, float?>.Codec _map_floatField_codec
        = new pbc::MapField<int, float?>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper<float>(18), 90);
    private readonly pbc::MapField<int, float?> floatField_ = new pbc::MapField<int, float?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, float?> FloatField {
      get { return floatField_; }
    }

    /// <summary>Field number for the "int64_field" field.</summary>
    public const int Int64FieldFieldNumber = 12;
    private static readonly pbc::MapField<int, long?>.Codec _map_int64Field_codec
        = new pbc::MapField<int, long?>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper<long>(18), 98);
    private readonly pbc::MapField<int, long?> int64Field_ = new pbc::MapField<int, long?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, long?> Int64Field {
      get { return int64Field_; }
    }

    /// <summary>Field number for the "uint64_field" field.</summary>
    public const int Uint64FieldFieldNumber = 13;
    private static readonly pbc::MapField<int, ulong?>.Codec _map_uint64Field_codec
        = new pbc::MapField<int, ulong?>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper<ulong>(18), 106);
    private readonly pbc::MapField<int, ulong?> uint64Field_ = new pbc::MapField<int, ulong?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, ulong?> Uint64Field {
      get { return uint64Field_; }
    }

    /// <summary>Field number for the "int32_field" field.</summary>
    public const int Int32FieldFieldNumber = 14;
    private static readonly pbc::MapField<int, int?>.Codec _map_int32Field_codec
        = new pbc::MapField<int, int?>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper<int>(18), 114);
    private readonly pbc::MapField<int, int?> int32Field_ = new pbc::MapField<int, int?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, int?> Int32Field {
      get { return int32Field_; }
    }

    /// <summary>Field number for the "uint32_field" field.</summary>
    public const int Uint32FieldFieldNumber = 15;
    private static readonly pbc::MapField<int, uint?>.Codec _map_uint32Field_codec
        = new pbc::MapField<int, uint?>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper<uint>(18), 122);
    private readonly pbc::MapField<int, uint?> uint32Field_ = new pbc::MapField<int, uint?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, uint?> Uint32Field {
      get { return uint32Field_; }
    }

    /// <summary>Field number for the "bool_field" field.</summary>
    public const int BoolFieldFieldNumber = 16;
    private static readonly pbc::MapField<int, bool?>.Codec _map_boolField_codec
        = new pbc::MapField<int, bool?>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper<bool>(18), 130);
    private readonly pbc::MapField<int, bool?> boolField_ = new pbc::MapField<int, bool?>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, bool?> BoolField {
      get { return boolField_; }
    }

    /// <summary>Field number for the "string_field" field.</summary>
    public const int StringFieldFieldNumber = 17;
    private static readonly pbc::MapField<int, string>.Codec _map_stringField_codec
        = new pbc::MapField<int, string>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForClassWrapper<string>(18), 138);
    private readonly pbc::MapField<int, string> stringField_ = new pbc::MapField<int, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, string> StringField {
      get { return stringField_; }
    }

    /// <summary>Field number for the "bytes_field" field.</summary>
    public const int BytesFieldFieldNumber = 18;
    private static readonly pbc::MapField<int, pb::ByteString>.Codec _map_bytesField_codec
        = new pbc::MapField<int, pb::ByteString>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForClassWrapper<pb::ByteString>(18), 146);
    private readonly pbc::MapField<int, pb::ByteString> bytesField_ = new pbc::MapField<int, pb::ByteString>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, pb::ByteString> BytesField {
      get { return bytesField_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as MapWellKnownTypes);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MapWellKnownTypes other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!AnyField.Equals(other.AnyField)) return false;
      if (!ApiField.Equals(other.ApiField)) return false;
      if (!DurationField.Equals(other.DurationField)) return false;
      if (!EmptyField.Equals(other.EmptyField)) return false;
      if (!FieldMaskField.Equals(other.FieldMaskField)) return false;
      if (!SourceContextField.Equals(other.SourceContextField)) return false;
      if (!StructField.Equals(other.StructField)) return false;
      if (!TimestampField.Equals(other.TimestampField)) return false;
      if (!TypeField.Equals(other.TypeField)) return false;
      if (!DoubleField.Equals(other.DoubleField)) return false;
      if (!FloatField.Equals(other.FloatField)) return false;
      if (!Int64Field.Equals(other.Int64Field)) return false;
      if (!Uint64Field.Equals(other.Uint64Field)) return false;
      if (!Int32Field.Equals(other.Int32Field)) return false;
      if (!Uint32Field.Equals(other.Uint32Field)) return false;
      if (!BoolField.Equals(other.BoolField)) return false;
      if (!StringField.Equals(other.StringField)) return false;
      if (!BytesField.Equals(other.BytesField)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= AnyField.GetHashCode();
      hash ^= ApiField.GetHashCode();
      hash ^= DurationField.GetHashCode();
      hash ^= EmptyField.GetHashCode();
      hash ^= FieldMaskField.GetHashCode();
      hash ^= SourceContextField.GetHashCode();
      hash ^= StructField.GetHashCode();
      hash ^= TimestampField.GetHashCode();
      hash ^= TypeField.GetHashCode();
      hash ^= DoubleField.GetHashCode();
      hash ^= FloatField.GetHashCode();
      hash ^= Int64Field.GetHashCode();
      hash ^= Uint64Field.GetHashCode();
      hash ^= Int32Field.GetHashCode();
      hash ^= Uint32Field.GetHashCode();
      hash ^= BoolField.GetHashCode();
      hash ^= StringField.GetHashCode();
      hash ^= BytesField.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      anyField_.WriteTo(output, _map_anyField_codec);
      apiField_.WriteTo(output, _map_apiField_codec);
      durationField_.WriteTo(output, _map_durationField_codec);
      emptyField_.WriteTo(output, _map_emptyField_codec);
      fieldMaskField_.WriteTo(output, _map_fieldMaskField_codec);
      sourceContextField_.WriteTo(output, _map_sourceContextField_codec);
      structField_.WriteTo(output, _map_structField_codec);
      timestampField_.WriteTo(output, _map_timestampField_codec);
      typeField_.WriteTo(output, _map_typeField_codec);
      doubleField_.WriteTo(output, _map_doubleField_codec);
      floatField_.WriteTo(output, _map_floatField_codec);
      int64Field_.WriteTo(output, _map_int64Field_codec);
      uint64Field_.WriteTo(output, _map_uint64Field_codec);
      int32Field_.WriteTo(output, _map_int32Field_codec);
      uint32Field_.WriteTo(output, _map_uint32Field_codec);
      boolField_.WriteTo(output, _map_boolField_codec);
      stringField_.WriteTo(output, _map_stringField_codec);
      bytesField_.WriteTo(output, _map_bytesField_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      anyField_.WriteTo(ref output, _map_anyField_codec);
      apiField_.WriteTo(ref output, _map_apiField_codec);
      durationField_.WriteTo(ref output, _map_durationField_codec);
      emptyField_.WriteTo(ref output, _map_emptyField_codec);
      fieldMaskField_.WriteTo(ref output, _map_fieldMaskField_codec);
      sourceContextField_.WriteTo(ref output, _map_sourceContextField_codec);
      structField_.WriteTo(ref output, _map_structField_codec);
      timestampField_.WriteTo(ref output, _map_timestampField_codec);
      typeField_.WriteTo(ref output, _map_typeField_codec);
      doubleField_.WriteTo(ref output, _map_doubleField_codec);
      floatField_.WriteTo(ref output, _map_floatField_codec);
      int64Field_.WriteTo(ref output, _map_int64Field_codec);
      uint64Field_.WriteTo(ref output, _map_uint64Field_codec);
      int32Field_.WriteTo(ref output, _map_int32Field_codec);
      uint32Field_.WriteTo(ref output, _map_uint32Field_codec);
      boolField_.WriteTo(ref output, _map_boolField_codec);
      stringField_.WriteTo(ref output, _map_stringField_codec);
      bytesField_.WriteTo(ref output, _map_bytesField_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += anyField_.CalculateSize(_map_anyField_codec);
      size += apiField_.CalculateSize(_map_apiField_codec);
      size += durationField_.CalculateSize(_map_durationField_codec);
      size += emptyField_.CalculateSize(_map_emptyField_codec);
      size += fieldMaskField_.CalculateSize(_map_fieldMaskField_codec);
      size += sourceContextField_.CalculateSize(_map_sourceContextField_codec);
      size += structField_.CalculateSize(_map_structField_codec);
      size += timestampField_.CalculateSize(_map_timestampField_codec);
      size += typeField_.CalculateSize(_map_typeField_codec);
      size += doubleField_.CalculateSize(_map_doubleField_codec);
      size += floatField_.CalculateSize(_map_floatField_codec);
      size += int64Field_.CalculateSize(_map_int64Field_codec);
      size += uint64Field_.CalculateSize(_map_uint64Field_codec);
      size += int32Field_.CalculateSize(_map_int32Field_codec);
      size += uint32Field_.CalculateSize(_map_uint32Field_codec);
      size += boolField_.CalculateSize(_map_boolField_codec);
      size += stringField_.CalculateSize(_map_stringField_codec);
      size += bytesField_.CalculateSize(_map_bytesField_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MapWellKnownTypes other) {
      if (other == null) {
        return;
      }
      anyField_.MergeFrom(other.anyField_);
      apiField_.MergeFrom(other.apiField_);
      durationField_.MergeFrom(other.durationField_);
      emptyField_.MergeFrom(other.emptyField_);
      fieldMaskField_.MergeFrom(other.fieldMaskField_);
      sourceContextField_.MergeFrom(other.sourceContextField_);
      structField_.MergeFrom(other.structField_);
      timestampField_.MergeFrom(other.timestampField_);
      typeField_.MergeFrom(other.typeField_);
      doubleField_.MergeFrom(other.doubleField_);
      floatField_.MergeFrom(other.floatField_);
      int64Field_.MergeFrom(other.int64Field_);
      uint64Field_.MergeFrom(other.uint64Field_);
      int32Field_.MergeFrom(other.int32Field_);
      uint32Field_.MergeFrom(other.uint32Field_);
      boolField_.MergeFrom(other.boolField_);
      stringField_.MergeFrom(other.stringField_);
      bytesField_.MergeFrom(other.bytesField_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            anyField_.AddEntriesFrom(input, _map_anyField_codec);
            break;
          }
          case 18: {
            apiField_.AddEntriesFrom(input, _map_apiField_codec);
            break;
          }
          case 26: {
            durationField_.AddEntriesFrom(input, _map_durationField_codec);
            break;
          }
          case 34: {
            emptyField_.AddEntriesFrom(input, _map_emptyField_codec);
            break;
          }
          case 42: {
            fieldMaskField_.AddEntriesFrom(input, _map_fieldMaskField_codec);
            break;
          }
          case 50: {
            sourceContextField_.AddEntriesFrom(input, _map_sourceContextField_codec);
            break;
          }
          case 58: {
            structField_.AddEntriesFrom(input, _map_structField_codec);
            break;
          }
          case 66: {
            timestampField_.AddEntriesFrom(input, _map_timestampField_codec);
            break;
          }
          case 74: {
            typeField_.AddEntriesFrom(input, _map_typeField_codec);
            break;
          }
          case 82: {
            doubleField_.AddEntriesFrom(input, _map_doubleField_codec);
            break;
          }
          case 90: {
            floatField_.AddEntriesFrom(input, _map_floatField_codec);
            break;
          }
          case 98: {
            int64Field_.AddEntriesFrom(input, _map_int64Field_codec);
            break;
          }
          case 106: {
            uint64Field_.AddEntriesFrom(input, _map_uint64Field_codec);
            break;
          }
          case 114: {
            int32Field_.AddEntriesFrom(input, _map_int32Field_codec);
            break;
          }
          case 122: {
            uint32Field_.AddEntriesFrom(input, _map_uint32Field_codec);
            break;
          }
          case 130: {
            boolField_.AddEntriesFrom(input, _map_boolField_codec);
            break;
          }
          case 138: {
            stringField_.AddEntriesFrom(input, _map_stringField_codec);
            break;
          }
          case 146: {
            bytesField_.AddEntriesFrom(input, _map_bytesField_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            anyField_.AddEntriesFrom(ref input, _map_anyField_codec);
            break;
          }
          case 18: {
            apiField_.AddEntriesFrom(ref input, _map_apiField_codec);
            break;
          }
          case 26: {
            durationField_.AddEntriesFrom(ref input, _map_durationField_codec);
            break;
          }
          case 34: {
            emptyField_.AddEntriesFrom(ref input, _map_emptyField_codec);
            break;
          }
          case 42: {
            fieldMaskField_.AddEntriesFrom(ref input, _map_fieldMaskField_codec);
            break;
          }
          case 50: {
            sourceContextField_.AddEntriesFrom(ref input, _map_sourceContextField_codec);
            break;
          }
          case 58: {
            structField_.AddEntriesFrom(ref input, _map_structField_codec);
            break;
          }
          case 66: {
            timestampField_.AddEntriesFrom(ref input, _map_timestampField_codec);
            break;
          }
          case 74: {
            typeField_.AddEntriesFrom(ref input, _map_typeField_codec);
            break;
          }
          case 82: {
            doubleField_.AddEntriesFrom(ref input, _map_doubleField_codec);
            break;
          }
          case 90: {
            floatField_.AddEntriesFrom(ref input, _map_floatField_codec);
            break;
          }
          case 98: {
            int64Field_.AddEntriesFrom(ref input, _map_int64Field_codec);
            break;
          }
          case 106: {
            uint64Field_.AddEntriesFrom(ref input, _map_uint64Field_codec);
            break;
          }
          case 114: {
            int32Field_.AddEntriesFrom(ref input, _map_int32Field_codec);
            break;
          }
          case 122: {
            uint32Field_.AddEntriesFrom(ref input, _map_uint32Field_codec);
            break;
          }
          case 130: {
            boolField_.AddEntriesFrom(ref input, _map_boolField_codec);
            break;
          }
          case 138: {
            stringField_.AddEntriesFrom(ref input, _map_stringField_codec);
            break;
          }
          case 146: {
            bytesField_.AddEntriesFrom(ref input, _map_bytesField_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
