File: artifacts\obj\Microsoft.AspNetCore.Grpc.Swagger.Tests\Release\net10.0\Proto\Messages.cs
Project: src\src\Grpc\JsonTranscoding\test\Microsoft.AspNetCore.Grpc.Swagger.Tests\Microsoft.AspNetCore.Grpc.Swagger.Tests.csproj (Microsoft.AspNetCore.Grpc.Swagger.Tests)
// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: Proto/messages.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 Messages {

  /// <summary>Holder for reflection information generated from Proto/messages.proto</summary>
  public static partial class MessagesReflection {

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

    static MessagesReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChRQcm90by9tZXNzYWdlcy5wcm90bxIIbWVzc2FnZXMaHmdvb2dsZS9wcm90",
            "b2J1Zi93cmFwcGVycy5wcm90bxogZ29vZ2xlL3Byb3RvYnVmL2ZpZWxkX21h",
            "c2sucHJvdG8ivQoKDEhlbGxvUmVxdWVzdBIMCgRuYW1lGAEgASgJEi4KA3N1",
            "YhgCIAEoCzIhLm1lc3NhZ2VzLkhlbGxvUmVxdWVzdC5TdWJNZXNzYWdlEi4K",
            "BGRhdGEYAyABKAsyIC5tZXNzYWdlcy5IZWxsb1JlcXVlc3QuRGF0YVR5cGVz",
            "EjEKCHdyYXBwZXJzGAQgASgLMh8ubWVzc2FnZXMuSGVsbG9SZXF1ZXN0Lldy",
            "YXBwZXJzEhgKEHJlcGVhdGVkX3N0cmluZ3MYBSADKAkaMQoKU3ViTWVzc2Fn",
            "ZRIQCghzdWJmaWVsZBgBIAEoCRIRCglzdWJmaWVsZHMYAiADKAka6QQKCURh",
            "dGFUeXBlcxIUCgxzaW5nbGVfaW50MzIYASABKAUSFAoMc2luZ2xlX2ludDY0",
            "GAIgASgDEhUKDXNpbmdsZV91aW50MzIYAyABKA0SFQoNc2luZ2xlX3VpbnQ2",
            "NBgEIAEoBBIVCg1zaW5nbGVfc2ludDMyGAUgASgREhUKDXNpbmdsZV9zaW50",
            "NjQYBiABKBISFgoOc2luZ2xlX2ZpeGVkMzIYByABKAcSFgoOc2luZ2xlX2Zp",
            "eGVkNjQYCCABKAYSFwoPc2luZ2xlX3NmaXhlZDMyGAkgASgPEhcKD3Npbmds",
            "ZV9zZml4ZWQ2NBgKIAEoEBIUCgxzaW5nbGVfZmxvYXQYCyABKAISFQoNc2lu",
            "Z2xlX2RvdWJsZRgMIAEoARITCgtzaW5nbGVfYm9vbBgNIAEoCBIVCg1zaW5n",
            "bGVfc3RyaW5nGA4gASgJEhQKDHNpbmdsZV9ieXRlcxgPIAEoDBJACgtzaW5n",
            "bGVfZW51bRgQIAEoDjIrLm1lc3NhZ2VzLkhlbGxvUmVxdWVzdC5EYXRhVHlw",
            "ZXMuTmVzdGVkRW51bRJGCg5zaW5nbGVfbWVzc2FnZRgRIAEoCzIuLm1lc3Nh",
            "Z2VzLkhlbGxvUmVxdWVzdC5EYXRhVHlwZXMuTmVzdGVkTWVzc2FnZRohCg1O",
            "ZXN0ZWRNZXNzYWdlEhAKCHN1YmZpZWxkGAEgASgJIlYKCk5lc3RlZEVudW0S",
            "GwoXTkVTVEVEX0VOVU1fVU5TUEVDSUZJRUQQABIHCgNGT08QARIHCgNCQVIQ",
            "AhIHCgNCQVoQAxIQCgNORUcQ////////////ARrSAwoIV3JhcHBlcnMSMgoM",
            "c3RyaW5nX3ZhbHVlGAEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1Zh",
            "bHVlEjAKC2ludDMyX3ZhbHVlGAIgASgLMhsuZ29vZ2xlLnByb3RvYnVmLklu",
            "dDMyVmFsdWUSMAoLaW50NjRfdmFsdWUYAyABKAsyGy5nb29nbGUucHJvdG9i",
            "dWYuSW50NjRWYWx1ZRIwCgtmbG9hdF92YWx1ZRgEIAEoCzIbLmdvb2dsZS5w",
            "cm90b2J1Zi5GbG9hdFZhbHVlEjIKDGRvdWJsZV92YWx1ZRgFIAEoCzIcLmdv",
            "b2dsZS5wcm90b2J1Zi5Eb3VibGVWYWx1ZRIuCgpib29sX3ZhbHVlGAYgASgL",
            "MhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZRIyCgx1aW50MzJfdmFsdWUY",
            "ByABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDMyVmFsdWUSMgoMdWludDY0",
            "X3ZhbHVlGAggASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVlEjAK",
            "C2J5dGVzX3ZhbHVlGAkgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkJ5dGVzVmFs",
            "dWUiLQoKSGVsbG9SZXBseRIPCgdtZXNzYWdlGAEgASgJEg4KBnZhbHVlcxgC",
            "IAMoCSJDCg1TdHJpbmdXcmFwcGVyEjIKDHN0cmluZ192YWx1ZRgBIAEoCzIc",
            "Lmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZSI9ChBSZWN1cnNpdmVNZXNz",
            "YWdlEikKBWNoaWxkGAEgASgLMhoubWVzc2FnZXMuUmVjdXJzaXZlTWVzc2Fn",
            "ZSJeCgxCeXRlc01lc3NhZ2USEwoLYnl0ZXNfdmFsdWUYASABKAwSOQoUYnl0",
            "ZXNfbnVsbGFibGVfdmFsdWUYAiABKAsyGy5nb29nbGUucHJvdG9idWYuQnl0",
            "ZXNWYWx1ZSKbAQoLRW51bU1lc3NhZ2USNAoKZW51bV92YWx1ZRgBIAEoDjIg",
            "Lm1lc3NhZ2VzLkVudW1NZXNzYWdlLk5lc3RlZEVudW0iVgoKTmVzdGVkRW51",
            "bRIbChdORVNURURfRU5VTV9VTlNQRUNJRklFRBAAEgcKA0ZPTxABEgcKA0JB",
            "UhACEgcKA0JBWhADEhAKA05FRxD///////////8BIncKDE9uZU9mTWVzc2Fn",
            "ZRITCglmaXJzdF9vbmUYASABKAlIABITCglmaXJzdF90d28YAiABKAlIABIU",
            "CgpzZWNvbmRfb25lGAMgASgJSAESFAoKc2Vjb25kX3R3bxgEIAEoCUgBQgcK",
            "BUZpcnN0QggKBlNlY29uZCJ0CgpNYXBNZXNzYWdlEjUKCW1hcF92YWx1ZRgB",
            "IAMoCzIiLm1lc3NhZ2VzLk1hcE1lc3NhZ2UuTWFwVmFsdWVFbnRyeRovCg1N",
            "YXBWYWx1ZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAToCOAEi",
            "SAoQRmllbGRNYXNrTWVzc2FnZRI0ChBmaWVsZF9tYXNrX3ZhbHVlGAEgASgL",
            "MhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayq7AQoSRW51bVdpdGhvdXRN",
            "ZXNzYWdlEiQKIEVOVU1fV0lUSE9VVF9NRVNTQUdFX1VOU1BFQ0lGSUVEEAAS",
            "HAoYRU5VTV9XSVRIT1VUX01FU1NBR0VfRk9PEAESHAoYRU5VTV9XSVRIT1VU",
            "X01FU1NBR0VfQkFSEAISHAoYRU5VTV9XSVRIT1VUX01FU1NBR0VfQkFaEAMS",
            "JQoYRU5VTV9XSVRIT1VUX01FU1NBR0VfTkVHEP///////////wFiBnByb3Rv",
            "Mw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.FieldMaskReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Messages.EnumWithoutMessage), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.HelloRequest), global::Messages.HelloRequest.Parser, new[]{ "Name", "Sub", "Data", "Wrappers", "RepeatedStrings" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Messages.HelloRequest.Types.SubMessage), global::Messages.HelloRequest.Types.SubMessage.Parser, new[]{ "Subfield", "Subfields" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.HelloRequest.Types.DataTypes), global::Messages.HelloRequest.Types.DataTypes.Parser, new[]{ "SingleInt32", "SingleInt64", "SingleUint32", "SingleUint64", "SingleSint32", "SingleSint64", "SingleFixed32", "SingleFixed64", "SingleSfixed32", "SingleSfixed64", "SingleFloat", "SingleDouble", "SingleBool", "SingleString", "SingleBytes", "SingleEnum", "SingleMessage" }, null, new[]{ typeof(global::Messages.HelloRequest.Types.DataTypes.Types.NestedEnum) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Messages.HelloRequest.Types.DataTypes.Types.NestedMessage), global::Messages.HelloRequest.Types.DataTypes.Types.NestedMessage.Parser, new[]{ "Subfield" }, null, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.HelloRequest.Types.Wrappers), global::Messages.HelloRequest.Types.Wrappers.Parser, new[]{ "StringValue", "Int32Value", "Int64Value", "FloatValue", "DoubleValue", "BoolValue", "Uint32Value", "Uint64Value", "BytesValue" }, null, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.HelloReply), global::Messages.HelloReply.Parser, new[]{ "Message", "Values" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.StringWrapper), global::Messages.StringWrapper.Parser, new[]{ "StringValue" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.RecursiveMessage), global::Messages.RecursiveMessage.Parser, new[]{ "Child" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.BytesMessage), global::Messages.BytesMessage.Parser, new[]{ "BytesValue", "BytesNullableValue" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.EnumMessage), global::Messages.EnumMessage.Parser, new[]{ "EnumValue" }, null, new[]{ typeof(global::Messages.EnumMessage.Types.NestedEnum) }, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.OneOfMessage), global::Messages.OneOfMessage.Parser, new[]{ "FirstOne", "FirstTwo", "SecondOne", "SecondTwo" }, new[]{ "First", "Second" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.MapMessage), global::Messages.MapMessage.Parser, new[]{ "MapValue" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.FieldMaskMessage), global::Messages.FieldMaskMessage.Parser, new[]{ "FieldMaskValue" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  public enum EnumWithoutMessage {
    [pbr::OriginalName("ENUM_WITHOUT_MESSAGE_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("ENUM_WITHOUT_MESSAGE_FOO")] Foo = 1,
    [pbr::OriginalName("ENUM_WITHOUT_MESSAGE_BAR")] Bar = 2,
    [pbr::OriginalName("ENUM_WITHOUT_MESSAGE_BAZ")] Baz = 3,
    /// <summary>
    /// Intentionally negative.
    /// </summary>
    [pbr::OriginalName("ENUM_WITHOUT_MESSAGE_NEG")] Neg = -1,
  }

  #endregion

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MessagesReflection.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 HelloRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public HelloRequest(HelloRequest other) : this() {
      name_ = other.name_;
      sub_ = other.sub_ != null ? other.sub_.Clone() : null;
      data_ = other.data_ != null ? other.data_.Clone() : null;
      wrappers_ = other.wrappers_ != null ? other.wrappers_.Clone() : null;
      repeatedStrings_ = other.repeatedStrings_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "sub" field.</summary>
    public const int SubFieldNumber = 2;
    private global::Messages.HelloRequest.Types.SubMessage sub_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.HelloRequest.Types.SubMessage Sub {
      get { return sub_; }
      set {
        sub_ = value;
      }
    }

    /// <summary>Field number for the "data" field.</summary>
    public const int DataFieldNumber = 3;
    private global::Messages.HelloRequest.Types.DataTypes data_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.HelloRequest.Types.DataTypes Data {
      get { return data_; }
      set {
        data_ = value;
      }
    }

    /// <summary>Field number for the "wrappers" field.</summary>
    public const int WrappersFieldNumber = 4;
    private global::Messages.HelloRequest.Types.Wrappers wrappers_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.HelloRequest.Types.Wrappers Wrappers {
      get { return wrappers_; }
      set {
        wrappers_ = value;
      }
    }

    /// <summary>Field number for the "repeated_strings" field.</summary>
    public const int RepeatedStringsFieldNumber = 5;
    private static readonly pb::FieldCodec<string> _repeated_repeatedStrings_codec
        = pb::FieldCodec.ForString(42);
    private readonly pbc::RepeatedField<string> repeatedStrings_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> RepeatedStrings {
      get { return repeatedStrings_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(HelloRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (!object.Equals(Sub, other.Sub)) return false;
      if (!object.Equals(Data, other.Data)) return false;
      if (!object.Equals(Wrappers, other.Wrappers)) return false;
      if(!repeatedStrings_.Equals(other.repeatedStrings_)) 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 (Name.Length != 0) hash ^= Name.GetHashCode();
      if (sub_ != null) hash ^= Sub.GetHashCode();
      if (data_ != null) hash ^= Data.GetHashCode();
      if (wrappers_ != null) hash ^= Wrappers.GetHashCode();
      hash ^= repeatedStrings_.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 (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (sub_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Sub);
      }
      if (data_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Data);
      }
      if (wrappers_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Wrappers);
      }
      repeatedStrings_.WriteTo(output, _repeated_repeatedStrings_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) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (sub_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Sub);
      }
      if (data_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Data);
      }
      if (wrappers_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Wrappers);
      }
      repeatedStrings_.WriteTo(ref output, _repeated_repeatedStrings_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;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (sub_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sub);
      }
      if (data_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Data);
      }
      if (wrappers_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Wrappers);
      }
      size += repeatedStrings_.CalculateSize(_repeated_repeatedStrings_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(HelloRequest other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.sub_ != null) {
        if (sub_ == null) {
          Sub = new global::Messages.HelloRequest.Types.SubMessage();
        }
        Sub.MergeFrom(other.Sub);
      }
      if (other.data_ != null) {
        if (data_ == null) {
          Data = new global::Messages.HelloRequest.Types.DataTypes();
        }
        Data.MergeFrom(other.Data);
      }
      if (other.wrappers_ != null) {
        if (wrappers_ == null) {
          Wrappers = new global::Messages.HelloRequest.Types.Wrappers();
        }
        Wrappers.MergeFrom(other.Wrappers);
      }
      repeatedStrings_.Add(other.repeatedStrings_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            if (sub_ == null) {
              Sub = new global::Messages.HelloRequest.Types.SubMessage();
            }
            input.ReadMessage(Sub);
            break;
          }
          case 26: {
            if (data_ == null) {
              Data = new global::Messages.HelloRequest.Types.DataTypes();
            }
            input.ReadMessage(Data);
            break;
          }
          case 34: {
            if (wrappers_ == null) {
              Wrappers = new global::Messages.HelloRequest.Types.Wrappers();
            }
            input.ReadMessage(Wrappers);
            break;
          }
          case 42: {
            repeatedStrings_.AddEntriesFrom(input, _repeated_repeatedStrings_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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            if (sub_ == null) {
              Sub = new global::Messages.HelloRequest.Types.SubMessage();
            }
            input.ReadMessage(Sub);
            break;
          }
          case 26: {
            if (data_ == null) {
              Data = new global::Messages.HelloRequest.Types.DataTypes();
            }
            input.ReadMessage(Data);
            break;
          }
          case 34: {
            if (wrappers_ == null) {
              Wrappers = new global::Messages.HelloRequest.Types.Wrappers();
            }
            input.ReadMessage(Wrappers);
            break;
          }
          case 42: {
            repeatedStrings_.AddEntriesFrom(ref input, _repeated_repeatedStrings_codec);
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// <summary>Container for nested types declared in the HelloRequest message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static partial class Types {
      [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
      public sealed partial class SubMessage : pb::IMessage<SubMessage>
      #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          , pb::IBufferMessage
      #endif
      {
        private static readonly pb::MessageParser<SubMessage> _parser = new pb::MessageParser<SubMessage>(() => new SubMessage());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pb::MessageParser<SubMessage> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Messages.HelloRequest.Descriptor.NestedTypes[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 SubMessage() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public SubMessage(SubMessage other) : this() {
          subfield_ = other.subfield_;
          subfields_ = other.subfields_.Clone();
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

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

        /// <summary>Field number for the "subfield" field.</summary>
        public const int SubfieldFieldNumber = 1;
        private string subfield_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public string Subfield {
          get { return subfield_; }
          set {
            subfield_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "subfields" field.</summary>
        public const int SubfieldsFieldNumber = 2;
        private static readonly pb::FieldCodec<string> _repeated_subfields_codec
            = pb::FieldCodec.ForString(18);
        private readonly pbc::RepeatedField<string> subfields_ = new pbc::RepeatedField<string>();
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public pbc::RepeatedField<string> Subfields {
          get { return subfields_; }
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Equals(SubMessage other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (Subfield != other.Subfield) return false;
          if(!subfields_.Equals(other.subfields_)) 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 (Subfield.Length != 0) hash ^= Subfield.GetHashCode();
          hash ^= subfields_.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 (Subfield.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(Subfield);
          }
          subfields_.WriteTo(output, _repeated_subfields_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) {
          if (Subfield.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(Subfield);
          }
          subfields_.WriteTo(ref output, _repeated_subfields_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;
          if (Subfield.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Subfield);
          }
          size += subfields_.CalculateSize(_repeated_subfields_codec);
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(SubMessage other) {
          if (other == null) {
            return;
          }
          if (other.Subfield.Length != 0) {
            Subfield = other.Subfield;
          }
          subfields_.Add(other.subfields_);
          _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) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                Subfield = input.ReadString();
                break;
              }
              case 18: {
                subfields_.AddEntriesFrom(input, _repeated_subfields_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) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
                break;
              case 10: {
                Subfield = input.ReadString();
                break;
              }
              case 18: {
                subfields_.AddEntriesFrom(ref input, _repeated_subfields_codec);
                break;
              }
            }
          }
        }
        #endif

      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Messages.HelloRequest.Descriptor.NestedTypes[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 DataTypes() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public DataTypes(DataTypes other) : this() {
          singleInt32_ = other.singleInt32_;
          singleInt64_ = other.singleInt64_;
          singleUint32_ = other.singleUint32_;
          singleUint64_ = other.singleUint64_;
          singleSint32_ = other.singleSint32_;
          singleSint64_ = other.singleSint64_;
          singleFixed32_ = other.singleFixed32_;
          singleFixed64_ = other.singleFixed64_;
          singleSfixed32_ = other.singleSfixed32_;
          singleSfixed64_ = other.singleSfixed64_;
          singleFloat_ = other.singleFloat_;
          singleDouble_ = other.singleDouble_;
          singleBool_ = other.singleBool_;
          singleString_ = other.singleString_;
          singleBytes_ = other.singleBytes_;
          singleEnum_ = other.singleEnum_;
          singleMessage_ = other.singleMessage_ != null ? other.singleMessage_.Clone() : null;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

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

        /// <summary>Field number for the "single_int32" field.</summary>
        public const int SingleInt32FieldNumber = 1;
        private int singleInt32_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int SingleInt32 {
          get { return singleInt32_; }
          set {
            singleInt32_ = value;
          }
        }

        /// <summary>Field number for the "single_int64" field.</summary>
        public const int SingleInt64FieldNumber = 2;
        private long singleInt64_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public long SingleInt64 {
          get { return singleInt64_; }
          set {
            singleInt64_ = value;
          }
        }

        /// <summary>Field number for the "single_uint32" field.</summary>
        public const int SingleUint32FieldNumber = 3;
        private uint singleUint32_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public uint SingleUint32 {
          get { return singleUint32_; }
          set {
            singleUint32_ = value;
          }
        }

        /// <summary>Field number for the "single_uint64" field.</summary>
        public const int SingleUint64FieldNumber = 4;
        private ulong singleUint64_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public ulong SingleUint64 {
          get { return singleUint64_; }
          set {
            singleUint64_ = value;
          }
        }

        /// <summary>Field number for the "single_sint32" field.</summary>
        public const int SingleSint32FieldNumber = 5;
        private int singleSint32_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int SingleSint32 {
          get { return singleSint32_; }
          set {
            singleSint32_ = value;
          }
        }

        /// <summary>Field number for the "single_sint64" field.</summary>
        public const int SingleSint64FieldNumber = 6;
        private long singleSint64_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public long SingleSint64 {
          get { return singleSint64_; }
          set {
            singleSint64_ = value;
          }
        }

        /// <summary>Field number for the "single_fixed32" field.</summary>
        public const int SingleFixed32FieldNumber = 7;
        private uint singleFixed32_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public uint SingleFixed32 {
          get { return singleFixed32_; }
          set {
            singleFixed32_ = value;
          }
        }

        /// <summary>Field number for the "single_fixed64" field.</summary>
        public const int SingleFixed64FieldNumber = 8;
        private ulong singleFixed64_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public ulong SingleFixed64 {
          get { return singleFixed64_; }
          set {
            singleFixed64_ = value;
          }
        }

        /// <summary>Field number for the "single_sfixed32" field.</summary>
        public const int SingleSfixed32FieldNumber = 9;
        private int singleSfixed32_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int SingleSfixed32 {
          get { return singleSfixed32_; }
          set {
            singleSfixed32_ = value;
          }
        }

        /// <summary>Field number for the "single_sfixed64" field.</summary>
        public const int SingleSfixed64FieldNumber = 10;
        private long singleSfixed64_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public long SingleSfixed64 {
          get { return singleSfixed64_; }
          set {
            singleSfixed64_ = value;
          }
        }

        /// <summary>Field number for the "single_float" field.</summary>
        public const int SingleFloatFieldNumber = 11;
        private float singleFloat_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public float SingleFloat {
          get { return singleFloat_; }
          set {
            singleFloat_ = value;
          }
        }

        /// <summary>Field number for the "single_double" field.</summary>
        public const int SingleDoubleFieldNumber = 12;
        private double singleDouble_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public double SingleDouble {
          get { return singleDouble_; }
          set {
            singleDouble_ = value;
          }
        }

        /// <summary>Field number for the "single_bool" field.</summary>
        public const int SingleBoolFieldNumber = 13;
        private bool singleBool_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool SingleBool {
          get { return singleBool_; }
          set {
            singleBool_ = value;
          }
        }

        /// <summary>Field number for the "single_string" field.</summary>
        public const int SingleStringFieldNumber = 14;
        private string singleString_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public string SingleString {
          get { return singleString_; }
          set {
            singleString_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "single_bytes" field.</summary>
        public const int SingleBytesFieldNumber = 15;
        private pb::ByteString singleBytes_ = pb::ByteString.Empty;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public pb::ByteString SingleBytes {
          get { return singleBytes_; }
          set {
            singleBytes_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "single_enum" field.</summary>
        public const int SingleEnumFieldNumber = 16;
        private global::Messages.HelloRequest.Types.DataTypes.Types.NestedEnum singleEnum_ = global::Messages.HelloRequest.Types.DataTypes.Types.NestedEnum.Unspecified;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public global::Messages.HelloRequest.Types.DataTypes.Types.NestedEnum SingleEnum {
          get { return singleEnum_; }
          set {
            singleEnum_ = value;
          }
        }

        /// <summary>Field number for the "single_message" field.</summary>
        public const int SingleMessageFieldNumber = 17;
        private global::Messages.HelloRequest.Types.DataTypes.Types.NestedMessage singleMessage_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public global::Messages.HelloRequest.Types.DataTypes.Types.NestedMessage SingleMessage {
          get { return singleMessage_; }
          set {
            singleMessage_ = value;
          }
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Equals(DataTypes other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (SingleInt32 != other.SingleInt32) return false;
          if (SingleInt64 != other.SingleInt64) return false;
          if (SingleUint32 != other.SingleUint32) return false;
          if (SingleUint64 != other.SingleUint64) return false;
          if (SingleSint32 != other.SingleSint32) return false;
          if (SingleSint64 != other.SingleSint64) return false;
          if (SingleFixed32 != other.SingleFixed32) return false;
          if (SingleFixed64 != other.SingleFixed64) return false;
          if (SingleSfixed32 != other.SingleSfixed32) return false;
          if (SingleSfixed64 != other.SingleSfixed64) return false;
          if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(SingleFloat, other.SingleFloat)) return false;
          if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(SingleDouble, other.SingleDouble)) return false;
          if (SingleBool != other.SingleBool) return false;
          if (SingleString != other.SingleString) return false;
          if (SingleBytes != other.SingleBytes) return false;
          if (SingleEnum != other.SingleEnum) return false;
          if (!object.Equals(SingleMessage, other.SingleMessage)) 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 (SingleInt32 != 0) hash ^= SingleInt32.GetHashCode();
          if (SingleInt64 != 0L) hash ^= SingleInt64.GetHashCode();
          if (SingleUint32 != 0) hash ^= SingleUint32.GetHashCode();
          if (SingleUint64 != 0UL) hash ^= SingleUint64.GetHashCode();
          if (SingleSint32 != 0) hash ^= SingleSint32.GetHashCode();
          if (SingleSint64 != 0L) hash ^= SingleSint64.GetHashCode();
          if (SingleFixed32 != 0) hash ^= SingleFixed32.GetHashCode();
          if (SingleFixed64 != 0UL) hash ^= SingleFixed64.GetHashCode();
          if (SingleSfixed32 != 0) hash ^= SingleSfixed32.GetHashCode();
          if (SingleSfixed64 != 0L) hash ^= SingleSfixed64.GetHashCode();
          if (SingleFloat != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(SingleFloat);
          if (SingleDouble != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(SingleDouble);
          if (SingleBool != false) hash ^= SingleBool.GetHashCode();
          if (SingleString.Length != 0) hash ^= SingleString.GetHashCode();
          if (SingleBytes.Length != 0) hash ^= SingleBytes.GetHashCode();
          if (SingleEnum != global::Messages.HelloRequest.Types.DataTypes.Types.NestedEnum.Unspecified) hash ^= SingleEnum.GetHashCode();
          if (singleMessage_ != null) hash ^= SingleMessage.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 (SingleInt32 != 0) {
            output.WriteRawTag(8);
            output.WriteInt32(SingleInt32);
          }
          if (SingleInt64 != 0L) {
            output.WriteRawTag(16);
            output.WriteInt64(SingleInt64);
          }
          if (SingleUint32 != 0) {
            output.WriteRawTag(24);
            output.WriteUInt32(SingleUint32);
          }
          if (SingleUint64 != 0UL) {
            output.WriteRawTag(32);
            output.WriteUInt64(SingleUint64);
          }
          if (SingleSint32 != 0) {
            output.WriteRawTag(40);
            output.WriteSInt32(SingleSint32);
          }
          if (SingleSint64 != 0L) {
            output.WriteRawTag(48);
            output.WriteSInt64(SingleSint64);
          }
          if (SingleFixed32 != 0) {
            output.WriteRawTag(61);
            output.WriteFixed32(SingleFixed32);
          }
          if (SingleFixed64 != 0UL) {
            output.WriteRawTag(65);
            output.WriteFixed64(SingleFixed64);
          }
          if (SingleSfixed32 != 0) {
            output.WriteRawTag(77);
            output.WriteSFixed32(SingleSfixed32);
          }
          if (SingleSfixed64 != 0L) {
            output.WriteRawTag(81);
            output.WriteSFixed64(SingleSfixed64);
          }
          if (SingleFloat != 0F) {
            output.WriteRawTag(93);
            output.WriteFloat(SingleFloat);
          }
          if (SingleDouble != 0D) {
            output.WriteRawTag(97);
            output.WriteDouble(SingleDouble);
          }
          if (SingleBool != false) {
            output.WriteRawTag(104);
            output.WriteBool(SingleBool);
          }
          if (SingleString.Length != 0) {
            output.WriteRawTag(114);
            output.WriteString(SingleString);
          }
          if (SingleBytes.Length != 0) {
            output.WriteRawTag(122);
            output.WriteBytes(SingleBytes);
          }
          if (SingleEnum != global::Messages.HelloRequest.Types.DataTypes.Types.NestedEnum.Unspecified) {
            output.WriteRawTag(128, 1);
            output.WriteEnum((int) SingleEnum);
          }
          if (singleMessage_ != null) {
            output.WriteRawTag(138, 1);
            output.WriteMessage(SingleMessage);
          }
          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 (SingleInt32 != 0) {
            output.WriteRawTag(8);
            output.WriteInt32(SingleInt32);
          }
          if (SingleInt64 != 0L) {
            output.WriteRawTag(16);
            output.WriteInt64(SingleInt64);
          }
          if (SingleUint32 != 0) {
            output.WriteRawTag(24);
            output.WriteUInt32(SingleUint32);
          }
          if (SingleUint64 != 0UL) {
            output.WriteRawTag(32);
            output.WriteUInt64(SingleUint64);
          }
          if (SingleSint32 != 0) {
            output.WriteRawTag(40);
            output.WriteSInt32(SingleSint32);
          }
          if (SingleSint64 != 0L) {
            output.WriteRawTag(48);
            output.WriteSInt64(SingleSint64);
          }
          if (SingleFixed32 != 0) {
            output.WriteRawTag(61);
            output.WriteFixed32(SingleFixed32);
          }
          if (SingleFixed64 != 0UL) {
            output.WriteRawTag(65);
            output.WriteFixed64(SingleFixed64);
          }
          if (SingleSfixed32 != 0) {
            output.WriteRawTag(77);
            output.WriteSFixed32(SingleSfixed32);
          }
          if (SingleSfixed64 != 0L) {
            output.WriteRawTag(81);
            output.WriteSFixed64(SingleSfixed64);
          }
          if (SingleFloat != 0F) {
            output.WriteRawTag(93);
            output.WriteFloat(SingleFloat);
          }
          if (SingleDouble != 0D) {
            output.WriteRawTag(97);
            output.WriteDouble(SingleDouble);
          }
          if (SingleBool != false) {
            output.WriteRawTag(104);
            output.WriteBool(SingleBool);
          }
          if (SingleString.Length != 0) {
            output.WriteRawTag(114);
            output.WriteString(SingleString);
          }
          if (SingleBytes.Length != 0) {
            output.WriteRawTag(122);
            output.WriteBytes(SingleBytes);
          }
          if (SingleEnum != global::Messages.HelloRequest.Types.DataTypes.Types.NestedEnum.Unspecified) {
            output.WriteRawTag(128, 1);
            output.WriteEnum((int) SingleEnum);
          }
          if (singleMessage_ != null) {
            output.WriteRawTag(138, 1);
            output.WriteMessage(SingleMessage);
          }
          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 (SingleInt32 != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(SingleInt32);
          }
          if (SingleInt64 != 0L) {
            size += 1 + pb::CodedOutputStream.ComputeInt64Size(SingleInt64);
          }
          if (SingleUint32 != 0) {
            size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SingleUint32);
          }
          if (SingleUint64 != 0UL) {
            size += 1 + pb::CodedOutputStream.ComputeUInt64Size(SingleUint64);
          }
          if (SingleSint32 != 0) {
            size += 1 + pb::CodedOutputStream.ComputeSInt32Size(SingleSint32);
          }
          if (SingleSint64 != 0L) {
            size += 1 + pb::CodedOutputStream.ComputeSInt64Size(SingleSint64);
          }
          if (SingleFixed32 != 0) {
            size += 1 + 4;
          }
          if (SingleFixed64 != 0UL) {
            size += 1 + 8;
          }
          if (SingleSfixed32 != 0) {
            size += 1 + 4;
          }
          if (SingleSfixed64 != 0L) {
            size += 1 + 8;
          }
          if (SingleFloat != 0F) {
            size += 1 + 4;
          }
          if (SingleDouble != 0D) {
            size += 1 + 8;
          }
          if (SingleBool != false) {
            size += 1 + 1;
          }
          if (SingleString.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(SingleString);
          }
          if (SingleBytes.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeBytesSize(SingleBytes);
          }
          if (SingleEnum != global::Messages.HelloRequest.Types.DataTypes.Types.NestedEnum.Unspecified) {
            size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleEnum);
          }
          if (singleMessage_ != null) {
            size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleMessage);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(DataTypes other) {
          if (other == null) {
            return;
          }
          if (other.SingleInt32 != 0) {
            SingleInt32 = other.SingleInt32;
          }
          if (other.SingleInt64 != 0L) {
            SingleInt64 = other.SingleInt64;
          }
          if (other.SingleUint32 != 0) {
            SingleUint32 = other.SingleUint32;
          }
          if (other.SingleUint64 != 0UL) {
            SingleUint64 = other.SingleUint64;
          }
          if (other.SingleSint32 != 0) {
            SingleSint32 = other.SingleSint32;
          }
          if (other.SingleSint64 != 0L) {
            SingleSint64 = other.SingleSint64;
          }
          if (other.SingleFixed32 != 0) {
            SingleFixed32 = other.SingleFixed32;
          }
          if (other.SingleFixed64 != 0UL) {
            SingleFixed64 = other.SingleFixed64;
          }
          if (other.SingleSfixed32 != 0) {
            SingleSfixed32 = other.SingleSfixed32;
          }
          if (other.SingleSfixed64 != 0L) {
            SingleSfixed64 = other.SingleSfixed64;
          }
          if (other.SingleFloat != 0F) {
            SingleFloat = other.SingleFloat;
          }
          if (other.SingleDouble != 0D) {
            SingleDouble = other.SingleDouble;
          }
          if (other.SingleBool != false) {
            SingleBool = other.SingleBool;
          }
          if (other.SingleString.Length != 0) {
            SingleString = other.SingleString;
          }
          if (other.SingleBytes.Length != 0) {
            SingleBytes = other.SingleBytes;
          }
          if (other.SingleEnum != global::Messages.HelloRequest.Types.DataTypes.Types.NestedEnum.Unspecified) {
            SingleEnum = other.SingleEnum;
          }
          if (other.singleMessage_ != null) {
            if (singleMessage_ == null) {
              SingleMessage = new global::Messages.HelloRequest.Types.DataTypes.Types.NestedMessage();
            }
            SingleMessage.MergeFrom(other.SingleMessage);
          }
          _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) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 8: {
                SingleInt32 = input.ReadInt32();
                break;
              }
              case 16: {
                SingleInt64 = input.ReadInt64();
                break;
              }
              case 24: {
                SingleUint32 = input.ReadUInt32();
                break;
              }
              case 32: {
                SingleUint64 = input.ReadUInt64();
                break;
              }
              case 40: {
                SingleSint32 = input.ReadSInt32();
                break;
              }
              case 48: {
                SingleSint64 = input.ReadSInt64();
                break;
              }
              case 61: {
                SingleFixed32 = input.ReadFixed32();
                break;
              }
              case 65: {
                SingleFixed64 = input.ReadFixed64();
                break;
              }
              case 77: {
                SingleSfixed32 = input.ReadSFixed32();
                break;
              }
              case 81: {
                SingleSfixed64 = input.ReadSFixed64();
                break;
              }
              case 93: {
                SingleFloat = input.ReadFloat();
                break;
              }
              case 97: {
                SingleDouble = input.ReadDouble();
                break;
              }
              case 104: {
                SingleBool = input.ReadBool();
                break;
              }
              case 114: {
                SingleString = input.ReadString();
                break;
              }
              case 122: {
                SingleBytes = input.ReadBytes();
                break;
              }
              case 128: {
                SingleEnum = (global::Messages.HelloRequest.Types.DataTypes.Types.NestedEnum) input.ReadEnum();
                break;
              }
              case 138: {
                if (singleMessage_ == null) {
                  SingleMessage = new global::Messages.HelloRequest.Types.DataTypes.Types.NestedMessage();
                }
                input.ReadMessage(SingleMessage);
                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) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
                break;
              case 8: {
                SingleInt32 = input.ReadInt32();
                break;
              }
              case 16: {
                SingleInt64 = input.ReadInt64();
                break;
              }
              case 24: {
                SingleUint32 = input.ReadUInt32();
                break;
              }
              case 32: {
                SingleUint64 = input.ReadUInt64();
                break;
              }
              case 40: {
                SingleSint32 = input.ReadSInt32();
                break;
              }
              case 48: {
                SingleSint64 = input.ReadSInt64();
                break;
              }
              case 61: {
                SingleFixed32 = input.ReadFixed32();
                break;
              }
              case 65: {
                SingleFixed64 = input.ReadFixed64();
                break;
              }
              case 77: {
                SingleSfixed32 = input.ReadSFixed32();
                break;
              }
              case 81: {
                SingleSfixed64 = input.ReadSFixed64();
                break;
              }
              case 93: {
                SingleFloat = input.ReadFloat();
                break;
              }
              case 97: {
                SingleDouble = input.ReadDouble();
                break;
              }
              case 104: {
                SingleBool = input.ReadBool();
                break;
              }
              case 114: {
                SingleString = input.ReadString();
                break;
              }
              case 122: {
                SingleBytes = input.ReadBytes();
                break;
              }
              case 128: {
                SingleEnum = (global::Messages.HelloRequest.Types.DataTypes.Types.NestedEnum) input.ReadEnum();
                break;
              }
              case 138: {
                if (singleMessage_ == null) {
                  SingleMessage = new global::Messages.HelloRequest.Types.DataTypes.Types.NestedMessage();
                }
                input.ReadMessage(SingleMessage);
                break;
              }
            }
          }
        }
        #endif

        #region Nested types
        /// <summary>Container for nested types declared in the DataTypes message type.</summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static partial class Types {
          public enum NestedEnum {
            [pbr::OriginalName("NESTED_ENUM_UNSPECIFIED")] Unspecified = 0,
            [pbr::OriginalName("FOO")] Foo = 1,
            [pbr::OriginalName("BAR")] Bar = 2,
            [pbr::OriginalName("BAZ")] Baz = 3,
            /// <summary>
            /// Intentionally negative.
            /// </summary>
            [pbr::OriginalName("NEG")] Neg = -1,
          }

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

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public static pbr::MessageDescriptor Descriptor {
              get { return global::Messages.HelloRequest.Types.DataTypes.Descriptor.NestedTypes[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 NestedMessage() {
              OnConstruction();
            }

            partial void OnConstruction();

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public NestedMessage(NestedMessage other) : this() {
              subfield_ = other.subfield_;
              _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
            }

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

            /// <summary>Field number for the "subfield" field.</summary>
            public const int SubfieldFieldNumber = 1;
            private string subfield_ = "";
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public string Subfield {
              get { return subfield_; }
              set {
                subfield_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
              }
            }

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

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public bool Equals(NestedMessage other) {
              if (ReferenceEquals(other, null)) {
                return false;
              }
              if (ReferenceEquals(other, this)) {
                return true;
              }
              if (Subfield != other.Subfield) 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 (Subfield.Length != 0) hash ^= Subfield.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 (Subfield.Length != 0) {
                output.WriteRawTag(10);
                output.WriteString(Subfield);
              }
              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 (Subfield.Length != 0) {
                output.WriteRawTag(10);
                output.WriteString(Subfield);
              }
              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 (Subfield.Length != 0) {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(Subfield);
              }
              if (_unknownFields != null) {
                size += _unknownFields.CalculateSize();
              }
              return size;
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public void MergeFrom(NestedMessage other) {
              if (other == null) {
                return;
              }
              if (other.Subfield.Length != 0) {
                Subfield = other.Subfield;
              }
              _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) {
                switch(tag) {
                  default:
                    _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                    break;
                  case 10: {
                    Subfield = input.ReadString();
                    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) {
                switch(tag) {
                  default:
                    _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
                    break;
                  case 10: {
                    Subfield = input.ReadString();
                    break;
                  }
                }
              }
            }
            #endif

          }

        }
        #endregion

      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Messages.HelloRequest.Descriptor.NestedTypes[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 Wrappers() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public Wrappers(Wrappers other) : this() {
          StringValue = other.StringValue;
          Int32Value = other.Int32Value;
          Int64Value = other.Int64Value;
          FloatValue = other.FloatValue;
          DoubleValue = other.DoubleValue;
          BoolValue = other.BoolValue;
          Uint32Value = other.Uint32Value;
          Uint64Value = other.Uint64Value;
          BytesValue = other.BytesValue;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

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

        /// <summary>Field number for the "string_value" field.</summary>
        public const int StringValueFieldNumber = 1;
        private static readonly pb::FieldCodec<string> _single_stringValue_codec = pb::FieldCodec.ForClassWrapper<string>(10);
        private string stringValue_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public string StringValue {
          get { return stringValue_; }
          set {
            stringValue_ = value;
          }
        }


        /// <summary>Field number for the "int32_value" field.</summary>
        public const int Int32ValueFieldNumber = 2;
        private static readonly pb::FieldCodec<int?> _single_int32Value_codec = pb::FieldCodec.ForStructWrapper<int>(18);
        private int? int32Value_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int? Int32Value {
          get { return int32Value_; }
          set {
            int32Value_ = value;
          }
        }


        /// <summary>Field number for the "int64_value" field.</summary>
        public const int Int64ValueFieldNumber = 3;
        private static readonly pb::FieldCodec<long?> _single_int64Value_codec = pb::FieldCodec.ForStructWrapper<long>(26);
        private long? int64Value_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public long? Int64Value {
          get { return int64Value_; }
          set {
            int64Value_ = value;
          }
        }


        /// <summary>Field number for the "float_value" field.</summary>
        public const int FloatValueFieldNumber = 4;
        private static readonly pb::FieldCodec<float?> _single_floatValue_codec = pb::FieldCodec.ForStructWrapper<float>(34);
        private float? floatValue_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public float? FloatValue {
          get { return floatValue_; }
          set {
            floatValue_ = value;
          }
        }


        /// <summary>Field number for the "double_value" field.</summary>
        public const int DoubleValueFieldNumber = 5;
        private static readonly pb::FieldCodec<double?> _single_doubleValue_codec = pb::FieldCodec.ForStructWrapper<double>(42);
        private double? doubleValue_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public double? DoubleValue {
          get { return doubleValue_; }
          set {
            doubleValue_ = value;
          }
        }


        /// <summary>Field number for the "bool_value" field.</summary>
        public const int BoolValueFieldNumber = 6;
        private static readonly pb::FieldCodec<bool?> _single_boolValue_codec = pb::FieldCodec.ForStructWrapper<bool>(50);
        private bool? boolValue_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool? BoolValue {
          get { return boolValue_; }
          set {
            boolValue_ = value;
          }
        }


        /// <summary>Field number for the "uint32_value" field.</summary>
        public const int Uint32ValueFieldNumber = 7;
        private static readonly pb::FieldCodec<uint?> _single_uint32Value_codec = pb::FieldCodec.ForStructWrapper<uint>(58);
        private uint? uint32Value_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public uint? Uint32Value {
          get { return uint32Value_; }
          set {
            uint32Value_ = value;
          }
        }


        /// <summary>Field number for the "uint64_value" field.</summary>
        public const int Uint64ValueFieldNumber = 8;
        private static readonly pb::FieldCodec<ulong?> _single_uint64Value_codec = pb::FieldCodec.ForStructWrapper<ulong>(66);
        private ulong? uint64Value_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public ulong? Uint64Value {
          get { return uint64Value_; }
          set {
            uint64Value_ = value;
          }
        }


        /// <summary>Field number for the "bytes_value" field.</summary>
        public const int BytesValueFieldNumber = 9;
        private static readonly pb::FieldCodec<pb::ByteString> _single_bytesValue_codec = pb::FieldCodec.ForClassWrapper<pb::ByteString>(74);
        private pb::ByteString bytesValue_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public pb::ByteString BytesValue {
          get { return bytesValue_; }
          set {
            bytesValue_ = value;
          }
        }


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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Equals(Wrappers other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (StringValue != other.StringValue) return false;
          if (Int32Value != other.Int32Value) return false;
          if (Int64Value != other.Int64Value) return false;
          if (!pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.Equals(FloatValue, other.FloatValue)) return false;
          if (!pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.Equals(DoubleValue, other.DoubleValue)) return false;
          if (BoolValue != other.BoolValue) return false;
          if (Uint32Value != other.Uint32Value) return false;
          if (Uint64Value != other.Uint64Value) return false;
          if (BytesValue != other.BytesValue) 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 (stringValue_ != null) hash ^= StringValue.GetHashCode();
          if (int32Value_ != null) hash ^= Int32Value.GetHashCode();
          if (int64Value_ != null) hash ^= Int64Value.GetHashCode();
          if (floatValue_ != null) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.GetHashCode(FloatValue);
          if (doubleValue_ != null) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.GetHashCode(DoubleValue);
          if (boolValue_ != null) hash ^= BoolValue.GetHashCode();
          if (uint32Value_ != null) hash ^= Uint32Value.GetHashCode();
          if (uint64Value_ != null) hash ^= Uint64Value.GetHashCode();
          if (bytesValue_ != null) hash ^= BytesValue.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 (stringValue_ != null) {
            _single_stringValue_codec.WriteTagAndValue(output, StringValue);
          }
          if (int32Value_ != null) {
            _single_int32Value_codec.WriteTagAndValue(output, Int32Value);
          }
          if (int64Value_ != null) {
            _single_int64Value_codec.WriteTagAndValue(output, Int64Value);
          }
          if (floatValue_ != null) {
            _single_floatValue_codec.WriteTagAndValue(output, FloatValue);
          }
          if (doubleValue_ != null) {
            _single_doubleValue_codec.WriteTagAndValue(output, DoubleValue);
          }
          if (boolValue_ != null) {
            _single_boolValue_codec.WriteTagAndValue(output, BoolValue);
          }
          if (uint32Value_ != null) {
            _single_uint32Value_codec.WriteTagAndValue(output, Uint32Value);
          }
          if (uint64Value_ != null) {
            _single_uint64Value_codec.WriteTagAndValue(output, Uint64Value);
          }
          if (bytesValue_ != null) {
            _single_bytesValue_codec.WriteTagAndValue(output, BytesValue);
          }
          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 (stringValue_ != null) {
            _single_stringValue_codec.WriteTagAndValue(ref output, StringValue);
          }
          if (int32Value_ != null) {
            _single_int32Value_codec.WriteTagAndValue(ref output, Int32Value);
          }
          if (int64Value_ != null) {
            _single_int64Value_codec.WriteTagAndValue(ref output, Int64Value);
          }
          if (floatValue_ != null) {
            _single_floatValue_codec.WriteTagAndValue(ref output, FloatValue);
          }
          if (doubleValue_ != null) {
            _single_doubleValue_codec.WriteTagAndValue(ref output, DoubleValue);
          }
          if (boolValue_ != null) {
            _single_boolValue_codec.WriteTagAndValue(ref output, BoolValue);
          }
          if (uint32Value_ != null) {
            _single_uint32Value_codec.WriteTagAndValue(ref output, Uint32Value);
          }
          if (uint64Value_ != null) {
            _single_uint64Value_codec.WriteTagAndValue(ref output, Uint64Value);
          }
          if (bytesValue_ != null) {
            _single_bytesValue_codec.WriteTagAndValue(ref output, BytesValue);
          }
          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 (stringValue_ != null) {
            size += _single_stringValue_codec.CalculateSizeWithTag(StringValue);
          }
          if (int32Value_ != null) {
            size += _single_int32Value_codec.CalculateSizeWithTag(Int32Value);
          }
          if (int64Value_ != null) {
            size += _single_int64Value_codec.CalculateSizeWithTag(Int64Value);
          }
          if (floatValue_ != null) {
            size += _single_floatValue_codec.CalculateSizeWithTag(FloatValue);
          }
          if (doubleValue_ != null) {
            size += _single_doubleValue_codec.CalculateSizeWithTag(DoubleValue);
          }
          if (boolValue_ != null) {
            size += _single_boolValue_codec.CalculateSizeWithTag(BoolValue);
          }
          if (uint32Value_ != null) {
            size += _single_uint32Value_codec.CalculateSizeWithTag(Uint32Value);
          }
          if (uint64Value_ != null) {
            size += _single_uint64Value_codec.CalculateSizeWithTag(Uint64Value);
          }
          if (bytesValue_ != null) {
            size += _single_bytesValue_codec.CalculateSizeWithTag(BytesValue);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(Wrappers other) {
          if (other == null) {
            return;
          }
          if (other.stringValue_ != null) {
            if (stringValue_ == null || other.StringValue != "") {
              StringValue = other.StringValue;
            }
          }
          if (other.int32Value_ != null) {
            if (int32Value_ == null || other.Int32Value != 0) {
              Int32Value = other.Int32Value;
            }
          }
          if (other.int64Value_ != null) {
            if (int64Value_ == null || other.Int64Value != 0L) {
              Int64Value = other.Int64Value;
            }
          }
          if (other.floatValue_ != null) {
            if (floatValue_ == null || other.FloatValue != 0F) {
              FloatValue = other.FloatValue;
            }
          }
          if (other.doubleValue_ != null) {
            if (doubleValue_ == null || other.DoubleValue != 0D) {
              DoubleValue = other.DoubleValue;
            }
          }
          if (other.boolValue_ != null) {
            if (boolValue_ == null || other.BoolValue != false) {
              BoolValue = other.BoolValue;
            }
          }
          if (other.uint32Value_ != null) {
            if (uint32Value_ == null || other.Uint32Value != 0) {
              Uint32Value = other.Uint32Value;
            }
          }
          if (other.uint64Value_ != null) {
            if (uint64Value_ == null || other.Uint64Value != 0UL) {
              Uint64Value = other.Uint64Value;
            }
          }
          if (other.bytesValue_ != null) {
            if (bytesValue_ == null || other.BytesValue != pb::ByteString.Empty) {
              BytesValue = other.BytesValue;
            }
          }
          _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) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                string value = _single_stringValue_codec.Read(input);
                if (stringValue_ == null || value != "") {
                  StringValue = value;
                }
                break;
              }
              case 18: {
                int? value = _single_int32Value_codec.Read(input);
                if (int32Value_ == null || value != 0) {
                  Int32Value = value;
                }
                break;
              }
              case 26: {
                long? value = _single_int64Value_codec.Read(input);
                if (int64Value_ == null || value != 0L) {
                  Int64Value = value;
                }
                break;
              }
              case 34: {
                float? value = _single_floatValue_codec.Read(input);
                if (floatValue_ == null || value != 0F) {
                  FloatValue = value;
                }
                break;
              }
              case 42: {
                double? value = _single_doubleValue_codec.Read(input);
                if (doubleValue_ == null || value != 0D) {
                  DoubleValue = value;
                }
                break;
              }
              case 50: {
                bool? value = _single_boolValue_codec.Read(input);
                if (boolValue_ == null || value != false) {
                  BoolValue = value;
                }
                break;
              }
              case 58: {
                uint? value = _single_uint32Value_codec.Read(input);
                if (uint32Value_ == null || value != 0) {
                  Uint32Value = value;
                }
                break;
              }
              case 66: {
                ulong? value = _single_uint64Value_codec.Read(input);
                if (uint64Value_ == null || value != 0UL) {
                  Uint64Value = value;
                }
                break;
              }
              case 74: {
                pb::ByteString value = _single_bytesValue_codec.Read(input);
                if (bytesValue_ == null || value != pb::ByteString.Empty) {
                  BytesValue = value;
                }
                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) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
                break;
              case 10: {
                string value = _single_stringValue_codec.Read(ref input);
                if (stringValue_ == null || value != "") {
                  StringValue = value;
                }
                break;
              }
              case 18: {
                int? value = _single_int32Value_codec.Read(ref input);
                if (int32Value_ == null || value != 0) {
                  Int32Value = value;
                }
                break;
              }
              case 26: {
                long? value = _single_int64Value_codec.Read(ref input);
                if (int64Value_ == null || value != 0L) {
                  Int64Value = value;
                }
                break;
              }
              case 34: {
                float? value = _single_floatValue_codec.Read(ref input);
                if (floatValue_ == null || value != 0F) {
                  FloatValue = value;
                }
                break;
              }
              case 42: {
                double? value = _single_doubleValue_codec.Read(ref input);
                if (doubleValue_ == null || value != 0D) {
                  DoubleValue = value;
                }
                break;
              }
              case 50: {
                bool? value = _single_boolValue_codec.Read(ref input);
                if (boolValue_ == null || value != false) {
                  BoolValue = value;
                }
                break;
              }
              case 58: {
                uint? value = _single_uint32Value_codec.Read(ref input);
                if (uint32Value_ == null || value != 0) {
                  Uint32Value = value;
                }
                break;
              }
              case 66: {
                ulong? value = _single_uint64Value_codec.Read(ref input);
                if (uint64Value_ == null || value != 0UL) {
                  Uint64Value = value;
                }
                break;
              }
              case 74: {
                pb::ByteString value = _single_bytesValue_codec.Read(ref input);
                if (bytesValue_ == null || value != pb::ByteString.Empty) {
                  BytesValue = value;
                }
                break;
              }
            }
          }
        }
        #endif

      }

    }
    #endregion

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MessagesReflection.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 HelloReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public HelloReply(HelloReply other) : this() {
      message_ = other.message_;
      values_ = other.values_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "message" field.</summary>
    public const int MessageFieldNumber = 1;
    private string message_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Message {
      get { return message_; }
      set {
        message_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "values" field.</summary>
    public const int ValuesFieldNumber = 2;
    private static readonly pb::FieldCodec<string> _repeated_values_codec
        = pb::FieldCodec.ForString(18);
    private readonly pbc::RepeatedField<string> values_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Values {
      get { return values_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(HelloReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Message != other.Message) return false;
      if(!values_.Equals(other.values_)) 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 (Message.Length != 0) hash ^= Message.GetHashCode();
      hash ^= values_.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 (Message.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Message);
      }
      values_.WriteTo(output, _repeated_values_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) {
      if (Message.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Message);
      }
      values_.WriteTo(ref output, _repeated_values_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;
      if (Message.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Message);
      }
      size += values_.CalculateSize(_repeated_values_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(HelloReply other) {
      if (other == null) {
        return;
      }
      if (other.Message.Length != 0) {
        Message = other.Message;
      }
      values_.Add(other.values_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Message = input.ReadString();
            break;
          }
          case 18: {
            values_.AddEntriesFrom(input, _repeated_values_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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Message = input.ReadString();
            break;
          }
          case 18: {
            values_.AddEntriesFrom(ref input, _repeated_values_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MessagesReflection.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 StringWrapper() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StringWrapper(StringWrapper other) : this() {
      StringValue = other.StringValue;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "string_value" field.</summary>
    public const int StringValueFieldNumber = 1;
    private static readonly pb::FieldCodec<string> _single_stringValue_codec = pb::FieldCodec.ForClassWrapper<string>(10);
    private string stringValue_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string StringValue {
      get { return stringValue_; }
      set {
        stringValue_ = value;
      }
    }


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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(StringWrapper other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (StringValue != other.StringValue) 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 (stringValue_ != null) hash ^= StringValue.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 (stringValue_ != null) {
        _single_stringValue_codec.WriteTagAndValue(output, StringValue);
      }
      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 (stringValue_ != null) {
        _single_stringValue_codec.WriteTagAndValue(ref output, StringValue);
      }
      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 (stringValue_ != null) {
        size += _single_stringValue_codec.CalculateSizeWithTag(StringValue);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(StringWrapper other) {
      if (other == null) {
        return;
      }
      if (other.stringValue_ != null) {
        if (stringValue_ == null || other.StringValue != "") {
          StringValue = other.StringValue;
        }
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            string value = _single_stringValue_codec.Read(input);
            if (stringValue_ == null || value != "") {
              StringValue = value;
            }
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            string value = _single_stringValue_codec.Read(ref input);
            if (stringValue_ == null || value != "") {
              StringValue = value;
            }
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MessagesReflection.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 RecursiveMessage() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RecursiveMessage(RecursiveMessage other) : this() {
      child_ = other.child_ != null ? other.child_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "child" field.</summary>
    public const int ChildFieldNumber = 1;
    private global::Messages.RecursiveMessage child_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.RecursiveMessage Child {
      get { return child_; }
      set {
        child_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RecursiveMessage other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Child, other.Child)) 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 (child_ != null) hash ^= Child.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 (child_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Child);
      }
      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 (child_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Child);
      }
      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 (child_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Child);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(RecursiveMessage other) {
      if (other == null) {
        return;
      }
      if (other.child_ != null) {
        if (child_ == null) {
          Child = new global::Messages.RecursiveMessage();
        }
        Child.MergeFrom(other.Child);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (child_ == null) {
              Child = new global::Messages.RecursiveMessage();
            }
            input.ReadMessage(Child);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (child_ == null) {
              Child = new global::Messages.RecursiveMessage();
            }
            input.ReadMessage(Child);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MessagesReflection.Descriptor.MessageTypes[4]; }
    }

    [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 BytesMessage() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BytesMessage(BytesMessage other) : this() {
      bytesValue_ = other.bytesValue_;
      BytesNullableValue = other.BytesNullableValue;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "bytes_value" field.</summary>
    public const int BytesValueFieldNumber = 1;
    private pb::ByteString bytesValue_ = pb::ByteString.Empty;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString BytesValue {
      get { return bytesValue_; }
      set {
        bytesValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "bytes_nullable_value" field.</summary>
    public const int BytesNullableValueFieldNumber = 2;
    private static readonly pb::FieldCodec<pb::ByteString> _single_bytesNullableValue_codec = pb::FieldCodec.ForClassWrapper<pb::ByteString>(18);
    private pb::ByteString bytesNullableValue_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString BytesNullableValue {
      get { return bytesNullableValue_; }
      set {
        bytesNullableValue_ = value;
      }
    }


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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BytesMessage other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (BytesValue != other.BytesValue) return false;
      if (BytesNullableValue != other.BytesNullableValue) 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 (BytesValue.Length != 0) hash ^= BytesValue.GetHashCode();
      if (bytesNullableValue_ != null) hash ^= BytesNullableValue.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 (BytesValue.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(BytesValue);
      }
      if (bytesNullableValue_ != null) {
        _single_bytesNullableValue_codec.WriteTagAndValue(output, BytesNullableValue);
      }
      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 (BytesValue.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(BytesValue);
      }
      if (bytesNullableValue_ != null) {
        _single_bytesNullableValue_codec.WriteTagAndValue(ref output, BytesNullableValue);
      }
      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 (BytesValue.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(BytesValue);
      }
      if (bytesNullableValue_ != null) {
        size += _single_bytesNullableValue_codec.CalculateSizeWithTag(BytesNullableValue);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BytesMessage other) {
      if (other == null) {
        return;
      }
      if (other.BytesValue.Length != 0) {
        BytesValue = other.BytesValue;
      }
      if (other.bytesNullableValue_ != null) {
        if (bytesNullableValue_ == null || other.BytesNullableValue != pb::ByteString.Empty) {
          BytesNullableValue = other.BytesNullableValue;
        }
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            BytesValue = input.ReadBytes();
            break;
          }
          case 18: {
            pb::ByteString value = _single_bytesNullableValue_codec.Read(input);
            if (bytesNullableValue_ == null || value != pb::ByteString.Empty) {
              BytesNullableValue = value;
            }
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            BytesValue = input.ReadBytes();
            break;
          }
          case 18: {
            pb::ByteString value = _single_bytesNullableValue_codec.Read(ref input);
            if (bytesNullableValue_ == null || value != pb::ByteString.Empty) {
              BytesNullableValue = value;
            }
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MessagesReflection.Descriptor.MessageTypes[5]; }
    }

    [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 EnumMessage() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public EnumMessage(EnumMessage other) : this() {
      enumValue_ = other.enumValue_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "enum_value" field.</summary>
    public const int EnumValueFieldNumber = 1;
    private global::Messages.EnumMessage.Types.NestedEnum enumValue_ = global::Messages.EnumMessage.Types.NestedEnum.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.EnumMessage.Types.NestedEnum EnumValue {
      get { return enumValue_; }
      set {
        enumValue_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(EnumMessage other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (EnumValue != other.EnumValue) 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 (EnumValue != global::Messages.EnumMessage.Types.NestedEnum.Unspecified) hash ^= EnumValue.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 (EnumValue != global::Messages.EnumMessage.Types.NestedEnum.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) EnumValue);
      }
      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 (EnumValue != global::Messages.EnumMessage.Types.NestedEnum.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) EnumValue);
      }
      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 (EnumValue != global::Messages.EnumMessage.Types.NestedEnum.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumValue);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(EnumMessage other) {
      if (other == null) {
        return;
      }
      if (other.EnumValue != global::Messages.EnumMessage.Types.NestedEnum.Unspecified) {
        EnumValue = other.EnumValue;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            EnumValue = (global::Messages.EnumMessage.Types.NestedEnum) input.ReadEnum();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            EnumValue = (global::Messages.EnumMessage.Types.NestedEnum) input.ReadEnum();
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// <summary>Container for nested types declared in the EnumMessage message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static partial class Types {
      public enum NestedEnum {
        [pbr::OriginalName("NESTED_ENUM_UNSPECIFIED")] Unspecified = 0,
        [pbr::OriginalName("FOO")] Foo = 1,
        [pbr::OriginalName("BAR")] Bar = 2,
        [pbr::OriginalName("BAZ")] Baz = 3,
        /// <summary>
        /// Intentionally negative.
        /// </summary>
        [pbr::OriginalName("NEG")] Neg = -1,
      }

    }
    #endregion

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MessagesReflection.Descriptor.MessageTypes[6]; }
    }

    [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 OneOfMessage() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OneOfMessage(OneOfMessage other) : this() {
      switch (other.FirstCase) {
        case FirstOneofCase.FirstOne:
          FirstOne = other.FirstOne;
          break;
        case FirstOneofCase.FirstTwo:
          FirstTwo = other.FirstTwo;
          break;
      }

      switch (other.SecondCase) {
        case SecondOneofCase.SecondOne:
          SecondOne = other.SecondOne;
          break;
        case SecondOneofCase.SecondTwo:
          SecondTwo = other.SecondTwo;
          break;
      }

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

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

    /// <summary>Field number for the "first_one" field.</summary>
    public const int FirstOneFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string FirstOne {
      get { return HasFirstOne ? (string) first_ : ""; }
      set {
        first_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        firstCase_ = FirstOneofCase.FirstOne;
      }
    }
    /// <summary>Gets whether the "first_one" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFirstOne {
      get { return firstCase_ == FirstOneofCase.FirstOne; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "first_one" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFirstOne() {
      if (HasFirstOne) {
        ClearFirst();
      }
    }

    /// <summary>Field number for the "first_two" field.</summary>
    public const int FirstTwoFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string FirstTwo {
      get { return HasFirstTwo ? (string) first_ : ""; }
      set {
        first_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        firstCase_ = FirstOneofCase.FirstTwo;
      }
    }
    /// <summary>Gets whether the "first_two" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFirstTwo {
      get { return firstCase_ == FirstOneofCase.FirstTwo; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "first_two" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFirstTwo() {
      if (HasFirstTwo) {
        ClearFirst();
      }
    }

    /// <summary>Field number for the "second_one" field.</summary>
    public const int SecondOneFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SecondOne {
      get { return HasSecondOne ? (string) second_ : ""; }
      set {
        second_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        secondCase_ = SecondOneofCase.SecondOne;
      }
    }
    /// <summary>Gets whether the "second_one" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasSecondOne {
      get { return secondCase_ == SecondOneofCase.SecondOne; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "second_one" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearSecondOne() {
      if (HasSecondOne) {
        ClearSecond();
      }
    }

    /// <summary>Field number for the "second_two" field.</summary>
    public const int SecondTwoFieldNumber = 4;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SecondTwo {
      get { return HasSecondTwo ? (string) second_ : ""; }
      set {
        second_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        secondCase_ = SecondOneofCase.SecondTwo;
      }
    }
    /// <summary>Gets whether the "second_two" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasSecondTwo {
      get { return secondCase_ == SecondOneofCase.SecondTwo; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "second_two" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearSecondTwo() {
      if (HasSecondTwo) {
        ClearSecond();
      }
    }

    private object first_;
    /// <summary>Enum of possible cases for the "First" oneof.</summary>
    public enum FirstOneofCase {
      None = 0,
      FirstOne = 1,
      FirstTwo = 2,
    }
    private FirstOneofCase firstCase_ = FirstOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FirstOneofCase FirstCase {
      get { return firstCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFirst() {
      firstCase_ = FirstOneofCase.None;
      first_ = null;
    }

    private object second_;
    /// <summary>Enum of possible cases for the "Second" oneof.</summary>
    public enum SecondOneofCase {
      None = 0,
      SecondOne = 3,
      SecondTwo = 4,
    }
    private SecondOneofCase secondCase_ = SecondOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SecondOneofCase SecondCase {
      get { return secondCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearSecond() {
      secondCase_ = SecondOneofCase.None;
      second_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OneOfMessage other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (FirstOne != other.FirstOne) return false;
      if (FirstTwo != other.FirstTwo) return false;
      if (SecondOne != other.SecondOne) return false;
      if (SecondTwo != other.SecondTwo) return false;
      if (FirstCase != other.FirstCase) return false;
      if (SecondCase != other.SecondCase) 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 (HasFirstOne) hash ^= FirstOne.GetHashCode();
      if (HasFirstTwo) hash ^= FirstTwo.GetHashCode();
      if (HasSecondOne) hash ^= SecondOne.GetHashCode();
      if (HasSecondTwo) hash ^= SecondTwo.GetHashCode();
      hash ^= (int) firstCase_;
      hash ^= (int) secondCase_;
      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 (HasFirstOne) {
        output.WriteRawTag(10);
        output.WriteString(FirstOne);
      }
      if (HasFirstTwo) {
        output.WriteRawTag(18);
        output.WriteString(FirstTwo);
      }
      if (HasSecondOne) {
        output.WriteRawTag(26);
        output.WriteString(SecondOne);
      }
      if (HasSecondTwo) {
        output.WriteRawTag(34);
        output.WriteString(SecondTwo);
      }
      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 (HasFirstOne) {
        output.WriteRawTag(10);
        output.WriteString(FirstOne);
      }
      if (HasFirstTwo) {
        output.WriteRawTag(18);
        output.WriteString(FirstTwo);
      }
      if (HasSecondOne) {
        output.WriteRawTag(26);
        output.WriteString(SecondOne);
      }
      if (HasSecondTwo) {
        output.WriteRawTag(34);
        output.WriteString(SecondTwo);
      }
      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 (HasFirstOne) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(FirstOne);
      }
      if (HasFirstTwo) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(FirstTwo);
      }
      if (HasSecondOne) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SecondOne);
      }
      if (HasSecondTwo) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SecondTwo);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OneOfMessage other) {
      if (other == null) {
        return;
      }
      switch (other.FirstCase) {
        case FirstOneofCase.FirstOne:
          FirstOne = other.FirstOne;
          break;
        case FirstOneofCase.FirstTwo:
          FirstTwo = other.FirstTwo;
          break;
      }

      switch (other.SecondCase) {
        case SecondOneofCase.SecondOne:
          SecondOne = other.SecondOne;
          break;
        case SecondOneofCase.SecondTwo:
          SecondTwo = other.SecondTwo;
          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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            FirstOne = input.ReadString();
            break;
          }
          case 18: {
            FirstTwo = input.ReadString();
            break;
          }
          case 26: {
            SecondOne = input.ReadString();
            break;
          }
          case 34: {
            SecondTwo = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            FirstOne = input.ReadString();
            break;
          }
          case 18: {
            FirstTwo = input.ReadString();
            break;
          }
          case 26: {
            SecondOne = input.ReadString();
            break;
          }
          case 34: {
            SecondTwo = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MessagesReflection.Descriptor.MessageTypes[7]; }
    }

    [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 MapMessage() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MapMessage(MapMessage other) : this() {
      mapValue_ = other.mapValue_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "map_value" field.</summary>
    public const int MapValueFieldNumber = 1;
    private static readonly pbc::MapField<string, double>.Codec _map_mapValue_codec
        = new pbc::MapField<string, double>.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForDouble(17, 0D), 10);
    private readonly pbc::MapField<string, double> mapValue_ = new pbc::MapField<string, double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<string, double> MapValue {
      get { return mapValue_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MapMessage other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!MapValue.Equals(other.MapValue)) 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 ^= MapValue.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
      mapValue_.WriteTo(output, _map_mapValue_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) {
      mapValue_.WriteTo(ref output, _map_mapValue_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 += mapValue_.CalculateSize(_map_mapValue_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MapMessage other) {
      if (other == null) {
        return;
      }
      mapValue_.MergeFrom(other.mapValue_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            mapValue_.AddEntriesFrom(input, _map_mapValue_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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            mapValue_.AddEntriesFrom(ref input, _map_mapValue_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MessagesReflection.Descriptor.MessageTypes[8]; }
    }

    [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 FieldMaskMessage() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FieldMaskMessage(FieldMaskMessage other) : this() {
      fieldMaskValue_ = other.fieldMaskValue_ != null ? other.fieldMaskValue_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FieldMaskMessage other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(FieldMaskValue, other.FieldMaskValue)) 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 (fieldMaskValue_ != null) hash ^= FieldMaskValue.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 (fieldMaskValue_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(FieldMaskValue);
      }
      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 (fieldMaskValue_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(FieldMaskValue);
      }
      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 (fieldMaskValue_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FieldMaskValue);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FieldMaskMessage other) {
      if (other == null) {
        return;
      }
      if (other.fieldMaskValue_ != null) {
        if (fieldMaskValue_ == null) {
          FieldMaskValue = new global::Google.Protobuf.WellKnownTypes.FieldMask();
        }
        FieldMaskValue.MergeFrom(other.FieldMaskValue);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (fieldMaskValue_ == null) {
              FieldMaskValue = new global::Google.Protobuf.WellKnownTypes.FieldMask();
            }
            input.ReadMessage(FieldMaskValue);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (fieldMaskValue_ == null) {
              FieldMaskValue = new global::Google.Protobuf.WellKnownTypes.FieldMask();
            }
            input.ReadMessage(FieldMaskValue);
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code