context: // Generated by ProtoGen, Version=2.4.1.473, Culture=neutral, PublicKeyToken=55f7125234beb589.  DO NOT EDIT!
  #pragma warning disable 1591, 0612
  #region Designer generated code
  
  using pb = global::Google.ProtocolBuffers;
  using pbc = global::Google.ProtocolBuffers.Collections;
  using pbd = global::Google.ProtocolBuffers.Descriptors;
  using scg = global::System.Collections.Generic;
  namespace bnet.protocol.channel {
    
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
    public static partial class ChannelService {
    
      #region Extension registration
      public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
      }
      #endregion
      #region Static variables
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_AddMemberRequest__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.AddMemberRequest, global::bnet.protocol.channel.AddMemberRequest.Builder> internal__static_bnet_protocol_channel_AddMemberRequest__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_RemoveMemberRequest__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.RemoveMemberRequest, global::bnet.protocol.channel.RemoveMemberRequest.Builder> internal__static_bnet_protocol_channel_RemoveMemberRequest__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_SendMessageRequest__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.SendMessageRequest, global::bnet.protocol.channel.SendMessageRequest.Builder> internal__static_bnet_protocol_channel_SendMessageRequest__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_UpdateChannelStateRequest__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.UpdateChannelStateRequest, global::bnet.protocol.channel.UpdateChannelStateRequest.Builder> internal__static_bnet_protocol_channel_UpdateChannelStateRequest__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_UpdateMemberStateRequest__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.UpdateMemberStateRequest, global::bnet.protocol.channel.UpdateMemberStateRequest.Builder> internal__static_bnet_protocol_channel_UpdateMemberStateRequest__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_DissolveRequest__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.DissolveRequest, global::bnet.protocol.channel.DissolveRequest.Builder> internal__static_bnet_protocol_channel_DissolveRequest__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_SetRolesRequest__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.SetRolesRequest, global::bnet.protocol.channel.SetRolesRequest.Builder> internal__static_bnet_protocol_channel_SetRolesRequest__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_AddNotification__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.AddNotification, global::bnet.protocol.channel.AddNotification.Builder> internal__static_bnet_protocol_channel_AddNotification__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_JoinNotification__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.JoinNotification, global::bnet.protocol.channel.JoinNotification.Builder> internal__static_bnet_protocol_channel_JoinNotification__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_RemoveNotification__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.RemoveNotification, global::bnet.protocol.channel.RemoveNotification.Builder> internal__static_bnet_protocol_channel_RemoveNotification__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_LeaveNotification__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.LeaveNotification, global::bnet.protocol.channel.LeaveNotification.Builder> internal__static_bnet_protocol_channel_LeaveNotification__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_SendMessageNotification__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.SendMessageNotification, global::bnet.protocol.channel.SendMessageNotification.Builder> internal__static_bnet_protocol_channel_SendMessageNotification__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_UpdateChannelStateNotification__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.UpdateChannelStateNotification, global::bnet.protocol.channel.UpdateChannelStateNotification.Builder> internal__static_bnet_protocol_channel_UpdateChannelStateNotification__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_channel_UpdateMemberStateNotification__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.UpdateMemberStateNotification, global::bnet.protocol.channel.UpdateMemberStateNotification.Builder> internal__static_bnet_protocol_channel_UpdateMemberStateNotification__FieldAccessorTable;
      #endregion
      #region Descriptor
      public static pbd::FileDescriptor Descriptor {
        get { return descriptor; }
      }
      private static pbd::FileDescriptor descriptor;
      
      static ChannelService() {
        byte[] descriptorData = global::System.Convert.FromBase64String(
            "ChpibmV0L2NoYW5uZWxfc2VydmljZS5wcm90bxIVYm5ldC5wcm90b2NvbC5j" + 
            "aGFubmVsGhRibmV0L2F0dHJpYnV0ZS5wcm90bxoRYm5ldC9lbnRpdHkucHJv" + 
            "dG8aDmJuZXQvcnBjLnByb3RvGhhibmV0L2NoYW5uZWxfdHlwZXMucHJvdG8i" + 
            "vAEKEEFkZE1lbWJlclJlcXVlc3QSKQoIYWdlbnRfaWQYASABKAsyFy5ibmV0" + 
            "LnByb3RvY29sLkVudGl0eUlkEjAKD21lbWJlcl9pZGVudGl0eRgCIAIoCzIX" + 
            "LmJuZXQucHJvdG9jb2wuSWRlbnRpdHkSOAoMbWVtYmVyX3N0YXRlGAMgAigL" + 
            "MiIuYm5ldC5wcm90b2NvbC5jaGFubmVsLk1lbWJlclN0YXRlEhEKCW9iamVj" + 
            "dF9pZBgEIAIoBCJ8ChNSZW1vdmVNZW1iZXJSZXF1ZXN0EikKCGFnZW50X2lk" + 
            "GAEgASgLMhcuYm5ldC5wcm90b2NvbC5FbnRpdHlJZBIqCgltZW1iZXJfaWQY" + 
            "AiACKAsyFy5ibmV0LnByb3RvY29sLkVudGl0eUlkEg4KBnJlYXNvbhgDIAEo" + 
            "DSKQAQoSU2VuZE1lc3NhZ2VSZXF1ZXN0EikKCGFnZW50X2lkGAEgASgLMhcu" + 
            "Ym5ldC5wcm90b2NvbC5FbnRpdHlJZBIvCgdtZXNzYWdlGAIgAigLMh4uYm5l" + 
            "dC5wcm90b2NvbC5jaGFubmVsLk1lc3NhZ2USHgoTcmVxdWlyZWRfcHJpdmls" + 
            "ZWdlcxgDIAEoBDoBMCKBAQoZVXBkYXRlQ2hhbm5lbFN0YXRlUmVxdWVzdBIp" + 
            "CghhZ2VudF9pZBgBIAEoCzIXLmJuZXQucHJvdG9jb2wuRW50aXR5SWQSOQoM" + 
            "c3RhdGVfY2hhbmdlGAIgAigLMiMuYm5ldC5wcm90b2NvbC5jaGFubmVsLkNo" + 
            "YW5uZWxTdGF0ZSJ6ChhVcGRhdGVNZW1iZXJTdGF0ZVJlcXVlc3QSKQoIYWdl" + 
            "bnRfaWQYASABKAsyFy5ibmV0LnByb3RvY29sLkVudGl0eUlkEjMKDHN0YXRl" + 
            "X2NoYW5nZRgCIAMoCzIdLmJuZXQucHJvdG9jb2wuY2hhbm5lbC5NZW1iZXIi" + 
            "TAoPRGlzc29sdmVSZXF1ZXN0EikKCGFnZW50X2lkGAEgASgLMhcuYm5ldC5w" + 
            "cm90b2NvbC5FbnRpdHlJZBIOCgZyZWFzb24YAiABKA0iegoPU2V0Um9sZXNS" + 
            "ZXF1ZXN0EikKCGFnZW50X2lkGAEgASgLMhcuYm5ldC5wcm90b2NvbC5FbnRp" + 
            "dHlJZBIQCgRyb2xlGAIgAygNQgIQARIqCgltZW1iZXJfaWQYAyADKAsyFy5i" + 
            "bmV0LnByb3RvY29sLkVudGl0eUlkIqkBCg9BZGROb3RpZmljYXRpb24SKwoE" + 
            "c2VsZhgBIAEoCzIdLmJuZXQucHJvdG9jb2wuY2hhbm5lbC5NZW1iZXISLQoG" + 
            "bWVtYmVyGAIgAygLMh0uYm5ldC5wcm90b2NvbC5jaGFubmVsLk1lbWJlchI6" + 
            "Cg1jaGFubmVsX3N0YXRlGAMgAigLMiMuYm5ldC5wcm90b2NvbC5jaGFubmVs" + 
            "LkNoYW5uZWxTdGF0ZSJBChBKb2luTm90aWZpY2F0aW9uEi0KBm1lbWJlchgB" + 
            "IAIoCzIdLmJuZXQucHJvdG9jb2wuY2hhbm5lbC5NZW1iZXIiewoSUmVtb3Zl" + 
            "Tm90aWZpY2F0aW9uEikKCGFnZW50X2lkGAEgASgLMhcuYm5ldC5wcm90b2Nv" + 
            "bC5FbnRpdHlJZBIqCgltZW1iZXJfaWQYAiACKAsyFy5ibmV0LnByb3RvY29s" + 
            "LkVudGl0eUlkEg4KBnJlYXNvbhgDIAEoDSJ6ChFMZWF2ZU5vdGlmaWNhdGlv" + 
            "bhIpCghhZ2VudF9pZBgBIAEoCzIXLmJuZXQucHJvdG9jb2wuRW50aXR5SWQS" + 
            "KgoJbWVtYmVyX2lkGAIgAigLMhcuYm5ldC5wcm90b2NvbC5FbnRpdHlJZBIO" + 
            "CgZyZWFzb24YAyABKA0ilQEKF1NlbmRNZXNzYWdlTm90aWZpY2F0aW9uEikK" + 
            "CGFnZW50X2lkGAEgASgLMhcuYm5ldC5wcm90b2NvbC5FbnRpdHlJZBIvCgdt" + 
            "ZXNzYWdlGAIgAigLMh4uYm5ldC5wcm90b2NvbC5jaGFubmVsLk1lc3NhZ2US" + 
            "HgoTcmVxdWlyZWRfcHJpdmlsZWdlcxgDIAEoBDoBMCKGAQoeVXBkYXRlQ2hh" + 
            "bm5lbFN0YXRlTm90aWZpY2F0aW9uEikKCGFnZW50X2lkGAEgASgLMhcuYm5l" + 
            "dC5wcm90b2NvbC5FbnRpdHlJZBI5CgxzdGF0ZV9jaGFuZ2UYAiACKAsyIy5i" + 
            "bmV0LnByb3RvY29sLmNoYW5uZWwuQ2hhbm5lbFN0YXRlIn8KHVVwZGF0ZU1l" + 
            "bWJlclN0YXRlTm90aWZpY2F0aW9uEikKCGFnZW50X2lkGAEgASgLMhcuYm5l" + 
            "dC5wcm90b2NvbC5FbnRpdHlJZBIzCgxzdGF0ZV9jaGFuZ2UYAiADKAsyHS5i" + 
            "bmV0LnByb3RvY29sLmNoYW5uZWwuTWVtYmVyMvYECgdDaGFubmVsElEKCUFk" + 
            "ZE1lbWJlchInLmJuZXQucHJvdG9jb2wuY2hhbm5lbC5BZGRNZW1iZXJSZXF1" + 
            "ZXN0GhUuYm5ldC5wcm90b2NvbC5Ob0RhdGEiBIC1GAESVwoMUmVtb3ZlTWVt" + 
            "YmVyEiouYm5ldC5wcm90b2NvbC5jaGFubmVsLlJlbW92ZU1lbWJlclJlcXVl" + 
            "c3QaFS5ibmV0LnByb3RvY29sLk5vRGF0YSIEgLUYAhJVCgtTZW5kTWVzc2Fn" + 
            "ZRIpLmJuZXQucHJvdG9jb2wuY2hhbm5lbC5TZW5kTWVzc2FnZVJlcXVlc3Qa" + 
            "FS5ibmV0LnByb3RvY29sLk5vRGF0YSIEgLUYAxJjChJVcGRhdGVDaGFubmVs" + 
            "U3RhdGUSMC5ibmV0LnByb3RvY29sLmNoYW5uZWwuVXBkYXRlQ2hhbm5lbFN0" + 
            "YXRlUmVxdWVzdBoVLmJuZXQucHJvdG9jb2wuTm9EYXRhIgSAtRgEEmEKEVVw" + 
            "ZGF0ZU1lbWJlclN0YXRlEi8uYm5ldC5wcm90b2NvbC5jaGFubmVsLlVwZGF0" + 
            "ZU1lbWJlclN0YXRlUmVxdWVzdBoVLmJuZXQucHJvdG9jb2wuTm9EYXRhIgSA" + 
            "tRgFEk8KCERpc3NvbHZlEiYuYm5ldC5wcm90b2NvbC5jaGFubmVsLkRpc3Nv" + 
            "bHZlUmVxdWVzdBoVLmJuZXQucHJvdG9jb2wuTm9EYXRhIgSAtRgGEk8KCFNl" + 
            "dFJvbGVzEiYuYm5ldC5wcm90b2NvbC5jaGFubmVsLlNldFJvbGVzUmVxdWVz" + 
            "dBoVLmJuZXQucHJvdG9jb2wuTm9EYXRhIgSAtRgHMsoFChFDaGFubmVsU3Vi" + 
            "c2NyaWJlchJVCglOb3RpZnlBZGQSJi5ibmV0LnByb3RvY29sLmNoYW5uZWwu" + 
            "QWRkTm90aWZpY2F0aW9uGhouYm5ldC5wcm90b2NvbC5OT19SRVNQT05TRSIE" + 
            "gLUYARJXCgpOb3RpZnlKb2luEicuYm5ldC5wcm90b2NvbC5jaGFubmVsLkpv" + 
            "aW5Ob3RpZmljYXRpb24aGi5ibmV0LnByb3RvY29sLk5PX1JFU1BPTlNFIgSA" + 
            "tRgCElsKDE5vdGlmeVJlbW92ZRIpLmJuZXQucHJvdG9jb2wuY2hhbm5lbC5S" + 
            "ZW1vdmVOb3RpZmljYXRpb24aGi5ibmV0LnByb3RvY29sLk5PX1JFU1BPTlNF" + 
            "IgSAtRgDElkKC05vdGlmeUxlYXZlEiguYm5ldC5wcm90b2NvbC5jaGFubmVs" + 
            "LkxlYXZlTm90aWZpY2F0aW9uGhouYm5ldC5wcm90b2NvbC5OT19SRVNQT05T" + 
            "RSIEgLUYBBJlChFOb3RpZnlTZW5kTWVzc2FnZRIuLmJuZXQucHJvdG9jb2wu" + 
            "Y2hhbm5lbC5TZW5kTWVzc2FnZU5vdGlmaWNhdGlvbhoaLmJuZXQucHJvdG9j" + 
            "b2wuTk9fUkVTUE9OU0UiBIC1GAUScwoYTm90aWZ5VXBkYXRlQ2hhbm5lbFN0" + 
            "YXRlEjUuYm5ldC5wcm90b2NvbC5jaGFubmVsLlVwZGF0ZUNoYW5uZWxTdGF0" + 
            "ZU5vdGlmaWNhdGlvbhoaLmJuZXQucHJvdG9jb2wuTk9fUkVTUE9OU0UiBIC1" + 
            "GAYScQoXTm90aWZ5VXBkYXRlTWVtYmVyU3RhdGUSNC5ibmV0LnByb3RvY29s" + 
            "LmNoYW5uZWwuVXBkYXRlTWVtYmVyU3RhdGVOb3RpZmljYXRpb24aGi5ibmV0" + 
            "LnByb3RvY29sLk5PX1JFU1BPTlNFIgSAtRgHQgOAAQA=");
        pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
          descriptor = root;
          internal__static_bnet_protocol_channel_AddMemberRequest__Descriptor = Descriptor.MessageTypes[0];
          internal__static_bnet_protocol_channel_AddMemberRequest__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.AddMemberRequest, global::bnet.protocol.channel.AddMemberRequest.Builder>(internal__static_bnet_protocol_channel_AddMemberRequest__Descriptor,
                  new string[] { "AgentId", "MemberIdentity", "MemberState", "ObjectId", });
          internal__static_bnet_protocol_channel_RemoveMemberRequest__Descriptor = Descriptor.MessageTypes[1];
          internal__static_bnet_protocol_channel_RemoveMemberRequest__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.RemoveMemberRequest, global::bnet.protocol.channel.RemoveMemberRequest.Builder>(internal__static_bnet_protocol_channel_RemoveMemberRequest__Descriptor,
                  new string[] { "AgentId", "MemberId", "Reason", });
          internal__static_bnet_protocol_channel_SendMessageRequest__Descriptor = Descriptor.MessageTypes[2];
          internal__static_bnet_protocol_channel_SendMessageRequest__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.SendMessageRequest, global::bnet.protocol.channel.SendMessageRequest.Builder>(internal__static_bnet_protocol_channel_SendMessageRequest__Descriptor,
                  new string[] { "AgentId", "Message", "RequiredPrivileges", });
          internal__static_bnet_protocol_channel_UpdateChannelStateRequest__Descriptor = Descriptor.MessageTypes[3];
          internal__static_bnet_protocol_channel_UpdateChannelStateRequest__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.UpdateChannelStateRequest, global::bnet.protocol.channel.UpdateChannelStateRequest.Builder>(internal__static_bnet_protocol_channel_UpdateChannelStateRequest__Descriptor,
                  new string[] { "AgentId", "StateChange", });
          internal__static_bnet_protocol_channel_UpdateMemberStateRequest__Descriptor = Descriptor.MessageTypes[4];
          internal__static_bnet_protocol_channel_UpdateMemberStateRequest__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.UpdateMemberStateRequest, global::bnet.protocol.channel.UpdateMemberStateRequest.Builder>(internal__static_bnet_protocol_channel_UpdateMemberStateRequest__Descriptor,
                  new string[] { "AgentId", "StateChange", });
          internal__static_bnet_protocol_channel_DissolveRequest__Descriptor = Descriptor.MessageTypes[5];
          internal__static_bnet_protocol_channel_DissolveRequest__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.DissolveRequest, global::bnet.protocol.channel.DissolveRequest.Builder>(internal__static_bnet_protocol_channel_DissolveRequest__Descriptor,
                  new string[] { "AgentId", "Reason", });
          internal__static_bnet_protocol_channel_SetRolesRequest__Descriptor = Descriptor.MessageTypes[6];
          internal__static_bnet_protocol_channel_SetRolesRequest__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.SetRolesRequest, global::bnet.protocol.channel.SetRolesRequest.Builder>(internal__static_bnet_protocol_channel_SetRolesRequest__Descriptor,
                  new string[] { "AgentId", "Role", "MemberId", });
          internal__static_bnet_protocol_channel_AddNotification__Descriptor = Descriptor.MessageTypes[7];
          internal__static_bnet_protocol_channel_AddNotification__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.AddNotification, global::bnet.protocol.channel.AddNotification.Builder>(internal__static_bnet_protocol_channel_AddNotification__Descriptor,
                  new string[] { "Self", "Member", "ChannelState", });
          internal__static_bnet_protocol_channel_JoinNotification__Descriptor = Descriptor.MessageTypes[8];
          internal__static_bnet_protocol_channel_JoinNotification__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.JoinNotification, global::bnet.protocol.channel.JoinNotification.Builder>(internal__static_bnet_protocol_channel_JoinNotification__Descriptor,
                  new string[] { "Member", });
          internal__static_bnet_protocol_channel_RemoveNotification__Descriptor = Descriptor.MessageTypes[9];
          internal__static_bnet_protocol_channel_RemoveNotification__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.RemoveNotification, global::bnet.protocol.channel.RemoveNotification.Builder>(internal__static_bnet_protocol_channel_RemoveNotification__Descriptor,
                  new string[] { "AgentId", "MemberId", "Reason", });
          internal__static_bnet_protocol_channel_LeaveNotification__Descriptor = Descriptor.MessageTypes[10];
          internal__static_bnet_protocol_channel_LeaveNotification__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.LeaveNotification, global::bnet.protocol.channel.LeaveNotification.Builder>(internal__static_bnet_protocol_channel_LeaveNotification__Descriptor,
                  new string[] { "AgentId", "MemberId", "Reason", });
          internal__static_bnet_protocol_channel_SendMessageNotification__Descriptor = Descriptor.MessageTypes[11];
          internal__static_bnet_protocol_channel_SendMessageNotification__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.SendMessageNotification, global::bnet.protocol.channel.SendMessageNotification.Builder>(internal__static_bnet_protocol_channel_SendMessageNotification__Descriptor,
                  new string[] { "AgentId", "Message", "RequiredPrivileges", });
          internal__static_bnet_protocol_channel_UpdateChannelStateNotification__Descriptor = Descriptor.MessageTypes[12];
          internal__static_bnet_protocol_channel_UpdateChannelStateNotification__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.UpdateChannelStateNotification, global::bnet.protocol.channel.UpdateChannelStateNotification.Builder>(internal__static_bnet_protocol_channel_UpdateChannelStateNotification__Descriptor,
                  new string[] { "AgentId", "StateChange", });
          internal__static_bnet_protocol_channel_UpdateMemberStateNotification__Descriptor = Descriptor.MessageTypes[13];
          internal__static_bnet_protocol_channel_UpdateMemberStateNotification__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.channel.UpdateMemberStateNotification, global::bnet.protocol.channel.UpdateMemberStateNotification.Builder>(internal__static_bnet_protocol_channel_UpdateMemberStateNotification__Descriptor,
                  new string[] { "AgentId", "StateChange", });
          pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
          RegisterAllExtensions(registry);
          global::bnet.protocol.attribute.Proto.Attribute.RegisterAllExtensions(registry);
          global::bnet.protocol.Entity.RegisterAllExtensions(registry);
          global::bnet.protocol.Rpc.RegisterAllExtensions(registry);
          global::bnet.protocol.channel.ChannelTypes.RegisterAllExtensions(registry);
          return registry;
        };
        pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
            new pbd::FileDescriptor[] {
            global::bnet.protocol.attribute.Proto.Attribute.Descriptor, 
            global::bnet.protocol.Entity.Descriptor, 
            global::bnet.protocol.Rpc.Descriptor, 
            global::bnet.protocol.channel.ChannelTypes.Descriptor, 
            }, assigner);
      }
      #endregion
      
    }
    #region Messages
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
    public sealed partial class AddMemberRequest : pb::GeneratedMessage<AddMemberRequest, AddMemberRequest.Builder> {
      private AddMemberRequest() { }
      private static readonly AddMemberRequest defaultInstance = new AddMemberRequest().MakeReadOnly();
      private static readonly string[] _addMemberRequestFieldNames = new string[] { "agent_id", "member_identity", "member_state", "object_id" };
      private static readonly uint[] _addMemberRequestFieldTags = new uint[] { 10, 18, 26, 32 };
      public static AddMemberRequest DefaultInstance {
        get { return defaultInstance; }
      }
      
      public override AddMemberRequest DefaultInstanceForType {
        get { return DefaultInstance; }
      }
      
      protected override AddMemberRequest ThisMessage {
        get { return this; }
      }
      
      public static pbd::MessageDescriptor Descriptor {
        get { return global::bnet.protocol.channel.ChannelService.internal__static_bnet_protocol_channel_AddMemberRequest__Descriptor; }
      }
      
      protected override pb::FieldAccess.FieldAccessorTable<AddMemberRequest, AddMemberRequest.Builder> InternalFieldAccessors {
        get { return global::bnet.protocol.channel.ChannelService.internal__static_bnet_protocol_channel_AddMemberRequest__FieldAccessorTable; }
      }
      
      public const int AgentIdFieldNumber = 1;
      private bool hasAgentId;
      private global::bnet.protocol.EntityId agentId_;
      public bool HasAgentId {
        get { return hasAgentId; }
      }
      public global::bnet.protocol.EntityId AgentId {
        get { return agentId_ ?? global::bnet.protocol.EntityId.DefaultInstance; }
      }
      
      public const int MemberIdentityFieldNumber = 2;
      private bool hasMemberIdentity;
      private global::bnet.protocol.Identity memberIdentity_;
      public bool HasMemberIdentity {
        get { return hasMemberIdentity; }
      }
      public global::bnet.protocol.Identity MemberIdentity {
        get { return memberIdentity_ ?? global::bnet.protocol.Identity.DefaultInstance; }
      }
      
      public const int MemberStateFieldNumber = 3;
      private bool hasMemberState;
      private global::bnet.protocol.channel.MemberState memberState_;
      public bool HasMemberState {
        get { return hasMemberState; }
      }
      public global::bnet.protocol.channel.MemberState MemberState {
        get { return memberState_ ?? global::bnet.protocol.channel.MemberState.DefaultInstance; }
      }
      
      public const int ObjectIdFieldNumber = 4;
      private bool hasObjectId;
      private ulong objectId_;
      public bool HasObjectId {
        get { return hasObjectId; }
      }
      public ulong ObjectId {
        get { return objectId_; }
      }
      
      public override bool IsInitialized {
        get {
          if (!hasMemberIdentity) return false;
          if (!hasMemberState) return false;
          if (!hasObjectId) return false;
          if (HasAgentId) {
            if (!AgentId.IsInitialized) return false;
          }
          if (!MemberIdentity.IsInitialized) return false;
          if (!MemberState.IsInitialized) return false;
          return true;
        }
      }
      
      public override void WriteTo(pb::ICodedOutputStream output) {
        int size = SerializedSize;
        string[] field_names = _addMemberRequestFieldNames;
        if (hasAgentId) {
          output.WriteMessage(1, field_names[0], AgentId);
        }
        if (hasMemberIdentity) {
          output.WriteMessage(2, field_names[1], MemberIdentity);
        }
        if (hasMemberState) {
          output.WriteMessage(3, field_names[2], MemberState);
        }
        if (hasObjectId) {
          output.WriteUInt64(4, field_names[3], ObjectId);
        }
        UnknownFields.WriteTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public override int SerializedSize {
        get {
          int size = memoizedSerializedSize;
          if (size != -1) return size;
          
          size = 0;
          if (hasAgentId) {
            size += pb::CodedOutputStream.ComputeMessageSize(1, AgentId);
          }
          if (hasMemberIdentity) {
            size += pb::CodedOutputStream.ComputeMessageSize(2, MemberIdentity);
          }
          if (hasMemberState) {
            size += pb::CodedOutputStream.ComputeMessageSize(3, MemberState);
          }
          if (hasObjectId) {
            size += pb::CodedOutputStream.ComputeUInt64Size(4, ObjectId);
          }
          size += UnknownFields.SerializedSize;
          memoizedSerializedSize = size;
          return size;
        }
      }
      
      public static AddMemberRequest ParseFrom(pb::ByteString data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static AddMemberRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static AddMemberRequest ParseFrom(byte[] data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static AddMemberRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static AddMemberRequest ParseFrom(global::System.IO.Stream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static AddMemberRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      public static AddMemberRequest ParseDelimitedFrom(global::System.IO.Stream input) {
        return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
      }
      public static AddMemberRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
      }
      public static AddMemberRequest ParseFrom(pb::ICodedInputStream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static AddMemberRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      private AddMemberRequest MakeReadOnly() {
        return this;
      }
      
      public static Builder CreateBuilder() { return new Builder(); }
      public override Builder ToBuilder() { return CreateBuilder(this); }
      public override Builder CreateBuilderForType() { return new Builder(); }
      public static Builder CreateBuilder(AddMemberRequest prototype) {
        return new Builder(prototype);
      }
      
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
      [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
      public sealed partial class Builder : pb::GeneratedBuilder<AddMemberRequest, Builder> {
        protected override Builder ThisBuilder {
          get { return this; }
        }
        public Builder() {
          result = DefaultInstance;
          resultIsReadOnly = true;
        }
        internal Builder(AddMemberRequest cloneFrom) {
          result = cloneFrom;
          resultIsReadOnly = true;
        }
        
        private bool resultIsReadOnly;
        private AddMemberRequest result;
        
        private AddMemberRequest PrepareBuilder() {
          if (resultIsReadOnly) {
            AddMemberRequest original = result;
            result = new AddMemberRequest();
            resultIsReadOnly = false;
            MergeFrom(original);
          }
          return result;
        }
        
        public override bool IsInitialized {
          get { return result.IsInitialized; }
        }
        
        protected override AddMemberRequest MessageBeingBuilt {
          get { return PrepareBuilder(); }
        }
        
        public override Builder Clear() {
          result = DefaultInstance;
          resultIsReadOnly = true;
          return this;
        }
        
        public override Builder Clone() {
          if (resultIsReadOnly) {
            return new Builder(result);
          } else {
            return new Builder().MergeFrom(result);
          }
        }
        
        public override pbd::MessageDescriptor DescriptorForType {
          get { return global::bnet.protocol.channel.AddMemberRequest.Descriptor; }
        }
        
        public override AddMemberRequest DefaultInstanceForType {
          get { return global::bnet.protocol.channel.AddMemberRequest.DefaultInstance; }
        }
        
        public override AddMemberRequest BuildPartial() {
          if (resultIsReadOnly) {
            return result;
          }
          resultIsReadOnly = true;
          return result.MakeReadOnly();
        }
        
        public override Builder MergeFrom(pb::IMessage other) {
          if (other is AddMemberRequest) {
            return MergeFrom((AddMemberRequest) other);
          } else {
            base.MergeFrom(other);
            return this;
          }
        }
        
        public override Builder MergeFrom(AddMemberRequest other) {
          if (other == global::bnet.protocol.channel.AddMemberRequest.DefaultInstance) return this;
          PrepareBuilder();
          if (other.HasAgentId) {
            MergeAgentId(other.AgentId);
          }
          if (other.HasMemberIdentity) {
            MergeMemberIdentity(other.MemberIdentity);
          }
          if (other.HasMemberState) {
            MergeMemberState(other.MemberState);
          }
          if (other.HasObjectId) {
            ObjectId = other.ObjectId;
          }
          this.MergeUnknownFields(other.UnknownFields);
          return this;
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input) {
          return MergeFrom(input, pb::ExtensionRegistry.Empty);
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
          PrepareBuilder();
          pb::UnknownFieldSet.Builder unknownFields = null;
          uint tag;
          string field_name;
          while (input.ReadTag(out tag, out field_name)) {
            if(tag == 0 && field_name != null) {
              int field_ordinal = global::System.Array.BinarySearch(_addMemberRequestFieldNames, field_name, global::System.StringComparer.Ordinal);
              if(field_ordinal >= 0)
                tag = _addMemberRequestFieldTags[field_ordinal];
              else {
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                continue;
              }
            }
            switch (tag) {
              case 0: {
                throw pb::InvalidProtocolBufferException.InvalidTag();
              }
              default: {
                if (pb::WireFormat.IsEndGroupTag(tag)) {
                  if (unknownFields != null) {
                    this.UnknownFields = unknownFields.Build();
                  }
                  return this;
                }
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                break;
              }
              case 10: {
                global::bnet.protocol.EntityId.Builder subBuilder = global::bnet.protocol.EntityId.CreateBuilder();
                if (result.hasAgentId) {
                  subBuilder.MergeFrom(AgentId);
                }
                input.ReadMessage(subBuilder, extensionRegistry);
                AgentId = subBuilder.BuildPartial();
                break;
              }
              case 18: {
                global::bnet.protocol.Identity.Builder subBuilder = global::bnet.protocol.Identity.CreateBuilder();
                if (result.hasMemberIdentity) {
                  subBuilder.MergeFrom(MemberIdentity);
                }
                input.ReadMessage(subBuilder, extensionRegistry);
                MemberIdentity = subBuilder.BuildPartial();
                break;
              }
              case 26: {
                global::bnet.protocol.channel.MemberState.Builder subBuilder = global::bnet.protocol.channel.MemberState.CreateBuilder();
                if (result.hasMemberState) {
                  subBuilder.MergeFrom(MemberState);
                }
                input.ReadMessage(subBuilder, extensionRegistry);
                MemberState = subBuilder.BuildPartial();
                break;
              }
              case 32: {
                result.hasObjectId = input.ReadUInt64(ref result.objectId_);
                break;
              }
            }
          }
          
          if (unknownFields != null) {
            this.UnknownFields = unknownFields.Build();
          }
          return this;
        }
        
        
        public bool HasAgentId {
         get { return result.hasAgentId; }
        }
        public global::bnet.protocol.EntityId AgentId {
          get { return result.AgentId; }
          set { SetAgentId(value); }
        }
        public Builder SetAgentId(global::bnet.protocol.EntityId value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasAgentId = true;
          result.agentId_ = value;
          return this;
        }
        public Builder SetAgentId(global::bnet.protocol.EntityId.Builder builderForValue) {
          pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
          PrepareBuilder();
          result.hasAgentId = true;
          result.agentId_ = builderForValue.Build();
          return this;
        }
        public Builder MergeAgentId(global::bnet.protocol.EntityId value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          if (result.hasAgentId &&
              result.agentId_ != global::bnet.protocol.EntityId.DefaultInstance) {
              result.agentId_ = global::bnet.protocol.EntityId.CreateBuilder(result.agentId_).MergeFrom(value).BuildPartial();
          } else {
            result.agentId_ = value;
          }
          result.hasAgentId = true;
          return this;
        }
        public Builder ClearAgentId() {
          PrepareBuilder();
          result.hasAgentId = false;
          result.agentId_ = null;
          return this;
        }
        
        public bool HasMemberIdentity {
         get { return result.hasMemberIdentity; }
        }
        public global::bnet.protocol.Identity MemberIdentity {
          get { return result.MemberIdentity; }
          set { SetMemberIdentity(value); }
        }
        public Builder SetMemberIdentity(global::bnet.protocol.Identity value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasMemberIdentity = true;
          result.memberIdentity_ = value;
          return this;
        }
        public Builder SetMemberIdentity(global::bnet.protocol.Identity.Builder builderForValue) {
          pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
          PrepareBuilder();
          result.hasMemberIdentity = true;
          result.memberIdentity_ = builderForValue.Build();
          return this;
        }
        public Builder MergeMemberIdentity(global::bnet.protocol.Identity value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          if (result.hasMemberIdentity &&
              result.memberIdentity_ != global::bnet.protocol.Identity.DefaultInstance) {
              result.memberIdentity_ = global::bnet.protocol.Identity.CreateBuilder(result.memberIdentity_).MergeFrom(value).BuildPartial();
          } else {
            result.memberIdentity_ = value;
          }
          result.hasMemberIdentity = true;
          return this;
        }
        public Builder ClearMemberIdentity() {
          PrepareBuilder();
          result.hasMemberIdentity = false;
          result.memberIdentity_ = null;
          return this;
        }
        
        public bool HasMemberState {
         get { return result.hasMemberState; }
        }
        public global::bnet.protocol.channel.MemberState MemberState {
          get { return result.MemberState; }
          set { SetMemberState(value); }
        }
        public Builder SetMemberState(global::bnet.protocol.channel.MemberState value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasMemberState = true;
          result.memberState_ = value;
          return this;
        }
        public Builder SetMemberState(global::bnet.protocol.channel.MemberState.Builder builderForValue) {
          pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
          PrepareBuilder();
          result.hasMemberState = true;
          result.memberState_ = builderForValue.Build();
          return this;
        }
        public Builder MergeMemberState(global::bnet.protocol.channel.MemberState value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          if (result.hasMemberState &&
              result.memberState_ != global::bnet.protocol.channel.MemberState.DefaultInstance) {
              result.memberState_ = global::bnet.protocol.channel.MemberState.CreateBuilder(result.memberState_).MergeFrom(value).BuildPartial();
          } else {
            result.memberState_ = value;
          }
          result.hasMemberState = true;
          return this;
        }
        public Builder ClearMemberState() {
          PrepareBuilder();
          result.hasMemberState = false;
          result.memberState_ = null;
          return this;
        }
        
        public bool HasObjectId {
          get { return result.hasObjectId; }
        }
        public ulong ObjectId {
          get { return result.ObjectId; }
          set { SetObjectId(value); }
        }
        public Builder SetObjectId(ulong value) {
          PrepareBuilder();
          result.hasObjectId = true;
          result.objectId_ = value;
          return this;
        }
        public Builder ClearObjectId() {
          PrepareBuilder();
          result.hasObjectId = false;
          result.objectId_ = 0UL;
          return this;
        }
      }
      static AddMemberRequest() {
        object.ReferenceEquals(global::bnet.protocol.channel.ChannelService.Descriptor, null);
      }
    }
    
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
    public sealed partial class RemoveMemberRequest : pb::GeneratedMessage<RemoveMemberRequest, RemoveMemberRequest.Builder> {
      private RemoveMemberRequest() { }
      private static readonly RemoveMemberRequest defaultInstance = new RemoveMemberRequest().MakeReadOnly();
      private static readonly string[] _removeMemberRequestFieldNames = new string[] { "agent_id", "member_id", "reason" };
      private static readonly uint[] _removeMemberRequestFieldTags = new uint[] { 10, 18, 24 };
      public static RemoveMemberRequest DefaultInstance {
        get { return defaultInstance; }
      }
      
      public override RemoveMemberRequest DefaultInstanceForType {
        get { return DefaultInstance; }
      }
      
      protected override RemoveMemberRequest ThisMessage {
        get { return this; }
      }
      
      public static pbd::MessageDescriptor Descriptor {
        get { return global::bnet.protocol.channel.ChannelService.internal__static_bnet_protocol_channel_RemoveMemberRequest__Descriptor; }
      }
      
      protected override pb::FieldAccess.FieldAccessorTable<RemoveMemberRequest, RemoveMemberRequest.Builder> InternalFieldAccessors {
        get { return global::bnet.protocol.channel.ChannelService.internal__static_bnet_protocol_channel_RemoveMemberRequest__FieldAccessorTable; }
      }
      
      public const int AgentIdFieldNumber = 1;
      private bool hasAgentId;
      private global::bnet.protocol.EntityId agentId_;
      public bool HasAgentId {
        get { return hasAgentId; }
      }
      public global::bnet.protocol.EntityId AgentId {
        get { return agentId_ ?? global::bnet.protocol.EntityId.DefaultInstance; }
      }
      
      public const int MemberIdFieldNumber = 2;
      private bool hasMemberId;
      private global::bnet.protocol.EntityId memberId_;
      public bool HasMemberId {
        get { return hasMemberId; }
      }
      public global::bnet.protocol.EntityId MemberId {
        get { return memberId_ ?? global::bnet.protocol.EntityId.DefaultInstance; }
      }
      
      public const int ReasonFieldNumber = 3;
      private bool hasReason;
      private uint reason_;
      public bool HasReason {
        get { return hasReason; }
      }
      public uint Reason {
        get { return reason_; }
      }
      
      public override bool IsInitialized {
        get {
          if (!hasMemberId) return false;
          if (HasAgentId) {
            if (!AgentId.IsInitialized) return false;
          }
          if (!MemberId.IsInitialized) return false;
          return true;
        }
      }
      
      public override void WriteTo(pb::ICodedOutputStream output) {
        int size = SerializedSize;
        string[] field_names = _removeMemberRequestFieldNames;
        if (hasAgentId) {
          output.WriteMessage(1, field_names[0], AgentId);
        }
        if (hasMemberId) {
          output.WriteMessage(2, field_names[1], MemberId);
        }
        if (hasReason) {
          output.WriteUInt32(3, field_names[2], Reason);
        }
        UnknownFields.WriteTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public override int SerializedSize {
        get {
          int size = memoizedSerializedSize;
          if (size != -1) return size;
          
          size = 0;
          if (hasAgentId) {
            size += pb::CodedOutputStream.ComputeMessageSize(1, AgentId);
          }
          if (hasMemberId) {
            size += pb::CodedOutputStream.ComputeMessageSize(2, MemberId);
          }
          if (hasReason) {
            size += pb::CodedOutputStream.ComputeUInt32Size(3, Reason);
          }
          size += UnknownFields.SerializedSize;
          memoizedSerializedSize = size;
          return size;
        }
      }
      
      public static RemoveMemberRequest ParseFrom(pb::ByteString data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static RemoveMemberRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static RemoveMemberRequest ParseFrom(byte[] data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static RemoveMemberRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static RemoveMemberRequest ParseFrom(global::System.IO.Stream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static RemoveMemberRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      public static RemoveMemberRequest ParseDelimitedFrom(global::System.IO.Stream input) {
        return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
      }
      public static RemoveMemberRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
      }
      public static RemoveMemberRequest ParseFrom(pb::ICodedInputStream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static RemoveMemberRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      private RemoveMemberRequest MakeReadOnly() {
        return this;
      }
      
      public static Builder CreateBuilder() { return new Builder(); }
      public override Builder ToBuilder() { return CreateBuilder(this); }
      public override Builder CreateBuilderForType() { return new Builder(); }
      public static Builder CreateBuilder(RemoveMemberRequest prototype) {
        return new Builder(prototype);
      }
      
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
      [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
      public sealed partial class Builder : pb::GeneratedBuilder<RemoveMemberRequest, Builder> {
        protected override Builder ThisBuilder {
          get { return this; }
        }
        public Builder() {
          result = DefaultInstance;
          resultIsReadOnly = true;
        }
        internal Builder(RemoveMemberRequest cloneFrom) {
          result = cloneFrom;
          resultIsReadOnly = true;
        }
        
        private bool resultIsReadOnly;
        private RemoveMemberRequest result;
        
        private RemoveMemberRequest PrepareBuilder() {
          if (resultIsReadOnly) {
            RemoveMemberRequest original = result;
            result = new RemoveMemberRequest();
            resultIsReadOnly = false;
            MergeFrom(original);
          }
          return result;
        }
        
        public override bool IsInitialized {
          get { return result.IsInitialized; }
        }
        
        protected override RemoveMemberRequest MessageBeingBuilt {
          get { return PrepareBuilder(); }
        }
        
        public override Builder Clear() {
          result = DefaultInstance;
          resultIsReadOnly = true;
          return this;
        }
        
        public override Builder Clone() {
          if (resultIsReadOnly) {
            return new Builder(result);
          } else {
            return new Builder().MergeFrom(result);
          }
        }
        
        public override pbd::MessageDescriptor DescriptorForType {
          get { return global::bnet.protocol.channel.RemoveMemberRequest.Descriptor; }
        }
        
        public override RemoveMemberRequest DefaultInstanceForType {
          get { return global::bnet.protocol.channel.RemoveMemberRequest.DefaultInstance; }
        }
        
        public override RemoveMemberRequest BuildPartial() {
          if (resultIsReadOnly) {
            return result;
          }
          resultIsReadOnly = true;
          return result.MakeReadOnly();
        }
        
        public override Builder MergeFrom(pb::IMessage other) {
          if (other is RemoveMemberRequest) {
            return MergeFrom((RemoveMemberRequest) other);
          } else {
            base.MergeFrom(other);
            return this;
          }
        }
        
        public override Builder MergeFrom(RemoveMemberRequest other) {
          if (other == global::bnet.protocol.channel.RemoveMemberRequest.DefaultInstance) return this;
          PrepareBuilder();
          if (other.HasAgentId) {
            MergeAgentId(other.AgentId);
          }
          if (other.HasMemberId) {
            MergeMemberId(other.MemberId);
          }
          if (other.HasReason) {
            Reason = other.Reason;
          }
          this.MergeUnknownFields(other.UnknownFields);
          return this;
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input) {
          return MergeFrom(input, pb::ExtensionRegistry.Empty);
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
          PrepareBuilder();
          pb::UnknownFieldSet.Builder unknownFields = null;
          uint tag;
          string field_name;
          while (input.ReadTag(out tag, out field_name)) {
            if(tag == 0 && field_name != null) {
              int field_ordinal = global::System.Array.BinarySearch(_removeMemberRequestFieldNames, field_name, global::System.StringComparer.Ordinal);
              if(field_ordinal >= 0)
                tag = _removeMemberRequestFieldTags[field_ordinal];
              else {
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                continue;
              }
            }
            switch (tag) {
              case 0: {
                throw pb::InvalidProtocolBufferException.InvalidTag();
              }
              default: {
                if (pb::WireFormat.IsEndGroupTag(tag)) {
                  if (unknownFields != null) {
                    this.UnknownFields = unknownFields.Build();
                  }
                  return this;
                }
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                break;
              }
              case 10: {
                global::bnet.protocol.EntityId.Builder subBuilder = global::bnet.protocol.EntityId.CreateBuilder();
                if (result.hasAgentId) {
                  subBuilder.MergeFrom(AgentId);
                }
                input.ReadMessage(subBuilder, extensionRegistry);
                AgentId = subBuilder.BuildPartial();
                break;
              }
              case 18: {
                global::bnet.protocol.EntityId.Builder subBuilder = global::bnet.protocol.EntityId.CreateBuilder();
                if (result.hasMemberId) {
                  subBuilder.MergeFrom(MemberId);
                }
                input.ReadMessage(subBuilder, extensionRegistry);
                MemberId = subBuilder.BuildPartial();
                break;
              }
              case 24: {
                result.hasReason = input.ReadUInt32(ref result.reason_);
                break;
              }
            }
          }
          
          if (unknownFields != null) {
            this.UnknownFields = unknownFields.Build();
          }
          return this;
        }
        
        
        public bool HasAgentId {
         get { return result.hasAgentId; }
        }
        public global::bnet.protocol.EntityId AgentId {
          get { return result.AgentId; }
          set { SetAgentId(value); }
        }
        public Builder SetAgentId(global::bnet.protocol.EntityId value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasAgentId = true;
          result.agentId_ = value;
          return this;
        }
        public Builder SetAgentId(global::bnet.protocol.EntityId.Builder builderForValue) {
          pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
          PrepareBuilder();
          result.hasAgentId = true;
          result.agentId_ = builderForValue.Build();
          return this;
        }
        public Builder MergeAgentId(global::bnet.protocol.EntityId value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          if (result.hasAgentId &&
              result.agentId_ != global::bnet.protocol.EntityId.DefaultInstance) {
              result.agentId_ = global::bnet.protocol.EntityId.CreateBuilder(result.agentId_).MergeFrom(value).BuildPartial();
          } else {
            result.agentId_ = value;
          }
          result.hasAgentId = true;
          return this;
        }
        public Builder ClearAgentId() {
          PrepareBuilder();
          result.hasAgentId = false;
          result.agentId_ = null;
          return this;
        }
        
        public bool HasMemberId {
         get { return result.hasMemberId; }
        }
        public global::bnet.protocol.EntityId MemberId {
          get { return result.MemberId; }
          set { SetMemberId(value); }
        }
        public Builder SetMemberId(global::bnet.protocol.EntityId value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasMemberId = true;
          result.memberId_ = value;
          return this;
        }
        public Builder SetMemberId(global::bnet.protocol.EntityId.Builder builderForValue) {
          pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
          PrepareBuilder();
          result.hasMemberId = true;
          result.memberId_ = builderForValue.Build();
          return this;
        }
        public Builder MergeMemberId(global::bnet.protocol.EntityId value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          if (result.hasMemberId &&
              result.memberId_ != global::bnet.protocol.EntityId.DefaultInstance) {
              result.memberId_ = global::bnet.protocol.EntityId.CreateBuilder(result.memberId_).MergeFrom(value).BuildPartial();
          } else {
            result.memberId_ = value;
          }
          result.hasMemberId = true;
          return this;
        }
        public Builder ClearMemberId() {
          PrepareBuilder();
          result.hasMemberId = false;
          result.memberId_ = null;
          return this;
        }
        
        public bool HasReason {
          get { return result.hasReason; }
        }
        public uint Reason {
          get { return result.Reason; }
          set { SetReason(value); }
        }
        public Builder SetReason(uint value) {
          PrepareBuilder();
          result.hasReason = true;
          result.reason_ = value;
          return this;
        }
        public Builder ClearReason() {
          PrepareBuilder();
          result.hasReason = false;
          result.reason_ = 0;
          return this;
        }
      }
      static RemoveMemberRequest() {
        object.ReferenceEquals(global::bnet.protocol.channel.ChannelService.Descriptor, null);
      }
    }
    
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
    public sealed partial class SendMessageRequest : pb::GeneratedMessage<SendMessageRequest, SendMessageRequest.Builder> {
      private SendMessageRequest() { }
      private static readonly SendMessageRequest defaultInstance = new SendMessageRequest().MakeReadOnly();
      private static readonly string[] _sendMessageRequestFieldNames = new string[] { "agent_id", "message", "required_privileges" };
      private static readonly uint[] _sendMessageRequestFieldTags = new uint[] { 10, 18, 24 };
      public static SendMessageRequest DefaultInstance {
        get { return defaultInstance; }
      }
      
      public override SendMessageRequest DefaultInstanceForType {
        get { return DefaultInstance; }
      }
      
      protected override SendMessageRequest ThisMessage {
        get { return this; }
      }
      
      public static pbd::MessageDescriptor Descriptor {
        get { return global::bnet.protocol.channel.ChannelService.internal__static_bnet_protocol_channel_SendMessageRequest__Descriptor; }
      }
      
      protected override pb::FieldAccess.FieldAccessorTable<SendMessageRequest, SendMessageRequest.Builder> InternalFieldAccessors {
        get { return global::bnet.protocol.channel.ChannelService.internal__static_bnet_protocol_channel_SendMessageRequest__FieldAccessorTable; }
      }
      
      public const int AgentIdFieldNumber = 1;
      private bool hasAgentId;
      private global::bnet.protocol.EntityId agentId_;
      public bool HasAgentId {
        get { return hasAgentId; }
      }
      public global::bnet.protocol.EntityId AgentId {
        get { return agentId_ ?? global::bnet.protocol.EntityId.DefaultInstance; }
      }
      
      public const int MessageFieldNumber = 2;
      private bool hasMessage;
      private global::bnet.protocol.channel.Message message_;
      public bool HasMessage {
        get { return hasMessage; }
      }
      public global::bnet.protocol.channel.Message Message {
        get { return message_ ?? global::bnet.protocol.channel.Message.DefaultInstance; }
      }
      
      public const int RequiredPrivilegesFieldNumber = 3;
      private bool hasRequiredPrivileges;
      private ulong requiredPrivileges_;
      public bool HasRequiredPrivileges {
        get { return hasRequiredPrivileges; }
      }
      public ulong RequiredPrivileges {
        get { return requiredPrivileges_; }
      }
      
      public override bool IsInitialized {
        get {
          if (!hasMessage) return false;
          if (HasAgentId) {
            if (!AgentId.IsInitialized) return false;
          }
          if (!Message.IsInitialized) return false;
          return true;
        }
      }
      
      public override void WriteTo(pb::ICodedOutputStream output) {
        int size = SerializedSize;
        string[] field_names = _sendMessageRequestFieldNames;
        if (hasAgentId) {
          output.WriteMessage(1, field_names[0], AgentId);
        }
        if (hasMessage) {
          output.WriteMessage(2, field_names[1], Message);
        }
        if (hasRequiredPrivileges) {
          output.WriteUInt64(3, field_names[2], RequiredPrivileges);
        }
        UnknownFields.WriteTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public override int SerializedSize {
        get {
          int size = memoizedSerializedSize;
          if (size != -1) return size;
          
          size = 0;
          if (hasAgentId) {
            size += pb::CodedOutputStream.ComputeMessageSize(1, AgentId);
          }
          if (hasMessage) {
            size += pb::CodedOutputStream.ComputeMessageSize(2, Message);
          }
          if (hasRequiredPrivileges) {
            size += pb::CodedOutputStream.ComputeUInt64Size(3, RequiredPrivileges);
          }
          size += UnknownFields.SerializedSize;
          memoizedSerializedSize = size;
          return size;
        }
      }
      
      public static SendMessageRequest ParseFrom(pb::ByteString data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static SendMessageRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static SendMessageRequest ParseFrom(byte[] data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static SendMessageRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static SendMessageRequest ParseFrom(global::System.IO.Stream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static SendMessageRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      public static SendMessageRequest ParseDelimitedFrom(global::System.IO.Stream input) {
        return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
      }
      public static SendMessageRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
      }
      public static SendMessageRequest ParseFrom(pb::ICodedInputStream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static SendMessageRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      private SendMessageRequest MakeReadOnly() {
        return this;
      }
      
      public static Builder CreateBuilder() { return new Builder(); }
      public override Builder ToBuilder() { return CreateBuilder(this); }
      public override Builder CreateBuilderForType() { return new Builder(); }
      public static Builder CreateBuilder(SendMessageRequest prototype) {
        return new Builder(prototype);
      }
      
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
      [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
      public sealed partial class Builder : pb::GeneratedBuilder<SendMessageRequest, Builder> {
        protected override Builder ThisBuilder {
          get { return this; }
        }
        public Builder() {
          result = DefaultInstance;
          resultIsReadOnly = true;
        }
        internal Builder(SendMessageRequest cloneFrom) {
          result = cloneFrom;
          resultIsReadOnly = true;
        }
        
        private bool resultIsReadOnly;
        private SendMessageRequest result;
        
        private SendMessageRequest PrepareBuilder() {
          if (resultIsReadOnly) {
            SendMessageRequest original = result;
            result = new SendMessageRequest();
            resultIsReadOnly = false;
            MergeFrom(original);
          }
          return result;
        }
        
        public override bool IsInitialized {
          get { return result.IsInitialized; }
        }
        
        protected override SendMessageRequest MessageBeingBuilt {
          get { return PrepareBuilder(); }
        }
        
        public override Builder Clear() {
          result = DefaultInstance;
          resultIsReadOnly = true;
          return this;
        }
        
        public override Builder Clone() {
          if (resultIsReadOnly) {
            return new Builder(result);
          } else {
            return new Builder().MergeFrom(result);
          }
        }
        
        public override pbd::MessageDescriptor DescriptorForType {
          get { return global::bnet.protocol.channel.SendMessageRequest.Descriptor; }
        }
        
        public override SendMessageRequest DefaultInstanceForType {
          get { return global::bnet.protocol.channel.SendMessageRequest.DefaultInstance; }
        }
        
        public override SendMessageRequest BuildPartial() {
          if (resultIsReadOnly) {
            return result;
          }
          resultIsReadOnly = true;
          return result.MakeReadOnly();
        }
        
        public override Builder MergeFrom(pb::IMessage other) {
          if (other is SendMessageRequest) {
            return MergeFrom((SendMessageRequest) other);
          } else {
            base.MergeFrom(other);
            return this;
          }
        }
        
        public override Builder MergeFrom(SendMessageRequest other) {
          if (other == global::bnet.protocol.channel.SendMessageRequest.DefaultInstance) return this;
          PrepareBuilder();
          if (other.HasAgentId) {
            MergeAgentId(other.AgentId);
          }
          if (other.HasMessage) {
            MergeMessage(other.Message);
          }
          if (other.HasRequiredPrivileges) {
            RequiredPrivileges = other.RequiredPrivileges;
          }
          this.MergeUnknownFields(other.UnknownFields);
          return this;
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input) {
          return MergeFrom(input, pb::ExtensionRegistry.Empty);
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
          PrepareBuilder();
          pb::UnknownFieldSet.Builder unknownFields = null;
          uint tag;
          string field_name;
          while (input.ReadTag(out tag, out field_name)) {
            if(tag == 0 && field_name != null) {
              int field_ordinal = global::System.Array.BinarySearch(_sendMessageRequestFieldNames, field_name, global::System.StringComparer.Ordinal);
              if(field_ordinal >= 0)
                tag = _sendMessageRequestFieldTags[field_ordinal];
              else {
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                continue;
              }
            }
            switch (tag) {
              case 0: {
                throw pb::InvalidProtocolBufferException.InvalidTag();
              }
              default: {
                if (pb::WireFormat.IsEndGroupTag(tag)) {
                  if (unknownFields != null) {
                    this.UnknownFields = unknownFields.Build();
                  }
                  return this;
                }
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                break;
              }
              case 10: {
                global::bnet.protocol.EntityId.Builder subBuilder = global::bnet.protocol.EntityId.CreateBuilder();
                if (result.hasAgentId) {
                  subBuilder.MergeFrom(AgentId);
                }
                input.ReadMessage(subBuilder, extensionRegistry);
                AgentId = subBuilder.BuildPartial();
                break;
              }
              case 18: {
                global::bnet.protocol.channel.Message.Builder subBuilder = global::bnet.protocol.channel.Message.CreateBuilder();
                if (result.hasMessage) {
                  subBuilder.MergeFrom(Message);
                }
                input.ReadMessage(subBuilder, extensionRegistry);
                Message = subBuilder.BuildPartial();
                break;
              }
              case 24: {
                result.hasRequiredPrivileges = input.ReadUInt64(ref result.requiredPrivileges_);
                break;
              }
            }
          }
          
          if (unknownFields != null) {
            this.UnknownFields = unknownFields.Build();
          }
          return this;
        }
        
        
        public bool HasAgentId {
         get { return result.hasAgentId; }
        }
        public global::bnet.protocol.EntityId AgentId {
          get { return result.AgentId; }
          set { SetAgentId(value); }
        }
        public Builder SetAgentId(global::bnet.protocol.EntityId value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasAgentId = true;
          result.agentId_ = value;
          return this;
        }
        public Builder SetAgentId(global::bnet.protocol.EntityId.Builder builderForValue) {
          pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
          PrepareBuilder();
          result.hasAgentId = true;
          result.agentId_ = builderForValue.Build();
          return this;
        }
        public Builder MergeAgentId(global::bnet.protocol.EntityId value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          if (result.hasAgentId &&
              result.agentId_ != global::bnet.protocol.EntityId.DefaultInstance) {
              result.agentId_ = global::bnet.protocol.EntityId.CreateBuilder(result.agentId_).MergeFrom(value).BuildPartial();
          } else {
            result.agentId_ = value;
          }
          result.hasAgentId = true;
          return this;
        }
        public Builder ClearAgentId() {
          PrepareBuilder();
          result.hasAgentId = false;
          result.agentId_ = null;
          return this;
        }
        
        public bool HasMessage {
         get { return result.hasMessage; }
        }
        public global::bnet.protocol.channel.Message Message {
          get { return result.Message; }
          set { SetMessage(value); }
        }
        public Builder SetMessage(global::bnet.protocol.channel.Message value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasMessage = true;
          result.message_ = value;
          return this;
        }
        public Builder SetMessage(global::bnet.protocol.channel.Message.Builder builderForValue) {
          pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
          PrepareBuilder();
          result.hasMessage = true;
          result.message_ = builderForValue.Build();
          return this;
        }
        public Builder MergeMessage(global::bnet.protocol.channel.Message value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          if (result.hasMessage &&
              result.message_ != global::bnet.protocol.channel.Message.DefaultInstance) {
              result.message_ = global::bnet.protocol.channel.Message.CreateBuilder(result.message_).MergeFrom(value).BuildPartial();
          } else {
            result.message_ = value;
          }
          result.hasMessage = true;
          return this;
        }
        public Builder ClearMessage() {
          PrepareBuilder();
          result.hasMessage = false;
          result.message_ = null;
          return this;
        }
        
        public bool HasRequiredPrivileges {
          get { return result.hasRequiredPrivileges; }
        }
        public ulong RequiredPrivileges {
          get { return result.RequiredPrivileges; }
          set { SetRequiredPrivileges(value); }
        }
        public Builder SetRequiredPrivileges(ulong value) {
          PrepareBuilder();
          result.hasRequiredPrivileges = true;
          result.requiredPrivileges_ = value;
          return this;
        }
        public Builder ClearRequiredPrivileges() {
          PrepareBuilder();
          result.hasRequiredPrivileges = false;
          result.requiredPrivileges_ = 0UL;
          return this;
        }
      }
      static SendMessageRequest() {
        object.ReferenceEquals(global::bnet.protocol.channel.ChannelService.Descriptor, null);
      }
    }
    
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
    public sealed partial class UpdateChannelStateRequest : pb::GeneratedMessage<UpdateChannelStateRequest, UpdateChannelStateRequest.Builder> {
      private UpdateChannelStateRequest() { }
      private static readonly UpdateChannelStateRequest defaultInstance = new UpdateChannelStateRequest().MakeReadOnly();
      private static readonly string[] _updateChannelStateRequestFieldNames = new string[] { "agent_id", "state_change" };
      private static readonly uint[] _updateChannelStateRequestFieldTags = new uint[] { 10, 18 };
      public static UpdateChannelStateRequest DefaultInstance {
        get { return defaultInstance; }
      }
      
      public override UpdateChannelStateRequest DefaultInstanceForType {
        get { return DefaultInstance; }
      }
      
      protected override UpdateChannelStateRequest ThisMessage {
        get { return this; }
      }
      
      public static pbd::MessageDescriptor Descriptor {
        get { return global::bnet.protocol.channel.ChannelService.internal__static_bnet_protocol_channel_UpdateChannelStateRequest__Descriptor; }
      }
      
      protected override pb::FieldAccess.FieldAccessorTable<UpdateChannelStateRequest, UpdateChannelStateRequest.Builder> InternalFieldAccessors {
        get { return global::bnet.protocol.channel.ChannelService.internal__static_bnet_protocol_channel_UpdateChannelStateRequest__FieldAccessorTable; }
      }
      
      public const int AgentIdFieldNumber = 1;
      private bool hasAgentId;
      private global::bnet.protocol.EntityId agentId_;
      public bool HasAgentId {
        get { return hasAgentId; }
      }
      public global::bnet.protocol.EntityId AgentId {
        get { return agentId_ ?? global::bnet.protocol.EntityId.DefaultInstance; }
      }
      
      public const int StateChangeFieldNumber = 2;
      private bool hasStateChange;
      private global::bnet.protocol.channel.ChannelState stateChange_;
      public bool HasStateChange {
        get { return hasStateChange; }
      }
      public global::bnet.protocol.channel.ChannelState StateChange {
        get { return stateChange_ ?? global::bnet.protocol.channel.ChannelState.DefaultInstance; }
      }
      
      public override bool IsInitialized {
        get {
          if (!hasStateChange) return false;
          if (HasAgentId) {
            if (!AgentId.IsInitialized) return false;
          }
          if (!StateChange.IsInitialized) return false;
          return true;
        }
      }
      
      public override void WriteTo(pb::ICodedOutputStream output) {
        int size = SerializedSize;
  
gt:       string[] field_names = _updateChannelStateRequestFieldNames;